# meghanag-16/online-appointment-and-queue-management-system architecture

> Architecture diagram of the GitHub repository meghanag-16/online-appointment-and-queue-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/meghanag-16/online-appointment-and-queue-management-system
- Repository: https://github.com/meghanag-16/online-appointment-and-queue-management-system

## Overview

MediQueue is a hospital appointment and queue web application: role-based users book or manage appointments, staff run the doctor queue, and patients and clinicians use related billing and clinical-record features. The frontend routes users to role-specific pages and calls a Spring REST backend; backend services enforce domain rules and persist operational data. The README documents major capabilities not represented by sampled source excerpts, so those are shown at subsystem level. Relationships involving unsampled implementations are limited to documented links.

Main entry points: [`mediqueue-backend/src/main/java/com/mediqueue/entity/Appointment.java`](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/entity/Appointment.java) (MySQL data), [`mediqueue-backend/src/main/java/com/mediqueue/service/AppointmentService.java`](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/AppointmentService.java) (Appointment rules), [`mediqueue-frontend/src/routes/AppRouter.jsx`](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/routes/AppRouter.jsx) (Role-based portals), [`mediqueue-backend/src/main/java/com/mediqueue/controller`](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/controller) (REST controllers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_frontend["Role-based portals<br/>[AppRouter.jsx]"]
  node_authstate["Session state<br/>[AuthContext.jsx]"]
  node_httpclient["API client<br/>[axiosInstance.js]"]
end

subgraph group_identity["Identity and access"]
  node_api["REST controllers"]
  node_auth["Authentication"]
  node_currentuser["Current user"]
  node_useraccounts["Account management"]
end

subgraph group_appointments["Appointments and queue"]
  node_appointmentapi["Appointment endpoints"]
  node_appointmentservice["Appointment rules"]
  node_queue["Live queue<br/>[QueueManager.java]"]
  node_slots["Slot scheduling"]
  node_events["Appointment events"]
end

subgraph group_clinical["Clinical and billing"]
  node_clinicalrecords["Clinical records"]
  node_labs["Lab reports"]
  node_billing["Billing"]
  node_complaints["Complaints"]
  node_notifications["Notifications"]
end

subgraph group_operations["Administration"]
  node_database[("MySQL data<br/>[Appointment.java]")]
  node_admin["Administration"]
  node_audit["Audit log<br/>[AuditService.java]"]
end

node_users(("Patients and staff"))

node_users -->|"use portals"| node_frontend
node_frontend -->|"reads session"| node_authstate
node_authstate -->|"stores token"| node_httpclient
node_frontend -.->|"requests data"| node_httpclient
node_httpclient -->|"calls REST API"| node_api
node_api -.->|"delegates login"| node_auth
node_auth -->|"registers patients"| node_useraccounts
node_auth -->|"loads credentials"| node_database
node_api -->|"handles appointments"| node_appointmentservice
node_appointmentapi -->|"delegates requests"| node_appointmentservice
node_appointmentservice -.->|"updates queue"| node_queue
node_events -->|"dispatches changes"| node_queue
node_queue -->|"reads and writes"| node_database
node_slots -.->|"manages slots"| node_database
node_appointmentservice -.->|"creates visit bills"| node_billing
node_appointmentservice -.->|"notifies patients"| node_notifications
node_clinicalrecords -.->|"persists records"| node_database
node_labs -.->|"stores reports"| node_database
node_complaints -.->|"stores complaints"| node_database
node_admin -->|"searches audit"| node_audit
node_admin -.->|"manages accounts"| node_useraccounts
node_billing -.->|"records bills"| node_database

click node_frontend "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/routes/AppRouter.jsx"
click node_authstate "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/context/AuthContext.jsx"
click node_httpclient "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/api/axiosInstance.js"
click node_api "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/controller"
click node_auth "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/impl/AuthServiceImpl.java"
click node_currentuser "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/security/CurrentUserService.java"
click node_useraccounts "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/UserAccountService.java"
click node_appointmentapi "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/controller/AppointmentController.java"
click node_appointmentservice "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/AppointmentService.java"
click node_queue "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java"
click node_slots "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service"
click node_events "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/event"
click node_clinicalrecords "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service"
click node_labs "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service"
click node_billing "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/billing"
click node_complaints "https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service"
click node_database "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/entity/Appointment.java"
click node_admin "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/controller/AdminController.java"
click node_audit "https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/audit/AuditService.java"

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_frontend,node_authstate,node_httpclient toneBlue
class node_api,node_auth,node_currentuser,node_useraccounts toneAmber
class node_appointmentapi,node_appointmentservice,node_queue,node_slots,node_events toneMint
class node_clinicalrecords,node_labs,node_billing,node_complaints,node_notifications toneRose
class node_database,node_admin,node_audit,node_users toneIndigo
```

## Components

### Web application

- [Role-based portals](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/routes/AppRouter.jsx): `mediqueue-frontend/src/routes/AppRouter.jsx`
- [Session state](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/context/AuthContext.jsx): `mediqueue-frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-frontend/src/api/axiosInstance.js): `mediqueue-frontend/src/api/axiosInstance.js`

