# Lesotho Vital-Link
A Docker Compose sandbox that simulates Lesotho's national health-system integration
stack - the full data flow from a community health worker's Android app through to
national logistics and reporting systems, all over FHIR.
A field worker records a dispense, stock order, or receipt in the OpenSRP / FHIR-Core
Android app. The event flows through OpenHIM to the Vital-Link mediator, which fans it
out to the connected systems and keeps stock and reporting in sync.
## What it integrates
- OpenSRP 2 / FHIR Core - Android field app for community health workers
- HAPI FHIR - FHIR R4 clinical data store
- OpenHIM - integration middleware (channel routing, audit log, transaction replay)
- Vital-Link Mediator - orchestrates the fan-out and the stock lifecycle logic
- OpenLMIS (eLMIS) - logistics and stock management
- DHIS2 - aggregate health data and national reporting
- Keycloak - single sign-on, identity and access management
- bkm-web - admin portal (service status, FHIR browser, stock, user management)
- Grafana / Prometheus / Loki - monitoring, metrics and logs
## Architecture
```mermaid
flowchart TD
App["Android Field App OpenSRP 2 / FHIR-Core"]
Portal["bkm-web Admin Portal"]
OpenHIM["OpenHIM routing · audit · replay · :5001"]
Med["Vital-Link Mediator fan-out + order buffer · :3000"]
OpenSRP["OpenSRP care register · :9900"]
FHIR["HAPI FHIR FHIR R4 store · :8079"]
LMIS["OpenLMIS / eLMIS stock management · :8082"]
DHIS2["DHIS2 national reporting · :8081"]
KC["Keycloak identity / SSO · :8083"]
App -->|"FHIR R4: dispense / order / receipt"| OpenHIM
OpenHIM -->|"HTTP :3000"| Med
Med -->|"FHIR events"| OpenSRP
Med -->|"app config · patients"| FHIR
Med -->|"stock events: DEBIT / CREDIT"| LMIS
Med -->|"aggregate data values"| DHIS2
LMIS -.->|"dhis2-integration reads stockCardSummaries"| DHIS2
Portal -->|"REST"| Med
App -.->|"OAuth"| KC
Portal -.->|"OAuth"| KC
Med -.->|"service tokens"| KC
subgraph infra ["Shared infrastructure"]
direction LR
PG["Po …