# alfajauhari068/reservasi_dokter architecture

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

- Interactive diagram: https://gitdiagram.com/alfajauhari068/reservasi_dokter
- Repository: https://github.com/alfajauhari068/reservasi_dokter

## Overview

This Laravel clinic system serves patients, doctors, and administrators through role-specific web workflows. A patient registers, books a doctor and schedule, and receives an appointment with a queue number; doctors manage schedules and complete examinations, while admins oversee clinic operations and visit reports. The README documents additional approval, queue, records, PDF/Excel export, and notification capabilities. Sampled code confirms registration, booking transactions, email, and notification calls; unsampled subsystem connections are shown only where documented, so some controller-to-feature wiring is necessarily high-level.

Main entry points: [`app/Http/Controllers/Pasien/ReservasiController.php`](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Pasien/ReservasiController.php) (Patient Booking), [`routes/web.php`](https://github.com/alfajauhari068/reservasi_dokter/blob/main/routes/web.php) (Web Routes), [`app/Http/Controllers/Dokter/ReservasiController.php`](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Dokter/ReservasiController.php) (Doctor Visits), [`app/Services/VisitReportService.php`](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Services/VisitReportService.php) (Visit Reports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Booking"]
  node_routes["Web Routes<br/>[web.php]"]
  node_registration["Patient Registration"]
  node_patient_booking["Patient Booking"]
  node_identity["User and Patient<br/>[User.php]"]
end

subgraph group_clinic["Clinic Operations"]
  node_doctors["Doctor Management"]
  node_schedules["Doctor Schedules"]
  node_appointments["Appointments<br/>[Appointment.php]"]
  node_queues["Queue Management"]
  node_clinic_db[("Clinic Database")]
end

subgraph group_care["Clinical Care"]
  node_doctor_visits["Doctor Visits"]
  node_medical_records["Medical Records<br/>[MedicalRecord.php]"]
end

subgraph group_comms["Notifications and Reports"]
  node_notifications["Notification Service"]
  node_notification_store[("Notifications<br/>[Notification.php]")]
  node_mail["Confirmation Email"]
  node_admin_dashboard["Admin Dashboard"]
  node_visit_reports["Visit Reports"]
  node_report_export["Report Export"]
end

node_patient(("Patient"))
node_doctor_actor(("Doctor"))
node_admin_actor(("Administrator"))
node_mail_service["Mail Delivery"]

node_patient -->|"opens pages"| node_routes
node_doctor_actor -->|"opens pages"| node_routes
node_admin_actor -->|"opens pages"| node_routes
node_routes -->|"dispatches"| node_registration
node_routes -->|"dispatches"| node_patient_booking
node_registration -->|"creates account"| node_identity
node_identity -->|"stores identity"| node_clinic_db
node_patient_booking -->|"reads patient"| node_clinic_db
node_patient_booking -->|"checks availability"| node_schedules
node_patient_booking -->|"creates booking"| node_appointments
node_patient_booking -->|"generates number"| node_queues
node_appointments -->|"stores visit"| node_clinic_db
node_queues -->|"stores queue"| node_clinic_db
node_admin_actor -->|"manages doctors"| node_doctors
node_doctors -->|"stores doctor data"| node_clinic_db
node_doctor_actor -->|"manages schedule"| node_schedules
node_schedules -->|"stores schedule"| node_clinic_db
node_doctor_actor -->|"handles visits"| node_doctor_visits
node_doctor_visits -->|"updates visit"| node_appointments
node_doctor_visits -->|"records examination"| node_medical_records
node_medical_records -->|"stores clinical data"| node_clinic_db
node_admin_actor -->|"manages queue"| node_queues
node_admin_actor -->|"views operations"| node_admin_dashboard
node_admin_dashboard -->|"queries clinic data"| node_clinic_db
node_admin_actor -->|"requests reports"| node_visit_reports
node_visit_reports -->|"queries visits"| node_clinic_db
node_visit_reports -->|"exports data"| node_report_export
node_patient_booking -->|"sends confirmation"| node_mail
node_mail -->|"delivers email"| node_mail_service
node_patient_booking -->|"notifies roles"| node_notifications
node_notifications -->|"stores notices"| node_notification_store
node_notification_store -->|"persists notices"| node_clinic_db

click node_routes "https://github.com/alfajauhari068/reservasi_dokter/blob/main/routes/web.php"
click node_registration "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Auth/RegisterController.php"
click node_patient_booking "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Pasien/ReservasiController.php"
click node_identity "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/User.php"
click node_doctors "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/DoctorsController.php"
click node_schedules "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Dokter/ScheduleController.php"
click node_appointments "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/Appointment.php"
click node_queues "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Admin/QueueController.php"
click node_doctor_visits "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Dokter/ReservasiController.php"
click node_medical_records "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/MedicalRecord.php"
click node_notifications "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Services/NotificationService.php"
click node_notification_store "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/Notification.php"
click node_mail "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Mail/AppointmentConfirmed.php"
click node_admin_dashboard "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Admin/DashboardController.php"
click node_visit_reports "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Services/VisitReportService.php"
click node_report_export "https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Exports/VisitReportExport.php"

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_routes,node_registration,node_patient_booking,node_identity toneBlue
class node_doctors,node_schedules,node_appointments,node_queues,node_clinic_db toneAmber
class node_doctor_visits,node_medical_records toneMint
class node_notifications,node_notification_store,node_mail,node_admin_dashboard,node_visit_reports,node_report_export toneRose
class node_patient,node_doctor_actor,node_admin_actor,node_mail_service toneIndigo
```

## Components

### Access and Booking

- [Web Routes](https://github.com/alfajauhari068/reservasi_dokter/blob/main/routes/web.php): `routes/web.php`
- [Patient Registration](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Auth/RegisterController.php): `app/Http/Controllers/Auth/RegisterController.php`
- [Patient Booking](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Pasien/ReservasiController.php): `app/Http/Controllers/Pasien/ReservasiController.php`
- [User and Patient](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/User.php): `app/Models/User.php`

### Clinic Operations

- [Doctor Management](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/DoctorsController.php): `app/Http/Controllers/DoctorsController.php`
- [Doctor Schedules](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Dokter/ScheduleController.php): `app/Http/Controllers/Dokter/ScheduleController.php`
- [Appointments](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/Appointment.php): `app/Models/Appointment.php`
- [Queue Management](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Admin/QueueController.php): `app/Http/Controllers/Admin/QueueController.php`
- **Clinic Database**

### Clinical Care

- [Doctor Visits](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Dokter/ReservasiController.php): `app/Http/Controllers/Dokter/ReservasiController.php`
- [Medical Records](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/MedicalRecord.php): `app/Models/MedicalRecord.php`

### Notifications and Reports

- [Notification Service](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Services/NotificationService.php): `app/Services/NotificationService.php`
- [Notifications](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Models/Notification.php): `app/Models/Notification.php`
- [Confirmation Email](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Mail/AppointmentConfirmed.php): `app/Mail/AppointmentConfirmed.php`
- [Admin Dashboard](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Http/Controllers/Admin/DashboardController.php): `app/Http/Controllers/Admin/DashboardController.php`
- [Visit Reports](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Services/VisitReportService.php): `app/Services/VisitReportService.php`
- [Report Export](https://github.com/alfajauhari068/reservasi_dokter/blob/main/app/Exports/VisitReportExport.php): `app/Exports/VisitReportExport.php`

### Other components

- **Patient**
- **Doctor**
- **Administrator**
- **Mail Delivery**

## Connections

- Patient → Web Routes: opens pages
- Doctor → Web Routes: opens pages
- Administrator → Web Routes: opens pages
- Web Routes → Patient Registration: dispatches
- Web Routes → Patient Booking: dispatches
- Patient Registration → User and Patient: creates account
- User and Patient → Clinic Database: stores identity
- Patient Booking → Clinic Database: reads patient
- Patient Booking → Doctor Schedules: checks availability
- Patient Booking → Appointments: creates booking
- Patient Booking → Queue Management: generates number
- Appointments → Clinic Database: stores visit
- Queue Management → Clinic Database: stores queue
- Administrator → Doctor Management: manages doctors
- Doctor Management → Clinic Database: stores doctor data
- Doctor → Doctor Schedules: manages schedule
- Doctor Schedules → Clinic Database: stores schedule
- Doctor → Doctor Visits: handles visits
- Doctor Visits → Appointments: updates visit
- Doctor Visits → Medical Records: records examination
- Medical Records → Clinic Database: stores clinical data
- Administrator → Queue Management: manages queue
- Administrator → Admin Dashboard: views operations
- Admin Dashboard → Clinic Database: queries clinic data
- Administrator → Visit Reports: requests reports
- Visit Reports → Clinic Database: queries visits
- Visit Reports → Report Export: exports data
- Patient Booking → Confirmation Email: sends confirmation
- Confirmation Email → Mail Delivery: delivers email
- Patient Booking → Notification Service: notifies roles
- Notification Service → Notifications: stores notices
- Notifications → Clinic Database: persists notices
