Inspiration

Elderly patients are sometimes diagnosed with Alzheimer's disease when the real cause is a drug they're already taking. Reversible, but only if someone catches it. Nobody catches it because every prescription in the chain looks reasonable in isolation. Together, they're a disaster.

That pattern has a name: a prescribing cascade. A calcium channel blocker causes ankle swelling → a diuretic is prescribed → the diuretic triggers urinary urgency → an anticholinergic is prescribed → the anticholinergic impairs cognition → the patient is diagnosed with Alzheimer's and started on a dementia drug. Four prescriptions. Three physicians. Zero red flags. One patient on a drug she doesn't need for a disease she doesn't have.

CascadeBreaker is built to find that chain.


What It Does

CascadeBreaker connects to live FHIR patient data and traces cause-and-effect chains across a patient's full medication history.

  • Detective, Full cascade analysis with evidence grading, anticholinergic burden scoring, and a Cascade Burden Score
  • Guardian, Pre-prescription safety check; returns a PROCEED / CAUTION / STOP verdict before a new drug is written
  • What-If, If I stopped the root drug, what becomes unnecessary? Generates a week-by-week deprescribing timeline

Two scoring systems run on every analysis:

  • Anticholinergic Cognitive Burden (ACB), Boustani scale score across ~90 drugs. ACB ≥ 3 in a patient 65+ is a validated risk factor for dementia-like symptoms.
  • Cascade Burden Score (CBS, 0–10), Composite score across the full chain weighted by severity and reversibility.

Everything is framed as questions for the clinician. CascadeBreaker does not prescribe, deprescribe, or diagnose.


How I Built It

An MCP server built with FastMCP exposes 9 FHIR tools to the Prompt Opinion platform, medication timeline, clinical notes, problem list, labs, encounters, demographics, ACB calculation, cascade pair lookup, and cascade chain traversal. The agent calls them in sequence then reasons across the full picture in a single SBAR-structured output.

Detection runs across three evidence tiers, always labeled:

  • HIGH, Systematic review level (e.g., CCB → diuretic, affects 8–15% of CCB users)
  • MODERATE, Case series or pharmacological class effect
  • NOVEL, AI pharmacological reasoning; explicitly flagged as hypothesis-generating

The 40 cascade pairs are drawn from BMJ, JAMA, Annals of Internal Medicine, and JAGS, each with source citation and population risk estimate.

An A2A multi-agent pipeline runs a deeper analysis: Detective → Validator (per-link confidence scoring) → Planner (deprescribing action plan) → Narrator (patient story in plain language). A Streamlit UI exposes all five modes from a single interface. The system runs on Claude Haiku 4.5 to keep full-analysis latency under 90 seconds.

Published in the Prompt Opinion Marketplace with A2A and FHIR context extension enabled.


Challenges I Ran Into

The reasoning pipeline is deep, 9 tool calls, cross-referencing timelines, notes, and pharmacology. Getting the system prompt to enforce a strict word budget without losing clinical accuracy took many iterations.

Specificity was the harder problem. Early versions found cascades everywhere. A negative-control patient on aspirin, metoprolol, and vitamin D kept surfacing false positives. Getting the system to return a clean CBS 0 for him, and mean it, required tightening the temporal reasoning and evidence thresholds for novel detections.


Accomplishments I'm Proud Of

Three demo patients cover the main real-world failure modes:

Margaret Thompson (79F), classic anticholinergic cascade, ACB 4, CBS 10/10. Her own physician wrote a note recommending a discontinuation trial before committing to an Alzheimer's diagnosis. That trial never happened. CascadeBreaker finds that note and cites it. That's the whole point.

Robert Chen (68M), NSAID-driven triple cascade. Ibuprofen triggered pantoprazole, lisinopril, and a cough suppressant in sequence. His creatinine rose 67% over eight months. CascadeBreaker flags the NSAID + ACE inhibitor nephrotoxic combination from the lab trend alone.

James Wright (55M), no cascade. CBS 0. The control that proves the system can say "nothing to report" and mean it.

The test suite runs all three patients through every mode.


What I Learned

Building this forced a deep education in geriatric pharmacology. Prescribing cascades are well-documented in literature but almost invisible in clinical practice. The problem isn't knowledge, it's that no single clinician ever sees the whole chain. That gap is exactly where AI fits.

On the technical side: specificity is harder than sensitivity. Getting an AI to find real cascades is straightforward. Getting it to stay silent when there's nothing to find is the actual engineering challenge. The negative control patient experienced more prompt failures than either of the cascade patients did.

I also learned that clinical trust requires explainability at every step. A confidence score without a citation is useless to a clinician. Every finding in CascadeBreaker traces back to a source, a peer-reviewed paper, a lab value, or a physician's own note, because that's the only way a clinician can act on it.


What's Next

Validation against real patient cohorts, expansion beyond 40 cascade pairs, and integration with hospital EHR systems for systematic screening at admission and discharge.

Built With

  • a2a
  • anthropic
  • api
  • claude
  • fastmcp
  • fhir
  • mcp
  • ngrok
  • opinion
  • prompt
  • protocol
  • python
Share this project:

Updates