임상연구 자동화 파이프라인 — Python 9개 도구로 SAP부터 CONSORT까지
임상연구 자동화 파이프라인 — Python 9개 도구로 SAP부터 CONSORT까지
임상연구를 하다 보면 반복되는 문서 작업이 많습니다. SAP(통계분석계획서) 쓰고, CRF 만들고, IRB 서류 준비하고, 데이터 분석하고, 보고 체크리스트 확인하고... 연구 설계에서 논문 투고까지 6단계에 걸쳐, 각 단계의 문서를 자동 생성하는 Python 도구 9개를 만들었습니다.
전체 파이프라인
연구 설계 → 문서 생성 → 문헌검토 → IRB 제출 → 데이터 분석 → 논문 작성
│ │ │ │ │ │
Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
SAP Protocol PubMed IRB Suite Table 1 CONSORT
Sample ↔CRF PRISMA 동의서 Analysis STROBE
Size SPIRIT 추출표 체크리스트 Skeleton Registration
핵심 철학: 하나의 연구 설정(config dict)에서 모든 문서가 나온다.
config = {
"title": "FSHD 환자의 운동 프로그램 효과",
"design": "RCT",
"groups": ["exercise", "control"],
"primary_outcome": {"name": "6MWT", "type": "continuous"},
"sample_size": {"effect_size": 0.5, "alpha": 0.05, "power": 0.8},
...
}
이 config 하나로 SAP, CRF, IRB 서류, 분석 스크립트, 보고 체크리스트까지 전부 생성됩니다.
Phase 1: 통계 설계 — sap_generator.py
TransCelerate 가이드라인의 9개 섹션 구조를 따르는 SAP 문서를 자동 생성합니다.
python3 sap_generator.py --example --run
# → SAP_FSHD_exercise.docx (9섹션, 표지~부록)
내장 기능:
- Sample size 계산: t-test, paired-t, ANOVA, chi-square 자동 선택
- Power curve: matplotlib로 효과크기별 파워 곡선 그래프 생성
- Sensitivity table: MCID × SD 매트릭스로 다양한 시나리오 제시
실제 예시: FSHD config → 39명/group → 탈락률 보정 후 49명/group → 총 98명 산출. 이 과정이 코드 한 줄로 끝납니다.
Phase 2: 프로토콜 일관성 검증 — protocol_crf_mapper.py
프로토콜에는 있는데 CRF에 없는 변수, 혹은 그 반대. 이런 불일치를 자동으로 찾아줍니다.
| 기능 | 설명 |
|---|---|
| SAP↔CRF 변수 매핑 | 변수명 매칭 + gap report |
| SPIRIT 2025 체크리스트 | 50개 항목 자동 검증 |
매칭 엔진이 의학 용어 동의어 사전(synonym dictionary)을 내장하고 있어서, "6MWT"와 "6-minute walk test"를 같은 변수로 인식합니다.
python3 protocol_crf_mapper.py --example --run
# FSHD: 16/17 matched (94.1%), SPIRIT 27/27 (100%)
Phase 3: 체계적 문헌검토 — lit_review_pipeline.py
PICO 구조를 입력하면 PubMed 검색까지 자동으로 이어집니다.
python3 lit_review_pipeline.py --example --run --email your@email.com
출력물:
search_results.csv— 검색 결과 테이블extraction_template.docx— 데이터 추출 양식prisma_flow.png— PRISMA 흐름도
PubMed E-utilities API(biopython)를 사용하므로 NCBI 이메일 등록만 하면 바로 쓸 수 있습니다.
Phase 4: IRB 서류 일괄 생성 — irb_document_suite.py
IRB 제출에 필요한 3종 세트를 한번에 만듭니다.
| 문서 | 내용 |
|---|---|
| 연구 요약서 | 연구 설계, 대상, 방법, 기간 |
| 동의서 | 기관 IRB 양식에 맞춘 설명문 + 동의서 |
| 제출 체크리스트 | 필요 서류 목록 + 체크박스 |
python3 irb_document_suite.py --example --run -o ./irb_docs
# → study_summary.docx, informed_consent.docx, irb_checklist.docx
기존 도구(SAP, CRF, 프로토콜)와 합치면 IRB 제출에 필요한 서류 대부분이 자동으로 준비됩니다.
Phase 5: 데이터 분석 — table1_generator.py
두 가지 모드:
모드 1: Table 1 자동 생성
CSV/Excel 데이터를 넣으면 논문용 Table 1이 나옵니다.
- 연속형: mean ± SD (정규분포) 또는 median [IQR] (비정규)
- 범주형: n (%)
- 검정: t-test / Mann-Whitney / ANOVA / Chi-square / Fisher 자동 선택
모드 2: 분석 스크립트 skeleton 생성
python3 table1_generator.py skeleton -o ./analysis
# → 01_data_cleaning.py
# 02_descriptive_stats.py
# 03_primary_analysis.py
# ...
# 08_sensitivity_analysis.py
SAP config에서 정의한 분석 계획대로 번호순 스크립트가 생성됩니다. 빈 골격이 아니라, config의 변수명과 검정 방법이 미리 채워져 있습니다.
Phase 6: 논문 작성 지원 — reporting_checklist.py
| 연구 설계 | 체크리스트 |
|---|---|
| RCT | CONSORT 2010 (37항목) |
| 관찰연구 | STROBE (22항목) |
python3 reporting_checklist.py --example --run
# FSHD CONSORT: 26/37 addressed (70.3%) — 미충족 11항목 목록 출력
추가로 임상시험 등록 초안(ClinicalTrials.gov / CRIS 필드)도 자동 생성합니다. 등록 사이트에 복붙하면 됩니다.
실전 사용 예시: FSHD 운동 프로그램 RCT
# 1. SAP 생성 (sample size 포함)
python3 sap_generator.py -c fshd_config.json --run
# 2. CRF 및 프로토콜 일관성 확인
python3 protocol_crf_mapper.py -c fshd_config.json --run
# 3. 문헌 검색
python3 lit_review_pipeline.py -c fshd_config.json --run --email your.name@example.ac.kr
# 4. IRB 서류 일괄 생성
python3 irb_document_suite.py -c fshd_config.json --run -o ./irb
# 5. 데이터 수집 후 Table 1
python3 table1_generator.py -d data.csv -c fshd_config.json
# 6. 투고 전 체크리스트
python3 reporting_checklist.py -c fshd_config.json --run
config 파일 하나로 연구 시작부터 투고까지 문서가 일관되게 유지됩니다.
의존성
pip install python-docx statsmodels matplotlib numpy scipy biopython pandas
모두 표준적인 Python 패키지입니다. 특별한 라이선스 문제 없이 병원 환경에서도 사용 가능합니다.
마무리
임상연구에서 가장 지루하고 실수가 잦은 부분은 "문서 간 일관성 유지"입니다. SAP에 쓴 검정 방법이 프로토콜과 다르거나, CRF에 빠진 변수가 있거나, IRB 동의서의 연구 제목이 다르거나.
config 하나에서 모든 문서를 생성하면 이런 불일치가 구조적으로 발생할 수 없습니다. 연구자는 연구 "설계"에만 집중하고, 문서 "작성"은 도구에 맡기면 됩니다.