118 lines
7.2 KiB
Markdown

# MONOREPO AI MEDICAL
## ภาพรวม
โครงการนี้คือ Monorepo แบบ Full-Stack ที่สร้างบนโครงสร้างพื้นฐานที่มีความพร้อมใช้งานสูง (HA) และถูกออกแบบมาเพื่อรองรับการพัฒนา AI ทางการแพทย์ (Medical AI) โดยใช้เฟรมเวิร์ก MONAI เพื่อสนับสนุนโปรเจค https://gitea.softwarecraft.tech/gitea/hospital-management-api:
1. **Backend (Django/DRF):** โครงสร้าง Modular Monolith พร้อมระบบ Authentication ด้วย Djoser/JWT รวมถึง Stateless โดยสมบูรณ์ เนื่องจาก Session/Cache ถูกย้ายไปเก็บที่ Redis
2. **ฐานข้อมูล (HA):** CockroachDB Cluster 3 Node (เข้ากันได้กับ PostgreSQL)
3. **Frontend (Web):** React + Vite + Tailwind CSS / DaisyUI และ Mobile ผ่าน Expo
4. **Automation:** Docker Compose พร้อมตั้งค่า Database อัตโนมัติเมื่อเริ่มต้น
5. **Caching/Broker:** Redis สำหรับการเก็บ Session/Cache และใช้เป็น Message Broker ให้ Celery
6. **Async Processing:** Celery Worker สำหรับจัดการ Asynchronous Tasks (งานเบื้องหลัง เช่น การส่งอีเมล, การสร้างรายงาน)
7. **Model Serving:** FastAPI / MONAI / PyTorch สำหรับการโหลดและทำ **Inference** โมเดล AI (เช่น `spleen_ct_spleen_model.ts`) โดยดึงโมเดลจาก MinIO
## การเริ่มต้นใช้งาน (Run Local)
### 1. การเตรียม Repository และ Environment
1. **Clone และเตรียมโค้ด**
```bash
git clone https://gitea.softwarecraft.tech/gitea/monorepo-ai-medical.git
cd monorepo-ai-medical
# ล้าง History ของ Template เก่า และเริ่มต้นใหม่
Remove-Item -Path .git -Recurse -Force # สำหรับ PowerShell
# หรือใช้คำสั่ง Linux/Mac
rm -rf .git
git init
git add .
git commit -m "Initialize MLOps AI Medical Project Base"
```
2. **เตรียม AI Environment (สำคัญ)**
เข้าโฟลเดอร์ `ai-medical/` และสร้าง Virtual Environment เพื่อติดตั้ง MONAI/FastAPI
```bash
cd ai-medical
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
# หรือ source venv/bin/activate (Linux/Mac)
# ติดตั้ง Dependencies
pip install -r requirements.ai.txt
cd ..
```
---
### 2. การรัน Infrastructure (DB, Cache, Storage)
รัน Services พื้นฐานทั้งหมดใน Docker (ยกเว้น Backend/AI Service ที่จะรันใน Local CLI)
```bash
cd infra
# รัน DB, Redis, MinIO (ต้องมี MinIO Service ใน docker-compose.yml แล้ว)
docker compose up -d cockroach-1 cockroach-2 cockroach-3 init-cluster redis minio celery_worker flower
```
## การหยุดชั่วคราวและรันต่อ
ถ้าต้องการหยุดพัฒนาโดยไม่ลบฐานข้อมูล สามารถรัน:
```bash
cd ../infra
docker compose down
```
เมื่อต้องการกลับมาพัฒนาต่อ ให้รัน:
```bash
cd ../infra
docker compose up -d
```
คำสั่ง docker compose down -v จะลบ Volume และฐานข้อมูลทั้งหมด ใช้เฉพาะตอนต้องการเริ่มต้นฐานข้อมูลใหม่
# บริการโมเดล AI ทางการแพทย์ (Medical AI Models)
โครงการนี้มุ่งมั่นที่จะนำเสนอโมเดล AI คุณภาพสูงเพื่อช่วยในการวิเคราะห์ภาพทางการแพทย์
➡️ **สถานะ:** กำลังพัฒนาโมเดลใหม่ ๆ เพิ่มเติมอย่างต่อเนื่อง
---
## 1. ⚙️ Spleen Segmentation (ม้าม)
### ภาพรวม
API นี้ให้บริการ **Segmentation** (การระบุขอบเขต) ของอวัยวะ **ม้าม** จากไฟล์ภาพ CT (NIfTI format) โดยเฉพาะ โดยใช้โมเดล **MONAI UNet** ที่ผ่านการฝึกฝนมาเพื่อตอบโจทย์ทางคลินิก
### ตอบคำถาม: "ม้ามอยู่ที่ไหนและมีปริมาตรเท่าไหร่ในภาพนี้"
บริการนี้ถูกออกแบบมาเพื่อส่งคืนข้อมูลที่สำคัญสำหรับรายงานทางการแพทย์โดยอัตโนมัติ:
1. **การระบุตำแหน่ง:** ตำแหน่งของม้ามถูกระบุผ่าน **Segmentation Map** ซึ่งแสดงตำแหน่งของม้ามในระบบพิกัด RAS ที่ได้มาตรฐาน
2. **การคำนวณปริมาตร:** คำนวณปริมาตรของม้ามในหน่วยลูกบาศก์เซนติเมตร ($\text{cm}^3$) โดยใช้ข้อมูล Voxel Spacing
3. **การวิเคราะห์ม้ามโต (Splenomegaly):** ประเมินขนาดม้ามตามเกณฑ์มาตรฐาน และส่งคืนผลการวินิจฉัยเบื้องต้น (เช่น Normal Spleen Size, Borderline Enlarged, หรือ Splenomegaly Detected)
### Endpoint
| Method | Path | Description |
| :--- | :--- | :--- |
| `POST` | `/inference/spleen` | รับไฟล์ NIfTI และส่งคืนผลลัพธ์ Segmentation และ Volume Analysis |
### 🛠️ เทคโนโลยีโมเดล
* **เฟรมเวิร์ก:** MONAI / PyTorch
* **ไฟล์โมเดล:** `spleen_ct_spleen_model.ts` (โหลดจาก MinIO)
* **Input:** 3D CT Scan (NIfTI)
* **Output:** JSON ที่มีปริมาตร ($\text{cm}^3$) และการวินิจฉัยม้ามโต
---
## 2. ⏳ โมเดลที่กำลังพัฒนา
เราวางแผนที่จะขยายบริการไปยังอวัยวะและพยาธิสภาพอื่น ๆ ในอนาคตอันใกล้ เช่น:
* Liver and Tumor Segmentation
* Kidney Segmentation
* Lung Nodule Detection