# CareGapScope (대사진료 케어갭 감사·피드백 대시보드)

> 가이드라인 룰엔진 + 케어갭 감사·피드백 대시보드(오프라인). 코호트 CSV를 올리면 가이드라인 권고 대비 빠진 과정조치(care gap)를 자동 식별·시각화한다. — MVP

## 목적
당뇨(T2DM/T1DM)·MASLD 진료에서 가이드라인이 권고하는 **과정조치(검사·처방)**가 실제로
수행되었는지를 코호트 단위로 감사(audit)하고, 빠진 조치(care gap)를 조치별·제공자별·하위그룹별로
시각화하여 **감사·피드백(audit & feedback)** 기반 질 개선과 리콜 캠페인 워크리스트 추출을 지원한다.

## 도메인 / 카테고리
- **도메인**: DM (T2DM·T1DM) + MASLD
- **카테고리**: 웹 기반 대시보드 (과정품질 KPI · 제공자 변이 모니터링)

## 핵심 기능 (5)
1. **케어갭 룰엔진** — 적격(eligible) 조건 → 권고조치(satisfied_if) 매핑. 예: `T2DM ∧ 12개월 내 FIB-4 없음 → 갭`. KDA 2023 / ADA 2025 / AASLD 2023 프리셋 + 사용자 편집(JSON 룰). 연산자: `eq, lt, gte, contains, within_days, is_empty, all, any`.
2. **갭률 KPI 카드 + 추세** — 조치별 미수행 비율, 월별 추세선, 룰셋의 목표선(target) 대비 비교.
3. **제공자별 변이(provider variation)** — 익명화 제공자 코드별 갭률 funnel plot(95% 관리한계 밖 = 과대변이 outlier, 동료 벤치마크).
4. **워크리스트 추출** — 선택 조치에 갭이 있는 환자 목록을 리콜 캠페인용 CSV로 내보내기. 단독 실행 · EMR 비연동(수동 다운로드).
5. **드릴다운** — 연령·성별·약물군·주진단별 갭 분해.

## 코드화한 룰 (data/ruleset.json)
| ID | 조치 | 적격 | 출처 |
|---|---|---|---|
| DM_HBA1C_6M | HbA1c 6개월 내 측정 | DM | ADA 2025 §6 / KDA 2023 |
| DM_LIPID_12M | 지질검사 12개월 내 | DM | ADA 2025 §10 / KDA 2023 |
| DM_UACR_12M | UACR 연 1회 | DM | ADA 2025 §11 / KDA 2023 |
| DM_RETINA_24M | 안저검사 24개월 내 | DM | ADA 2025 §12 / KDA 2023 |
| DM_DKD_SGLT2I | DKD 환자 SGLT2i 처방 | DM ∧ (UACR≥30 ∨ eGFR<60) | ADA 2025 §11 / KDIGO 2022 |
| MASLD_FIB4_12M | FIB-4 12개월 내 평가 | MASLD | AASLD 2023 |
| MASLD_ELASTO_HIGHRISK | 고위험 시 간탄성도 검사 | MASLD ∧ (FIB-4≥1.3 ∨ 미평가) | AASLD 2023 (2단계 층화) |
| ALL_BP_12M | 혈압 측정 12개월 내 | DM ∨ MASLD | ADA 2025 §10 / KDA 2023 |

## 산출물 구조
```
2026-06-07-2-caregapscope/
├── README.md
├── index.html                       # 단일 파일 대시보드 (Plotly 2.27.0 pinned CDN)
├── data/
│   ├── generate_synthetic_cohort.py # Python 3 stdlib only, 고정 시드
│   ├── cohort.csv                   # 합성 코호트 360행 × 24열
│   └── ruleset.json                 # KDA/ADA/AASLD 룰 프리셋 (8 룰)
└── QA.md
```

## 실행법
```
# 권장: 로컬 정적 서버로 열기 (fetch가 CSV/JSON 로드)
cd 2026-06-07-2-caregapscope
python3 -m http.server 8000
# 브라우저에서 http://localhost:8000/index.html

# 또는 index.html 더블클릭(file://). 이 경우 fetch가 막히면
# 내장 폴백 데이터로 자동 시연되며, 상단 [코호트 CSV]로 cohort.csv를 직접 업로드 가능.
```
페이지 로드 시 기본 합성 데이터로 즉시 대시보드가 표시된다(업로드 불필요).

## 데이터 입력 스키마 (사용자 CSV 업로드 시)
`patient_id, provider_code, dx_primary, dm_flag, masld_flag, age, sex, bmi, egfr, drug_classes(;구분), last_visit_date, hba1c_last_date, hba1c_value, lipid_last_date, ldl_value, uacr_last_date, uacr_value, retina_exam_last_date, fib4_last_date, fib4_value, elastography_last_date, bp_last_date, sbp, dbp`
- 날짜는 `YYYY-MM-DD`. 기준일(오늘)은 2026-06-07로 고정(룰엔진 `within_days` 계산).

## 검수 체크리스트
- [ ] `index.html`이 브라우저에서 오류 없이 로드되고 KPI·차트가 표시되는가
- [ ] `data/cohort.csv`가 360행으로 읽히는가 (헤더 포함 361줄)
- [ ] `data/ruleset.json`이 유효한 JSON이며 8개 룰을 포함하는가
- [ ] Plotly CDN이 pinned 버전(`plotly-2.27.0.min.js`)인가
- [ ] 워크리스트 CSV 내보내기가 동작하는가
- [ ] 룰 편집기에서 JSON 수정 후 재계산되는가
- [ ] 디스클레이머가 README와 index.html 양쪽에 있는가

## 출처
- **KDA 2023** 당뇨병 진료지침 (대한당뇨병학회)
- **ADA 2025** Standards of Care in Diabetes (Diabetes Care 2025;48 Suppl.1)
- **AASLD 2023** MASLD/MASH Practice Guidance (Hepatology 2023)
- **KDIGO 2022** Diabetes in CKD (DKD에서 SGLT2i 권고 반영)
- **Cochrane / Ivers et al. 2012** Audit and feedback: effects on professional practice and healthcare outcomes (감사·피드백의 질 개선 효과 근거)

## ⚠️ 디스클레이머
본 도구는 **연구용·참고용**이며 임상 의사결정을 대체하지 않습니다. 포함된 모든 데이터는
**합성(synthetic) 데이터**이며 실제 환자정보가 아닙니다. 룰셋은 가이드라인을 단순화한 데모
버전이므로 실제 적용 전 원문 가이드라인을 반드시 확인하십시오. 모든 처리는 브라우저 내에서만
수행되며 환자정보는 외부로 전송되지 않습니다.
