Medical Statement 도메인 이벤트 스토밍
본 문서는 Medical Statement 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 도메인 전문가, 개발자, 그리고 이해관계자들이 참여하여 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.
도메인 이벤트
도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.
1. 진료비 세부산정 내역서 업로드 및 분석 이벤트
1.1 백엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| MedicalStatementUploaded | 진료비 세부산정 내역서 이미지가 업로드됨 | 사용자 이미지 업로드 완료 |
| TemporaryAccessCodeGenerated | 임시 액세스 코드가 생성됨 | 진료비 세부산정 내역서 업로드 완료 시 |
| LLMAnalysisTaskQueued | LLM 분석 작업이 큐에 추가됨 | Cloud Tasks 작업 생성 |
| LLMAnalysisStarted | LLM 분석이 시작됨 | Cloud Tasks 작업 실행 |
| LLMAnalysisCompleted | LLM 분석이 완료됨 | LLM 응답 수신 |
| LLMAnalysisFailed | LLM 분석이 실패됨 | LLM 오류 발생 |
| MedicalStatementAnalyzed | 진료비 세부산정 내역서 분석 결과가 생성됨 | LLM 분석 완료 |
| AnalysisResultStored | 분석 결과가 저장됨 | 데이터베이스 저장 완료 |
| MedicalStatementProcessingCompleted | 진료비 세부산정 내역서 처리가 완료됨 | 전체 분석 프로세스 완료 |
| MedicalStatementProcessingFailed | 진료비 세부산정 내역서 처리가 실패됨 | 처리 과정 중 오류 발생 |
| AnalysisNotificationSent | 분석 완료 알림이 발송됨 | 분석 완료 후 사용자 알림 |
| FileUploadValidated | 업로드 파일이 검증됨 | 파일 형식 및 크기 검증 |
| ImageMetadataExtracted | 이미지 메타데이터가 추출됨 | 이미지 업로드 시 |
| ImageOptimized | 이미지가 최적화됨 | 저장 전 이미지 압축 |
1.2 프론트엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| CameraLaunched | 카메라가 실행됨 | 촬영 버튼 탭 |
| PhotoCaptured | 사진이 촬영됨 | 카메라 셔터 버튼 탭 |
| GalleryOpened | 갤러리가 열림 | 갤러리 버튼 탭 |
| ImageSelected | 이미지가 선택됨 | 갤러리에서 이미지 선택 |
| ImagePreviewDisplayed | 이미지 미리보기가 표시됨 | 이미지 선택 후 |
| UploadStarted | 업로드가 시작됨 | 업로드 버튼 탭 |
| UploadProgressUpdated | 업로드 진행률이 업데이트됨 | 업로드 진행 중 |
| UploadCompleted | 업로드가 완료됨 | 서버 업로드 완료 |
| UploadFailed | 업로드가 실패됨 | 네트워크 오류 또는 서버 오류 |
| AnalysisStatusChecked | 분석 상태가 확인됨 | 주기적 상태 확인 |
| AnalysisCompletionNotified | 분석 완료가 알림됨 | 푸시 알림 수신 |
| RetryButtonTapped | 재시도 버튼이 탭됨 | 실패 시 재시도 |
2. 진료비 세부산정 내역서 검증 및 승인 이벤트
2.1 백엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| MedicalStatementSubmittedForReview | 진료비 세부산정 내역서가 검토 대기열에 추가됨 | LLM 분석 완료 |
| ReviewerAssigned | 검토자가 할당됨 | 자동 또는 수동 할당 |
| ReviewStarted | 검토가 시작됨 | 의료진이 검토 시작 |
| MedicalStatementApproved | 진료비 세부산정 내역서가 승인됨 | 의료진 승인 결정 |
| MedicalStatementRejected | 진료비 세부산정 내역서가 거부됨 | 의료진 거부 결정 |
| FinalAccessCodeGenerated | 정식 액세스 코드가 생성됨 | 승인 완료 시 |
| ApprovalNotificationSent | 승인 알림이 발송됨 | 승인 완료 후 |
| RejectionNotificationSent | 거부 알림이 발송됨 | 거부 완료 후 |
| ReviewHistoryRecorded | 검토 이력이 기록됨 | 승인/거부 결정 시 |
| ReReviewRequested | 재검토가 요청됨 | 재검토 요청 시 |
| ReviewerCommentAdded | 검토자 의견이 추가됨 | 의료진 의견 입력 |
| ReviewDeadlineSet | 검토 마감일이 설정됨 | 검토 할당 시 |
| ReviewDeadlineExpired | 검토 마감일이 만료됨 | 마감일 경과 |
2.2 프론트엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| ReviewQueueOpened | 검토 대기열이 열림 | 의료진 앱 접속 |
| MedicalStatementDetailViewed | 진료비 세부산정 내역서 상세가 조회됨 | 검토 항목 선택 |
| AnalysisResultCompared | 분석 결과가 비교됨 | 원본과 분석 결과 비교 |
| ApprovalButtonTapped | 승인 버튼이 탭됨 | 승인 결정 |
| RejectionButtonTapped | 거부 버튼이 탭됨 | 거부 결정 |
| RejectionReasonEntered | 거부 사유가 입력됨 | 거부 사유 작성 |
| ReviewCommentAdded | 검토 의견이 추가됨 | 의견 입력 |
| ReviewSubmitted | 검토가 제출됨 | 최종 검토 완료 |
| PatientNotificationViewed | 환자 알림이 확인됨 | 환자 앱에서 결과 확인 |
| ReuploadRequested | 재업로드가 요청됨 | 거부 후 재업로드 |
3. 데이터 관리 이벤트
3.1 백엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|
| MedicalStatementArchived | 진료비 세부산정 내역서가 아카이브됨 | 보존 기간 정책에 따라 |
| DataRetentionPolicyApplied | 데이터 보존 정책이 적용됨 | 스케줄된 정책 실행 |
| AuditLogCreated | 감사 로그가 생성됨 | 모든 중요 작업 시 |
| DataBackupCompleted | 데이터 백업이 완료됨 | 정기 백업 실행 |
| DataIntegrityChecked | 데이터 무결성이 확인됨 | 정기 무결성 검사 |
| AnalyticsReportGenerated | 분석 리포트가 생성됨 | 정기 통계 생성 |
| StatisticsCalculated | 통계가 계산됨 | 통계 요청 또는 정기 실행 |
정책(Policies)
시스템의 자동화된 비즈니스 규칙입니다.
진료비 세부산정 내역서 분석 정책
백엔드 정책
- 진료비 세부산정 내역서 업로드 시 즉시 임시 액세스 코드 생성
- LLM 분석은 비동기로 처리하여 사용자 대기 시간 최소화
- 분석 완료 시 자동으로 검토 대기열에 추가
- 분석 실패 시 최대 3회까지 자동 재시도
- 임시 액세스 코드는 승인 완료 시까지만 유효
- 진료비 세부산정 내역서 원본 이미지는 법적 요구사항에 따라 최소 7년간 보존
- 개인정보가 포함된 분석 결과는 암호화하여 저장
- 모든 진료비 세부산정 내역서 처리 과정은 감사 로그로 기록
프론트엔드 정책
- 이미지 업로드 전 파일 크기 및 형식 검증 (최대 10MB, JPEG/PNG)
- 업로드 진행률을 실시간으로 표시
- 네트워크 오류 시 자동 재시도 (최대 3회)
- 분석 완료 시 푸시 알림으로 사용자에게 즉시 통지
- 업로드 실패 시 명확한 오류 메시지와 해결 방법 제시
진료비 세부산정 내역서 검증 정책
백엔드 정책
- 모든 진료비 세부산정 내역서는 의료진의 최종 승인이 있어야만 유효
- 검토 할당은 작업량 기반 자동 분배 또는 수동 할당
- 승인된 진료비 세부산정 내역서에 대해서만 정식 액세스 코드 생성
- 거부된 진료비 세부산정 내역서는 재업로드 가능하며 새로운 분석 과정 진행
- 검토 마감일은 할당 시점으로부터 48시간
- 마감일 경과 시 자동으로 다른 검토자에게 재할당
- 검토 이력은 감사 목적으로 영구 보존
- 승인/거부 결정 시 즉시 관련 당사자에게 알림 발송
프론트엔드 정책
- 의료진은 원본 이미지와 LLM 분석 결과를 나란히 비교 가능
- 승인/거부 결정 시 필수 확인 절차 제공
- 거부 시 상세한 거부 사유 입력 필수
- 검토 완료 후 다음 검토 대상으로 자동 이동
- 검토 진행 상황을 실시간으로 표시
데이터 보안 정책
백엔드 정책
- 진료비 세부산정 내역서 이미지는 업로드 즉시 암호화하여 저장
- 개인식별정보는 자동으로 마스킹 처리
- 접근 권한은 최소 권한 원칙에 따라 제한
- 모든 데이터 접근은 감사 로그로 기록
- 데이터 전송은 TLS 1.3 이상으로 암호화
- 진료비 세부산정 내역서 URL은 Signed URL로 제공 (30분 유효)
프론트엔드 정책
- 진료비 세부산정 내역서 이미지는 앱 내 임시 저장 후 업로드 완료 시 즉시 삭제
- 개인정보가 포함된 화면은 스크린샷 방지 처리
- 앱 백그라운드 전환 시 민감 정보 화면 블러 처리
- 생체 인증 또는 PIN을 통한 추가 보안 인증
명령(Commands)
도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.
1. 진료비 세부산정 내역서 업로드 명령
1.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| UploadMedicalStatement | 진료비 세부산정 내역서 업로드 처리 | MedicalStatementUploaded 이벤트 발생 |
| GenerateTemporaryAccessCode | 임시 액세스 코드 생성 | TemporaryAccessCodeGenerated 이벤트 발생 |
| QueueLLMAnalysis | LLM 분석 작업 큐 추가 | LLMAnalysisTaskQueued 이벤트 발생 |
| StartLLMAnalysis | LLM 분석 시작 | LLMAnalysisStarted 이벤트 발생 |
| ProcessLLMResponse | LLM 응답 처리 | LLMAnalysisCompleted 또는 LLMAnalysisFailed 이벤트 발생 |
| StoreAnalysisResult | 분석 결과 저장 | AnalysisResultStored 이벤트 발생 |
| ValidateUploadedFile | 업로드 파일 검증 | FileUploadValidated 이벤트 발생 |
| ExtractImageMetadata | 이미지 메타데이터 추출 | ImageMetadataExtracted 이벤트 발생 |
| OptimizeImage | 이미지 최적화 | ImageOptimized 이벤트 발생 |
| SendAnalysisNotification | 분석 완료 알림 발송 | AnalysisNotificationSent 이벤트 발생 |
1.2 프론트엔드 명령
| 명령 | 설명 | 영향 |
|---|
| LaunchCamera | 카메라 실행 | CameraLaunched 이벤트 발생 |
| CapturePhoto | 사진 촬영 | PhotoCaptured 이벤트 발생 |
| OpenGallery | 갤러리 열기 | GalleryOpened 이벤트 발생 |
| SelectImage | 이미지 선택 | ImageSelected 이벤트 발생 |
| PreviewImage | 이미지 미리보기 | ImagePreviewDisplayed 이벤트 발생 |
| StartUpload | 업로드 시작 | UploadStarted 이벤트 발생 |
| CheckAnalysisStatus | 분석 상태 확인 | AnalysisStatusChecked 이벤트 발생 |
| RetryUpload | 업로드 재시도 | RetryButtonTapped 이벤트 발생 |
2. 진료비 세부산정 내역서 검증 명령
2.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| SubmitForReview | 검토 대기열 추가 | MedicalStatementSubmittedForReview 이벤트 발생 |
| AssignReviewer | 검토자 할당 | ReviewerAssigned 이벤트 발생 |
| StartReview | 검토 시작 | ReviewStarted 이벤트 발생 |
| ApproveMedicalStatement | 진료비 세부산정 내역서 승인 | MedicalStatementApproved 이벤트 발생 |
| RejectMedicalStatement | 진료비 세부산정 내역서 거부 | MedicalStatementRejected 이벤트 발생 |
| GenerateFinalAccessCode | 정식 액세스 코드 생성 | FinalAccessCodeGenerated 이벤트 발생 |
| RecordReviewHistory | 검토 이력 기록 | ReviewHistoryRecorded 이벤트 발생 |
| RequestReReview | 재검토 요청 | ReReviewRequested 이벤트 발생 |
| AddReviewerComment | 검토자 의견 추가 | ReviewerCommentAdded 이벤트 발생 |
| SetReviewDeadline | 검토 마감일 설정 | ReviewDeadlineSet 이벤트 발생 |
| SendApprovalNotification | 승인 알림 발송 | ApprovalNotificationSent 이벤트 발생 |
| SendRejectionNotification | 거부 알림 발송 | RejectionNotificationSent 이벤트 발생 |
2.2 프론트엔드 명령
| 명령 | 설명 | 영향 |
|---|
| OpenReviewQueue | 검토 대기열 열기 | ReviewQueueOpened 이벤트 발생 |
| ViewMedicalStatementDetail | 진료비 세부산정 내역서 상세 조회 | MedicalStatementDetailViewed 이벤트 발생 |
| CompareAnalysisResult | 분석 결과 비교 | AnalysisResultCompared 이벤트 발생 |
| TapApprovalButton | 승인 버튼 탭 | ApprovalButtonTapped 이벤트 발생 |
| TapRejectionButton | 거부 버튼 탭 | RejectionButtonTapped 이벤트 발생 |
| EnterRejectionReason | 거부 사유 입력 | RejectionReasonEntered 이벤트 발생 |
| AddReviewComment | 검토 의견 추가 | ReviewCommentAdded 이벤트 발생 |
| SubmitReview | 검토 제출 | ReviewSubmitted 이벤트 발생 |
| ViewPatientNotification | 환자 알림 확인 | PatientNotificationViewed 이벤트 발생 |
| RequestReupload | 재업로드 요청 | ReuploadRequested 이벤트 발생 |
3. 데이터 관리 명령
3.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|
| ArchiveMedicalStatement | 진료비 세부산정 내역서 아카이브 | MedicalStatementArchived 이벤트 발생 |
| ApplyDataRetentionPolicy | 데이터 보존 정책 적용 | DataRetentionPolicyApplied 이벤트 발생 |
| CreateAuditLog | 감사 로그 생성 | AuditLogCreated 이벤트 발생 |
| BackupData | 데이터 백업 | DataBackupCompleted 이벤트 발생 |
| CheckDataIntegrity | 데이터 무결성 확인 | DataIntegrityChecked 이벤트 발생 |
| GenerateAnalyticsReport | 분석 리포트 생성 | AnalyticsReportGenerated 이벤트 발생 |
| CalculateStatistics | 통계 계산 | StatisticsCalculated 이벤트 발생 |
액터(Actors)
시스템과 상호작용하는 주체들입니다.
환자 (Patient)
- 진료비 세부산정 내역서를 촬영하거나 업로드하는 주체
- 분석 결과 및 승인/거부 상태를 확인
- 거부 시 재업로드 수행
의료진 (Medical Professional)
- LLM 분석 결과를 검토하고 승인/거부 결정을 내리는 주체
- 검토 의견 및 거부 사유 제공
- 진료비 세부산정 내역서 검증 권한 보유
시스템 (System)
- 진료비 세부산정 내역서 업로드 및 저장 처리
- LLM을 이용한 자동 분석 수행
- 검토 프로세스 관리 및 알림 발송
- 데이터 보안 및 백업 관리
LLM 분석 엔진 (LLM Analysis Engine)
- 진료비 세부산정 내역서 이미지 분석 수행
- 구조화된 분석 결과 생성
- OCR 및 자연어 처리 수행
알림 시스템 (Notification System)
- 분석 완료, 승인/거부 결과 알림 발송
- 검토 마감일 알림 발송
- 시스템 상태 알림 관리
애그리게잇(Aggregates)
도메인 객체들의 클러스터로, 트랜잭션 일관성 경계를 형성합니다.
진료비 세부산정 내역서 (MedicalStatement)
- 진료비 세부산정 내역서 ID
- 업로드 사용자 정보
- 원본 이미지 정보
- 업로드 시간
- 파일 메타데이터
- 처리 상태
LLM 분석 결과 (AnalysisResult)
- 분석 ID
- 진료비 세부산정 내역서 ID
- LLM 모델 정보
- 분석 결과 데이터
- 신뢰도 점수
- 분석 완료 시간
- 오류 정보
검증 프로세스 (VerificationProcess)
- 검증 ID
- 진료비 세부산정 내역서 ID
- 할당된 검토자
- 검토 상태
- 승인/거부 결정
- 검토 의견
- 거부 사유
- 검토 완료 시간
액세스 코드 (AccessCode)
- 액세스 코드 ID
- 코드 문자열
- 코드 타입 (임시/정식)
- 진료비 세부산정 내역서 ID
- 생성 시간
- 만료 시간
- 활성 상태
검토 이력 (ReviewHistory)
- 이력 ID
- 진료비 세부산정 내역서 ID
- 검토자 정보
- 검토 결과
- 검토 시간
- 의견 및 코멘트
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|
| 0.1.0 | 2025-01-03 | bok@weltcorp.com | 최초 작성 - 한국 진료비 세부산정 내역서 분석 시스템 이벤트 스토밍 |