Role-Based Hospital Management System

Job ID: 39973710

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.
Related categories: JavaScript Node.js Bootstrap SQLite Redis Flask Jinja2 Vue.js Celery REST API