# paulchetti/aarogya-drishti architecture

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

- Interactive diagram: https://gitdiagram.com/paulchetti/aarogya-drishti
- Repository: https://github.com/paulchetti/aarogya-drishti

## Overview

Aarogya Drishti is a role-based oral-health screening and care-coordination application. Users authenticate into citizen, frontline-worker, clinician, diagnostic-centre, or administration portals; screening and patient records support referrals, follow-ups, laboratory workflows, and teleconsultation. The React client calls an Express API, whose route groups use SQLite and session authorization. The README documents offline queuing, bilingual UI, and Gemini-assisted screening. Some subsystem links below rely on README documentation or indexed imports; unsampled implementation details are not inferred.

Main entry points: [`src/App.jsx`](https://github.com/paulchetti/aarogya-drishti/blob/main/src/App.jsx) (Application Shell), [`server/index.js`](https://github.com/paulchetti/aarogya-drishti/blob/main/server/index.js) (Express API), [`server/authMiddleware.js`](https://github.com/paulchetti/aarogya-drishti/blob/main/server/authMiddleware.js) (Session Authorization), [`src/services/apiClient.js`](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/apiClient.js) (API Client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client and Portals"]
  node_app["Application Shell<br/>[App.jsx]"]
  node_auth_ui["Login and Registration<br/>[AuthCard.jsx]"]
  node_anm["ANM Portal"]
  node_citizen["Citizen Portal"]
  node_clinical["Clinical Dashboards"]
  node_admin_dash["Admin Dashboards"]
  node_lang["Language Context"]
end

subgraph group_identity["Identity and Sessions"]
  node_employee_auth["Employee Authentication"]
  node_citizen_auth["Citizen OTP"]
  node_sessions["Session Management<br/>[sessionService.js]"]
  node_authorization["Session Authorization<br/>[authMiddleware.js]"]
end

subgraph group_care["Clinical Care Workflows"]
  node_screening_ui["Oral Screening UI"]
  node_ai_service["Screening and AI Service"]
  node_report_schema["Screening Report Rules<br/>[oralScreening.js]"]
  node_referrals["Patient Registry and Referrals"]
  node_workflow_service["Workflow Service<br/>[workflowService.js]"]
  node_teleconsult["Teleconsultation Suite"]
end

subgraph group_server["API and Services"]
  node_api_client["API Client<br/>[apiClient.js]"]
  node_api_server["Express API<br/>[index.js]"]
  node_auth_routes["Authentication Routes<br/>[authRoutes.js]"]
  node_clinical_routes["Patient Routes<br/>[clinicalRoutes.js]"]
  node_workflow_routes["Workflow Routes<br/>[workflowRoutes.js]"]
  node_call_routes["Call Routes<br/>[callRoutes.js]"]
  node_media_routes["Media and AI Routes"]
  node_admin_routes["Administration Routes<br/>[adminRoutes.js]"]
end

subgraph group_state["Persistence and Shared Data"]
  node_database[("SQLite Database<br/>[db.js]")]
end

node_user(("Portal User"))
node_gemini{{"Gemini API"}}

node_user -->|"uses"| node_app
node_app -->|"shows"| node_auth_ui
node_app -->|"routes to"| node_anm
node_app -->|"routes to"| node_citizen
node_app -->|"routes to"| node_clinical
node_app -->|"routes to"| node_admin_dash
node_app -->|"manages"| node_sessions
node_app -->|"uses"| node_lang
node_auth_ui -->|"authenticates with"| node_employee_auth
node_citizen -->|"requests OTP"| node_citizen_auth
node_employee_auth -->|"sends requests"| node_api_client
node_citizen_auth -->|"sends requests"| node_api_client
node_sessions -->|"verifies session"| node_api_client
node_screening_ui -->|"requests analysis"| node_ai_service
node_screening_ui -->|"uses rules"| node_report_schema
node_ai_service -->|"sends requests"| node_api_client
node_ai_service -->|"uses schema"| node_report_schema
node_ai_service -.->|"analyzes images"| node_gemini
node_referrals -->|"sends requests"| node_api_client
node_workflow_service -->|"sends requests"| node_api_client
node_workflow_service -->|"caches patient"| node_referrals
node_teleconsult -->|"updates patient"| node_api_client
node_teleconsult -.->|"uses call API"| node_call_routes
node_app -.->|"calls API"| node_api_server
node_api_server -->|"mounts"| node_auth_routes
node_api_server -->|"mounts"| node_clinical_routes
node_api_server -->|"mounts"| node_workflow_routes
node_api_server -->|"mounts"| node_call_routes
node_api_server -->|"mounts"| node_media_routes
node_api_server -->|"mounts"| node_admin_routes
node_auth_routes -->|"uses"| node_authorization
node_clinical_routes -->|"uses"| node_authorization
node_workflow_routes -->|"uses"| node_authorization
node_call_routes -->|"uses"| node_authorization
node_media_routes -->|"uses"| node_authorization
node_admin_routes -->|"uses"| node_authorization
node_authorization -->|"checks sessions"| node_database
node_auth_routes -->|"reads and writes"| node_database
node_clinical_routes -->|"reads and writes"| node_database
node_workflow_routes -->|"reads and writes"| node_database
node_call_routes -->|"reads and writes"| node_database
node_media_routes -->|"uses"| node_database
node_admin_routes -->|"reads and writes"| node_database

click node_app "https://github.com/paulchetti/aarogya-drishti/blob/main/src/App.jsx"
click node_auth_ui "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/AuthCard.jsx"
click node_anm "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/anm/ANMPortalLayout.jsx"
click node_citizen "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/citizen/CitizenPortalLayout.jsx"
click node_clinical "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/clinical/DashboardLayout.jsx"
click node_admin_dash "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/Dashboard/DistrictAdminDashboard.jsx"
click node_lang "https://github.com/paulchetti/aarogya-drishti/blob/main/src/context/LanguageContext.jsx"
click node_employee_auth "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/employeeAuthService.js"
click node_citizen_auth "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/citizenAuthService.js"
click node_sessions "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/sessionService.js"
click node_api_client "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/apiClient.js"
click node_screening_ui "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/common/InlineOralScreeningSection.jsx"
click node_ai_service "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/geminiOralCancerService.js"
click node_report_schema "https://github.com/paulchetti/aarogya-drishti/blob/main/shared/oralScreening.js"
click node_referrals "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/referralRoutingService.js"
click node_workflow_service "https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/workflowService.js"
click node_teleconsult "https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/clinical/TeleconsultationSuite.jsx"
click node_api_server "https://github.com/paulchetti/aarogya-drishti/blob/main/server/index.js"
click node_auth_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/authRoutes.js"
click node_clinical_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/clinicalRoutes.js"
click node_workflow_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/workflowRoutes.js"
click node_call_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/callRoutes.js"
click node_media_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/mediaAndAiRoutes.js"
click node_admin_routes "https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/adminRoutes.js"
click node_authorization "https://github.com/paulchetti/aarogya-drishti/blob/main/server/authMiddleware.js"
click node_database "https://github.com/paulchetti/aarogya-drishti/blob/main/server/db.js"

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_app,node_auth_ui,node_anm,node_citizen,node_clinical,node_admin_dash,node_lang,node_user toneBlue
class node_employee_auth,node_citizen_auth,node_sessions,node_authorization toneAmber
class node_screening_ui,node_ai_service,node_report_schema,node_referrals,node_workflow_service,node_teleconsult,node_gemini toneMint
class node_api_client,node_api_server,node_auth_routes,node_clinical_routes,node_workflow_routes,node_call_routes,node_media_routes,node_admin_routes toneRose
class node_database toneIndigo
```

## Components

### Client and Portals

- [Application Shell](https://github.com/paulchetti/aarogya-drishti/blob/main/src/App.jsx): `src/App.jsx`
- [Login and Registration](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/AuthCard.jsx): `src/components/AuthCard.jsx`
- [ANM Portal](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/anm/ANMPortalLayout.jsx): `src/components/anm/ANMPortalLayout.jsx`
- [Citizen Portal](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/citizen/CitizenPortalLayout.jsx): `src/components/citizen/CitizenPortalLayout.jsx`
- [Clinical Dashboards](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/clinical/DashboardLayout.jsx): `src/components/clinical/DashboardLayout.jsx`
- [Admin Dashboards](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/Dashboard/DistrictAdminDashboard.jsx): `src/components/Dashboard/DistrictAdminDashboard.jsx`
- [Language Context](https://github.com/paulchetti/aarogya-drishti/blob/main/src/context/LanguageContext.jsx): `src/context/LanguageContext.jsx`

### Identity and Sessions

- [Employee Authentication](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/employeeAuthService.js): `src/services/employeeAuthService.js`
- [Citizen OTP](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/citizenAuthService.js): `src/services/citizenAuthService.js`
- [Session Management](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/sessionService.js): `src/services/sessionService.js`
- [Session Authorization](https://github.com/paulchetti/aarogya-drishti/blob/main/server/authMiddleware.js): `server/authMiddleware.js`

### Clinical Care Workflows

- [Oral Screening UI](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/common/InlineOralScreeningSection.jsx): `src/components/common/InlineOralScreeningSection.jsx`
- [Screening and AI Service](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/geminiOralCancerService.js): `src/services/geminiOralCancerService.js`
- [Screening Report Rules](https://github.com/paulchetti/aarogya-drishti/blob/main/shared/oralScreening.js): `shared/oralScreening.js`
- [Patient Registry and Referrals](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/referralRoutingService.js): `src/services/referralRoutingService.js`
- [Workflow Service](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/workflowService.js): `src/services/workflowService.js`
- [Teleconsultation Suite](https://github.com/paulchetti/aarogya-drishti/blob/main/src/components/clinical/TeleconsultationSuite.jsx): `src/components/clinical/TeleconsultationSuite.jsx`

### API and Services

- [API Client](https://github.com/paulchetti/aarogya-drishti/blob/main/src/services/apiClient.js): `src/services/apiClient.js`
- [Express API](https://github.com/paulchetti/aarogya-drishti/blob/main/server/index.js): `server/index.js`
- [Authentication Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Patient Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/clinicalRoutes.js): `server/routes/clinicalRoutes.js`
- [Workflow Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/workflowRoutes.js): `server/routes/workflowRoutes.js`
- [Call Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/callRoutes.js): `server/routes/callRoutes.js`
- [Media and AI Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/mediaAndAiRoutes.js): `server/routes/mediaAndAiRoutes.js`
- [Administration Routes](https://github.com/paulchetti/aarogya-drishti/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`

### Persistence and Shared Data

- [SQLite Database](https://github.com/paulchetti/aarogya-drishti/blob/main/server/db.js): `server/db.js`

### Other components

- **Portal User**
- **Gemini API**

## Connections

- Portal User → Application Shell: uses (evidence: `README.md`)
- Application Shell → Login and Registration: shows (evidence: `src/App.jsx`)
- Application Shell → ANM Portal: routes to (evidence: `src/App.jsx`)
- Application Shell → Citizen Portal: routes to (evidence: `src/App.jsx`)
- Application Shell → Clinical Dashboards: routes to (evidence: `src/App.jsx`)
- Application Shell → Admin Dashboards: routes to (evidence: `src/App.jsx`)
- Application Shell → Session Management: manages (evidence: `src/App.jsx`)
- Application Shell → Language Context: uses (evidence: `src/App.jsx`)
- Login and Registration → Employee Authentication: authenticates with (evidence: `src/components/AuthCard.jsx`)
- Citizen Portal → Citizen OTP: requests OTP (evidence: `src/components/citizen/CitizenPortalLayout.jsx`)
- Employee Authentication → API Client: sends requests (evidence: `src/services/employeeAuthService.js`)
- Citizen OTP → API Client: sends requests (evidence: `src/services/citizenAuthService.js`)
- Session Management → API Client: verifies session (evidence: `src/services/sessionService.js`)
- Oral Screening UI → Screening and AI Service: requests analysis (evidence: `src/components/common/InlineOralScreeningSection.jsx`)
- Oral Screening UI → Screening Report Rules: uses rules (evidence: `src/components/common/InlineOralScreeningSection.jsx`)
- Screening and AI Service → API Client: sends requests (evidence: `src/services/geminiOralCancerService.js`)
- Screening and AI Service → Screening Report Rules: uses schema (evidence: `src/services/geminiOralCancerService.js`)
- Screening and AI Service → Gemini API: analyzes images (evidence: `README.md`)
- Patient Registry and Referrals → API Client: sends requests (evidence: `src/services/referralRoutingService.js`)
- Workflow Service → API Client: sends requests (evidence: `src/services/workflowService.js`)
- Workflow Service → Patient Registry and Referrals: caches patient (evidence: `src/services/workflowService.js`)
- Teleconsultation Suite → API Client: updates patient (evidence: `src/components/clinical/TeleconsultationSuite.jsx`)
- Teleconsultation Suite → Call Routes: uses call API (evidence: `README.md`)
- Application Shell → Express API: calls API (evidence: `README.md`)
- Express API → Authentication Routes: mounts (evidence: `server/index.js`)
- Express API → Patient Routes: mounts (evidence: `server/index.js`)
- Express API → Workflow Routes: mounts (evidence: `server/index.js`)
- Express API → Call Routes: mounts (evidence: `server/index.js`)
- Express API → Media and AI Routes: mounts (evidence: `server/index.js`)
- Express API → Administration Routes: mounts (evidence: `server/index.js`)
- Authentication Routes → Session Authorization: uses (evidence: `server/routes/authRoutes.js`)
- Patient Routes → Session Authorization: uses (evidence: `server/routes/clinicalRoutes.js`)
- Workflow Routes → Session Authorization: uses (evidence: `server/routes/workflowRoutes.js`)
- Call Routes → Session Authorization: uses (evidence: `server/routes/callRoutes.js`)
- Media and AI Routes → Session Authorization: uses (evidence: `server/routes/mediaAndAiRoutes.js`)
- Administration Routes → Session Authorization: uses (evidence: `server/routes/adminRoutes.js`)
- Session Authorization → SQLite Database: checks sessions (evidence: `server/authMiddleware.js`)
- Authentication Routes → SQLite Database: reads and writes (evidence: `server/routes/authRoutes.js`)
- Patient Routes → SQLite Database: reads and writes (evidence: `server/routes/clinicalRoutes.js`)
- Workflow Routes → SQLite Database: reads and writes (evidence: `server/routes/workflowRoutes.js`)
- Call Routes → SQLite Database: reads and writes (evidence: `server/routes/callRoutes.js`)
- Media and AI Routes → SQLite Database: uses (evidence: `server/routes/mediaAndAiRoutes.js`)
- Administration Routes → SQLite Database: reads and writes (evidence: `server/routes/adminRoutes.js`)
