# bahmni/bahmni-connect architecture

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

- Interactive diagram: https://gitdiagram.com/bahmni/bahmni-connect
- Repository: https://github.com/bahmni/bahmni-connect

## Overview

Bahmni Connect is an AngularJS front end for patient registration and clinical care, with offline operation. A typical user signs in, searches for a patient, opens a clinical record, and reviews or records consultation and treatment information. The tree also shows registration and visit workflows, dashboards, observation forms, orders, and offline synchronization as major capabilities. Edges below are limited to calls and routing documented in the supplied excerpts; many services and subsystem integrations are unsampled, so their connections are omitted.

Main entry points: [`ui/app/home/controllers/loginController.js`](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/home/controllers/loginController.js) (Sign in), [`ui/app/clinical/app.js`](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/app.js) (Clinical routing), [`ui/app/offline/controllers/initSyncController.js`](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/offline/controllers/initSyncController.js) (Initialize sync), [`ui/app/common/patient-search/controllers/patientsListController.js`](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/patient-search/controllers/patientsListController.js) (Find patient)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Access and registration"]
  node_login["Sign in<br/>[loginController.js]"]
  node_home["Home dashboard"]
  node_patient_search["Find patient"]
  node_registration_search["Registration search"]
  node_registration_visit["Register visit<br/>[visitController.js]"]
end

subgraph group_clinical["Clinical care"]
  node_clinical_app["Clinical routing<br/>[app.js]"]
  node_visit_context["Visit context<br/>[visitController.js]"]
  node_consultation["Consultation"]
  node_treatment["Add treatment"]
  node_patient_dashboard["Patient dashboard"]
  node_disease_templates["Disease templates"]
end

subgraph group_shared["Shared clinical data"]
  node_concept_forms["Concept-set forms<br/>[observationForm.js]"]
  node_observation_data["Observation services"]
  node_patient_data["Patient services<br/>[patientService.js]"]
  node_orders["Order services<br/>[orderSetService.js]"]
end

subgraph group_offline["Offline operation"]
  node_offline_entry["Offline sign-in<br/>[app.js]"]
  node_sync_controller["Initialize sync"]
  node_offline_pull["Offline pull<br/>[offlinePull.js]"]
  node_sync_service["Sync service"]
  node_offline_store[("Offline database")]
end

node_user(("Care user"))

node_user -->|"signs in"| node_login
node_login -->|"redirects"| node_home
node_login -->|"saves preferences"| node_sync_service
node_user -->|"searches"| node_patient_search
node_patient_search -->|"finds patients"| node_patient_data
node_user -->|"searches"| node_registration_search
node_registration_search -->|"searches patients"| node_patient_data
node_user -.->|"opens care"| node_clinical_app
node_clinical_app -->|"routes visit"| node_visit_context
node_clinical_app -->|"loads dashboard"| node_patient_dashboard
node_patient_dashboard -->|"loads templates"| node_disease_templates
node_user -.->|"records care"| node_consultation
node_treatment -->|"calculates dose"| node_orders
node_user -.->|"enters observations"| node_concept_forms
node_offline_entry -.->|"starts setup"| node_sync_controller
node_sync_controller -->|"initializes pull"| node_offline_pull
node_user -->|"requests sync"| node_sync_controller
node_sync_service -.->|"uses database"| node_offline_store

click node_login "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/home/controllers/loginController.js"
click node_home "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/home/controllers/dashboardController.js"
click node_patient_search "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/patient-search/controllers/patientsListController.js"
click node_registration_search "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/registration/controllers/searchPatientController.js"
click node_registration_visit "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/registration/controllers/visitController.js"
click node_clinical_app "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/app.js"
click node_visit_context "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/common/controllers/visitController.js"
click node_consultation "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/consultation/controllers/consultationController.js"
click node_treatment "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/consultation/controllers/addTreatmentController.js"
click node_patient_dashboard "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/dashboard/controllers/patientDashboardController.js"
click node_disease_templates "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/dashboard/services/diseaseTemplateService.js"
click node_concept_forms "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/concept-set/models/observationForm.js"
click node_observation_data "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/domain/services/observationsService.js"
click node_patient_data "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/patient/services/patientService.js"
click node_orders "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/orders/services/orderSetService.js"
click node_offline_entry "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/offline/app.js"
click node_sync_controller "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/offline/controllers/initSyncController.js"
click node_offline_pull "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/offlinePull.js"
click node_sync_service "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/services/offlineSyncService.js"
click node_offline_store "https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/dbservices/dao/offlineDbService.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_login,node_home,node_patient_search,node_registration_search,node_registration_visit,node_user toneBlue
class node_clinical_app,node_visit_context,node_consultation,node_treatment,node_patient_dashboard,node_disease_templates toneAmber
class node_concept_forms,node_observation_data,node_patient_data,node_orders toneMint
class node_offline_entry,node_sync_controller,node_offline_pull,node_sync_service,node_offline_store toneRose
```

## Components

### Access and registration

- [Sign in](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/home/controllers/loginController.js): `ui/app/home/controllers/loginController.js`
- [Home dashboard](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/home/controllers/dashboardController.js): `ui/app/home/controllers/dashboardController.js`
- [Find patient](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/patient-search/controllers/patientsListController.js): `ui/app/common/patient-search/controllers/patientsListController.js`
- [Registration search](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/registration/controllers/searchPatientController.js): `ui/app/registration/controllers/searchPatientController.js`
- [Register visit](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/registration/controllers/visitController.js): `ui/app/registration/controllers/visitController.js`

### Clinical care

- [Clinical routing](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/app.js): `ui/app/clinical/app.js`
- [Visit context](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/common/controllers/visitController.js): `ui/app/clinical/common/controllers/visitController.js`
- [Consultation](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/consultation/controllers/consultationController.js): `ui/app/clinical/consultation/controllers/consultationController.js`
- [Add treatment](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/consultation/controllers/addTreatmentController.js): `ui/app/clinical/consultation/controllers/addTreatmentController.js`
- [Patient dashboard](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/dashboard/controllers/patientDashboardController.js): `ui/app/clinical/dashboard/controllers/patientDashboardController.js`
- [Disease templates](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/clinical/dashboard/services/diseaseTemplateService.js): `ui/app/clinical/dashboard/services/diseaseTemplateService.js`

### Shared clinical data

- [Concept-set forms](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/concept-set/models/observationForm.js): `ui/app/common/concept-set/models/observationForm.js`
- [Observation services](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/domain/services/observationsService.js): `ui/app/common/domain/services/observationsService.js`
- [Patient services](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/patient/services/patientService.js): `ui/app/common/patient/services/patientService.js`
- [Order services](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/orders/services/orderSetService.js): `ui/app/common/orders/services/orderSetService.js`

### Offline operation

- [Offline sign-in](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/offline/app.js): `ui/app/offline/app.js`
- [Initialize sync](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/offline/controllers/initSyncController.js): `ui/app/offline/controllers/initSyncController.js`
- [Offline pull](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/offlinePull.js): `ui/app/common/offline/offlinePull.js`
- [Sync service](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/services/offlineSyncService.js): `ui/app/common/offline/services/offlineSyncService.js`
- [Offline database](https://github.com/bahmni/bahmni-connect/blob/master/ui/app/common/offline/dbservices/dao/offlineDbService.js): `ui/app/common/offline/dbservices/dao/offlineDbService.js`

### Other components

- **Care user**

## Connections

- Care user → Sign in: signs in (evidence: `ui/app/home/controllers/loginController.js`)
- Sign in → Home dashboard: redirects (evidence: `ui/app/home/controllers/loginController.js`)
- Sign in → Sync service: saves preferences (evidence: `ui/app/home/controllers/loginController.js`)
- Care user → Find patient: searches (evidence: `ui/app/common/patient-search/controllers/patientsListController.js`)
- Find patient → Patient services: finds patients (evidence: `ui/app/common/patient-search/controllers/patientsListController.js`)
- Care user → Registration search: searches (evidence: `ui/app/registration/controllers/searchPatientController.js`)
- Registration search → Patient services: searches patients (evidence: `ui/app/registration/controllers/searchPatientController.js`)
- Care user → Clinical routing: opens care
- Clinical routing → Visit context: routes visit (evidence: `ui/app/clinical/app.js`)
- Clinical routing → Patient dashboard: loads dashboard (evidence: `ui/app/clinical/app.js`)
- Patient dashboard → Disease templates: loads templates (evidence: `ui/app/clinical/dashboard/controllers/patientDashboardController.js`)
- Care user → Consultation: records care
- Add treatment → Order services: calculates dose (evidence: `ui/app/clinical/consultation/controllers/addTreatmentController.js`)
- Care user → Concept-set forms: enters observations
- Offline sign-in → Initialize sync: starts setup
- Initialize sync → Offline pull: initializes pull (evidence: `ui/app/offline/controllers/initSyncController.js`)
- Care user → Initialize sync: requests sync (evidence: `ui/app/offline/controllers/initSyncController.js`)
- Sync service → Offline database: uses database
