# mickeykera/hms_demo architecture

> Architecture diagram of the GitHub repository mickeykera/hms_demo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mickeykera/hms_demo
- Repository: https://github.com/mickeykera/hms_demo

## Overview

This is a hospital operations system: staff and patients use role-specific React screens to manage intake, appointments, care, admissions, diagnostics, prescriptions, and billing through an Express API backed by SQLite. The API also exposes administration, personnel, messaging, notifications, audit, IoT, and document capabilities documented by the module tree and README. Sampled route handlers access the shared model layer directly; the patient engine assembles cross-domain profile summaries. The excerpts do not show server route registration or most modules’ internals, so those links are limited to documented API structure.

Main entry points: [`src/server.js`](https://github.com/mickeykera/hms_demo/blob/main/src/server.js) (Express API), [`src/models/index.js`](https://github.com/mickeykera/hms_demo/blob/main/src/models/index.js) (Shared data access), [`frontend/src/App.jsx`](https://github.com/mickeykera/hms_demo/blob/main/frontend/src/App.jsx) (React application), [`src/modules/dashboards/routes.js`](https://github.com/mickeykera/hms_demo/blob/main/src/modules/dashboards/routes.js) (Role dashboards)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User Interface"]
  node_react["React application<br/>[App.jsx]"]
  node_auth["Sign-in context<br/>[AuthContext.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_access["Access And Oversight"]
  node_rbac["Access control<br/>[rbac.js]"]
  node_navigation["Role navigation<br/>[routes.js]"]
  node_dashboards["Role dashboards<br/>[routes.js]"]
  node_audit["Audit records<br/>[routes.js]"]
end

subgraph group_care["Patient Care"]
  node_patient["Patient records<br/>[routes.js]"]
  node_patient_engine["Patient profile assembly<br/>[patient-engine.js]"]
  node_appointments["Appointments<br/>[routes.js]"]
  node_clinical["Clinical care<br/>[routes.js]"]
  node_ward["Wards and admissions<br/>[routes.js]"]
end

subgraph group_diagnostics["Diagnostics And Medication"]
  node_lab["Laboratory<br/>[routes.js]"]
  node_radiology["Radiology<br/>[routes.js]"]
  node_pharmacy["Pharmacy<br/>[routes.js]"]
end

subgraph group_operations["Hospital Operations"]
  node_server["Express API<br/>[server.js]"]
  node_billing["Billing<br/>[routes.js]"]
  node_reception["Reception and intake<br/>[routes.js]"]
  node_admin["Departments and personnel<br/>[routes.js]"]
  node_requests["Department requests<br/>[routes.js]"]
  node_documents["Patient documents<br/>[routes.js]"]
  node_iot["IoT telemetry<br/>[routes.js]"]
  node_models["Shared data access<br/>[index.js]"]
  node_sqlite[("SQLite database")]
end

node_staff(("Hospital staff"))
node_patients(("Patients"))

node_staff -->|"use screens"| node_react
node_patients -->|"use portal"| node_react
node_react -->|"uses context"| node_auth
node_react -->|"requests data"| node_api_client
node_api_client -->|"calls REST API"| node_server
node_server -->|"dispatches routes"| node_navigation
node_server -->|"dispatches routes"| node_dashboards
node_server -->|"dispatches routes"| node_patient
node_server -->|"dispatches routes"| node_appointments
node_server -->|"dispatches routes"| node_clinical
node_server -->|"dispatches routes"| node_ward
node_server -->|"dispatches routes"| node_lab
node_server -->|"dispatches routes"| node_radiology
node_server -->|"dispatches routes"| node_pharmacy
node_server -->|"dispatches routes"| node_billing
node_server -->|"dispatches routes"| node_reception
node_server -->|"dispatches routes"| node_admin
node_server -->|"dispatches routes"| node_requests
node_server -->|"dispatches routes"| node_documents
node_server -->|"dispatches routes"| node_iot
node_server -->|"dispatches routes"| node_audit
node_navigation -->|"authenticates users"| node_rbac
node_dashboards -->|"checks roles"| node_rbac
node_appointments -->|"checks roles"| node_rbac
node_appointments -->|"reads and writes"| node_models
node_patient -->|"reads and writes"| node_models
node_clinical -->|"reads and writes"| node_models
node_ward -->|"reads and writes"| node_models
node_lab -->|"reads and writes"| node_models
node_radiology -->|"reads and writes"| node_models
node_pharmacy -->|"reads and writes"| node_models
node_dashboards -->|"queries data"| node_models
node_requests -->|"reads and writes"| node_models
node_documents -->|"reads and writes"| node_models
node_audit -->|"queries logs"| node_models
node_patient_engine -->|"loads patient data"| node_models
node_models -->|"reads and writes"| node_sqlite
node_server -.->|"initializes database"| node_sqlite

click node_react "https://github.com/mickeykera/hms_demo/blob/main/frontend/src/App.jsx"
click node_auth "https://github.com/mickeykera/hms_demo/blob/main/frontend/src/context/AuthContext.jsx"
click node_api_client "https://github.com/mickeykera/hms_demo/blob/main/frontend/src/services/api.js"
click node_server "https://github.com/mickeykera/hms_demo/blob/main/src/server.js"
click node_rbac "https://github.com/mickeykera/hms_demo/blob/main/src/middleware/rbac.js"
click node_navigation "https://github.com/mickeykera/hms_demo/blob/main/src/modules/navigation/routes.js"
click node_dashboards "https://github.com/mickeykera/hms_demo/blob/main/src/modules/dashboards/routes.js"
click node_audit "https://github.com/mickeykera/hms_demo/blob/main/src/modules/audit/routes.js"
click node_patient "https://github.com/mickeykera/hms_demo/blob/main/src/modules/patient/routes.js"
click node_patient_engine "https://github.com/mickeykera/hms_demo/blob/main/src/models/patient-engine.js"
click node_appointments "https://github.com/mickeykera/hms_demo/blob/main/src/modules/appointments/routes.js"
click node_clinical "https://github.com/mickeykera/hms_demo/blob/main/src/modules/clinical/routes.js"
click node_ward "https://github.com/mickeykera/hms_demo/blob/main/src/modules/wards/routes.js"
click node_lab "https://github.com/mickeykera/hms_demo/blob/main/src/modules/lab/routes.js"
click node_radiology "https://github.com/mickeykera/hms_demo/blob/main/src/modules/radiology/routes.js"
click node_pharmacy "https://github.com/mickeykera/hms_demo/blob/main/src/modules/pharmacy/routes.js"
click node_billing "https://github.com/mickeykera/hms_demo/blob/main/src/modules/billing/routes.js"
click node_reception "https://github.com/mickeykera/hms_demo/blob/main/src/modules/reception/routes.js"
click node_admin "https://github.com/mickeykera/hms_demo/blob/main/src/modules/departments/routes.js"
click node_requests "https://github.com/mickeykera/hms_demo/blob/main/src/modules/requests/routes.js"
click node_documents "https://github.com/mickeykera/hms_demo/blob/main/src/modules/documents/routes.js"
click node_iot "https://github.com/mickeykera/hms_demo/blob/main/src/modules/iot/routes.js"
click node_models "https://github.com/mickeykera/hms_demo/blob/main/src/models/index.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_react,node_auth,node_api_client toneBlue
class node_rbac,node_navigation,node_dashboards,node_audit toneAmber
class node_patient,node_patient_engine,node_appointments,node_clinical,node_ward toneMint
class node_lab,node_radiology,node_pharmacy toneRose
class node_server,node_billing,node_reception,node_admin,node_requests,node_documents,node_iot,node_models,node_sqlite,node_staff,node_patients toneIndigo
```

## Components

### User Interface

- [React application](https://github.com/mickeykera/hms_demo/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Sign-in context](https://github.com/mickeykera/hms_demo/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/mickeykera/hms_demo/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Access And Oversight

- [Access control](https://github.com/mickeykera/hms_demo/blob/main/src/middleware/rbac.js): `src/middleware/rbac.js`
- [Role navigation](https://github.com/mickeykera/hms_demo/blob/main/src/modules/navigation/routes.js): `src/modules/navigation/routes.js`
- [Role dashboards](https://github.com/mickeykera/hms_demo/blob/main/src/modules/dashboards/routes.js): `src/modules/dashboards/routes.js`
- [Audit records](https://github.com/mickeykera/hms_demo/blob/main/src/modules/audit/routes.js): `src/modules/audit/routes.js`

### Patient Care

- [Patient records](https://github.com/mickeykera/hms_demo/blob/main/src/modules/patient/routes.js): `src/modules/patient/routes.js`
- [Patient profile assembly](https://github.com/mickeykera/hms_demo/blob/main/src/models/patient-engine.js): `src/models/patient-engine.js`
- [Appointments](https://github.com/mickeykera/hms_demo/blob/main/src/modules/appointments/routes.js): `src/modules/appointments/routes.js`
- [Clinical care](https://github.com/mickeykera/hms_demo/blob/main/src/modules/clinical/routes.js): `src/modules/clinical/routes.js`
- [Wards and admissions](https://github.com/mickeykera/hms_demo/blob/main/src/modules/wards/routes.js): `src/modules/wards/routes.js`

### Diagnostics And Medication

- [Laboratory](https://github.com/mickeykera/hms_demo/blob/main/src/modules/lab/routes.js): `src/modules/lab/routes.js`
- [Radiology](https://github.com/mickeykera/hms_demo/blob/main/src/modules/radiology/routes.js): `src/modules/radiology/routes.js`
- [Pharmacy](https://github.com/mickeykera/hms_demo/blob/main/src/modules/pharmacy/routes.js): `src/modules/pharmacy/routes.js`

### Hospital Operations

- [Express API](https://github.com/mickeykera/hms_demo/blob/main/src/server.js): `src/server.js`
- [Billing](https://github.com/mickeykera/hms_demo/blob/main/src/modules/billing/routes.js): `src/modules/billing/routes.js`
- [Reception and intake](https://github.com/mickeykera/hms_demo/blob/main/src/modules/reception/routes.js): `src/modules/reception/routes.js`
- [Departments and personnel](https://github.com/mickeykera/hms_demo/blob/main/src/modules/departments/routes.js): `src/modules/departments/routes.js`
- [Department requests](https://github.com/mickeykera/hms_demo/blob/main/src/modules/requests/routes.js): `src/modules/requests/routes.js`
- [Patient documents](https://github.com/mickeykera/hms_demo/blob/main/src/modules/documents/routes.js): `src/modules/documents/routes.js`
- [IoT telemetry](https://github.com/mickeykera/hms_demo/blob/main/src/modules/iot/routes.js): `src/modules/iot/routes.js`
- [Shared data access](https://github.com/mickeykera/hms_demo/blob/main/src/models/index.js): `src/models/index.js`
- **SQLite database**

### Other components

- **Hospital staff**
- **Patients**

## Connections

- Hospital staff → React application: use screens
- Patients → React application: use portal
- React application → Sign-in context: uses context
- React application → API client: requests data
- API client → Express API: calls REST API
- Express API → Role navigation: dispatches routes
- Express API → Role dashboards: dispatches routes
- Express API → Patient records: dispatches routes
- Express API → Appointments: dispatches routes
- Express API → Clinical care: dispatches routes
- Express API → Wards and admissions: dispatches routes
- Express API → Laboratory: dispatches routes
- Express API → Radiology: dispatches routes
- Express API → Pharmacy: dispatches routes
- Express API → Billing: dispatches routes
- Express API → Reception and intake: dispatches routes
- Express API → Departments and personnel: dispatches routes
- Express API → Department requests: dispatches routes
- Express API → Patient documents: dispatches routes
- Express API → IoT telemetry: dispatches routes
- Express API → Audit records: dispatches routes
- Role navigation → Access control: authenticates users
- Role dashboards → Access control: checks roles
- Appointments → Access control: checks roles
- Appointments → Shared data access: reads and writes
- Patient records → Shared data access: reads and writes
- Clinical care → Shared data access: reads and writes
- Wards and admissions → Shared data access: reads and writes
- Laboratory → Shared data access: reads and writes
- Radiology → Shared data access: reads and writes
- Pharmacy → Shared data access: reads and writes
- Role dashboards → Shared data access: queries data
- Department requests → Shared data access: reads and writes
- Patient documents → Shared data access: reads and writes
- Audit records → Shared data access: queries logs
- Patient profile assembly → Shared data access: loads patient data
- Shared data access → SQLite database: reads and writes
- Express API → SQLite database: initializes database
