AI-Powered Nursing Handover Automation – Flutter Mobile App
MediRelay is a Flutter-based mobile solution that automates the creation of nursing handover documents.
It extracts and summarizes key information from EMR nursing records and generates standardized handover reports.

flowchart LR
A[Flutter App] -->|Audio Upload| B[Whisper API Server]
B -->|Transcript JSON| C[Backend API Gateway]
C --> D[AI Processing Layer]
D -->|Summary + Slots| E[Handover Generator]
E -->|Standardized Report| A
A -->|QnA Request| D
-
Frontend: Flutter 3.16 (Dart 3.0)
-
Backend Gateway: Node.js (Express, Passport.js, JWT, RBAC)
-
AI Processing Layer:
- Whisper API (Speech-to-Text)
- KoBERT (Slot classification)
- KoBART (Summarization)
- OpenAI GPT API (Fallback summarization/QnA)
-
Database: PostgreSQL (server), SQLite (mobile local cache)
-
Networking: REST API (JSON), dio (Flutter client)
POST /api/auth/login
POST /api/auth/logout
GET /api/patients # List of patients
GET /api/patients/:id # Patient details
POST /api/voice/upload # Upload audio file (m4a/webm)
→ Calls Whisper API → Returns transcript
POST /api/records # Save nursing record
GET /api/records/:patientId # Retrieve patient’s records
POST /api/handover/generate # Generate handover document
GET /api/handover/:patientId # Retrieve handover document
POST /api/chat/query # Submit query
- Input:
.m4a/.webmaudio file - Output: JSON { "transcript": "..." }
- Input: Transcript text
- Output: { "vital_change": true, "medication": "Tylenol", ... }
- Input: Nursing text + Slot results
- Output: One-line summary (e.g.,
"BT 37.9℃ → Tylenol administered, monitoring fever response")
- Input: Slots + summary results
- Output: Standardized handover document (JSON/Markdown)
lib/
├── core/ # Constants, networking, utilities
├── features/
│ ├── patients/ # Patient list
│ ├── voice_recording # Audio recording + Whisper API integration
│ ├── nursing_records # Record creation and retrieval
│ ├── handover/ # Automated handover generation
│ └── chat/ # QnA chatbot
├── shared/ # Common widgets
└── app.dart
-
Patient Selection
/patients/:id→ Displayed in Flutter app
-
Voice Recording
- Flutter →
/voice/upload→ Whisper API → Transcript JSON
- Flutter →
-
Slot Classification & Summarization
- Transcript →
/handover/generate - KoBERT classification + KoBART summarization → Draft handover
- Transcript →
-
View Handover
- Flutter app fetches patient’s handover document
-
QnA
- Flutter →
/chat/query→ GPT API → Response
- Flutter →
cd backend
npm install
npm run devflutter pub get
flutter run- Built with React + Vite (QR scanning, voice recording → Whisper API, record/handover/chatbot validation)
- Deployed on GitHub Pages, tested user flows and AI summarization
- Rebuilt as a mobile-first app
- Features: voice recording, Whisper API integration, OpenAI API-based summarization and handover generation
- Introduced structured state management (Bloc), local caching (SQLite), and backend persistence (PostgreSQL)
- 2025 Seoul AI Hub – SAY Track Finalist & Graduation
- 2025 Yonsei University Y-Compass Student Startup Team (Grade A completion)
- 2025 Pusan National University – 9th Digital Healthcare MEDICAL HACK, Grand Prize (President’s Award)
- 2025 Ministry of Education – Top 300 Student Startup Teams (U300+) Finalist