CRM Agent (환자참여케어연속성전문가) 사양서
1. Agent 개요
1.1 역할 정의
- 공식명칭: Patient Engagement & Care Continuity Expert
- 한글명칭: 환자참여케어연속성전문가
- 약칭: CRM Agent
- 핵심 역할: 환자 상담 기록과 케어 연속성 데이터를 분석하여 SOL 예측 정확도 향상
1.2 주요 기능
- 상담 기록 텍스트 분석: 환자의 주관적 수면 보고 추출 및 분석
- 치료 순응도 평가: 상담 참여도와 일정 준수율 정량화
- 데이터 품질 보정: 앱 이슈로 인한 데이터 누락 영향 평가
- 치료 진행도 추적: 시점별 개선 패턴 학습 및 예측
1.3 Chain of Debate 내 역할
- 6개 전문가 에이전트 중 하나로 참여
- 환자의 치료 참여 관점에서 SOL 예측에 기여
- 다른 에이전트의 객관적 데이터 분석을 주관적 보고로 검증
2. 데이터 소스 및 분석 전략
2.1 활용 데이터베이스 테이블
2.1.1 user_follow_up_log 테이블
-- CRM 스키마의 핵심 테이블
model user_follow_up_log {
id Int -- 고유 ID
account_id Int? -- CRM 계정 ID
user_id Int? -- 사용자 ID
user_cycle_id Int? -- 치료주기 ID
log String? -- 상담 내용 또는 이벤트 설명
created_at DateTime? -- 생성 시간
meta Json? -- 메타데이터 (이벤트 타입별 추가 정보)
updated_at DateTime? -- 업데이트 시간
type String? -- 로그 타입
}
로그 타입별 활용 방안:
- LOG: 상담 내용 텍스트 (수면 패턴, 약물 복용, 스트레스 요인)
- FOLLOW_UP_STATUS_CHANGE: 상담 완료 상태 추적
- CALL_SCHEDULE_CHANGE: 상담 일정 변경 추적
- PATIENT_ISSUE: 앱 사용 문제 기록
2.1.2 user_issue 테이블
model user_issue {
id Int -- 고유 ID
user_cycle_id Int -- 치료주기 ID
created_by_id Int -- 작성자 ID
issue String -- 이슈 내용
status String? -- 이슈 상태
created_at DateTime? -- 생성 시간
updated_at DateTime? -- 업데이트 시간
nth_day_in_user_cycle Int? -- 치료주기 내 발생 일차
}
2.1.3 follow_up 테이블
model follow_up {
id Int -- 고유 ID
title String? -- 상담 제목
description String? -- 상담 설명
days_to_follow_up Int? -- 상담 예정 일차 (3, 7, 21일차 등)
created_at DateTime? -- 생성 시간
}
2.2 상담 기록 텍스트 마이닝 전략
2.2.1 수면 관련 키워드 추출
const SLEEP_KEYWORDS = {
// SOL 직접 관련
sleepLatency: ['잠들기', '잠이 들', '입면', '수면 시작', '한시간', '30분', '빨리'],
// 수면제 관련
medication: ['수면제', '수면유도제', '수면유지약', '약효', '복용', '처방'],
// 수면 품질
quality: ['깊은잠', '얕은잠', '자주 깸', '푹 자', '수면 도중'],
// 스트레스 요인
stressors: ['스트레스', '긴장', '불안', '걱정', '힘들'],
// 개선 지표
improvement: ['많이 달라짐', '개선', '좋아짐', '나아짐', '효과']
};
2.2.2 주관적 SOL 보고 추출
interface SubjectiveSOLReport {
reportedSOL: number | null; // 환자가 보고한 SOL (분)
medicationEffect: boolean; // 약물 효과 여부
stressImpact: 'high' | 'medium' | 'low'; // 스트레스 영향도
comparisonToPrevious: 'better' | 'same' | 'worse'; // 이전 대비 비교
}
2.3 치료 순응도 지표 계산
2.3.1 상담 완료율
interface ComplianceMetrics {
// 예정된 상담 대비 완료율
consultationCompletionRate: number; // 0-1 스케일
// 상담 참여 적극성 (내용 길이, 구체성)
engagementScore: number; // 0-100 점수
// 일정 준수율 (재스케줄링 빈도)
scheduleAdherenceRate: number; // 0-1 스케일
// 종합 순응도 점수
overallCompliance: number; // 0-100 점수
}
2.3.2 순응도 기반 신뢰도 조정
function adjustConfidenceByCompliance(
baseConfidence: number,
compliance: ComplianceMetrics
): number {
if (compliance.overallCompliance > 80) {
return baseConfidence * 1.2; // +20% 신뢰도
} else if (compliance.overallCompliance < 50) {
return baseConfidence * 0.85; // -15% 신뢰도
}
return baseConfidence;
}
2.4 데이터 품질 평가 및 보정
2.4.1 앱 이슈 영향도 분석
interface AppIssueImpact {
issueType: 'login' | 'update' | 'crash' | 'other';
affectedDays: number[]; // 영향받은 일차
dataQualityScore: number; // 0-1 스케일
resolution: 'resolved' | 'ongoing' | 'workaround';
}
2.4.2 데이터 누락 보정 전략
- 이슈 발생 기간의 데이터 신뢰도 하향 조정
- 이슈 해결 후 데이터 품질 회복 추적
- 대체 데이터 소스 활용 (상담 기록의 주관적 보고)
3. 분석 알고리즘
3.1 상담 내용 감정 분석
interface EmotionAnalysis {
sentiment: 'positive' | 'neutral' | 'negative';
confidence: number;
emotionalTrends: {
day: number;
sentiment: number; // -1 to 1 스케일
}[];
}
3.2 약물 효과 패턴 분석
interface MedicationPattern {
medicationType: string[];
effectiveness: {
withMedication: number; // 평균 SOL (분)
withoutMedication: number; // 평균 SOL (분)
};
dependencyLevel: 'high' | 'medium' | 'low';
}
3.3 치료 진행도 추적
interface TreatmentProgress {
phase: 'early' | 'middle' | 'late'; // 3-7일, 8-14일, 15일+
improvementRate: number; // 개선 속도
plateauDetected: boolean; // 정체기 감지
predictedOutcome: 'excellent' | 'good' | 'fair' | 'poor';
}
4. Chain of Debate 통합
4.1 CRM Agent 의견 구조
interface CRMAgentOpinion {
// SOL 예측값
predictedSOL: {
value: number; // 분 단위
confidence: number; // 0-1 스케일
};
// 근거 데이터
evidence: {
subjectiveReports: SubjectiveSOLReport[];
complianceMetrics: ComplianceMetrics;
dataQuality: AppIssueImpact[];
treatmentProgress: TreatmentProgress;
};
// 다른 에이전트와의 일치도
agreementWithOthers: {
sleepLatencyAnalyst: number; // 0-1 스케일
psychologicalExpert: number;
cbtiExpert: number;
digitalEnvironment: number;
melatoninAnalyst: number;
};
// 핵심 인사이트
keyInsights: string[];
}
4.2 토론 참여 전략
- 초기 의견 제시: 상담 기록 기반 독립적 분석
- 타 에이전트 의견 검증: 주관적 보고와 객관적 데이터 비교
- 합의 도달: 불일치 영역 식별 및 조정
- 최종 의견: 통합된 예측값 제시
4.3 가중치 제공 기준
function calculateCRMWeight(data: CRMData): number {
let weight = 0.15; // 기본 가중치
// 상담 데이터 풍부도에 따른 조정
if (data.consultationCount > 3) weight += 0.05;
if (data.averageLogLength > 200) weight += 0.05;
// 순응도에 따른 조정
if (data.compliance > 0.8) weight += 0.1;
// 데이터 품질에 따른 조정
if (data.issueCount === 0) weight += 0.05;
return Math.min(weight, 0.4); // 최대 40%
}
5. 프롬프트 템플릿
5.1 CRM Agent 시스템 프롬프트
const CRM_AGENT_SYSTEM_PROMPT = `
당신은 SOL(Sleep Onset Latency) 예측을 위한 환자참여케어연속성전문가입니다.
## 역할
- 환자 상담 기록 분석을 통한 주관적 수면 보고 추출
- 치료 순응도 평가 및 예측 신뢰도 조정
- 데이터 품질 문제 식별 및 보정
- 다른 에이전트의 객관적 분석 검증
## 분석 대상 데이터
1. 상담 기록 (user_follow_up_log)
- 3일차, 7일차, 21일차 정기 상담 내용
- 수면제 복용 패턴 및 효과
- 스트레스 요인 및 생활 패턴
2. 치료 순응도 지표
- 상담 완료율
- 일정 준수율
- 참여 적극성
3. 데이터 품질
- 앱 사용 이슈
- 데이터 누락 기간
- 해결 상태
## 분석 방법
1. 텍스트에서 SOL 관련 키워드 추출
2. 주관적 보고와 객관적 데이터 비교
3. 감정 변화 추이 분석
4. 약물 효과 패턴 파악
5. 치료 진행도 평가
## 출력 형식
{
"predictedSOL": <number>,
"confidence": <0-1>,
"keyFindings": [<string>],
"complianceScore": <0-100>,
"dataQualityScore": <0-1>
}
`;
5.2 분석 요청 프롬프트 예시
const analysisPrompt = `
다음 환자의 상담 기록을 분석하여 SOL을 예측해주세요.
## 환자 정보
- 치료주기: Day ${dayIndex}
- 이전 SOL 평균: ${avgSOL}분
## 상담 기록
${consultationLogs}
## 순응도 데이터
- 상담 완료율: ${completionRate}%
- 일정 준수율: ${adherenceRate}%
## 데이터 품질
- 앱 이슈: ${issueCount}건
- 영향받은 기간: ${affectedDays}일
위 정보를 종합하여 다음 예측 기간의 SOL을 추정하고,
예측의 근거를 구체적으로 제시해주세요.
`;
6. 구현 고려사항
6.1 데이터 접근 권한
- CRM 스키마 읽기 권한 필요
- 개인정보 마스킹 처리
- GDPR/HIPAA 준수
6.2 성능 최적화
- 상담 기록 캐싱
- 배치 처리 지원
- 비동기 분석 파이프라인
6.3 확장성
- 다국어 상담 기록 지원
- 새로운 상담 타입 추가 가능
- 외부 CRM 시스템 연동 대비
7. 테스트 및 검증
7.1 단위 테스트
- 키워드 추출 정확도
- 순응도 계산 로직
- 데이터 품질 평가
7.2 통합 테스트
- 다른 에이전트와의 상호작용
- Chain of Debate 참여
- 최종 예측값 기여도
7.3 검증 지표
- 주관적 보고와 실제 SOL 상관관계
- 순응도와 치료 효과 상관관계
- 데이터 품질 보정 효과
8. 향후 개선 방향
- NLP 고도화: 더 정교한 텍스트 분석 모델 적용
- 실시간 분석: 상담 중 실시간 피드백 제공
- 예측 모델 학습: 과거 데이터 기반 ML 모델 훈련
- 다차원 분석: 음성 톤, 대화 속도 등 추가 지표 활용