File size: 5,521 Bytes
660ffb5
 
7df763f
 
 
660ffb5
 
7df763f
660ffb5
 
3a338e5
 
924ef30
3a338e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
---
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λŠ” μ–Έμ œλ“  ν™˜μ˜ν•©λ‹ˆλ‹€!