La doctrine d'alerte
ehr-lab is about to start producing clinical advice: dose ceilings, drug interactions, contraindications, renal adjustments. This page fixes the rules before the first one ships, because the evidence says this decision cannot be revisited later.
The fact that forces the issue
Alert fatigue is a problem of redundancy, not of wear over time. Ancker et al. (BMC Med Inform Decis Mak 2017, 112 clinicians, 1.59 M alerts) found that raw workload does not predict overriding — repetition does. Each extra alert in an encounter cuts acceptance by 30 % (IRR 0.70), and once a clinician has overridden an alert a first time, 87.9 % of subsequent occurrences are overridden too — 99.9 % for medication alerts.
The anchoring is immediate and it does not wash out. So the volume of alerts is decided at deployment; a clean-up afterwards does not restore receptivity.
ehr-lab currently ships zero medication alerts. That is an asset every production EHR has already spent, and it cannot be bought back.
Which alerts actually deserve attention
Nanji et al. (JAMIA 2018, ~340 000 overrides in a hospital setting) broke overrides down by alert type, and the spread is the whole story:
| Alert type | Overrides judged appropriate | Reading |
|---|---|---|
| Drug duplicate | 98 % | Pure noise |
| Patient allergy | 96.5 % | Huge volume, near-zero value |
| Formulary substitution | 82.5 % | Mostly noise |
| Age-related substitution | 26.4 % | Real signal, diluted |
| Renal function | 2.2 % | Real danger — and it is drowned by the three rows above |
Clinicians are not the failure. The duplicate/allergy/formulary alerts are, and by Ancker's mechanism they destroy receptivity to the 2.2 % that matters.
The three rules
Implemented in apps/ehr-lab/src/domain/advice.ts.
- Attention budget. Advice that is not
inlineis capped (ATTENTION_BUDGET). Adding a noticeable one means removing another, or making itinline. The registry currently uses 5 of 6 — one slot left, so the next addition is an explicit trade-off rather than an accretion. - Tiering. Only
blockinginterrupts, and only codes inBLOCKING_ALLOWLISTmay beblocking. There is exactly one:renal-dose-adjustment. Tiering by severity raised acceptance of severe alerts from 34 % to 100 % (Paterno, JAMIA 2009) — but only while the top tier stays credible. - Role routing. Every advice declares its
audience. Routing to the right profession is the only alternative design that reliably increases acceptance (Powers, JAMIA 2019, systematic review). The modal interruption is the most common design and the least accepted.
inline is deliberately uncapped: information living in the context of the
decision costs no attention. That is the doctrine's release valve — you may
always add information, never an interruption.
How the rules are enforced
Not by this page. By doctrineViolations(), which the unit test
(apps/ehr-lab/tests/advice.test.ts) requires to return an empty array. It
fails, with a message naming the broken rule, when someone adds an interruption
outside the allowlist, exceeds the budget, omits an audience, or ships a
duplicate/unstable code.
And buildAdvice(code, …) throws for any code absent from ADVICE_REGISTRY, so
an alert cannot reach a screen without passing through the registry — and
therefore through this doctrine.
The one deviation we take knowingly
allergy-match is flagged, although the aggregate calls allergy alerts noise
(96.5 % appropriate overrides). The aggregate measures production EHRs whose
allergy lists are free-text and dirty. Here the allergen is coded and the
match is made by the CE-marked device, not by string comparison. We accept the
deviation, at flagged — never as an interruption — and record the reasoning in
the registry entry itself so a future reviewer can overturn it on evidence
rather than on taste.
What this does not claim
No isolated software tool has demonstrated a reduction in patient harm — not CDS, not dashboards. The realistic ceiling for clinical decision support is roughly 5–6 percentage points of improvement on care processes (Kwan, BMJ 2020, 115 randomised trials), and the only interaction mode with a demonstrated effect on harm is a sociotechnical bundle (I-PASS, NEJM 2014), where software is one brick among training and peer observation. This doctrine is about not destroying receptivity. It is not a safety claim.