# fayaz-flm/flm-hospital-management architecture

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

- Interactive diagram: https://gitdiagram.com/fayaz-flm/flm-hospital-management
- Repository: https://github.com/fayaz-flm/flm-hospital-management

## Overview

MedSync is a Spring Boot hospital-management backend. Its principal workflow accepts an appointment request through the REST API, checks doctor availability and patient/appointment conflicts, persists the appointment, and sends a confirmation email. Other documented and tree-visible capabilities include staff and user authentication, patient and doctor management, schedules, and room/bed operations. The appointment path is shown in sampled source; several other service links are based on API declarations or README-level capability descriptions, so are marked unverified.

Main entry points: [`FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java) (Appointment Workflow), [`FLMHospitalManagement/src/main/java/com/flm/dao`](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/dao) (Clinical Records), [`FLMHospitalManagement/src/main/java/com/flm/controller`](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/controller) (People APIs), [`FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java`](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java) (Appointment API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_appointment_api["Appointment API"]
  node_people_api["People APIs"]
  node_room_api["Room API"]
  node_auth_api["Auth API"]
end

subgraph group_care["Care Operations"]
  node_appointment_service["Appointment Workflow"]
  node_schedule_service["Doctor Schedules"]
  node_doctor_service["Doctor Management"]
  node_patient_service["Patient Management"]
  node_room_service["Rooms and Beds"]
end

subgraph group_identity["Identity and Staff"]
  node_staff_service["Staff Management"]
  node_user_service["User Accounts"]
  node_jwt["JWT Utilities<br/>[JwtService.java]"]
  node_security["Request Security"]
end

subgraph group_persistence["Domain and Persistence"]
  node_appointment_data[("Appointment Data")]
  node_patient_data[("Patient Data")]
  node_clinical_data[("Clinical Records")]
  node_entities["Domain Entities"]
end

subgraph group_shared["Shared Services"]
  node_api_models["DTOs and Builders"]
  node_email["Email Notifications<br/>[EmailService.java]"]
  node_errors["Error Responses"]
end

node_client(("API Client"))
node_mail_provider(("Mail Provider"))

node_client -->|"submits requests"| node_appointment_api
node_appointment_api -->|"delegates"| node_appointment_service
node_appointment_service -->|"checks and saves"| node_appointment_data
node_appointment_service -->|"looks up patients"| node_patient_data
node_appointment_service -->|"checks doctor schedule"| node_clinical_data
node_appointment_service -->|"builds appointment"| node_entities
node_appointment_service -->|"sends confirmation"| node_email
node_email -->|"sends mail"| node_mail_provider
node_appointment_api -->|"uses request DTOs"| node_api_models
node_client -.->|"manages records"| node_people_api
node_people_api -.->|"delegates patient work"| node_patient_service
node_people_api -.->|"delegates doctor work"| node_doctor_service
node_people_api -.->|"delegates staff work"| node_staff_service
node_client -.->|"manages beds"| node_room_api
node_room_api -.->|"delegates"| node_room_service
node_client -.->|"authenticates"| node_auth_api
node_auth_api -.->|"handles credentials"| node_user_service
node_security -.->|"validates tokens"| node_jwt
node_appointment_service -.->|"raises mapped errors"| node_errors
node_patient_service -.->|"accesses patient records"| node_patient_data
node_doctor_service -.->|"accesses clinical records"| node_clinical_data
node_staff_service -->|"accesses staff records"| node_clinical_data
node_room_service -.->|"accesses room and bed data"| node_clinical_data
node_schedule_service -.->|"accesses schedules"| node_clinical_data

click node_appointment_api "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java"
click node_people_api "https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/controller"
click node_room_api "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/RoomController.java"
click node_auth_api "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/AuthController.java"
click node_appointment_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java"
click node_schedule_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorScheduleServiceImpl.java"
click node_doctor_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorServiceImpl.java"
click node_patient_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/PatientServiceImpl.java"
click node_room_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/RoomServiceImpl.java"
click node_staff_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/StaffServiceImpl.java"
click node_user_service "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/UserServiceImpl.java"
click node_jwt "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/security/JwtService.java"
click node_security "https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/security"
click node_appointment_data "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/dao/AppointmentRepository.java"
click node_patient_data "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/dao/PatientRepository.java"
click node_clinical_data "https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/dao"
click node_entities "https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/model"
click node_api_models "https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/dto"
click node_email "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/notification/EmailService.java"
click node_errors "https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/exception/GlobalExceptionHandler.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_appointment_api,node_people_api,node_room_api,node_auth_api,node_client toneBlue
class node_appointment_service,node_schedule_service,node_doctor_service,node_patient_service,node_room_service toneAmber
class node_staff_service,node_user_service,node_jwt,node_security toneMint
class node_appointment_data,node_patient_data,node_clinical_data,node_entities toneRose
class node_api_models,node_email,node_errors,node_mail_provider toneIndigo
```

## Components

### REST API

- [Appointment API](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java): `FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java`
- [People APIs](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/controller): `FLMHospitalManagement/src/main/java/com/flm/controller`
- [Room API](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/RoomController.java): `FLMHospitalManagement/src/main/java/com/flm/controller/RoomController.java`
- [Auth API](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/controller/AuthController.java): `FLMHospitalManagement/src/main/java/com/flm/controller/AuthController.java`

### Care Operations

- [Appointment Workflow](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`
- [Doctor Schedules](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorScheduleServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorScheduleServiceImpl.java`
- [Doctor Management](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/DoctorServiceImpl.java`
- [Patient Management](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/PatientServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/PatientServiceImpl.java`
- [Rooms and Beds](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/RoomServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/RoomServiceImpl.java`

### Identity and Staff

- [Staff Management](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/StaffServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/StaffServiceImpl.java`
- [User Accounts](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/service/impl/UserServiceImpl.java): `FLMHospitalManagement/src/main/java/com/flm/service/impl/UserServiceImpl.java`
- [JWT Utilities](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/security/JwtService.java): `FLMHospitalManagement/src/main/java/com/flm/security/JwtService.java`
- [Request Security](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/security): `FLMHospitalManagement/src/main/java/com/flm/security`

### Domain and Persistence

- [Appointment Data](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/dao/AppointmentRepository.java): `FLMHospitalManagement/src/main/java/com/flm/dao/AppointmentRepository.java`
- [Patient Data](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/dao/PatientRepository.java): `FLMHospitalManagement/src/main/java/com/flm/dao/PatientRepository.java`
- [Clinical Records](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/dao): `FLMHospitalManagement/src/main/java/com/flm/dao`
- [Domain Entities](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/model): `FLMHospitalManagement/src/main/java/com/flm/model`

### Shared Services

- [DTOs and Builders](https://github.com/fayaz-flm/flm-hospital-management/tree/main/FLMHospitalManagement/src/main/java/com/flm/dto): `FLMHospitalManagement/src/main/java/com/flm/dto`
- [Email Notifications](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/notification/EmailService.java): `FLMHospitalManagement/src/main/java/com/flm/notification/EmailService.java`
- [Error Responses](https://github.com/fayaz-flm/flm-hospital-management/blob/main/FLMHospitalManagement/src/main/java/com/flm/exception/GlobalExceptionHandler.java): `FLMHospitalManagement/src/main/java/com/flm/exception/GlobalExceptionHandler.java`

### Other components

- **API Client**
- **Mail Provider**

## Connections

- API Client → Appointment API: submits requests (evidence: `FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java`)
- Appointment API → Appointment Workflow: delegates (evidence: `FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java`)
- Appointment Workflow → Appointment Data: checks and saves (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`)
- Appointment Workflow → Patient Data: looks up patients (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`)
- Appointment Workflow → Clinical Records: checks doctor schedule (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`)
- Appointment Workflow → Domain Entities: builds appointment (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`)
- Appointment Workflow → Email Notifications: sends confirmation (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/AppointmentServiceImpl.java`)
- Email Notifications → Mail Provider: sends mail (evidence: `FLMHospitalManagement/src/main/java/com/flm/notification/EmailService.java`)
- Appointment API → DTOs and Builders: uses request DTOs (evidence: `FLMHospitalManagement/src/main/java/com/flm/controller/AppointmentController.java`)
- API Client → People APIs: manages records
- People APIs → Patient Management: delegates patient work
- People APIs → Doctor Management: delegates doctor work
- People APIs → Staff Management: delegates staff work
- API Client → Room API: manages beds
- Room API → Rooms and Beds: delegates
- API Client → Auth API: authenticates
- Auth API → User Accounts: handles credentials
- Request Security → JWT Utilities: validates tokens (evidence: `FLMHospitalManagement/src/main/java/com/flm/security/JwtAuthenticationFilter.java`)
- Appointment Workflow → Error Responses: raises mapped errors (evidence: `FLMHospitalManagement/src/main/java/com/flm/exception/GlobalExceptionHandler.java`)
- Patient Management → Patient Data: accesses patient records (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/PatientServiceImpl.java`)
- Doctor Management → Clinical Records: accesses clinical records
- Staff Management → Clinical Records: accesses staff records (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/StaffServiceImpl.java`)
- Rooms and Beds → Clinical Records: accesses room and bed data (evidence: `FLMHospitalManagement/src/main/java/com/flm/service/impl/RoomServiceImpl.java`)
- Doctor Schedules → Clinical Records: accesses schedules
