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. μ μ₯μ ν΄λ‘
git clone https://github.com/your-username/nurse-handover-simulator.git
cd nurse-handover-simulator
2. νκ²½ λ³μ μ€μ
Supabase μ¬μ© (κΆμ₯)
ENV_EXAMPLEνμΌμ.envλ‘ λ³΅μ¬ν©λλ€:
cp ENV_EXAMPLE .env
Supabase νλ‘μ νΈ μ€μ μμ νμν μ 보λ₯Ό 볡μ¬ν©λλ€:
- Project URL:
https://project_id.supabase.co - API Key (anon key)
- Database URL (Connection String)
- Project URL:
.envνμΌμ Supabase μ 보λ₯Ό μ λ ₯ν©λλ€:
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. μμ‘΄μ± μ€μΉ
# uvλ₯Ό μ¬μ©νλ κ²½μ°
uv sync
# λλ μΌλ° pip μ¬μ©
pip install -e .
4. Google Gemini API ν€ λ°κΈ
- Google AI Studioμμ API ν€ λ°κΈ
.envνμΌμGOOGLE_API_KEYμΆκ°
5. μ ν리μΌμ΄μ μ€ν
# start.sh μ¬μ© (κΆμ₯)
bash start.sh
# λλ μ§μ μ€ν
uv run app.py
π³ Docker λ°°ν¬
λ‘컬 Docker μ€ν
# 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 λ°°ν¬
- Hugging Face Spacesμ μ Space μμ± (Docker νμ μ ν)
- Repository Secretsμ λ€μ νκ²½ λ³μ λ±λ‘:
SUPABASE_URLSUPABASE_ANON_KEYSUPABASE_DB_URLGOOGLE_API_KEY
- Dockerfileκ³Ό μ½λ νΈμ
- μλ λΉλ λ° λ°°ν¬ μλ£
π νλ‘μ νΈ κ΅¬μ‘°
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 μ¬μ© μ |
π 보μ κ°μ΄λ
νκ²½ λ³μ κ΄λ¦¬
μ λ
.envνμΌμ Gitμ 컀λ°νμ§ λ§μΈμ.gitignoreμ.envκ° μ΄λ―Έ ν¬ν¨λμ΄ μμ΅λλ€
Supabase Keys
SUPABASE_ANON_KEY: ν΄λΌμ΄μΈνΈ λ ΈμΆ κ°λ₯ (RLSλ‘ λ³΄νΈλ¨)SUPABASE_DB_URL: μλ²μμλ§ μ¬μ©, λ ΈμΆ κΈμ§
Google API Key
- μλ²μμλ§ μ¬μ©, λ ΈμΆ κΈμ§
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λ μΈμ λ νμν©λλ€!