### Identity and access

- [REST controllers](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/controller): `mediqueue-backend/src/main/java/com/mediqueue/controller`
- [Authentication](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/impl/AuthServiceImpl.java): `mediqueue-backend/src/main/java/com/mediqueue/service/impl/AuthServiceImpl.java`
- [Current user](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/security/CurrentUserService.java): `mediqueue-backend/src/main/java/com/mediqueue/security/CurrentUserService.java`
- [Account management](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/UserAccountService.java): `mediqueue-backend/src/main/java/com/mediqueue/service/UserAccountService.java`

### Appointments and queue

- [Appointment endpoints](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/controller/AppointmentController.java): `mediqueue-backend/src/main/java/com/mediqueue/controller/AppointmentController.java`
- [Appointment rules](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/AppointmentService.java): `mediqueue-backend/src/main/java/com/mediqueue/service/AppointmentService.java`
- [Live queue](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java): `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`
- [Slot scheduling](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service): `mediqueue-backend/src/main/java/com/mediqueue/service`
- [Appointment events](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/event): `mediqueue-backend/src/main/java/com/mediqueue/event`

### Clinical and billing

- [Clinical records](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service): `mediqueue-backend/src/main/java/com/mediqueue/service`
- [Lab reports](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service): `mediqueue-backend/src/main/java/com/mediqueue/service`
- [Billing](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/billing): `mediqueue-backend/src/main/java/com/mediqueue/billing`
- [Complaints](https://github.com/meghanag-16/online-appointment-and-queue-management-system/tree/main/mediqueue-backend/src/main/java/com/mediqueue/service): `mediqueue-backend/src/main/java/com/mediqueue/service`
- **Notifications**

### Administration

- [MySQL data](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/entity/Appointment.java): `mediqueue-backend/src/main/java/com/mediqueue/entity/Appointment.java`
- [Administration](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/controller/AdminController.java): `mediqueue-backend/src/main/java/com/mediqueue/controller/AdminController.java`
- [Audit log](https://github.com/meghanag-16/online-appointment-and-queue-management-system/blob/main/mediqueue-backend/src/main/java/com/mediqueue/audit/AuditService.java): `mediqueue-backend/src/main/java/com/mediqueue/audit/AuditService.java`

### Other components

- **Patients and staff**

## Connections

- Patients and staff → Role-based portals: use portals
- Role-based portals → Session state: reads session (evidence: `mediqueue-frontend/src/routes/AppRouter.jsx`)
- Session state → API client: stores token (evidence: `mediqueue-frontend/src/context/AuthContext.jsx`)
- Role-based portals → API client: requests data
- API client → REST controllers: calls REST API
- REST controllers → Authentication: delegates login
- Authentication → Account management: registers patients (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/AuthServiceImpl.java`)
- Authentication → MySQL data: loads credentials (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/AuthServiceImpl.java`)
- REST controllers → Appointment rules: handles appointments (evidence: `mediqueue-backend/src/main/java/com/mediqueue/controller/AppointmentController.java`)
- Appointment endpoints → Appointment rules: delegates requests (evidence: `mediqueue-backend/src/main/java/com/mediqueue/controller/AppointmentController.java`)
- Appointment rules → Live queue: updates queue
- Appointment events → Live queue: dispatches changes (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Live queue → MySQL data: reads and writes (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Slot scheduling → MySQL data: manages slots (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Appointment rules → Billing: creates visit bills
- Appointment rules → Notifications: notifies patients
- Clinical records → MySQL data: persists records (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Lab reports → MySQL data: stores reports (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Complaints → MySQL data: stores complaints (evidence: `mediqueue-backend/src/main/java/com/mediqueue/service/impl/QueueManager.java`)
- Administration → Audit log: searches audit (evidence: `mediqueue-backend/src/main/java/com/mediqueue/controller/AdminController.java`)
- Administration → Account management: manages accounts
- Billing → MySQL data: records bills
