# MASLDGuidelineDeltaWatch (매슬드가이드라인델타워치)

## 1. 목적 / 도메인 / 카테고리 / 대상 사용자
- **목적**: 다국가 MASLD/MASH 가이드라인의 draft·public consultation·update·correction을 자동 polling 후 권고 단위 diff(추가/변경/삭제)를 제공하고, 인용 paper의 retraction/PubPeer/Letter to Editor cascade와 NIT cutoff·약물 권고 변경을 함께 추적하여 임상 의사결정·의견서 제출·MASLDStager staging logic 업데이트에 활용한다.
- **도메인**: MASLD (Metabolic dysfunction-Associated Steatotic Liver Disease) / MASH (Metabolic dysfunction-Associated Steatohepatitis)
- **카테고리**: 연구 알림 (PubMed/ClinicalTrials.gov/conference abstract 큐레이션 대신 가이드라인 큐레이션 + delta 알림)
- **대상 사용자**: 한국 내분비/소화기/간내과 의사, KASL 가이드라인 위원, MASLDStager 운영자, MASLD 연구자

## 2. 설치
- 요구 사항: Python 3.11+ (stdlib + difflib 만 사용)
- 외부 패키지 설치 없음. pandas는 옵션이며 본 MVP는 사용하지 않는다.
- 외부 네트워크 호출 없음. 모든 데이터는 `data/` 합성/mock data.

## 3. 실행법

```bash
python3 main.py --help

# 1. 가이드라인 mock data 적재
python3 main.py ingest --society all
python3 main.py ingest --society aasld

# 2. 가이드라인 version diff (권고 단위)
python3 main.py diff --society aasld --from 2024_amendment --to 2026_revision_draft
python3 main.py diff --society kasl  --from 2021             --to 2025_update_draft
python3 main.py diff --society easl  --from 2024             --to 2026_update_draft
python3 main.py diff --society apasl --from 2024             --to 2025_update
python3 main.py diff --society nice  --from ng49_2024        --to ng49_2025_update

# 3. 권고 evidence base trace (cite paper retraction/correction/letter cascade)
python3 main.py evidence-trace --recommendation AASLD-2024-R14   # FAST score → expression_of_concern alert
python3 main.py evidence-trace --recommendation AASLD-2024-R09   # pioglitazone → correction alert

# 4. NIT cutoff timeline
python3 main.py nit-cutoff --biomarker fib4
python3 main.py nit-cutoff --biomarker lsm    # 12 → 15 kPa rule-in 변화 시각화
python3 main.py nit-cutoff --biomarker elf
python3 main.py nit-cutoff                    # 모든 biomarker

# 5. 약물 권고 + FDA/EMA/MFDS 라벨 cross-link
python3 main.py drug-update --drug resmetirom
python3 main.py drug-update --drug pegozafermin
python3 main.py drug-update --drug efruxifermin
python3 main.py drug-update --drug survodutide
python3 main.py drug-update                   # 모든 약물

# 6. KASL 의견서 한국어 draft 생성
python3 main.py korean-comment --recommendation KASL-2025-R11   # 한국 resmetirom 권고
python3 main.py korean-comment --recommendation AASLD-2026-R05  # LSM cutoff 의견

# 7. MASLDStager staging logic 영향 매핑 + cutoff drift 검출
python3 main.py masldstager-impact

# 8. 주간 다이제스트 + Telegram/Slack 시뮬레이션 (한국어)
python3 main.py digest --korean
python3 main.py digest
```

## 4. 데이터 출처
운용 시 활용할 공개 출처(본 MVP는 모두 합성/mock data):

| 출처 | URL | 본 MVP 적용 |
|---|---|---|
| AASLD Practice Guidance (PDF/HTML) | https://www.aasld.org/practice-guidance | mock |
| EASL Clinical Practice Guidelines | https://easl.eu/publication/easl-clinical-practice-guidelines/ | mock |
| APASL guidelines | https://apasl.info/guidelines/ | mock |
| KASL 가이드라인 | https://www.kasl.org | mock |
| NICE NG49 | https://www.nice.org.uk/guidance/ng49 | mock |
| AISF position papers | https://www.webaisf.org | mock |
| ALEH guidelines | https://aleh.org | mock |
| PubMed E-utilities | https://www.ncbi.nlm.nih.gov/books/NBK25497/ | mock cite_papers.json |
| RetractionWatch DB | http://retractiondatabase.org | mock |
| PubPeer API | https://api.pubpeer.com/v1/publications | mock |
| FDA Drugs@FDA | https://www.accessdata.fda.gov/scripts/cder/daf/ | mock drugs_label.json |
| EMA EPAR | https://www.ema.europa.eu | mock |
| MFDS 의약품안전나라 | https://nedrug.mfds.go.kr | mock |

