Methodology & limitations
CATCH applies explicit, deterministic rules. Every flag traces back to the readings and records that triggered it, with no prediction and no opaque scoring.
Engine 0.1.0 · built 2026-07-22 · reference 2026-05-15 · 348,120 records · 238,629 adults · systolic ≥ 140 mmHg
What data was analyzed
What the rules do
Undiagnosed care gap. An adult (alive, age ≥ 18) with at least 2 systolic readings ≥ 140 mmHg on distinct adult-age days, and no hypertension diagnosis on file.
Treated but uncontrolled. A hypertension diagnosis plus non-ambiguous antihypertensive medication plus at least 2 elevated readings after treatment began (so a single high during titration does not qualify).
Priority. Urgent / high / routine, derived from severity (≥ 180), reading count, and stacked comorbidities (obesity, high LDL, hyperlipidemia, prediabetes, metabolic syndrome). Every priority shows its contributing factors.
How the engine decides
Every record walks the same fixed decision tree. The first branch that matches ends the walk, so each outcome is reachable by exactly one path and can be replayed by hand. The two shaded leaves are the only flagged categories.
Adult and alive? (age ≥ 18)
NoNot reviewedYescontinue to next check2+ systolic ≥ 140 mmHg on distinct days?
NoNot flaggedYescontinue to next checkHypertension diagnosis on file?
NoFlagUndiagnosed care gapYescontinue to next checkOn a non-ambiguous antihypertensive?
NoDiagnosed, no medication evidenceYescontinue to next check2+ elevated readings after treatment began?
NoManaged (controlled or titrating)YesFlagTreated but uncontrolled
Priority (flagged records only)
- urgentsevere reading (≥ 180 mmHg), or repeated highs with 2+ stacked risks
- high3+ elevated readings, or 1+ stacked risk
- routinerepeated highs without additional stacked risks
What the rules do not do
Validation
Known limitations & honesty
- SyntheticRI is synthetic. The numbers show the method works, not a real Rhode Island rate.
- The disparity we can defend is age (younger adults missed most). We did not test protected-group disparities and make no such claim.
- A diagnosed-but-untreated stage was essentially empty in the data, so we dropped it.
- Some synthetic records carry artifacts (very high visit counts, implausible ages). These are flagged with a data-quality note and demoted in the queue.
- Outreach messages are drafts only. CATCH never sends anything.