# mertaltinbas/clinic_management architecture

> Architecture diagram of the GitHub repository mertaltinbas/clinic_management, 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/mertaltinbas/clinic_management
- Repository: https://github.com/mertaltinbas/clinic_management

## Overview

Clinic Management System is a Java Swing desktop app for patient scheduling and doctor consultations, backed by Hibernate and a file-based H2 database. Patients browse specialties and doctors, check availability, and book or manage appointments; doctors review appointments and patient history, record consultations, prescribe medication, issue notes, and arrange follow-ups. Appointment booking also generates an invoice. The README documents staff management; its implementation is represented by the entity model, though those screens were not sampled. Arrows reflect sampled calls and documented capabilities; some internal wiring is not visible in the excerpts.

Main entry points: [`src/main/java/gui/doctor/DoctorDashboard.java`](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/DoctorDashboard.java) (Consultation dashboard), [`src/main/java/gui/patient/PatientAppointmentDashboard.java`](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/patient/PatientAppointmentDashboard.java) (Appointment dashboard), [`src/main/java/util/HibernateUtil.java`](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/util/HibernateUtil.java) (Hibernate access), [`src/main/java/PatientScenario.java`](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/PatientScenario.java) (Patient entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_patient["Patient Portal"]
  node_patient_scenario["Patient entry"]
  node_patient_ui["Appointment dashboard"]
  node_appointment_dialog["Manage appointments"]
end

subgraph group_doctor["Doctor Care"]
  node_doctor_scenario["Doctor entry"]
  node_doctor_ui["Consultation dashboard"]
  node_medication_dialog["Medication dialog"]
  node_followup_dialog["Follow-up dialog"]
  node_sicknote_dialog["Sick note dialog"]
end

subgraph group_domain["Clinic Domain"]
  node_appointments["Appointments<br/>[Appointment.java]"]
  node_patient_records["Patient records<br/>[Patient.java]"]
  node_medical_notes["Medical notes<br/>[MedicalNotes.java]"]
  node_medication["Medication orders<br/>[Medication.java]"]
  node_sick_notes["Sick notes<br/>[SickNote.java]"]
  node_invoices["Invoices<br/>[Invoice.java]"]
  node_staff["Staff and specialties"]
end

subgraph group_persistence["Persistence"]
  node_hibernate["Hibernate access<br/>[HibernateUtil.java]"]
  node_database[("H2 database")]
  node_seeder["Entity seeder<br/>[EntitySeeder.java]"]
end

node_patient_actor(("Patient"))
node_doctor_actor(("Doctor"))

node_patient_actor -->|"starts"| node_patient_scenario
node_patient_scenario -->|"loads patient"| node_hibernate
node_patient_scenario -->|"opens"| node_patient_ui
node_patient_actor -->|"uses"| node_patient_ui
node_patient_ui -->|"queries and saves"| node_hibernate
node_patient_ui -->|"browses specialties"| node_staff
node_patient_ui -->|"books appointment"| node_appointments
node_patient_ui -->|"generates invoice"| node_invoices
node_patient_ui -->|"opens"| node_appointment_dialog
node_appointment_dialog -->|"updates appointment"| node_hibernate
node_doctor_actor -->|"starts"| node_doctor_scenario
node_doctor_scenario -->|"loads doctor"| node_hibernate
node_doctor_scenario -->|"opens"| node_doctor_ui
node_doctor_actor -->|"uses"| node_doctor_ui
node_doctor_ui -->|"loads and saves"| node_hibernate
node_doctor_ui -->|"reviews and completes"| node_appointments
node_doctor_ui -->|"views history"| node_patient_records
node_doctor_ui -->|"records consultation"| node_medical_notes
node_doctor_ui -->|"opens"| node_medication_dialog
node_doctor_ui -->|"saves prescriptions"| node_medication
node_doctor_ui -->|"opens"| node_followup_dialog
node_doctor_ui -->|"opens"| node_sicknote_dialog
node_doctor_ui -->|"records sick note"| node_sick_notes
node_doctor_ui -->|"schedules follow-up"| node_appointments
node_hibernate -->|"reads and writes"| node_database
node_seeder -.->|"seeds records"| node_database

click node_patient_scenario "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/PatientScenario.java"
click node_patient_ui "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/patient/PatientAppointmentDashboard.java"
click node_appointment_dialog "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/patient/dialogs/UpdateAppointmentDialog.java"
click node_doctor_scenario "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/DoctorScenario.java"
click node_doctor_ui "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/DoctorDashboard.java"
click node_medication_dialog "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/MedicationDialog.java"
click node_followup_dialog "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/FollowUpDialog.java"
click node_sicknote_dialog "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/SickNoteDialog.java"
click node_appointments "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Appointment.java"
click node_patient_records "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Patient.java"
click node_medical_notes "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/MedicalNotes.java"
click node_medication "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Medication.java"
click node_sick_notes "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/SickNote.java"
click node_invoices "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Invoice.java"
click node_staff "https://github.com/mertaltinbas/clinic_management/tree/main/src/main/java/entity"
click node_hibernate "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/util/HibernateUtil.java"
click node_seeder "https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/util/EntitySeeder.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_patient_scenario,node_patient_ui,node_appointment_dialog toneBlue
class node_doctor_scenario,node_doctor_ui,node_medication_dialog,node_followup_dialog,node_sicknote_dialog toneAmber
class node_appointments,node_patient_records,node_medical_notes,node_medication,node_sick_notes,node_invoices,node_staff toneMint
class node_hibernate,node_database,node_seeder toneRose
class node_patient_actor,node_doctor_actor toneIndigo
```

## Components

### Patient Portal

- [Patient entry](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/PatientScenario.java): `src/main/java/PatientScenario.java`
- [Appointment dashboard](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/patient/PatientAppointmentDashboard.java): `src/main/java/gui/patient/PatientAppointmentDashboard.java`
- [Manage appointments](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/patient/dialogs/UpdateAppointmentDialog.java): `src/main/java/gui/patient/dialogs/UpdateAppointmentDialog.java`

### Doctor Care

- [Doctor entry](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/DoctorScenario.java): `src/main/java/DoctorScenario.java`
- [Consultation dashboard](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/DoctorDashboard.java): `src/main/java/gui/doctor/DoctorDashboard.java`
- [Medication dialog](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/MedicationDialog.java): `src/main/java/gui/doctor/dialogs/MedicationDialog.java`
- [Follow-up dialog](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/FollowUpDialog.java): `src/main/java/gui/doctor/dialogs/FollowUpDialog.java`
- [Sick note dialog](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/gui/doctor/dialogs/SickNoteDialog.java): `src/main/java/gui/doctor/dialogs/SickNoteDialog.java`

### Clinic Domain

- [Appointments](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Appointment.java): `src/main/java/entity/Appointment.java`
- [Patient records](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Patient.java): `src/main/java/entity/Patient.java`
- [Medical notes](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/MedicalNotes.java): `src/main/java/entity/MedicalNotes.java`
- [Medication orders](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Medication.java): `src/main/java/entity/Medication.java`
- [Sick notes](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/SickNote.java): `src/main/java/entity/SickNote.java`
- [Invoices](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/entity/Invoice.java): `src/main/java/entity/Invoice.java`
- [Staff and specialties](https://github.com/mertaltinbas/clinic_management/tree/main/src/main/java/entity): `src/main/java/entity`

### Persistence

- [Hibernate access](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/util/HibernateUtil.java): `src/main/java/util/HibernateUtil.java`
- **H2 database**
- [Entity seeder](https://github.com/mertaltinbas/clinic_management/blob/main/src/main/java/util/EntitySeeder.java): `src/main/java/util/EntitySeeder.java`

### Other components

- **Patient**
- **Doctor**

## Connections

- Patient → Patient entry: starts
- Patient entry → Hibernate access: loads patient
- Patient entry → Appointment dashboard: opens
- Patient → Appointment dashboard: uses
- Appointment dashboard → Hibernate access: queries and saves
- Appointment dashboard → Staff and specialties: browses specialties
- Appointment dashboard → Appointments: books appointment
- Appointment dashboard → Invoices: generates invoice
- Appointment dashboard → Manage appointments: opens
- Manage appointments → Hibernate access: updates appointment
- Doctor → Doctor entry: starts
- Doctor entry → Hibernate access: loads doctor
- Doctor entry → Consultation dashboard: opens
- Doctor → Consultation dashboard: uses
- Consultation dashboard → Hibernate access: loads and saves
- Consultation dashboard → Appointments: reviews and completes
- Consultation dashboard → Patient records: views history
- Consultation dashboard → Medical notes: records consultation
- Consultation dashboard → Medication dialog: opens
- Consultation dashboard → Medication orders: saves prescriptions
- Consultation dashboard → Follow-up dialog: opens
- Consultation dashboard → Sick note dialog: opens
- Consultation dashboard → Sick notes: records sick note
- Consultation dashboard → Appointments: schedules follow-up
- Hibernate access → H2 database: reads and writes
- Entity seeder → H2 database: seeds records
