# omar-mahrem/medical_clinic architecture

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

- Interactive diagram: https://gitdiagram.com/omar-mahrem/medical_clinic
- Repository: https://github.com/omar-mahrem/medical_clinic

## Overview

MedicalClinic is a clinic-management platform with an Angular client and ASP.NET Core API over a SQL-backed application core. A representative patient journey is browsing doctors, booking an appointment, and later viewing medical records or a prescription PDF; doctors and staff also manage appointments and records. The README additionally documents role-based access, payment workflows, and automated reminders. Several backend capabilities are documented but their implementations were not sampled, so those branches are shown at subsystem level and uncertain links are omitted or marked unverified.

Main entry points: [`MedicalClinic.Api/Program.cs`](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Program.cs) (API host), [`MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs`](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs) (Application data context), [`MedicalClinic.Api/Controllers/MedicalRecordsController.cs`](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/MedicalRecordsController.cs) (Medical record endpoints), [`MedicalClinic.Application/Services/AppointmentServices.cs`](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/AppointmentServices.cs) (Appointment rules)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Angular client"]
  node_routes["Route and role guards<br/>[app.routes.ts]"]
  node_clinic_ui["Clinic dashboards<br/>[features]"]
  node_client_services["Client API services<br/>[services]"]
end

subgraph group_api["API and security"]
  node_api_host["API host<br/>[Program.cs]"]
  node_appointment_api["Appointment endpoints"]
  node_records_api["Medical record endpoints"]
  node_auth_api["Authentication endpoints<br/>[AuthController.cs]"]
end

subgraph group_clinical["Clinic workflows"]
  node_appointment_service["Appointment rules"]
  node_record_service["Record management"]
  node_auth_service["Identity workflows<br/>[AuthServices.cs]"]
  node_doctor_patient["Doctor and patient management<br/>[Services]"]
end

subgraph group_platform["Infrastructure services"]
  node_prescription_pdf["Prescription PDF"]
  node_notifications["Appointment notifications"]
  node_email["Email delivery<br/>[EmailServices.cs]"]
  node_jwt["JWT provider<br/>[JwtProvider.cs]"]
end

subgraph group_domain["Domain and persistence"]
  node_db_context["Application data context"]
  node_sql[("SQL Server")]
  node_entities["Clinic and identity entities<br/>[Appointment.cs]"]
end

node_patient(("Patient or staff"))

node_patient -->|"uses"| node_routes
node_routes -->|"routes to"| node_clinic_ui
node_clinic_ui -.->|"requests data"| node_client_services
node_client_services -.->|"REST calls"| node_api_host
node_api_host -.->|"hosts"| node_appointment_api
node_api_host -.->|"hosts"| node_records_api
node_api_host -.->|"hosts"| node_auth_api
node_appointment_api -->|"invokes"| node_appointment_service
node_records_api -->|"invokes"| node_record_service
node_records_api -->|"generates PDF"| node_prescription_pdf
node_auth_api -.->|"delegates"| node_auth_service
node_appointment_service -->|"reads and writes"| node_db_context
node_record_service -.->|"reads and writes"| node_db_context
node_auth_service -.->|"issues tokens"| node_jwt
node_appointment_service -->|"requests notices"| node_notifications
node_notifications -->|"sends email"| node_email
node_auth_service -->|"queues email"| node_email
node_db_context -.->|"persists data"| node_sql
node_db_context -->|"maps entities"| node_entities

