# a-dot614/clinic architecture

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

- Interactive diagram: https://gitdiagram.com/a-dot614/clinic
- Repository: https://github.com/a-dot614/clinic

## Overview

Clinic is a multi-branch clinic-management system with staff and patient-facing workflows. Users enter through the React application; its API client communicates with Laravel endpoints, which expose clinical, administrative and operational capabilities backed by application models and a database. Major branches include patient care, scheduling and telehealth, pharmacy and billing, CRM, reporting, and patient self-service. The tree and excerpts support the application boundaries and capabilities, but do not establish most controller-to-service wiring, so those internal links are intentionally generalized.

Main entry points: [`backend_laravel/app/Http/Controllers/Api`](https://github.com/a-dot614/clinic/tree/main/backend_laravel/app/Http/Controllers/Api) (API Controllers), [`frontend_react/src/services/api.ts`](https://github.com/a-dot614/clinic/blob/main/frontend_react/src/services/api.ts) (API Client), [`frontend_react/src/App.tsx`](https://github.com/a-dot614/clinic/blob/main/frontend_react/src/App.tsx) (Clinic Web App), [`frontend_react/src/views`](https://github.com/a-dot614/clinic/tree/main/frontend_react/src/views) (Workflows and Views)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Portals"]
  node_frontend["Clinic Web App<br/>[App.tsx]"]
  node_views["Workflows and Views"]
  node_client["API Client<br/>[api.ts]"]
  node_public["Public Booking"]
  node_portal["Patient Portal"]
end

subgraph group_care["Clinical Care"]
  node_patients["Patient Records"]
  node_appointments["Appointments and Queue"]
  node_encounters["Encounters and CDSS"]
  node_lab["Lab and Documents"]
  node_prescriptions["Prescribing and Dispensing"]
  node_telehealth["Telehealth"]
end

subgraph group_operations["Clinic Operations"]
  node_billing["Invoices and Claims"]
  node_inventory["Purchasing and Inventory"]
  node_crm["Leads and Follow-ups<br/>[LeadController.php]"]
  node_analytics["Reports and Analytics"]
end

subgraph group_platform["Application Platform"]
  node_routes["API Routes<br/>[api.php]"]
  node_controllers["API Controllers"]
  node_models["Domain Models"]
  node_database[("Application Database<br/>[database.php]")]
  node_identity["Identity and Roles<br/>[AuthController.php]"]
  node_notifications["Notifications"]
end

node_users(("Staff and Patients"))
node_payments{{"Payment Provider"}}
node_messaging{{"Messaging Provider"}}

node_users -->|"use"| node_frontend
node_frontend -->|"routes to"| node_views
node_views -->|"requests"| node_client
node_public -->|"requests"| node_client
node_portal -->|"requests"| node_client
node_client -->|"sends API calls"| node_routes
node_routes -->|"dispatches"| node_controllers
node_controllers -->|"handles access"| node_identity
node_controllers -->|"handles records"| node_patients
node_controllers -->|"handles scheduling"| node_appointments
node_controllers -->|"handles care"| node_encounters
node_controllers -->|"handles lab orders"| node_lab
node_controllers -->|"handles medication"| node_prescriptions
node_controllers -->|"handles sessions"| node_telehealth
node_controllers -->|"handles billing"| node_billing
node_controllers -->|"handles stock"| node_inventory
node_controllers -->|"handles leads"| node_crm
node_controllers -->|"serves reports"| node_analytics
node_controllers -->|"reads and writes"| node_models
node_models -->|"persists"| node_database
node_controllers -.->|"notification features"| node_notifications
node_billing -.->|"payment integration"| node_payments
node_notifications -.->|"delivery integration"| node_messaging

click node_frontend "https://github.com/a-dot614/clinic/blob/main/frontend_react/src/App.tsx"
click node_views "https://github.com/a-dot614/clinic/tree/main/frontend_react/src/views"
click node_client "https://github.com/a-dot614/clinic/blob/main/frontend_react/src/services/api.ts"
click node_public "https://github.com/a-dot614/clinic/tree/main/frontend_react/src/views/public"
click node_portal "https://github.com/a-dot614/clinic/blob/main/frontend_react/src/views/PatientPortalView.tsx"
click node_routes "https://github.com/a-dot614/clinic/blob/main/backend_laravel/routes/api.php"
click node_controllers "https://github.com/a-dot614/clinic/tree/main/backend_laravel/app/Http/Controllers/Api"
click node_models "https://github.com/a-dot614/clinic/tree/main/backend_laravel/app/Models"
click node_database "https://github.com/a-dot614/clinic/blob/main/backend_laravel/config/database.php"
click node_identity "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/AuthController.php"
click node_patients "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/PatientController.php"
click node_appointments "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/AppointmentController.php"
click node_encounters "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/EncounterController.php"
click node_lab "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/LabOrderController.php"
click node_prescriptions "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/PrescriptionController.php"
click node_telehealth "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/TelehealthController.php"
click node_billing "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/InvoiceController.php"
click node_inventory "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/InventoryController.php"
click node_crm "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/LeadController.php"
click node_analytics "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/ReportController.php"
click node_notifications "https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Services/NotificationService.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_frontend,node_views,node_client,node_public,node_portal toneBlue
class node_patients,node_appointments,node_encounters,node_lab,node_prescriptions,node_telehealth toneAmber
class node_billing,node_inventory,node_crm,node_analytics toneMint
class node_routes,node_controllers,node_models,node_database,node_identity,node_notifications toneRose
class node_users,node_payments,node_messaging toneIndigo
```

## Components

### Access and Portals

- [Clinic Web App](https://github.com/a-dot614/clinic/blob/main/frontend_react/src/App.tsx): `frontend_react/src/App.tsx`
- [Workflows and Views](https://github.com/a-dot614/clinic/tree/main/frontend_react/src/views): `frontend_react/src/views`
- [API Client](https://github.com/a-dot614/clinic/blob/main/frontend_react/src/services/api.ts): `frontend_react/src/services/api.ts`
- [Public Booking](https://github.com/a-dot614/clinic/tree/main/frontend_react/src/views/public): `frontend_react/src/views/public`
- [Patient Portal](https://github.com/a-dot614/clinic/blob/main/frontend_react/src/views/PatientPortalView.tsx): `frontend_react/src/views/PatientPortalView.tsx`

### Clinical Care

- [Patient Records](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/PatientController.php): `backend_laravel/app/Http/Controllers/Api/PatientController.php`
- [Appointments and Queue](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/AppointmentController.php): `backend_laravel/app/Http/Controllers/Api/AppointmentController.php`
- [Encounters and CDSS](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/EncounterController.php): `backend_laravel/app/Http/Controllers/Api/EncounterController.php`
- [Lab and Documents](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/LabOrderController.php): `backend_laravel/app/Http/Controllers/Api/LabOrderController.php`
- [Prescribing and Dispensing](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/PrescriptionController.php): `backend_laravel/app/Http/Controllers/Api/PrescriptionController.php`
- [Telehealth](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/TelehealthController.php): `backend_laravel/app/Http/Controllers/Api/TelehealthController.php`

### Clinic Operations

- [Invoices and Claims](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/InvoiceController.php): `backend_laravel/app/Http/Controllers/Api/InvoiceController.php`
- [Purchasing and Inventory](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/InventoryController.php): `backend_laravel/app/Http/Controllers/Api/InventoryController.php`
- [Leads and Follow-ups](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/LeadController.php): `backend_laravel/app/Http/Controllers/Api/LeadController.php`
- [Reports and Analytics](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/ReportController.php): `backend_laravel/app/Http/Controllers/Api/ReportController.php`

### Application Platform

- [API Routes](https://github.com/a-dot614/clinic/blob/main/backend_laravel/routes/api.php): `backend_laravel/routes/api.php`
- [API Controllers](https://github.com/a-dot614/clinic/tree/main/backend_laravel/app/Http/Controllers/Api): `backend_laravel/app/Http/Controllers/Api`
- [Domain Models](https://github.com/a-dot614/clinic/tree/main/backend_laravel/app/Models): `backend_laravel/app/Models`
- [Application Database](https://github.com/a-dot614/clinic/blob/main/backend_laravel/config/database.php): `backend_laravel/config/database.php`
- [Identity and Roles](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Http/Controllers/Api/AuthController.php): `backend_laravel/app/Http/Controllers/Api/AuthController.php`
- [Notifications](https://github.com/a-dot614/clinic/blob/main/backend_laravel/app/Services/NotificationService.php): `backend_laravel/app/Services/NotificationService.php`

### Other components

- **Staff and Patients**
- **Payment Provider**
- **Messaging Provider**

## Connections

- Staff and Patients → Clinic Web App: use
- Clinic Web App → Workflows and Views: routes to
- Workflows and Views → API Client: requests
- Public Booking → API Client: requests
- Patient Portal → API Client: requests
- API Client → API Routes: sends API calls
- API Routes → API Controllers: dispatches
- API Controllers → Identity and Roles: handles access
- API Controllers → Patient Records: handles records
- API Controllers → Appointments and Queue: handles scheduling
- API Controllers → Encounters and CDSS: handles care
- API Controllers → Lab and Documents: handles lab orders
- API Controllers → Prescribing and Dispensing: handles medication
- API Controllers → Telehealth: handles sessions
- API Controllers → Invoices and Claims: handles billing
- API Controllers → Purchasing and Inventory: handles stock
- API Controllers → Leads and Follow-ups: handles leads
- API Controllers → Reports and Analytics: serves reports
- API Controllers → Domain Models: reads and writes
- Domain Models → Application Database: persists
- API Controllers → Notifications: notification features
- Invoices and Claims → Payment Provider: payment integration
- Notifications → Messaging Provider: delivery integration
