A comprehensive healthcare management system built with Streamlit frontend and Flask API backend, designed to streamline patient care, billing, and communication between healthcare providers and patients.
##Project Demo Video
VitalFlow Project Demo video on VIMEO
- Doctor Portal - Patient management, medical charts, alerts, and communications
- Nurse Portal - Patient care, vitals monitoring, and care coordination
- Proxy Portal - Manage dependent patients, insurance, and billing
- Patient Portal - Personal health records, medications, and appointments
- Patient Management - Comprehensive patient records and medical history
- Insurance & Billing - Policy management and deductible tracking
- Communication System - Secure messaging between healthcare teams
- Medical Records - Vitals, conditions, medications, and visit tracking
- Alert System - Medical alerts and notifications
- Dashboard Analytics - Real-time metrics and insights
- Docker and Docker Compose
- Python 3.8+
- MySQL database
-
Clone the repository
git clone https://github.com/yourusername/VitalFlow.git cd VitalFlow -
Start the application
# Start all services docker-compose up -d # Or use sandbox configuration for testing docker-compose -f sandbox.yaml up -d
-
Access the application
- Frontend: http://localhost:8501
- API: http://localhost:4000
- Database: localhost:3306
app/
├── src/
│ ├── Home.py # Main entry point and role selection
│ ├── pages/ # Persona-specific pages
│ │ ├── doctor_home.py # Doctor dashboard
│ │ ├── xx_Nurse_Dashboard.py # Nurse dashboard
│ │ ├── proxy_home.py # Proxy dashboard
│ │ ├── 50_Patient_Home.py # Patient dashboard
│ │ ├── doctor_alerts.py # Doctor alerts
│ │ ├── doctor_inbox.py # Doctor messages
│ │ ├── doctor_patients.py # Doctor patient management
│ │ ├── xx_Nurse_Alerts.py # Nurse alerts
│ │ ├── xx_Nurse_Patients.py # Nurse patient management
│ │ ├── xx_Nurse_Treatments.py # Nurse treatment management
│ │ ├── proxy_billing.py # Proxy billing
│ │ ├── proxy_messages.py # Proxy messaging
│ │ ├── proxy_portal.py # Proxy portal
│ │ ├── 51_Patient_Billing.py # Patient billing
│ │ └── 52_Patient_Inbox.py # Patient messaging
│ ├── modules/ # Navigation and utilities
│ │ ├── nav.py # Role-based navigation
│ │ └── styles.py # Medical theme styling
│ └── assets/ # Images and static files
│ └── logo.png # VitalFlow logo
api/
├── backend/
│ ├── patient/ # Patient management endpoints
│ ├── doctor/ # Doctor-specific endpoints
│ ├── nurse/ # Nurse-specific endpoints
│ ├── proxy/ # Proxy management endpoints
│ ├── vital/ # Vital signs endpoints
│ ├── medication/ # Medication management
│ ├── insurance/ # Insurance and billing
│ ├── message/ # Communication system
│ ├── alert/ # Alert and notification system
│ ├── condition/ # Medical conditions
│ ├── discharge/ # Patient discharge
│ ├── visit/ # Patient visits
│ └── admin/ # Administrative functions
├── backend_app.py # Main Flask application
└── requirements.txt # Python dependencies
- Patient Management - Personal information, medical history
- Healthcare Staff - Doctors, nurses, and their specialties
- Medical Records - Vitals, conditions, medications, visits
- Insurance & Billing - Policies, deductibles, payment tracking
- Communication - Messages, alerts, and notifications
- Doctor (Maya) - Full patient access, medical records, prescribing, alerts, and patient management
- Nurse (Nic) - Patient care, vitals monitoring, care coordination, treatments, and alerts
- Proxy (Nina Pesci) - Dependent patient management, insurance, billing, and messaging
- Patient (Joe) - Personal health records, appointments, medications, and billing
- Role-based access control (RBAC)
- Secure API endpoints
- Session-based authentication
- Healthcare-First - Designed specifically for medical workflows
- Responsive - Works on desktop, tablet, and mobile devices
- Accessible - Follows healthcare accessibility guidelines
- Professional - Clean, medical-grade interface with medical theme
- Role Selection Homepage - Easy persona switching for development/testing
- Dashboard Overview - Real-time metrics and insights
- Patient Cards - Quick access to patient information
- Navigation Sidebar - Role-specific menu options
- Interactive Forms - Easy data entry and management
GET /patient/- Retrieve patient listGET /patient/<id>- Get specific patient detailsGET /patient/<id>/medications- Get patient medicationsGET /patient/<id>/vitals- Get patient vital signsGET /patient/<id>/condition- Get patient conditionsGET /patient/<id>/discharge- Get patient discharge infoGET /doctor/- Get doctor informationGET /nurse/- Get nurse informationGET /proxy/- Get proxy informationGET /vital/- Retrieve vital signsGET /medication/- Get medication dataGET /message/- Get messagesPOST /message/- Send new messagesGET /alert/- Retrieve alertsGET /condition/- Get medical conditionsGET /visit/- Get patient visitsGET /discharge/- Get discharge informationGET /insurance/- Get insurance information
- All endpoints require proper authentication
- Role-based access control
- Secure token validation
- Patients - Personal and medical information
- Doctors - Healthcare provider details
- Nurses - Nursing staff information
- Proxies - Patient representatives
- Visits - Patient appointments and encounters
- VitalChart - Patient vital signs
- Medications - Prescription information
- Insurance - Policy and billing details
- Conditions - Medical conditions and diagnoses
- Discharges - Patient discharge information
# Start testing containers
docker-compose -f sandbox.yaml up -d
# Stop testing containers
docker-compose -f sandbox.yaml down# Build and deploy
docker-compose up -d
# Scale services
docker-compose up -d --scale web=3DB_USER- Database usernameDB_PASSWORD- Database passwordDB_HOST- Database hostDB_PORT- Database portDB_NAME- Database nameSECRET_KEY- Application secret keyAPI_BASE_URL- Backend API URL
# Test API endpoints
curl http://localhost:4000/patient
- Navigate through different personas using the homepage role selection
- Test form submissions
- Verify data display
- Check responsive design
- Test role-based access control
- API request/response logging
- Streamlit application logging
- Database connection monitoring
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Use meaningful commit messages
- Include proper documentation
- Test your changes thoroughly
- Follow the existing code structure
This project is licensed under the MIT License - see the LICENSE file for details.
- Clone the repository
- Install Docker and Docker Compose
- Start the application with
docker-compose up -d - Access the frontend at http://localhost:8501
- Select your role from the homepage
- Explore the different portals and features
VitalFlow - Streamlining healthcare, one patient at a time.