# naseeraslam/mediflow-lis-saas architecture

> Architecture diagram of the GitHub repository naseeraslam/mediflow-lis-saas, 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/naseeraslam/mediflow-lis-saas
- Repository: https://github.com/naseeraslam/mediflow-lis-saas

## Overview

MediFlow is a multi-tenant laboratory information system for managing patients, diagnostic tests, laboratory reports, and organization operations. The central workflow is staff registering a patient, recording report results, and tracking or sharing diagnostic reports; patients can verify reports through a privacy-protective search. The README also describes baseline comparisons, clinical test batteries, tenant isolation, 2FA, and multi-currency pricing. Sampled routes support the database, authentication, email, and comparison links shown; wiring for unsampled features is kept conservative.

Main entry points: [`src/lib/db.ts`](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/db.ts) (Application Database), [`src/app/api/comparisons/route.ts`](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/comparisons/route.ts) (Comparison API), [`src/lib/auth.ts`](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/auth.ts) (Session and Auth), [`src/components/patient/PatientManager.tsx`](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/patient/PatientManager.tsx) (Patient Registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Laboratory Workspace"]
  node_workspace_ui["Lab Workspace<br/>[page.tsx]"]
end

subgraph group_clinical["Clinical Records"]
  node_patient_ui["Patient Registry<br/>[PatientManager.tsx]"]
  node_patient_api["Patient API<br/>[route.ts]"]
  node_patient_service["Patient Services<br/>[patientService.ts]"]
  node_catalog_ui["Test Catalog"]
  node_catalog_api["Catalog API<br/>[route.ts]"]
  node_templates_ui["Report Templates"]
  node_templates_api["Template API<br/>[route.ts]"]
end

subgraph group_reporting["Reports and Verification"]
  node_report_ui["Report Workspace<br/>[NewReportForm.tsx]"]
  node_report_api["Report API<br/>[route.ts]"]
  node_report_service["Report Services<br/>[reportService.ts]"]
  node_comparison_ui["Report Comparison<br/>[page.tsx]"]
  node_comparison_api["Comparison API<br/>[route.ts]"]
  node_comparison_logic["Comparison Engine<br/>[comparison.ts]"]
  node_search_ui["Patient Search<br/>[page.tsx]"]
  node_search_api["Report Verification Search<br/>[route.ts]"]
  node_sharing["Report Sharing<br/>[sharing.ts]"]
  node_email_dispatch["Email Dispatch<br/>[route.ts]"]
end

subgraph group_identity["Identity and Security"]
  node_auth_api["Authentication Routes<br/>[route.ts]"]
  node_auth_lib["Session and Auth<br/>[auth.ts]"]
  node_email_service["Email Service<br/>[email.ts]"]
end

subgraph group_governance["Organization Governance"]
  node_branches_ui["Branch Manager<br/>[BranchManager.tsx]"]
  node_branches_api["Branch Routes<br/>[route.ts]"]
  node_pricing_ui["Pricing Governance"]
  node_pricing_api["Pricing Governance API<br/>[route.ts]"]
end

node_staff(("Lab Staff"))
node_patient(("Patient"))
node_email_provider{{"Email Provider"}}
node_database[("Application Database<br/>[db.ts]")]

node_staff -->|"uses"| node_workspace_ui
node_staff -->|"manages patients"| node_patient_ui
node_patient_ui -->|"sends patient data"| node_patient_api
node_patient_api -->|"gets session"| node_auth_lib
node_patient_api -->|"reads and writes"| node_database
node_patient_ui -.->|"uses patient services"| node_patient_service
node_staff -->|"manages tests"| node_catalog_ui
node_catalog_ui -.->|"catalog requests"| node_catalog_api
node_staff -->|"defines templates"| node_templates_ui
node_templates_ui -.->|"template requests"| node_templates_api
node_templates_api -->|"gets session"| node_auth_lib
node_templates_api -->|"reads and writes"| node_database
node_staff -->|"records results"| node_report_ui
node_report_ui -.->|"submits report"| node_report_api
node_report_api -->|"gets session"| node_auth_lib
node_report_api -->|"reads and writes"| node_database
node_report_ui -.->|"uses report services"| node_report_service
node_staff -->|"reviews trends"| node_comparison_ui
node_comparison_ui -.->|"requests comparison"| node_comparison_api
node_comparison_api -->|"gets session"| node_auth_lib
node_comparison_api -->|"loads reports and audits"| node_database
node_comparison_api -->|"compares results"| node_comparison_logic
node_patient -->|"seeks report"| node_search_ui
node_search_ui -.->|"submits identifiers"| node_search_api
node_search_api -->|"finds matching reports"| node_database
node_staff -->|"dispatches report"| node_email_dispatch
node_email_dispatch -->|"loads report and audits"| node_database
node_email_dispatch -->|"sends report email"| node_email_service
node_email_service -.->|"delivers email"| node_email_provider
node_staff -->|"requests verification"| node_auth_api
node_auth_api -->|"checks user and token"| node_database
node_auth_api -->|"sends OTP"| node_email_service
node_staff -->|"manages branches"| node_branches_ui
node_branches_ui -->|"creates branch"| node_branches_api
node_branches_ui -->|"updates branch"| node_branches_api
node_staff -->|"governs pricing"| node_pricing_ui
node_pricing_ui -.->|"pricing requests"| node_pricing_api

click node_workspace_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/app/dashboard/page.tsx"
click node_patient_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/patient/PatientManager.tsx"
click node_patient_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/patients/route.ts"
click node_patient_service "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/backend/services/patientService.ts"
click node_catalog_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/test-catalog/TestCatalogManager.tsx"
click node_catalog_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/categories/route.ts"
click node_templates_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/template/NewTemplateBuilder.tsx"
click node_templates_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/templates/route.ts"
click node_report_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/report/NewReportForm.tsx"
click node_report_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/route.ts"
click node_report_service "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/backend/services/reportService.ts"
click node_comparison_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/app/comparison/page.tsx"
click node_comparison_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/comparisons/route.ts"
click node_comparison_logic "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/comparison.ts"
click node_search_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/patient-search/page.tsx"
click node_search_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/search/route.ts"
click node_sharing "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/sharing.ts"
click node_email_dispatch "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/email-dispatch/route.ts"
click node_auth_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/auth/2fa/route.ts"
click node_auth_lib "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/auth.ts"
click node_email_service "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/email.ts"
click node_branches_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/branch/BranchManager.tsx"
click node_branches_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/branches/route.ts"
click node_pricing_ui "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/super-admin/PricingPlanManager.tsx"
click node_pricing_api "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/super-admin/pricing/route.ts"
click node_database "https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/db.ts"

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_workspace_ui toneBlue
class node_patient_ui,node_patient_api,node_patient_service,node_catalog_ui,node_catalog_api,node_templates_ui,node_templates_api,node_database toneAmber
class node_report_ui,node_report_api,node_report_service,node_comparison_ui,node_comparison_api,node_comparison_logic,node_search_ui,node_search_api,node_sharing,node_email_dispatch toneMint
class node_auth_api,node_auth_lib,node_email_service toneRose
class node_branches_ui,node_branches_api,node_pricing_ui,node_pricing_api,node_staff,node_patient,node_email_provider toneIndigo
```

## Components

### Laboratory Workspace

- [Lab Workspace](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/app/dashboard/page.tsx): `src/app/app/dashboard/page.tsx`

### Clinical Records

- [Patient Registry](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/patient/PatientManager.tsx): `src/components/patient/PatientManager.tsx`
- [Patient API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/patients/route.ts): `src/app/api/patients/route.ts`
- [Patient Services](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/backend/services/patientService.ts): `src/backend/services/patientService.ts`
- [Test Catalog](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/test-catalog/TestCatalogManager.tsx): `src/components/test-catalog/TestCatalogManager.tsx`
- [Catalog API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/categories/route.ts): `src/app/api/categories/route.ts`
- [Report Templates](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/template/NewTemplateBuilder.tsx): `src/components/template/NewTemplateBuilder.tsx`
- [Template API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/templates/route.ts): `src/app/api/templates/route.ts`

### Reports and Verification

- [Report Workspace](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/report/NewReportForm.tsx): `src/components/report/NewReportForm.tsx`
- [Report API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/route.ts): `src/app/api/reports/route.ts`
- [Report Services](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/backend/services/reportService.ts): `src/backend/services/reportService.ts`
- [Report Comparison](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/app/comparison/page.tsx): `src/app/app/comparison/page.tsx`
- [Comparison API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/comparisons/route.ts): `src/app/api/comparisons/route.ts`
- [Comparison Engine](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/comparison.ts): `src/lib/comparison.ts`
- [Patient Search](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/patient-search/page.tsx): `src/app/patient-search/page.tsx`
- [Report Verification Search](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/search/route.ts): `src/app/api/reports/search/route.ts`
- [Report Sharing](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/sharing.ts): `src/lib/sharing.ts`
- [Email Dispatch](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/reports/email-dispatch/route.ts): `src/app/api/reports/email-dispatch/route.ts`

### Identity and Security

- [Authentication Routes](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/auth/2fa/route.ts): `src/app/api/auth/2fa/route.ts`
- [Session and Auth](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/auth.ts): `src/lib/auth.ts`
- [Email Service](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/email.ts): `src/lib/email.ts`

### Organization Governance

- [Branch Manager](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/branch/BranchManager.tsx): `src/components/branch/BranchManager.tsx`
- [Branch Routes](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/branches/route.ts): `src/app/api/branches/route.ts`
- [Pricing Governance](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/components/super-admin/PricingPlanManager.tsx): `src/components/super-admin/PricingPlanManager.tsx`
- [Pricing Governance API](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/app/api/super-admin/pricing/route.ts): `src/app/api/super-admin/pricing/route.ts`

### Other components

- **Lab Staff**
- **Patient**
- **Email Provider**
- [Application Database](https://github.com/naseeraslam/mediflow-lis-saas/blob/production/src/lib/db.ts): `src/lib/db.ts`

## Connections

- Lab Staff → Lab Workspace: uses
- Lab Staff → Patient Registry: manages patients
- Patient Registry → Patient API: sends patient data
- Patient API → Session and Auth: gets session
- Patient API → Application Database: reads and writes
- Patient Registry → Patient Services: uses patient services
- Lab Staff → Test Catalog: manages tests
- Test Catalog → Catalog API: catalog requests
- Lab Staff → Report Templates: defines templates
- Report Templates → Template API: template requests
- Template API → Session and Auth: gets session
- Template API → Application Database: reads and writes
- Lab Staff → Report Workspace: records results
- Report Workspace → Report API: submits report
- Report API → Session and Auth: gets session
- Report API → Application Database: reads and writes
- Report Workspace → Report Services: uses report services
- Lab Staff → Report Comparison: reviews trends
- Report Comparison → Comparison API: requests comparison
- Comparison API → Session and Auth: gets session
- Comparison API → Application Database: loads reports and audits
- Comparison API → Comparison Engine: compares results
- Patient → Patient Search: seeks report
- Patient Search → Report Verification Search: submits identifiers
- Report Verification Search → Application Database: finds matching reports
- Lab Staff → Email Dispatch: dispatches report
- Email Dispatch → Application Database: loads report and audits
- Email Dispatch → Email Service: sends report email
- Email Service → Email Provider: delivers email
- Lab Staff → Authentication Routes: requests verification
- Authentication Routes → Application Database: checks user and token
- Authentication Routes → Email Service: sends OTP
- Lab Staff → Branch Manager: manages branches
- Branch Manager → Branch Routes: creates branch
- Branch Manager → Branch Routes: updates branch
- Lab Staff → Pricing Governance: governs pricing
- Pricing Governance → Pricing Governance API: pricing requests
