Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🩺 Pixel Doctor

흉뢀 X-ray 및 CT 기반 λ©€ν‹°λͺ¨λ‹¬ μ„€λͺ…ν˜• 진단 지원 μ‹œμŠ€ν…œ

Next.js Python LangGraph GPT-4o PostgreSQL


πŸ“Œ ν”„λ‘œμ νŠΈ κ°œμš”

Pixel DoctorλŠ” CT segmentation mask와 Radiomics 뢄석 κ²°κ³Όλ₯Ό μž…λ ₯λ°›μ•„, LangGraph 기반 νŒŒμ΄ν”„λΌμΈμ„ 톡해 μ˜μ‚¬μš© κ·Όκ±° 쀑심 μš”μ•½κ³Ό ν™˜μžμš© μ•ˆμ „ν•œ μ„€λͺ…을 뢄리 μƒμ„±ν•˜λŠ” λŒ€ν™”ν˜• 의료 AI Assistantμž…λ‹ˆλ‹€.

πŸ’‘ Why Pixel Doctor?

문제 ν•΄κ²°μ±…
AI 뢄석 κ²°κ³Όκ°€ ν™˜μžμ—κ²Œ 직접 전달 μ‹œ κ³Όλ„ν•œ ν™•μ • ν‘œν˜„Β·μ˜€ν•΄ 유발 μ˜μ‚¬μš©Β·ν™˜μžμš© μ„€λͺ…을 역할에 따라 뢄리 생성
Radiomicsλ₯Ό μž„μƒ ν™•μ • μ§€ν‘œμ²˜λŸΌ 해석 μ‹œ λ°œμƒν•˜λŠ” μœ„ν—˜ Radiomicsλ₯Ό μ°Έκ³  μ§€ν‘œλ‘œλ§Œ μ œν•œ β€” μ§„λ‹¨Β·μΉ˜λ£Œ μΆ”μ²œ μ›μ²œ 차단
λ‹¨μˆœ LLM ν˜ΈμΆœλ‘œλŠ” 좜λ ₯의 μΌκ΄€μ„±Β·μ•ˆμ „μ„± μ œμ–΄ 어렀움 LangGraph λ‹¨κ³„ν˜• νŒŒμ΄ν”„λΌμΈμœΌλ‘œ μ•ˆμ „μ„± 검토·검증 뢄리
μ˜λ£Œμ§„κ³Ό ν™˜μž κ°„ ν•„μš”ν•œ 정보 μˆ˜μ€€κ³Ό ν‘œν˜„ λ°©μ‹μ˜ 차이 RAG 기반 μ˜ν•™ λ¬Έν—ŒΒ·κ°€μ΄λ“œλΌμΈΒ·μœ μ‚¬μΌ€μ΄μŠ€ κ²€μƒ‰μœΌλ‘œ κ·Όκ±° 보강

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

μ‚¬μš©μž (μ˜μ‚¬ / ν™˜μž)
        β”‚ 
        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       Next.js Web Service   β”‚
β”‚  μ±„νŒ… UI Β· λŒ€μ‹œλ³΄λ“œ Β· ν™˜μžκ΄€λ¦¬β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚   μž…λ ₯ 데이터     β”‚
    β”‚  ν…μŠ€νŠΈΒ·X-rayΒ·CT  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚       LangGraph 톡합 νŒŒμ΄ν”„λΌμΈ      β”‚
    β”‚                                     β”‚
    β”‚  1단계: Diagnose Summary            β”‚
    β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
    β”‚  β”‚ diagnose_summarizer          β”‚   β”‚
    β”‚  β”‚   β”œβ”€ [Doctor]  title_gen     β”‚   β”‚
    β”‚  β”‚   β”‚           result_explain β”‚   β”‚
    β”‚  β”‚   └─ [Patient] title_gen     β”‚   β”‚
    β”‚  β”‚               patient_explainβ”‚   β”‚
    β”‚  β”‚   └─ follow_up_gen           β”‚   β”‚
    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
    β”‚                                     β”‚
    β”‚  2단계: RAG Chat QA                 β”‚
    β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
    β”‚  β”‚ Question Classifier          β”‚   β”‚
    β”‚  β”‚   β†’ FAISS Retriever          β”‚   β”‚
    β”‚  β”‚   β†’ Retrieval Quality Router β”‚   β”‚
    β”‚  β”‚   β†’ Answer Generator         β”‚   β”‚
    β”‚  β”‚   β†’ Safety Validator β†Ί       β”‚   β”‚
    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  PostgreSQL DB  β”‚
    β”‚  (Prisma ORM)   β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

✨ 핡심 κΈ°λŠ₯

1️⃣ AI 뢄석 κ²°κ³Ό 기반 리포트 생성

CT maskΒ·Radiomics summaryΒ·μ‚¬μš©μž μ§ˆλ¬Έμ„ μž…λ ₯λ°›μ•„ doctor_summary / patient_friendly JSON ꡬ쑰둜 생성

2️⃣ ν™˜μž μ•ˆμ „ 쀑심 μ„€λͺ… μ‹œμŠ€ν…œ

  • 진단 ν™•μ •Β·μ˜ˆν›„ 예츑·치료 μΆ”μ²œμ„ μ›μ²œ 차단
  • AI 결과의 ν•œκ³„μ™€ μ˜λ£Œμ§„ νŒλ… ν•„μš”μ„±μ„ λͺ…ν™•νžˆ μ•ˆλ‚΄
  • "μ•”μž…λ‹ˆλ‹€/μ •μƒμž…λ‹ˆλ‹€" 같은 단정 ν‘œν˜„ μ ˆλŒ€ κΈˆμ§€

3️⃣ LangGraph 기반 Agentic Pipeline

μž…λ ₯ 검증 β†’ 질문 λΆ„λ₯˜ β†’ κ·Όκ±° λ§€ν•‘ β†’ 리포트 생성 β†’ μ•ˆμ „μ„± κ²€ν†  β†’ μ΅œμ’… 응닡을 λ…Έλ“œ 기반으둜 단계 뢄리

4️⃣ μ˜μ‚¬μš© / ν™˜μžμš© 좜λ ₯ 뢄리

μ˜μ‚¬μš© ν™˜μžμš©
μ–Έμ–΄ μ „λ¬Έ μ˜ν•™ μš©μ–΄ ν‰μ΄ν•œ ν•œκ΅­μ–΄
λ‚΄μš© CT 방사선 μ†Œκ²¬, GLCM λ“± featureλͺ… 포함 featureλͺ… μ ˆλŒ€ λ…ΈμΆœ κΈˆμ§€
톀 κΈ°μˆ μ Β·ν•™μˆ μ  μ°¨λΆ„ν•˜κ³  μ•ˆμ‹¬μ‹œν‚€λŠ” ν‘œν˜„

5️⃣ μ›Ή μ„œλΉ„μŠ€ μ£Όμš” κΈ°λŠ₯

  • ν™˜μž ν”„λ‘œμ νŠΈ 관리: ν™˜μž μƒμ„±Β·κ²€μƒ‰Β·μˆ˜μ •, λ°©λ¬Έ 기둝 νƒ€μž„λΌμΈ, X-rayΒ·CT 선택적 첨뢀
  • AI μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€: λ©€ν‹°ν„΄ λŒ€ν™”, 이쀑 μ„€λͺ… λ™μ‹œ 제곡, 후속 질문 μžλ™ μΆ”μ²œ
  • λŒ€μ‹œλ³΄λ“œ & 톡계: X-rayΒ·CT λ³€ν™” 좔이 κ·Έλž˜ν”„, λ°©λ¬Έ νžˆμŠ€ν† λ¦¬, κ΄€λ¦¬μž ν˜„ν™© 쑰회
  • ν™˜μž 링크 곡유: μ‹œκ°„ κΈ°λ°˜Β·μˆ˜λ™Β·λ³΅ν•© 만료 μ •μ±…, 링크 접속 λ‘œκΉ…
  • 검색 & κΆŒν•œ μ œμ–΄: μ˜μ‚¬(본인 λ‹΄λ‹Ή ν™˜μž), κ΄€λ¦¬μž(전체 ν™˜μž) μ—­ν•  뢄리

🧠 AI λͺ¨λΈ 상세

