DigitalTwin 기반 복약·위험 예측 시뮬레이션 플랫폼
모의데이터 → 시뮬레이션 → ML 예측 → 개인화 추정 → 처방 후보 비교
질병, 약물, 복약 습관, 증상 변화가 시간에 따라 얽히며 위험도가 달라진다.
시간이 지나면서 환자의 위험은 어떻게 변하고, 그 변화를 보고 어떤 판단 후보를 만들 수 있을까?
timeline
title 복약도우미 개발 흐름
기본 데이터 구조 : User / Disease / Medication / SelfDiagnosis
모의데이터 생성 : 가상 환자와 복약 데이터 생성
시계열 시뮬레이션 : 시간에 따른 상태 변화
SimulationRun 정규화 : 실행 조건과 재현성 관리
ML 예측 파이프라인 : riskScore 미래 예측
CI/CD와 배포 : 홈랩 서버와 자동화
DigitalTwin : 가상 페르소나 기반 추정
Feature 28 : 처방 후보 비교
Spring Boot
서비스 로직과 API
MySQL + Flyway
데이터와 변경 이력 관리
Tribuo
Java 기반 riskScore 예측
HTML / JS
시뮬레이션과 분석 결과 확인
Docker, Homelab, VPS
외부 접근 가능한 실행 환경
GitHub Actions
테스트와 배포 자동화
erDiagram
USER ||--o{ DIGITAL_TWIN : has
PERSONA_DEFINITION ||--o{ DIGITAL_TWIN : defines
DIGITAL_TWIN ||--o{ SIMULATION_RUN : runs
SIMULATION_RUN ||--o{ SELF_DIAGNOSIS : creates
SIMULATION_RUN ||--o{ MEDICATION_RECORD : creates
SIMULATION_RUN ||--o{ PRESCRIPTION : creates
SELF_DIAGNOSIS ||--o{ RISK_SCORE_RECORD : has
MODEL_VERSION ||--o{ ML_PREDICTION : produces
SELF_DIAGNOSIS ||--o{ ML_PREDICTION : predicted_for
DIGITAL_TWIN ||--o{ PERSONA_ESTIMATION : estimated_as
SIMULATION_RUN ||--o{ PERSONA_ESTIMATION : based_on
PRESCRIPTION ||--o{ PRESCRIPTION_COMPARISON : baseline
PRESCRIPTION_COMPARISON ||--o{ PRESCRIPTION_CANDIDATE : compares
flowchart LR
SR[SimulationRun] --> Status[status: RUNNING / COMPLETED / FAILED]
SR --> Param[parameterSnapshot]
SR --> Policy[PolicySnapshot / PolicyVersion]
SR --> Data[MedicationRecord / SelfDiagnosis / Prescription]
SR --> Dataset[ML Dataset Boundary]
Dataset --> Completed[COMPLETED 실행만 학습 대상]
같은 조건으로 다시 실행하고 비교할 수 있어야 정책·모델 변경 효과를 판단할 수 있다.
flowchart LR
Obs[현재까지 관측 가능한 데이터] --> Feature[Feature Row]
Feature --> Model[ML Model]
Model --> Next[다음 날 riskScore]
Model --> After3[3일 후 riskScore]
Rule[Rule-Based riskScore] --> Shadow[Shadow Mode 비교]
Model --> Shadow
Shadow --> Record[RiskScoreRecord / MLPrediction]
flowchart LR
Hidden[숨겨진 PersonaDefinition] --> Twin[DigitalTwin Simulation]
Twin --> Obs[복약 기록 / 자가진단 / riskScore]
Obs --> Est[PersonaEstimation]
Est --> Compare[실제 personaType과 비교]
Hidden -.추론 feature로 직접 사용하지 않음.- Est
DigitalTwin의 핵심은 정답을 처음부터 보여주는 것이 아니라 관측 데이터로 숨겨진 특성을 추정하는 과정이다.
Rule-Based와 ML score를 같은 기준으로 비교
DigitalTwin의 숨겨진 특성 추정
실제 처방과 후보 처방을 분리
예측과 개인화 추정 기반 처방 후보 비교
MAINTAIN
현재 기준선을 넘지 않아 유지 판단
REINFORCE / WARNING
3일 후 위험 상승, 높은 변동성, 낮은 순응도 추정
ML이 실제 처방을 대체했다는 뜻이 아니라, 기존 판단과 다른 후보를 만들고 그 근거를 비교할 수 있다는 뜻이다.
위험 상승 조기 감지 비교
후보 판단 근거 비교
이후 riskScore 흐름 확인
실제 치료 효과 단정
실제 처방 대체
임상 검증 주장
홈랩 배포, Nginx/Cloudflare 보안 강화, GitHub Actions CI/CD, Flyway 도입
복합 장애, 데드락, 단독 통과/전체 실패를 통해 통합 검증의 필요성을 체감
앱 risk-summary와 ML 연결
설명 가능한 예측
OOD 검증
생체·생활 데이터 통합
counterfactual simulation
복약도우미는 가상의 환자 상태를 만들고, 시간에 따른 변화를 시뮬레이션하며, ML로 미래 위험을 예측하고, 디지털트윈 기반 개인화 분석을 통해 기존 처방 판단과 다른 후보를 비교하는 실험 플랫폼이다.