click node_routes "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Client/src/app/app.routes.ts"
click node_clinic_ui "https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Client/src/app/features"
click node_client_services "https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Client/src/app/core/services"
click node_api_host "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Program.cs"
click node_appointment_api "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/AppointmentsController.cs"
click node_records_api "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/MedicalRecordsController.cs"
click node_auth_api "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/AuthController.cs"
click node_appointment_service "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/AppointmentServices.cs"
click node_record_service "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/MedicalRecordServices.cs"
click node_auth_service "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/AuthServices.cs"
click node_doctor_patient "https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Application/Services"
click node_prescription_pdf "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Pdf/PrescriptionPdfGenerator.cs"
click node_notifications "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/BackgroundJobs/NotificationService.cs"
click node_email "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Mail/EmailServices.cs"
click node_jwt "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Authentication/JwtProvider.cs"
click node_db_context "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs"
click node_entities "https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Core/Entities/Appointment.cs"

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_clinic_ui,node_client_services toneBlue
class node_api_host,node_appointment_api,node_records_api,node_auth_api toneAmber
class node_appointment_service,node_record_service,node_auth_service,node_doctor_patient toneMint
class node_prescription_pdf,node_notifications,node_email,node_jwt toneRose
class node_db_context,node_sql,node_entities,node_patient toneIndigo
```

## Components

### Angular client

- [Route and role guards](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Client/src/app/app.routes.ts): `MedicalClinic.Client/src/app/app.routes.ts`
- [Clinic dashboards](https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Client/src/app/features): `MedicalClinic.Client/src/app/features`
- [Client API services](https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Client/src/app/core/services): `MedicalClinic.Client/src/app/core/services`

### API and security

- [API host](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Program.cs): `MedicalClinic.Api/Program.cs`
- [Appointment endpoints](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/AppointmentsController.cs): `MedicalClinic.Api/Controllers/AppointmentsController.cs`
- [Medical record endpoints](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/MedicalRecordsController.cs): `MedicalClinic.Api/Controllers/MedicalRecordsController.cs`
- [Authentication endpoints](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Api/Controllers/AuthController.cs): `MedicalClinic.Api/Controllers/AuthController.cs`

### Clinic workflows

- [Appointment rules](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/AppointmentServices.cs): `MedicalClinic.Application/Services/AppointmentServices.cs`
- [Record management](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/MedicalRecordServices.cs): `MedicalClinic.Application/Services/MedicalRecordServices.cs`
- [Identity workflows](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Application/Services/AuthServices.cs): `MedicalClinic.Application/Services/AuthServices.cs`
- [Doctor and patient management](https://github.com/omar-mahrem/medical_clinic/tree/main/MedicalClinic.Application/Services): `MedicalClinic.Application/Services`

### Infrastructure services

- [Prescription PDF](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Pdf/PrescriptionPdfGenerator.cs): `MedicalClinic.Infrastructure/Pdf/PrescriptionPdfGenerator.cs`
- [Appointment notifications](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/BackgroundJobs/NotificationService.cs): `MedicalClinic.Infrastructure/BackgroundJobs/NotificationService.cs`
- [Email delivery](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Mail/EmailServices.cs): `MedicalClinic.Infrastructure/Mail/EmailServices.cs`
- [JWT provider](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Authentication/JwtProvider.cs): `MedicalClinic.Infrastructure/Authentication/JwtProvider.cs`

### Domain and persistence

- [Application data context](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs): `MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs`
- **SQL Server**
- [Clinic and identity entities](https://github.com/omar-mahrem/medical_clinic/blob/main/MedicalClinic.Core/Entities/Appointment.cs): `MedicalClinic.Core/Entities/Appointment.cs`

### Other components

- **Patient or staff**

## Connections

- Patient or staff → Route and role guards: uses (evidence: `MedicalClinic.Client/src/app/app.routes.ts`)
- Route and role guards → Clinic dashboards: routes to (evidence: `MedicalClinic.Client/src/app/app.routes.ts`)
- Clinic dashboards → Client API services: requests data
- Client API services → API host: REST calls (evidence: `README.md`)
- API host → Appointment endpoints: hosts (evidence: `README.md`)
- API host → Medical record endpoints: hosts (evidence: `README.md`)
- API host → Authentication endpoints: hosts (evidence: `README.md`)
- Appointment endpoints → Appointment rules: invokes (evidence: `MedicalClinic.Api/Controllers/AppointmentsController.cs`)
- Medical record endpoints → Record management: invokes (evidence: `MedicalClinic.Api/Controllers/MedicalRecordsController.cs`)
- Medical record endpoints → Prescription PDF: generates PDF (evidence: `MedicalClinic.Api/Controllers/MedicalRecordsController.cs`)
- Authentication endpoints → Identity workflows: delegates
- Appointment rules → Application data context: reads and writes (evidence: `MedicalClinic.Application/Services/AppointmentServices.cs`)
- Record management → Application data context: reads and writes
- Identity workflows → JWT provider: issues tokens
- Appointment rules → Appointment notifications: requests notices (evidence: `MedicalClinic.Application/Services/AppointmentServices.cs`)
- Appointment notifications → Email delivery: sends email (evidence: `MedicalClinic.Infrastructure/BackgroundJobs/NotificationService.cs`)
- Identity workflows → Email delivery: queues email (evidence: `MedicalClinic.Application/Services/AuthServices.cs`)
- Application data context → SQL Server: persists data (evidence: `README.md`)
- Application data context → Clinic and identity entities: maps entities (evidence: `MedicalClinic.Infrastructure/Data/ApplicationDbContext.cs`)
