Role-Based Hospital Management System
Budget: ₹600 – ₹1,500 INR
Project Goal
Build a role-based Hospital Management System (HMS) for Admins, Doctors, and Patients.
Replace manual/disconnected systems with an efficient web-based management application.
Tech Stack (Mandatory)
Backend: Flask (for REST API)
Frontend: Vue.js (UI framework)
Vue CLI (optional, only if required)
Templating: Jinja2 (only for entry point via CDN, not for UI rendering)
Styling: Bootstrap (only CSS framework allowed)
Database: SQLite (must be created programmatically)
Caching: Redis
Async/Batch Jobs: Redis + Celery
No other frameworks, databases, or CSS libraries allowed. All demos should work on a local machine.
User Roles
Admin (Hospital Staff – Superuser)
Doctor
Patient
Authentication & Access Control
Role-based authentication using:
Flask session-based security or
JWT (preferred)
Single pre-existing Admin (created programmatically after DB setup)
Doctors & Patients can register/login.
Models must clearly distinguish user roles.
Core Features
Admin Functionalities
Admin Dashboard:
Show total Doctors, Patients, and Appointments.
Manage Doctor profiles:
Add, update, delete (name, specialization, availability, etc.)
View & manage all appointments (past/upcoming).
Search for Doctors or Patients by name/specialization.
Edit doctor/patient details.
Remove or blacklist doctors/patients from the system.
Admin cannot register manually — must exist programmatically.
Doctor Functionalities
Doctor Dashboard:
Display upcoming appointments (day/week view).
Show assigned patients list.
Mark appointments as:
Completed or Cancelled.
Set availability for next 7 days.
Update patient treatment history:
Diagnosis, treatment, prescriptions.
View patient medical history.
Patient Functionalities
Register & Login.
Edit and update profile.
Patient Dashboard:
View all departments/specializations.
Search/view doctors by specialization and availability.
Book, reschedule, or cancel appointments.
View upcoming appointments (with status).
Access past appointments, diagnosis, prescriptions, and history.
Trigger CSV export of treatment details (asynchronous job).
Appointments
Attributes:
Patient ID
Doctor ID
Date & Time
Status (Booked/Completed/Cancelled)
Additional fields allowed
Treatment
Attributes:
Appointment ID
Diagnosis
Prescription
Notes
Extra fields allowed
Department / Specialization
Attributes:
Department ID
Department Name
Description
Doctors Registered
Additional fields allowed
Backend Jobs (Celery + Redis)
a. Daily Reminder Job (Scheduled)
Runs daily (morning).
Checks if patients have an appointment that day.
Sends reminder via:
Google Chat Webhook or
Email or
SMS.
b. Monthly Doctor Activity Report (Scheduled)
Runs on 1st day of every month.
Generates HTML report summarizing:
All appointments for that month.
Diagnoses and treatments provided.
Sends report via email to doctor.
c. Treatment Export Job (User-triggered Async Job)
Triggered by the patient from dashboard.
Exports all treatment records to CSV.
Fields: user_id, username, doctor, date, diagnosis, treatment, next visit, etc.
Sends alert/notification when ready.
Performance and Caching
Use Redis caching to improve API performance.
Add cache expiry for stale data.
Optimize frequently accessed endpoints (e.g., doctor lists, appointments).
Database Rules
Must be created programmatically (via Flask models or migrations).
Manual DB creation not allowed (e.g., no DB Browser editing).
UI/UX Notes
Wireframe is for guidance only — exact replication not required.
Students may create their own UI designs while preserving required functionality and flow.
Build a role-based Hospital Management System (HMS) for Admins, Doctors, and Patients.
Replace manual/disconnected systems with an efficient web-based management application.
Tech Stack (Mandatory)
Backend: Flask (for REST API)
Frontend: Vue.js (UI framework)
Vue CLI (optional, only if required)
Templating: Jinja2 (only for entry point via CDN, not for UI rendering)
Styling: Bootstrap (only CSS framework allowed)
Database: SQLite (must be created programmatically)
Caching: Redis
Async/Batch Jobs: Redis + Celery
No other frameworks, databases, or CSS libraries allowed. All demos should work on a local machine.
User Roles
Admin (Hospital Staff – Superuser)
Doctor
Patient
Authentication & Access Control
Role-based authentication using:
Flask session-based security or
JWT (preferred)
Single pre-existing Admin (created programmatically after DB setup)
Doctors & Patients can register/login.
Models must clearly distinguish user roles.
Core Features
Admin Functionalities
Admin Dashboard:
Show total Doctors, Patients, and Appointments.
Manage Doctor profiles:
Add, update, delete (name, specialization, availability, etc.)
View & manage all appointments (past/upcoming).
Search for Doctors or Patients by name/specialization.
Edit doctor/patient details.
Remove or blacklist doctors/patients from the system.
Admin cannot register manually — must exist programmatically.
Doctor Functionalities
Doctor Dashboard:
Display upcoming appointments (day/week view).
Show assigned patients list.
Mark appointments as:
Completed or Cancelled.
Set availability for next 7 days.
Update patient treatment history:
Diagnosis, treatment, prescriptions.
View patient medical history.
Patient Functionalities
Register & Login.
Edit and update profile.
Patient Dashboard:
View all departments/specializations.
Search/view doctors by specialization and availability.
Book, reschedule, or cancel appointments.
View upcoming appointments (with status).
Access past appointments, diagnosis, prescriptions, and history.
Trigger CSV export of treatment details (asynchronous job).
Appointments
Attributes:
Patient ID
Doctor ID
Date & Time
Status (Booked/Completed/Cancelled)
Additional fields allowed
Treatment
Attributes:
Appointment ID
Diagnosis
Prescription
Notes
Extra fields allowed
Department / Specialization
Attributes:
Department ID
Department Name
Description
Doctors Registered
Additional fields allowed
Backend Jobs (Celery + Redis)
a. Daily Reminder Job (Scheduled)
Runs daily (morning).
Checks if patients have an appointment that day.
Sends reminder via:
Google Chat Webhook or
Email or
SMS.
b. Monthly Doctor Activity Report (Scheduled)
Runs on 1st day of every month.
Generates HTML report summarizing:
All appointments for that month.
Diagnoses and treatments provided.
Sends report via email to doctor.
c. Treatment Export Job (User-triggered Async Job)
Triggered by the patient from dashboard.
Exports all treatment records to CSV.
Fields: user_id, username, doctor, date, diagnosis, treatment, next visit, etc.
Sends alert/notification when ready.
Performance and Caching
Use Redis caching to improve API performance.
Add cache expiry for stale data.
Optimize frequently accessed endpoints (e.g., doctor lists, appointments).
Database Rules
Must be created programmatically (via Flask models or migrations).
Manual DB creation not allowed (e.g., no DB Browser editing).
UI/UX Notes
Wireframe is for guidance only — exact replication not required.
Students may create their own UI designs while preserving required functionality and flow.