Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediStat-EDA

의학연구 tabular 데이터(.xlsx/.csv)를 받아 단일 한국어 HTML EDA 리포트를 자동 생성하는 Claude Code skill 모음입니다.

A collection of Claude Code skills for clinical research data exploratory analysis (EDA), producing self-contained interactive HTML reports.

Clinical EDA Report Preview

GLP-1 vs Placebo post-MI RCT 합성 데이터(1,000 × 31)에 적용한 예시. 좌측: Claude가 출력한 데이터 품질 요약 — 결측 35%(ldl_3yr), 이상치(age min=−3 / bmi max=285 / hba1c=75 / ldl=9999), sex 7-level 인코딩 불일치, 12개 site별 enroll_date 포맷 혼재, ID 자동 마스킹. 우측: 생성된 단일 HTML 리포트의 결측 패턴 패널.


📦 포함된 Skill

clinical-eda-report

행이 관찰 단위(환자·내원·병변·검체 등), 열이 변수인 모든 의학연구 데이터셋에 대해 한 파일짜리 인터랙티브 EDA 대시보드를 생성합니다. RCT, prospective/retrospective cohort, case-control, cross-sectional, registry 등 연구 디자인을 가리지 않습니다.

생성 리포트 구성:

  • 상단 KPI 카드 6장 (n, 변수 수, 결측률, 고결측 변수, 이상치 후보, VIF≥10)
  • 좌측 sticky 사이드바 + scrollspy
  • 인터랙티브 SVG 분포 플롯
  • 다크모드 토글 (prefers-color-scheme 자동 감지 + localStorage 영속화)
  • 인쇄·PDF 버튼 (자동 라이트 모드)
  • 입력 파일 SHA-256 hash 푸터 (동일성 검증)

리포트 섹션 (7개):

  1. 데이터셋 개요 (연구 디자인 메타데이터 포함)
  2. 변수별 요약통계 (numeric · categorical)
  3. 결측 패턴 (변수별 막대 + missingness heatmap)
  4. 분포 플롯 (히스토그램 + KDE · 빈도 bar)
  5. 이상치 / Implausible value 후보 (자동 규칙)
  6. 소그룹별 Table 1 (선택적, 디자인별 해석 가이드 분기)
  7. 상관관계 + VIF heatmap

모든 폰트·JS·CSS·SVG가 base64/인라인 임베딩되어 외부 의존 없이 HTML 파일 하나로 완결됩니다.


🚀 설치 (Claude Code)

옵션 A — 플러그인 설치 (권장)

Claude Code 안에서 두 줄이면 끝납니다:

/plugin marketplace add JeonKH81/MediStat-EDA
/plugin install medistat-eda@medistat-eda

터미널에서 하려면:

claude plugin marketplace add JeonKH81/MediStat-EDA
claude plugin install medistat-eda@medistat-eda

이 방식으로 설치하면 skill 이름에 플러그인 접두어가 붙어 /medistat-eda:clinical-eda-report로 호출됩니다. 업데이트는 /plugin update medistat-eda.

옵션 B — git clone

플러그인을 쓰지 않고 개인 skill로 두고 싶을 때:

mkdir -p ~/.claude/skills
git clone https://github.com/JeonKH81/MediStat-EDA.git ~/.claude/skills/clinical-eda-report

폴더 이름을 반드시 clinical-eda-report로 지정하세요. Claude Code는 폴더 이름을 skill 이름으로 씁니다. 폴더명을 생략해 MediStat-EDA로 clone되면 /clinical-eda-report로 호출되지 않습니다.

업데이트는 git -C ~/.claude/skills/clinical-eda-report pull.

옵션 C — zip 다운로드

GitHub의 Releases 또는 Code → Download ZIP으로 받은 후:

unzip MediStat-EDA-main.zip
mkdir -p ~/.claude/skills
mv MediStat-EDA-main ~/.claude/skills/clinical-eda-report

어느 방식이든 설치 후 Claude Code 재시작이 필요합니다 (skill 목록은 세션 시작 시 로드됨).


💬 사용법

설치 후, Claude Code에서 다음과 같이 호출 가능합니다:

환자 데이터 GLP1_MI_RCT.xlsx에 대해 EDA 리포트 만들어줘

또는 명시적으로:

/clinical-eda-report          # 옵션 B·C(git clone / zip)로 설치한 경우
/medistat-eda:clinical-eda-report   # 옵션 A(플러그인)로 설치한 경우

자동 트리거되는 표현 예시:

  • "EDA", "데이터 탐색", "탐색적 분석"
  • "기초통계", "Table 1", "결측 보고"
  • "분포 확인", "데이터 살펴봐", "데이터 점검"

처음 한 번 연구 디자인(RCT / cohort / case-control 등)을 물어보고, 그 이후는 자동으로 완료됩니다.


⚙️ 직접 CLI 실행 (Claude 없이)

scripts/run_eda.py를 단독으로도 실행 가능합니다:

python3 scripts/run_eda.py \
  --input /path/to/data.xlsx \
  --output /path/to/report.html \
  --study-design "RCT" \
  --grouping-var treatment_arm \
  --id-cols patient_id,name

옵션:

옵션 설명
--input 입력 .xlsx / .csv 파일 절대경로 (필수)
--output 출력 .html 절대경로 (필수)
--study-design RCT / Prospective cohort / Retrospective cohort / Case-control / Cross-sectional / Registry / Single-arm prospective / 자유텍스트
--sheet xlsx 시트명 (기본: 첫 시트)
--grouping-var Table 1 비교에 쓸 그룹 변수명
--id-cols 식별자 컬럼 (쉼표 구분) — 마스킹 적용

📋 요구사항

  • Python 3.9+
  • pandas, numpy, matplotlib, scipy, openpyxl (.xlsx 입력에 필요)
pip install pandas numpy matplotlib scipy openpyxl

한글 폰트(Pretendard 9 weights, SIL OFL 1.1)는 assets/fonts/에 번들로 포함되어 시스템 폰트 설치가 불필요합니다.


🎯 사용 시나리오

  • IRB 제출 전 baseline characteristics / 결측 현황 점검
  • 협력기관에서 받은 데이터셋 품질 검수 (이상치·결측·코딩 오류)
  • RCT database lock 후 / sub-study 시작 전 sanity check
  • 후향 코호트 데이터의 첫 인상 파악

❌ 대상이 아닌 데이터

  • raw 영상 (DICOM, JPEG/PNG)
  • ECG/PPG waveform signal
  • 자연어 free text (임상 기록 등)
  • 고차원 omics matrix (genome/transcriptome)

가설검정·생존분석 같은 inferential analysis는 본 skill의 대상이 아닙니다.


🔒 PHI 보호

환자 ID·이름·주민번호·생년월일 등 식별자 열은 자동 감지 (정규식 (?i)(id|name|rrn|registration|patient|chart|mrn|phone|address|birth)) 되거나 사용자가 --id-cols로 명시할 수 있으며, 리포트에는 컬럼명과 unique count만 노출되고 raw 값은 포함되지 않습니다.


⚖️ License

About

Claude Code skill that generates a self-contained Korean HTML EDA dashboard for clinical/medical tabular research data (xlsx/csv).

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages