# kingdev4522/clinic architecture

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

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

## Overview

City Multi-Specialty Clinic is a monolithic C CLI for staff and patient workflows. Users authenticate into role-specific portals; clinical visits move through intake, doctor evaluation, lab work, and billing, while pharmacy sales and patient history are also supported. The README describes a flat-file database engine, credential encryption, audit logging, and exported prescriptions, lab reports, and invoices. The excerpts confirm database loading, audit writes, password handling, and document generation; other portal and routing links reflect documented capabilities, not inspected call sites.

Main entry points: [`clinic.c`](https://github.com/kingdev4522/clinic/blob/main/clinic.c) (Authentication and RBAC), [`visits_db.txt`](https://github.com/kingdev4522/clinic/blob/main/visits_db.txt) (Visit Ledger), [`audit_log.txt`](https://github.com/kingdev4522/clinic/blob/main/audit_log.txt) (Audit Log), [`patient_db.txt`](https://github.com/kingdev4522/clinic/blob/main/patient_db.txt) (Account Files)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Portals"]
  node_gateway["Main Gateway<br/>[clinic.c]"]
  node_authentication["Authentication and RBAC<br/>[clinic.c]"]
  node_admin["Admin Portal<br/>[clinic.c]"]
  node_employee["Employee Portal<br/>[clinic.c]"]
  node_doctor["Doctor Portal<br/>[clinic.c]"]
  node_lab["Lab Portal<br/>[clinic.c]"]
  node_patient["Patient Portal<br/>[clinic.c]"]
end

subgraph group_clinical["Clinical Workflow"]
  node_intake["Patient Intake<br/>[clinic.c]"]
  node_evaluation["Clinical Evaluation<br/>[clinic.c]"]
  node_routing["Visit Routing<br/>[clinic.c]"]
  node_diagnostics["Lab Diagnostics<br/>[clinic.c]"]
  node_billing["Billing and Discharge<br/>[clinic.c]"]
  node_pharmacy["Pharmacy Sales<br/>[clinic.c]"]
  node_history["Patient History<br/>[clinic.c]"]
end

subgraph group_records["Records and Persistence"]
  node_database["Flat-File Engine<br/>[clinic.c]"]
  node_people[("Account Files<br/>[patient_db.txt]")]
  node_visits[("Visit Ledger<br/>[visits_db.txt]")]
  node_sales[("Pharmacy Ledger<br/>[pharmacy_db.txt]")]
end

subgraph group_outputs["Security and Outputs"]
  node_security["Credential Encryption<br/>[clinic.c]"]
  node_audit[("Audit Log<br/>[audit_log.txt]")]
  node_documents["Clinical Documents<br/>[clinic.c]"]
  node_exports["Exported Reports"]
end

node_user(("CLI User"))

node_user -->|"uses"| node_gateway
node_gateway -->|"loads data"| node_database
node_gateway -->|"dispatches"| node_authentication
node_authentication -->|"encrypts credentials"| node_security
node_authentication -->|"checks accounts"| node_people
node_authentication -->|"opens portal"| node_admin
node_authentication -->|"opens portal"| node_employee
node_authentication -->|"opens portal"| node_doctor
node_authentication -->|"opens portal"| node_lab
node_authentication -->|"opens portal"| node_patient
node_admin -->|"manages accounts"| node_people
node_employee -->|"registers patients"| node_intake
node_employee -->|"processes checkout"| node_billing
node_employee -->|"records sales"| node_pharmacy
node_doctor -->|"evaluates visits"| node_evaluation
node_doctor -->|"routes visits"| node_routing
node_lab -->|"processes tests"| node_diagnostics
node_diagnostics -->|"returns for billing"| node_routing
node_intake -->|"sets visit state"| node_routing
node_routing -->|"updates status"| node_visits
node_billing -->|"records checkout"| node_visits
node_pharmacy -->|"records sales"| node_sales
node_patient -->|"views records"| node_history
node_history -->|"reads history"| node_visits
node_database -->|"reads and writes"| node_people
node_database -->|"reads and writes"| node_visits
node_database -->|"reads and writes"| node_sales
node_admin -->|"logs actions"| node_audit
node_employee -->|"logs actions"| node_audit
node_doctor -->|"logs actions"| node_audit
node_lab -->|"logs actions"| node_audit
node_documents -->|"writes reports"| node_exports
node_doctor -->|"exports prescriptions"| node_documents
node_diagnostics -->|"exports lab reports"| node_documents
node_billing -->|"exports invoices"| node_documents

click node_gateway "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_authentication "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_admin "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_employee "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_doctor "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_lab "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_patient "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_intake "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_evaluation "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_routing "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_diagnostics "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_billing "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_pharmacy "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_history "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_database "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_people "https://github.com/kingdev4522/clinic/blob/main/patient_db.txt"
click node_visits "https://github.com/kingdev4522/clinic/blob/main/visits_db.txt"
click node_sales "https://github.com/kingdev4522/clinic/blob/main/pharmacy_db.txt"
click node_security "https://github.com/kingdev4522/clinic/blob/main/clinic.c"
click node_audit "https://github.com/kingdev4522/clinic/blob/main/audit_log.txt"
click node_documents "https://github.com/kingdev4522/clinic/blob/main/clinic.c"

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_gateway,node_authentication,node_admin,node_employee,node_doctor,node_lab,node_patient,node_user toneBlue
class node_intake,node_evaluation,node_routing,node_diagnostics,node_billing,node_pharmacy,node_history toneAmber
class node_database,node_people,node_visits,node_sales toneMint
class node_security,node_audit,node_documents,node_exports toneRose
```

## Components

### Access and Portals

- [Main Gateway](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Authentication and RBAC](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Admin Portal](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Employee Portal](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Doctor Portal](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Lab Portal](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Patient Portal](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`

### Clinical Workflow

- [Patient Intake](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Clinical Evaluation](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Visit Routing](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Lab Diagnostics](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Billing and Discharge](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Pharmacy Sales](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Patient History](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`

### Records and Persistence

- [Flat-File Engine](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Account Files](https://github.com/kingdev4522/clinic/blob/main/patient_db.txt): `patient_db.txt`
- [Visit Ledger](https://github.com/kingdev4522/clinic/blob/main/visits_db.txt): `visits_db.txt`
- [Pharmacy Ledger](https://github.com/kingdev4522/clinic/blob/main/pharmacy_db.txt): `pharmacy_db.txt`

### Security and Outputs

- [Credential Encryption](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- [Audit Log](https://github.com/kingdev4522/clinic/blob/main/audit_log.txt): `audit_log.txt`
- [Clinical Documents](https://github.com/kingdev4522/clinic/blob/main/clinic.c): `clinic.c`
- **Exported Reports**

### Other components

- **CLI User**

## Connections

- CLI User → Main Gateway: uses
- Main Gateway → Flat-File Engine: loads data
- Main Gateway → Authentication and RBAC: dispatches
- Authentication and RBAC → Credential Encryption: encrypts credentials
- Authentication and RBAC → Account Files: checks accounts
- Authentication and RBAC → Admin Portal: opens portal
- Authentication and RBAC → Employee Portal: opens portal
- Authentication and RBAC → Doctor Portal: opens portal
- Authentication and RBAC → Lab Portal: opens portal
- Authentication and RBAC → Patient Portal: opens portal
- Admin Portal → Account Files: manages accounts
- Employee Portal → Patient Intake: registers patients
- Employee Portal → Billing and Discharge: processes checkout
- Employee Portal → Pharmacy Sales: records sales
- Doctor Portal → Clinical Evaluation: evaluates visits
- Doctor Portal → Visit Routing: routes visits
- Lab Portal → Lab Diagnostics: processes tests
- Lab Diagnostics → Visit Routing: returns for billing
- Patient Intake → Visit Routing: sets visit state
- Visit Routing → Visit Ledger: updates status
- Billing and Discharge → Visit Ledger: records checkout
- Pharmacy Sales → Pharmacy Ledger: records sales
- Patient Portal → Patient History: views records
- Patient History → Visit Ledger: reads history
- Flat-File Engine → Account Files: reads and writes
- Flat-File Engine → Visit Ledger: reads and writes
- Flat-File Engine → Pharmacy Ledger: reads and writes
- Admin Portal → Audit Log: logs actions
- Employee Portal → Audit Log: logs actions
- Doctor Portal → Audit Log: logs actions
- Lab Portal → Audit Log: logs actions
- Clinical Documents → Exported Reports: writes reports
- Doctor Portal → Clinical Documents: exports prescriptions
- Lab Diagnostics → Clinical Documents: exports lab reports
- Billing and Discharge → Clinical Documents: exports invoices