## 5. 검수 체크리스트
- [x] `data/guidelines/` 13개 society/version JSON, 권고 ~107건 적재
- [x] AASLD 2023 → 2024 amendment → 2026 draft diff 정상 작동
- [x] EASL 2024 → 2026 update draft diff 정상 작동
- [x] KASL 2021 → 2025 update draft diff 정상 작동
- [x] APASL 2024 → 2025 update / NICE 2024 → 2025 diff 정상 작동
- [x] FAST score 권고 evidence-trace에서 expression_of_concern alert 출력
- [x] pioglitazone 권고 evidence-trace에서 correction alert 출력
- [x] LSM cutoff 12 → 15 kPa 변경 timeline 강조
- [x] FIB-4 65세 이상 cutoff 2.0 도입 timeline 표시
- [x] resmetirom FDA(2024-03)/EMA(2025-08)/MFDS(under review 2026) cross-link 출력
- [x] pegozafermin/efruxifermin/survodutide 신규 권고 detection (added)
- [x] KASL 의견서 template 한국어 fill-in + 자동 외삽 평가 5.4 절 주입
- [x] MASLDStager LSM rule-in cutoff drift 알림 작동
- [x] MASLDStager ELF cutoff drift (NICE 10.51 vs layered 9.8/11.3) 알림
- [x] digest D-30/D-7/D-1 마감일 색깔 표시
- [x] 모든 출력 끝에 한국어 디스클레이머
- [x] `python3 -c "import ast; ast.parse(open('main.py').read())"` 통과
- [x] 외부 네트워크/API 호출 없음

## 6. 디스클레이머
본 도구는 **참고용·연구용**입니다. mock data 기반 데모이므로 실제 임상 결정에 사용할 수 없습니다. KASL/AASLD/EASL 가이드라인 정식 의견서 제출 전 본인 및 위원회 검토가 필요합니다. 약물 처방, 환자 케어, 가이드라인 정식 인용은 원문 PDF·EHR·MFDS 라벨을 직접 확인하십시오.

## 7. 한계
- 모든 데이터는 합성/mock입니다. 실제 가이드라인 PDF 텍스트가 아닙니다.
- 실제 가이드라인 PDF parse는 society별 layout이 다르므로 운용 시 LLM(예: Claude, GPT-4-class) 보강이 필요합니다.
- Diff 알고리즘은 supersedes → recommendation_id → topic 1:1 fallback 순. 동일 topic에 권고 여러 개 있으면 매칭 실패할 수 있습니다.
- Korean extrapolation은 rule-based heuristic이며 한국 코호트 RWE는 별도 검토가 필요합니다.
- RetractionWatch/PubPeer는 polling 시 rate-limit과 파싱 오류 가능성 있음 (실 운용 시 구현 필요).
- 외부 네트워크 호출 금지 제약으로 인해 본 MVP는 시뮬레이션만 수행합니다.

## 8. 자율 결정 사항 (Build Agent 기록)
- 권고 매칭 우선순위는 (1) supersedes 필드 → (2) 동일 ID → (3) 동일 topic 1:1로 결정.
- AASLD 2026/EASL 2026/KASL 2025/NICE 2025/APASL 2025 등 일부 update version은 partial(주요 변경 권고만 포함)로 모델링하여 매칭 fallback이 자연스럽게 발생하도록 함.
- LSM rule-in cutoff 12→15 kPa 변경을 모든 society 2025+ version에 일관되게 반영(현실 추세 반영).
- FIB-4 elderly 2.0 임계값을 2024 AASLD amendment 시점부터 도입하여 KASL 2025 draft까지 cascade.
- ELF cutoff은 NICE의 단일 임계값 10.51 vs 학회 통상 9.8/11.3 layered 모델 두 가지 모두 보존 → MASLDStager-impact에서 cutoff drift 자동 검출.
- MASLDStager rule는 9개로 제한 (현실적 staging logic 핵심만).
- 디스클레이머는 모든 서브커맨드 출력 끝단에 자동 부착.
