LearningnRunning's picture
chore: Update README with new emoji and color scheme, and revise short description to reflect AI-based nurse handover training platform.
7df763f
---
title: Nurse Handover Simulator
emoji: πŸ₯
colorFrom: purple
colorTo: pink
sdk: docker
pinned: false
short_description: AI 기반 κ°„ν˜Έμ‚¬ SBAR μΈμˆ˜μΈκ³„ ν›ˆλ ¨ ν”Œλž«νΌ - EMR λ°μ΄ν„°λ‘œ μ‹€μ „ μ—°μŠ΅
---
# πŸ₯ κ°„ν˜Έ μΈμˆ˜μΈκ³„ ꡐ윑 ν”Œλž«νΌ
Clinical Handover Training Chatbot utilizing SBAR/ISBAR, EMR data, and immersive technology (Metaverse/VR) for standardized, high-fidelity nursing handover practice.
## πŸ“‹ κ°œμš”
κ°„ν˜Έμ‚¬ SBAR ν˜•μ‹ μΈμˆ˜μΈκ³„ ν›ˆλ ¨μ„ μœ„ν•œ AI 기반 ꡐ윑 ν”Œλž«νΌμž…λ‹ˆλ‹€. Gradio 기반 μ›Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ‹€μ œ EMR 데이터λ₯Ό ν™œμš©ν•œ μΈμˆ˜μΈκ³„ μ—°μŠ΅μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
## πŸš€ μ‹œμž‘ν•˜κΈ°
### 1. μ €μž₯μ†Œ 클둠
```bash
git clone https://github.com/your-username/nurse-handover-simulator.git
cd nurse-handover-simulator
```
### 2. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
#### Supabase μ‚¬μš© (ꢌμž₯)
1. `ENV_EXAMPLE` νŒŒμΌμ„ `.env`둜 λ³΅μ‚¬ν•©λ‹ˆλ‹€:
```bash
cp ENV_EXAMPLE .env
```
2. Supabase ν”„λ‘œμ νŠΈ μ„€μ •μ—μ„œ ν•„μš”ν•œ 정보λ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€:
- Project URL: `https://project_id.supabase.co`
- API Key (anon key)
- Database URL (Connection String)
3. `.env` νŒŒμΌμ— Supabase 정보λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€:
```env
SUPABASE_URL=https://[project_id].supabase.co
SUPABASE_ANON_KEY=your_anon_key_here
SUPABASE_DB_URL=postgresql://postgres:[password]@aws-0-[region].pooler.supabase.com:6543/postgres
GOOGLE_API_KEY=your_google_api_key_here
```
#### 둜컬 PostgreSQL μ‚¬μš© (개발 ν™˜κ²½)
ν™˜κ²½ λ³€μˆ˜μ— `SUPABASE_DB_URL`을 μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ 둜컬 PostgreSQL을 μ‚¬μš©ν•©λ‹ˆλ‹€.
### 3. μ˜μ‘΄μ„± μ„€μΉ˜
```bash
# uvλ₯Ό μ‚¬μš©ν•˜λŠ” 경우
uv sync
# λ˜λŠ” 일반 pip μ‚¬μš©
pip install -e .
```
### 4. Google Gemini API ν‚€ λ°œκΈ‰
1. [Google AI Studio](https://makersuite.google.com/app/apikey)μ—μ„œ API ν‚€ λ°œκΈ‰
2. `.env` νŒŒμΌμ— `GOOGLE_API_KEY` μΆ”κ°€
### 5. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰
```bash
# start.sh μ‚¬μš© (ꢌμž₯)
bash start.sh
# λ˜λŠ” 직접 μ‹€ν–‰
uv run app.py
```
## 🐳 Docker 배포
### 둜컬 Docker μ‹€ν–‰
```bash
# Docker 이미지 λΉŒλ“œ
docker build -t nurse-handover-simulator .
# Docker μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ (ν™˜κ²½ λ³€μˆ˜ 포함)
docker run -p 7860:7860 \
-e SUPABASE_URL="https://your-project.supabase.co" \
-e SUPABASE_ANON_KEY="your_key" \
-e SUPABASE_DB_URL="postgresql://..." \
-e GOOGLE_API_KEY="your_key" \
nurse-handover-simulator
# λ˜λŠ” .env 파일 μ‚¬μš©
docker run -p 7860:7860 --env-file .env nurse-handover-simulator
```
### Hugging Face Spaces 배포
1. Hugging Face Spaces에 μƒˆ Space 생성 (Docker νƒ€μž… 선택)
2. Repository Secrets에 λ‹€μŒ ν™˜κ²½ λ³€μˆ˜ 등둝:
- `SUPABASE_URL`
- `SUPABASE_ANON_KEY`
- `SUPABASE_DB_URL`
- `GOOGLE_API_KEY`
3. Dockerfileκ³Ό μ½”λ“œ ν‘Έμ‹œ
4. μžλ™ λΉŒλ“œ 및 배포 μ™„λ£Œ
## πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰
```
nurse-handover-simulator/
β”œβ”€β”€ app.py # Gradio 메인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜
β”œβ”€β”€ config/
β”‚ └── database.py # λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ„€μ •
β”œβ”€β”€ models/
β”‚ β”œβ”€β”€ patient_data.py # ν™˜μž 및 μ‹œλ‚˜λ¦¬μ˜€ λͺ¨λΈ
β”‚ β”œβ”€β”€ handoff_record.py # μΈμˆ˜μΈκ³„ 기둝 λͺ¨λΈ
β”‚ └── chat_history.py # μ±„νŒ… νžˆμŠ€ν† λ¦¬ λͺ¨λΈ
β”œβ”€β”€ services/
β”‚ β”œβ”€β”€ db_service.py # λ°μ΄ν„°λ² μ΄μŠ€ CRUD μ„œλΉ„μŠ€
β”‚ └── gemini_service.py # Google Gemini AI μ„œλΉ„μŠ€
β”œβ”€β”€ data/
β”‚ └── scenarios.json # μ‹œλ‚˜λ¦¬μ˜€ 데이터
β”œβ”€β”€ Dockerfile # Docker 배포 μ„€μ •
β”œβ”€β”€ docker-compose.yml # 둜컬 PostgreSQL μ„€μ •
β”œβ”€β”€ ENV_EXAMPLE # ν™˜κ²½ λ³€μˆ˜ ν…œν”Œλ¦Ώ
β”œβ”€β”€ start.sh # μ‹œμž‘ 슀크립트
└── init_db.py # λ°μ΄ν„°λ² μ΄μŠ€ μ΄ˆκΈ°ν™” 슀크립트
```
## πŸ”‘ ν™˜κ²½ λ³€μˆ˜ μ„€λͺ…
| λ³€μˆ˜ | μ„€λͺ… | ν•„μˆ˜ μ—¬λΆ€ |
|------|------|---------|
| `SUPABASE_URL` | Supabase ν”„λ‘œμ νŠΈ URL | Supabase μ‚¬μš© μ‹œ |
| `SUPABASE_ANON_KEY` | Supabase Anon API Key | Supabase μ‚¬μš© μ‹œ |
| `SUPABASE_DB_URL` | Supabase λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° URL | Supabase μ‚¬μš© μ‹œ |
| `GOOGLE_API_KEY` | Google Gemini API ν‚€ | ν•„μˆ˜ |
| `DB_HOST` | 둜컬 PostgreSQL 호슀트 | 둜컬 PostgreSQL μ‚¬μš© μ‹œ |
| `DB_PORT` | 둜컬 PostgreSQL 포트 | 둜컬 PostgreSQL μ‚¬μš© μ‹œ |
## πŸ”’ λ³΄μ•ˆ κ°€μ΄λ“œ
### ν™˜κ²½ λ³€μˆ˜ 관리
1. **μ ˆλŒ€ `.env` νŒŒμΌμ„ Git에 μ»€λ°‹ν•˜μ§€ λ§ˆμ„Έμš”**
- `.gitignore`에 `.env`κ°€ 이미 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€
2. **Supabase Keys**
- `SUPABASE_ANON_KEY`: ν΄λΌμ΄μ–ΈνŠΈ λ…ΈμΆœ κ°€λŠ₯ (RLS둜 보호됨)
- `SUPABASE_DB_URL`: μ„œλ²„μ—μ„œλ§Œ μ‚¬μš©, λ…ΈμΆœ κΈˆμ§€
3. **Google API Key**
- μ„œλ²„μ—μ„œλ§Œ μ‚¬μš©, λ…ΈμΆœ κΈˆμ§€
4. **Hugging Face Spaces**
- Repository Secretsλ₯Ό μ‚¬μš©ν•˜μ—¬ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ•ˆμ „ν•˜κ²Œ 관리
## πŸ“Š μ£Όμš” κΈ°λŠ₯
- πŸ“‹ **EMR 정보 쑰회**: μ‹€μ œ 병원 EMRκ³Ό μœ μ‚¬ν•œ μΈν„°νŽ˜μ΄μŠ€
- πŸ’¬ **AI ν”Όλ“œλ°±**: Google Gemini AIλ₯Ό ν™œμš©ν•œ μ‹€μ‹œκ°„ ν”Όλ“œλ°±
- πŸ“ **SBAR ν˜•μ‹ μΈμˆ˜μΈκ³„**: ν‘œμ€€ μΈμˆ˜μΈκ³„ ν˜•μ‹ μ—°μŠ΅
- πŸ“Š **평가 μ‹œμŠ€ν…œ**: μ™„μ „μ„±, μ •ν™•μ„±, λͺ…λ£Œμ„±, μš°μ„ μˆœμœ„ 평가
- πŸ“š **학생 이λ ₯ 쑰회**: 학생별 ν•™μŠ΅ 이λ ₯ 및 톡계
## πŸ› οΈ 기술 μŠ€νƒ
- **Backend**: Python 3.12
- **UI**: Gradio
- **Database**: Supabase (PostgreSQL) / 둜컬 PostgreSQL
- **AI**: Google Gemini 2.0 Flash
- **ORM**: SQLAlchemy
## πŸ“ λΌμ΄μ„ μŠ€
MIT License
## 🀝 κΈ°μ—¬ν•˜κΈ°
Pull RequestλŠ” μ–Έμ œλ“  ν™˜μ˜ν•©λ‹ˆλ‹€!