CT Segmentation + Radiomics

원본 CT (.nii.gz)
      β”‚
      β–Ό
  nnU-Net (3D Segmentation)
      β”‚  0: background / 1: liver / 2: tumor
      β–Ό
  PyRadiomics (νŠΉμ§• μΆ”μΆœ)
      β”‚  Shape Β· First-order Β· Texture (GLCM, GLRLM, GLSZM...)
      β–Ό
  QC / μ•ˆμ „μ„± 검증
      β”‚  geometry mismatch Β· tumor label Β· NaN 검사
      β–Ό
  Radiomics JSON / CSV

⚠️ tumor label λΆ€μž¬ β‰  μ’…μ–‘ μ—†μŒ β€” λͺ¨λΈ 좜λ ₯은 μ°Έκ³  μ§€ν‘œμ΄λ©°, μ΅œμ’… νŒλ‹¨μ€ λ°˜λ“œμ‹œ μ˜λ£Œμ§„μ΄ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

LLM ꡬ성

μ—­ν•  λͺ¨λΈ
Primary GPT-4o-mini
Fallback Gemini-1.5-flash-preview (Reasoning=LOW)

RAG 검색 μ†ŒμŠ€

  • πŸ“‹ NCCN Guideline
  • πŸ“š PubMed
  • πŸ” Similar Cases

πŸ› οΈ 기술 μŠ€νƒ

Frontend

Next.js TypeScript Tailwind CSS

Backend / AI

Python LangGraph FastAPI nnU-Net PyRadiomics FAISS

Database / Infra

PostgreSQL Prisma WebSocket


πŸ—„οΈ λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰

HospitalUnit ──< User (μ˜μ‚¬/κ΄€λ¦¬μž)
                   β”‚
                   └──< Patient ──< Visit
                                     β”‚
                                     β”œβ”€β”€< XrayImage
                                     β”œβ”€β”€< CTScan
                                     β”œβ”€β”€< PatientLink
                                     └──< ChatSession ──< ChatMessage

πŸš€ μ‹œμž‘ν•˜κΈ°

ν™˜κ²½ λ³€μˆ˜ μ„€μ •

cp .env.example .env

.env νŒŒμΌμ—μ„œ μ•„λž˜ ν•­λͺ©μ„ μ„€μ •ν•˜μ„Έμš”:

DATABASE_URL=postgresql://...
OPENAI_API_KEY=sk-...
NEXTAUTH_SECRET=...
NEXTAUTH_URL=http://localhost:3000

μ„€μΉ˜ 및 μ‹€ν–‰

# μ˜μ‘΄μ„± μ„€μΉ˜
npm install

# DB λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
npx prisma migrate dev

# μ‹œλ“œ 데이터 μ‚½μž…
npx prisma db seed

# 개발 μ„œλ²„ μ‹€ν–‰
npm run dev

Python AI μ„œλ²„

pip install -r requirements.txt
python -m uvicorn main:app --reload

πŸ‘₯ νŒ€μ›

이름 μ—­ν• 
κΉ€ν¬ν˜„ AI Pipeline Β· LangGraph
λ°•μƒν˜ CT Segmentation Β· Radiomics
ν•œλ―Όμ„­ AI Pipeline Β· LangGraph
μ΄ν˜•ν˜Έ AI Pipeline Β· LangGraph
μ΄λ™ν˜Έ AI Pipeline Β· LangGraph

⚠️ λ©΄μ±… 사항

λ³Έ μ‹œμŠ€ν…œμ€ 의료 보쑰 λ„κ΅¬λ‘œ, μ˜λ£Œμ§„μ˜ νŒλ‹¨μ„ λŒ€μ²΄ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λͺ¨λ“  AI 좜λ ₯ κ²°κ³ΌλŠ” λ°˜λ“œμ‹œ μ „λ¬Έ μ˜λ£Œμ§„μ˜ κ²€ν† λ₯Ό 거쳐야 ν•˜λ©°, μ§„λ‹¨Β·μΉ˜λ£Œ κ²°μ •μ˜ 근거둜 단독 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.


Built with ❀️ by Team 7 Β· AI 2λΆ„λ°˜

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages