Nigeria-first synthetic-only health triage prototype with RAG.
# HealthRAG
A **Nigeria-first, synthetic-only** health triage prototype. This is a deterministic research prototype.
It is **not clinically validated**, is **not a medical device**, and must **not process real patient data**.
The package deliberately has no model or vector-database dependency yet. The first implementation
slice is a deterministic safety spine that can be clinically reviewed before retrieval or live
integrations are added.
---
## What this prototype demonstrates
- Recognize a limited set of symptom red flags.
- Assign a conservative urgency category.
- Explain the matched safety signal.
- Provide general care-navigation language.
- Preserve a configurable jurisdiction and locale policy.
- Reject identifier-bearing inputs at a dedicated privacy boundary.
The current implementation does not call an LLM, access a vector database, query external services,
or ingest health documents.
---
## System at a glance
The system is built around two deliberately separated ideas:
1. **Rule-first safety** — a deterministic classifier that never depends on a model, a network, or
retrieval to make an urgency decision.
2. **Activation-separate governance** — official source candidates are catalogued and reviewed, but
nothing becomes retrievable evidence until an explicit, independently reviewed activation.
---
## System sections
| Section | What it does | Where |
| --- | --- | --- |
| **Privacy gate** | Rejects inputs containing emails, phone numbers, NIN-like numbers, patient IDs, dates of birth, addresses, or explicit names before any triage | `code/health/redaction.py` |
| **Safety classifier** | Deterministically matches symptom red flags to a conservative urgency and classification; no model calls | `code/health/safety.py` |
| **Policy layer** | Holds jurisdiction- and locale-specific guidance (Nigeria first, `en-NG` wording) and emergency pathway language | `code/health/policy.py` |
| **Bounded retrieval** | Retrieves synthetic registry citatio …