# ObesityTrialIntegrity-Kor

항비만 RCT 데이터 무결성 감시 (RBQM / Central Statistical Monitoring) — standalone Streamlit 도구.

- **도메인**: Obesity (비만대사질환)
- **카테고리**: 인체실험 도구 — RCT 데이터 품질 감시 (RBQM / central statistical monitoring)
- **MVP 한 줄**: 항비만 RCT의 누적 체중·BMI·허리둘레·DXA·활력징후 데이터를 받아 약효 class별 reference envelope 대비 궤적 plausibility, carried-forward/복사값, 자릿수 선호, 사이트 효과 이질성 funnel, DXA 내부정합성을 자동 감시하고 RBQM 리포트를 생성한다.

---

## 의학적·연구적 디스클레이머

본 도구는 **연구용·참고용**이며, 실제 임상시험 모니터링 의사결정은 자격을 갖춘 담당자(모니터/통계/메디컬)가 수행해야 한다.

내장된 약효 reference envelope 수치(GLP-1RA·tirzepatide·triple agonist·placebo 감량 궤적)는 **예시적·교육용**이며, 실제 적용 전 문헌값(STEP, SURMOUNT 등 published RCT)으로 반드시 검증해야 한다. 본 MVP의 모든 데이터는 합성(synthetic)이며 실제 환자/시험 데이터가 아니다.

---

## 핵심 기능 5개

1. **체중·체성분 Ingest + Visit Window QC** — visit별 체중·BMI·허리둘레·DXA(지방/제지방/골량)·혈압·심박수 CSV import, visit 시점 window 일탈·체중 결측 QC 플래그.
2. **궤적 Plausibility vs 약효 Reference Envelope** — GLP-1RA·tirzepatide·triple agonist·placebo class별 전형 감량 궤적(지수 포화 곡선)을 reference envelope으로 내장. 환자/사이트 궤적이 envelope(±2.5σ) 밖이면 플래그.
3. **Carried-forward·복사값·자릿수 선호 탐지** — 직전 visit 체중 반복(carried-forward), 환자 간 동일값 공유, 정수 kg 반올림 과대 site를 chi-square 검정과 중복 패턴 검정으로 탐지.
4. **사이트 효과 이질성 Funnel** — site별 52주 평균 체중변화율을 funnel plot으로 시각화. funnel 한계 밖 outlier site, arm 효과 제거 후 site 내 분산이 비현실적으로 작은(조작 시그널) site를 플래그.
5. **DXA 내부정합성 + RBQM 리포트** — 지방량+제지방량+골량 합 vs 총체중 정합성(±3%), lean/fat 비율 plausibility 검사. site risk 순위·권고 조치를 ICH E6 central monitoring 형식 텍스트/HTML 리포트로 생성.

---

## 파일 구성

```
2026-05-19-2-obesity-trial-integrity-kor/
├── app.py                      # Streamlit 메인 진입점 (5개 탭)
├── analysis.py                 # 핵심 분석 로직 (streamlit 비의존, CLI 검수 가능)
├── requirements.txt            # pinned 의존성
├── README.md
├── QA.md                       # 검수 로그
└── data/
    ├── generate_synthetic.py   # 합성 다기관 trial 데이터 생성 스크립트
    ├── subjects.csv            # 환자 마스터 (162명)
    ├── visits.csv              # visit 단위 종단 측정 (1134건)
    └── sites.csv               # site 마스터 (9개)
```

---

## 실행법

```bash
pip install -r requirements.txt
streamlit run app.py
```

합성 데이터 재생성 (선택):

```bash
python3 data/generate_synthetic.py
```

CLI 로 RBQM 리포트만 출력:

```bash
python3 analysis.py
```

> 본 도구는 완전 오프라인 standalone 이다. 외부 네트워크/API 호출, CDN 사용이 없다.

---

## 합성 데이터 설계

9개 site / 162명 환자 / 1134 visit. 정상 site 6개 + 무결성 위험 시그널 삽입 site 3개:

| Site | Behavior | 삽입된 무결성 시그널 |
|------|----------|----------------------|
| S07 Suwon Metabolic | `low_variance` | site 내 환자 응답 분산이 비현실적으로 작음 (조작 시그널) |
| S08 Ulsan Trial Ctr | `carried_forward` + `dxa_inconsistent` | 직전 visit 체중 복사 빈발, DXA 구성요소 합 불일치 |
| S09 Jeju Research | `digit_pref` | 체중 정수 kg / 허리둘레 5cm 단위 과대 반올림 |

4개 arm(placebo / glp1ra / tirzepatide / triple_agonist), visit week 0·4·8·12·24·36·52. DXA는 week 0·24·52만 측정.

---

## 검수 체크리스트

- [ ] 모든 `.py` 파일 구문 검증: `python3 -c "import ast; ast.parse(open('파일').read())"`
- [ ] `data/generate_synthetic.py` 실행 → subjects/visits/sites CSV 생성 확인
- [ ] 생성된 CSV pandas 로드 테스트
- [ ] `analysis.py` 가 streamlit import 없이 import 가능한지 확인
- [ ] `python3 analysis.py` 실행 → RBQM 리포트 출력 확인
- [ ] 삽입한 무결성 시그널(S07 low-variance, S08 carried-forward+DXA, S09 digit preference)이 탐지되는지 확인

검수 결과는 `QA.md` 참고.

---

## 출처 / 참고

- **ICH E6(R2) Good Clinical Practice** — Section 5.0 Quality Management, central monitoring 개념.
- **ICH E6(R3) Good Clinical Practice** — risk-based quality management(RBQM) 강화.
- **FDA Guidance (2013)** — *Oversight of Clinical Investigations — A Risk-Based Approach to Monitoring* (Risk-Based Monitoring guidance).
- TransCelerate BioPharma — Risk-Based Monitoring methodology (central statistical monitoring 패턴 참고).

> reference envelope 감량 궤적 수치는 GLP-1RA(예: 세마글루타이드 STEP 프로그램), tirzepatide(SURMOUNT 프로그램), triple agonist(retatrutide 초기 데이터) 보고치를 개략적으로 모사한 **예시값**이다. 실제 운용 시 해당 시험의 published 평균·변동으로 envelope 을 교체할 것.
