# CHANGELOG — CirrDecompUnit-Kor

## [2026-05-27]

### 수행 내용
- 시르데컴프유닛코어 (CirrDecompUnit-Kor) MVP 초기 빌드 완료
- Streamlit 대시보드 (`app.py`) 5탭: cohort/etiology, ACLF/MELD, protocol, LT/KONOS, post-discharge & report
- CLI (`main.py`) — synthetic gen / KPI summary / docx 리포트 / episode 상세
- modules: scoring (MELD/MELD-Na/MELD 3.0/Child-Pugh/CLIF-SOFA), aclf (EASL-CLIF grade), protocols (6종 decomp type 부합 rule), lt_candidacy (KONOS/SLK proxy), ingest (PHI de-identification), kpi_report (한·영 docx 리포트)
- synthetic data: 380 환자 / 546 episodes / 3210 lab rows (MASLD/HBV/alcohol/HCV mix, ACLF grade 4단계)

### 주요 결정 사항
- CLI는 Python 표준 라이브러리만 사용 (`--help`/`--gen`/`--summary`/`--report`/`--episode`) — 가상환경 없이도 검수 가능. Streamlit 대시보드만 `requirements.txt` 설치 필요.
- CLIF-SOFA organ failure threshold를 Moreau 2013 원본 기준으로 맞춤 (liver≥12, kidney≥3.5, INR≥2.5, HE grade III-IV, MAP<60). 첫 시도에서 너무 관대해서 ACLF-2/3가 거의 안 잡혔던 문제 해결.
- python-docx 미설치 환경 fallback: `.md` 자동 저장.
- KM/Cox 곡선은 lifelines 무거운 의존이라 MVP에서는 period rate (30d mortality, 90d readmission) 집계로 대체 — 향후 확장.
- 모든 출력에 "참고용·연구용" 디스클레이머 + PHI auto-drop.

### 변경된 파일
- `app.py` — Streamlit 대시보드
- `main.py` — CLI + synthetic data generator
- `modules/scoring.py` — MELD / MELD-Na / MELD 3.0 / Child-Pugh / CLIF-SOFA
- `modules/aclf.py` — EASL-CLIF ACLF grade
- `modules/protocols.py` — 6종 decomp type 부합 rule
- `modules/lt_candidacy.py` — LT / KONOS / SLK proxy
- `modules/ingest.py` — CSV ingest + PHI de-identification
- `modules/kpi_report.py` — KPI aggregation + docx 리포트
- `data/*.csv` — synthetic 데이터 6종
- `reports/CirrDecompUnit_QI_kor.docx`, `_eng.docx`, `kpis.json` — 자동 생성
- `requirements.txt`, `README.md`, `QA.md`

### 재현 방법
```bash
cd "2026-05-27-3-cirr-decomp-unit-kor"
python3 main.py --gen --n 380          # synthetic CSV 생성
python3 main.py --summary --top 5      # KPI + ward 부합률 랭킹
python3 main.py --report               # reports/ 에 docx + JSON

# 대시보드 실행 (가상환경)
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
```
