# hijyotirmoy/ekms-triage architecture

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

- Interactive diagram: https://gitdiagram.com/hijyotirmoy/ekms-triage
- Repository: https://github.com/hijyotirmoy/ekms-triage

## Overview

EKMS Triage Sandbox supports agent-led caller intake, clinical urgency assessment, facility routing, and case logging, alongside live call handling, case review, facility management, and API/feedback tools. The principal documented flow is intake through triage evaluation and location-based facility ranking to persistence. Sampled source confirms the triage route’s calls into the evaluation, geography, and storage layers; several UI-to-route connections and unsampled endpoint internals are based on the documented capabilities, so uncertain wiring is omitted.

Main entry points: [`src/app/api/triage/route.js`](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/triage/route.js) (Triage Endpoint), [`src/lib/db.js`](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/db.js) (Case and Facility Storage), [`src/components/CallManager.jsx`](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/CallManager.jsx) (Call Manager), [`src/components/TriageConsole.jsx`](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/TriageConsole.jsx) (Triage Console)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Intake and Calls"]
  node_app["Application Shell<br/>[AppShell.jsx]"]
  node_triage_ui["Triage Console<br/>[TriageConsole.jsx]"]
  node_call_manager["Call Manager<br/>[CallManager.jsx]"]
  node_signal_api["Call Signaling<br/>[route.js]"]
  node_scribe_api["Speech Services<br/>[route.js]"]
end

subgraph group_clinical["Clinical Assessment"]
  node_doctor_chat["Adaptive Chat"]
  node_adaptive["Clinical Questioning"]
  node_triage_api["Triage Endpoint<br/>[route.js]"]
  node_triage_engine["Urgency Evaluator<br/>[triageEngine.js]"]
  node_ai_provider["Groq AI<br/>[groqPool.js]"]
  node_feedback_ui["Feedback Manager"]
  node_feedback_api["Feedback Endpoint<br/>[route.js]"]
  node_learning["Feedback Learning"]
end

subgraph group_routing["Facility Routing"]
  node_facility_ui["Facility Directory"]
  node_facility_api["Facility Endpoints<br/>[route.js]"]
  node_geo["Location and Ranking<br/>[geo.js]"]
end

subgraph group_operations["Records and Operations"]
  node_case_ui["Case Logs<br/>[CaseLogs.jsx]"]
  node_cases_api["Case Endpoints<br/>[route.js]"]
  node_db[("Case and Facility Storage<br/>[db.js]")]
  node_playground["API Playground<br/>[DeveloperApi.jsx]"]
end

node_caller(("Caller"))
node_agent(("Triage Agent"))
node_firebase[("Firestore")]

node_caller -->|"reports symptoms"| node_agent
node_agent -->|"enters intake"| node_triage_ui
node_app -->|"presents"| node_triage_ui
node_agent -->|"handles calls"| node_call_manager
node_call_manager -->|"signals calls"| node_signal_api
node_call_manager -.->|"submits audio"| node_scribe_api
node_triage_ui -->|"conducts probing"| node_doctor_chat
node_doctor_chat -->|"extracts clinical context"| node_adaptive
node_triage_ui -->|"submits intake"| node_triage_api
node_triage_api -->|"evaluates urgency"| node_triage_engine
node_triage_engine -->|"requests evaluation"| node_ai_provider
node_triage_engine -->|"loads rules"| node_learning
node_triage_api -->|"resolves and ranks"| node_geo
node_triage_api -->|"loads facilities"| node_db
node_triage_api -->|"saves case"| node_db
node_agent -->|"reviews cases"| node_case_ui
node_case_ui -->|"requests case records"| node_cases_api
node_cases_api -->|"reads and deletes"| node_db
node_agent -->|"manages directory"| node_facility_ui
node_facility_ui -->|"searches facilities"| node_facility_api
node_facility_api -->|"reads facilities"| node_db
node_agent -->|"submits corrections"| node_feedback_ui
node_feedback_ui -->|"sends feedback"| node_feedback_api
node_feedback_api -->|"manages feedback rules"| node_learning
node_agent -->|"tests API"| node_playground
node_signal_api -->|"reads and updates calls"| node_firebase
node_call_manager -->|"subscribes to calls"| node_firebase
node_db -.->|"persists when configured"| node_firebase

click node_app "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/AppShell.jsx"
click node_triage_ui "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/TriageConsole.jsx"
click node_call_manager "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/CallManager.jsx"
click node_signal_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/call/signal/route.js"
click node_scribe_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/scribe/whisper/route.js"
click node_doctor_chat "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/doctorChatEngine.js"
click node_adaptive "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/clinicalAdaptiveEngine.js"
click node_triage_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/triage/route.js"
click node_triage_engine "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/triageEngine.js"
click node_ai_provider "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/groqPool.js"
click node_feedback_ui "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/FeedbackManager.jsx"
click node_feedback_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/feedback/route.js"
click node_learning "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/feedbackLearningEngine.js"
click node_facility_ui "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/FacilityDirectory.jsx"
click node_facility_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/facilities/route.js"
click node_geo "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/geo.js"
click node_case_ui "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/CaseLogs.jsx"
click node_cases_api "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/cases/route.js"
click node_db "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/db.js"
click node_playground "https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/DeveloperApi.jsx"

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_triage_ui,node_call_manager,node_signal_api,node_scribe_api toneBlue
class node_doctor_chat,node_adaptive,node_triage_api,node_triage_engine,node_ai_provider,node_feedback_ui,node_feedback_api,node_learning,node_firebase toneAmber
class node_facility_ui,node_facility_api,node_geo toneMint
class node_case_ui,node_cases_api,node_db,node_playground toneRose
class node_caller,node_agent toneIndigo
```

## Components

### Intake and Calls

- [Application Shell](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/AppShell.jsx): `src/components/AppShell.jsx`
- [Triage Console](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/TriageConsole.jsx): `src/components/TriageConsole.jsx`
- [Call Manager](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/CallManager.jsx): `src/components/CallManager.jsx`
- [Call Signaling](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/call/signal/route.js): `src/app/api/call/signal/route.js`
- [Speech Services](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/scribe/whisper/route.js): `src/app/api/scribe/whisper/route.js`

### Clinical Assessment

- [Adaptive Chat](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/doctorChatEngine.js): `src/lib/doctorChatEngine.js`
- [Clinical Questioning](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/clinicalAdaptiveEngine.js): `src/lib/clinicalAdaptiveEngine.js`
- [Triage Endpoint](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/triage/route.js): `src/app/api/triage/route.js`
- [Urgency Evaluator](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/triageEngine.js): `src/lib/triageEngine.js`
- [Groq AI](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/groqPool.js): `src/lib/groqPool.js`
- [Feedback Manager](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/FeedbackManager.jsx): `src/components/FeedbackManager.jsx`
- [Feedback Endpoint](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/feedback/route.js): `src/app/api/feedback/route.js`
- [Feedback Learning](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/feedbackLearningEngine.js): `src/lib/feedbackLearningEngine.js`

### Facility Routing

- [Facility Directory](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/FacilityDirectory.jsx): `src/components/FacilityDirectory.jsx`
- [Facility Endpoints](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/facilities/route.js): `src/app/api/facilities/route.js`
- [Location and Ranking](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/geo.js): `src/lib/geo.js`

### Records and Operations

- [Case Logs](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/CaseLogs.jsx): `src/components/CaseLogs.jsx`
- [Case Endpoints](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/app/api/cases/route.js): `src/app/api/cases/route.js`
- [Case and Facility Storage](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/lib/db.js): `src/lib/db.js`
- [API Playground](https://github.com/hijyotirmoy/ekms-triage/blob/main/src/components/DeveloperApi.jsx): `src/components/DeveloperApi.jsx`

### Other components

- **Caller**
- **Triage Agent**
- **Firestore**

## Connections

- Caller → Triage Agent: reports symptoms
- Triage Agent → Triage Console: enters intake
- Application Shell → Triage Console: presents
- Triage Agent → Call Manager: handles calls
- Call Manager → Call Signaling: signals calls
- Call Manager → Speech Services: submits audio
- Triage Console → Adaptive Chat: conducts probing
- Adaptive Chat → Clinical Questioning: extracts clinical context
- Triage Console → Triage Endpoint: submits intake
- Triage Endpoint → Urgency Evaluator: evaluates urgency
- Urgency Evaluator → Groq AI: requests evaluation
- Urgency Evaluator → Feedback Learning: loads rules
- Triage Endpoint → Location and Ranking: resolves and ranks
- Triage Endpoint → Case and Facility Storage: loads facilities
- Triage Endpoint → Case and Facility Storage: saves case
- Triage Agent → Case Logs: reviews cases
- Case Logs → Case Endpoints: requests case records
- Case Endpoints → Case and Facility Storage: reads and deletes
- Triage Agent → Facility Directory: manages directory
- Facility Directory → Facility Endpoints: searches facilities
- Facility Endpoints → Case and Facility Storage: reads facilities
- Triage Agent → Feedback Manager: submits corrections
- Feedback Manager → Feedback Endpoint: sends feedback
- Feedback Endpoint → Feedback Learning: manages feedback rules
- Triage Agent → API Playground: tests API
- Call Signaling → Firestore: reads and updates calls
- Call Manager → Firestore: subscribes to calls
- Case and Facility Storage → Firestore: persists when configured
