# tamerrabee2/medclinic-ai architecture

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

- Interactive diagram: https://gitdiagram.com/tamerrabee2/medclinic-ai
- Repository: https://github.com/tamerrabee2/medclinic-ai

## Overview

MedClinic AI is a multi-tenant clinic management system: clinic staff use its dashboard to manage patients, appointments, clinical records, and operational services. The documented product also includes AI assistance, laboratory and radiology workflows, billing, analytics, notifications, and compliance auditing. The sampled code shows invoice requests reading and writing through the application database context, and tenant filtering at the persistence layer. Most other feature branches are documented in the README but their runtime wiring was not sampled, so those relationships are left unasserted.

Main entry points: [`frontend/src/lib/api.ts`](https://github.com/tamerrabee2/medclinic-ai/blob/main/frontend/src/lib/api.ts) (Frontend API client), [`src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs) (Tenant-aware persistence), [`src/MedClinic.API/Controllers/InvoicesController.cs`](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/InvoicesController.cs) (Billing), [`src/MedClinic.Domain/Entities/Patient.cs`](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Patient.cs) (Patient records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Clinic interface"]
  node_dashboard["Clinic dashboard<br/>[page.tsx]"]
  node_frontend_api["Frontend API client<br/>[api.ts]"]
end

subgraph group_api["API and access"]
  node_auth["Authentication API<br/>[AuthController.cs]"]
  node_access["Permission authorization"]
end

subgraph group_clinical["Clinical workflows"]
  node_patients["Patient records<br/>[Patient.cs]"]
  node_appointments["Appointments<br/>[Appointment.cs]"]
  node_visits["Visits and EMR"]
  node_prescriptions["Prescriptions"]
  node_labs["Laboratory"]
  node_radiology["Radiology"]
  node_ai["AI assistance<br/>[AIController.cs]"]
end

subgraph group_operations["Clinic operations"]
  node_billing["Billing"]
  node_analytics["Analytics and reports"]
  node_notifications["Notifications"]
  node_audit["Audit and compliance"]
end

subgraph group_foundation["Shared foundation"]
  node_clinic["Clinic tenancy<br/>[Clinic.cs]"]
  node_application_context["Application data contract"]
  node_database[("Tenant-aware persistence")]
  node_result["Use-case results<br/>[Result.cs]"]
  node_permissions["Permission definitions<br/>[Permissions.cs]"]
end

node_staff(("Clinic staff"))

node_staff -.->|"uses"| node_dashboard
node_dashboard -.->|"requests data"| node_frontend_api
node_frontend_api -.->|"calls API"| node_auth
node_frontend_api -.->|"calls API"| node_patients
node_frontend_api -.->|"calls API"| node_appointments
node_frontend_api -.->|"calls API"| node_visits
node_frontend_api -.->|"calls API"| node_prescriptions
node_frontend_api -.->|"calls API"| node_labs
node_frontend_api -.->|"calls API"| node_radiology
node_frontend_api -.->|"calls API"| node_ai
node_frontend_api -.->|"calls API"| node_billing
node_frontend_api -.->|"calls API"| node_analytics
node_frontend_api -.->|"calls API"| node_notifications
node_frontend_api -.->|"calls API"| node_audit
node_access -->|"checks"| node_permissions
node_billing -->|"reads and writes"| node_application_context
node_application_context -.->|"implemented by"| node_database
node_database -->|"filters by tenant"| node_clinic
node_visits -.->|"reads and writes"| node_application_context
node_patients -.->|"stored in"| node_database
node_appointments -.->|"stored in"| node_database
node_prescriptions -.->|"stored in"| node_database
node_labs -.->|"stored in"| node_database
node_radiology -.->|"stored in"| node_database
node_ai -.->|"stored in"| node_database
node_billing -->|"stores invoices"| node_database
node_analytics -.->|"reads data"| node_database
node_notifications -.->|"reads and writes"| node_database
node_audit -->|"reads audit data"| node_database
node_result -.->|"supports use cases"| node_patients

click node_dashboard "https://github.com/tamerrabee2/medclinic-ai/blob/main/frontend/src/app/dashboard/page.tsx"
click node_frontend_api "https://github.com/tamerrabee2/medclinic-ai/blob/main/frontend/src/lib/api.ts"
click node_auth "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AuthController.cs"
click node_access "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Authorization/PermissionAuthorizationHandler.cs"
click node_patients "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Patient.cs"
click node_appointments "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Appointment.cs"
click node_visits "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/VisitsController.cs"
click node_prescriptions "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/PrescriptionsController.cs"
click node_labs "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/LabOrdersController.cs"
click node_radiology "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/RadiologyController.cs"
click node_ai "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AIController.cs"
click node_billing "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/InvoicesController.cs"
click node_analytics "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AnalyticsController.cs"
click node_notifications "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Infrastructure/Notifications/NotificationService.cs"
click node_audit "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AuditExplorerController.cs"
click node_clinic "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Clinic.cs"
click node_application_context "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Application/Interfaces/IApplicationDbContext.cs"
click node_database "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs"
click node_result "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Application/Common/Models/Result.cs"
click node_permissions "https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Shared/Constants/Permissions.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_dashboard,node_frontend_api toneBlue
class node_auth,node_access toneAmber
class node_patients,node_appointments,node_visits,node_prescriptions,node_labs,node_radiology,node_ai toneMint
class node_billing,node_analytics,node_notifications,node_audit toneRose
class node_clinic,node_application_context,node_database,node_result,node_permissions,node_staff toneIndigo
```

## Components

### Clinic interface

- [Clinic dashboard](https://github.com/tamerrabee2/medclinic-ai/blob/main/frontend/src/app/dashboard/page.tsx): `frontend/src/app/dashboard/page.tsx`
- [Frontend API client](https://github.com/tamerrabee2/medclinic-ai/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### API and access

- [Authentication API](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AuthController.cs): `src/MedClinic.API/Controllers/AuthController.cs`
- [Permission authorization](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Authorization/PermissionAuthorizationHandler.cs): `src/MedClinic.API/Authorization/PermissionAuthorizationHandler.cs`

### Clinical workflows

- [Patient records](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Patient.cs): `src/MedClinic.Domain/Entities/Patient.cs`
- [Appointments](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Appointment.cs): `src/MedClinic.Domain/Entities/Appointment.cs`
- [Visits and EMR](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/VisitsController.cs): `src/MedClinic.API/Controllers/VisitsController.cs`
- [Prescriptions](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/PrescriptionsController.cs): `src/MedClinic.API/Controllers/PrescriptionsController.cs`
- [Laboratory](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/LabOrdersController.cs): `src/MedClinic.API/Controllers/LabOrdersController.cs`
- [Radiology](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/RadiologyController.cs): `src/MedClinic.API/Controllers/RadiologyController.cs`
- [AI assistance](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AIController.cs): `src/MedClinic.API/Controllers/AIController.cs`

### Clinic operations

- [Billing](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/InvoicesController.cs): `src/MedClinic.API/Controllers/InvoicesController.cs`
- [Analytics and reports](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AnalyticsController.cs): `src/MedClinic.API/Controllers/AnalyticsController.cs`
- [Notifications](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Infrastructure/Notifications/NotificationService.cs): `src/MedClinic.Infrastructure/Notifications/NotificationService.cs`
- [Audit and compliance](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.API/Controllers/AuditExplorerController.cs): `src/MedClinic.API/Controllers/AuditExplorerController.cs`

### Shared foundation

- [Clinic tenancy](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Domain/Entities/Clinic.cs): `src/MedClinic.Domain/Entities/Clinic.cs`
- [Application data contract](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Application/Interfaces/IApplicationDbContext.cs): `src/MedClinic.Application/Interfaces/IApplicationDbContext.cs`
- [Tenant-aware persistence](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs): `src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`
- [Use-case results](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Application/Common/Models/Result.cs): `src/MedClinic.Application/Common/Models/Result.cs`
- [Permission definitions](https://github.com/tamerrabee2/medclinic-ai/blob/main/src/MedClinic.Shared/Constants/Permissions.cs): `src/MedClinic.Shared/Constants/Permissions.cs`

### Other components

- **Clinic staff**

## Connections

- Clinic staff → Clinic dashboard: uses
- Clinic dashboard → Frontend API client: requests data
- Frontend API client → Authentication API: calls API
- Frontend API client → Patient records: calls API
- Frontend API client → Appointments: calls API
- Frontend API client → Visits and EMR: calls API
- Frontend API client → Prescriptions: calls API
- Frontend API client → Laboratory: calls API
- Frontend API client → Radiology: calls API
- Frontend API client → AI assistance: calls API
- Frontend API client → Billing: calls API
- Frontend API client → Analytics and reports: calls API
- Frontend API client → Notifications: calls API
- Frontend API client → Audit and compliance: calls API
- Permission authorization → Permission definitions: checks (evidence: `src/MedClinic.API/Authorization/PermissionAuthorizationHandler.cs`)
- Billing → Application data contract: reads and writes (evidence: `src/MedClinic.API/Controllers/InvoicesController.cs`)
- Application data contract → Tenant-aware persistence: implemented by (evidence: `src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`)
- Tenant-aware persistence → Clinic tenancy: filters by tenant (evidence: `src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`)
- Visits and EMR → Application data contract: reads and writes
- Patient records → Tenant-aware persistence: stored in (evidence: `src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`)
- Appointments → Tenant-aware persistence: stored in (evidence: `src/MedClinic.Infrastructure/Persistence/ApplicationDbContext.cs`)
- Prescriptions → Tenant-aware persistence: stored in
- Laboratory → Tenant-aware persistence: stored in
- Radiology → Tenant-aware persistence: stored in
- AI assistance → Tenant-aware persistence: stored in
- Billing → Tenant-aware persistence: stores invoices (evidence: `src/MedClinic.API/Controllers/InvoicesController.cs`)
- Analytics and reports → Tenant-aware persistence: reads data
- Notifications → Tenant-aware persistence: reads and writes
- Audit and compliance → Tenant-aware persistence: reads audit data (evidence: `src/MedClinic.API/Controllers/AuditExplorerController.cs`)
- Use-case results → Patient records: supports use cases
