Does it work?
The synthetic cohort generator hides prescribing cascades inside 600 patients by sampling real CAUSES and TREATED_BY edges, and mixes in the confounders a real record has: drugs prescribed for a genuine diagnosis, deliberate pairs started together, and drugs started in the wrong order. The ground truth never enters the graph. Each row adds one graph signal.
Counterfactual replay
Every one of the cohort’s 2,443 prescriptions is re-checked as the record stood the day it was written (only earlier prescriptions and diagnoses count). When the check stops a true cascade, that drug and everything that followed from it are removed from the rest of the replay.
522 of 534 cascades got at least a caution · 20.9 stops per 100 prescriptions in a cohort seeded with cascades · 794 cautions · 19.4 s
632 hidden cascades · 2154 candidate links found by the graph · threshold 0.25 · 22.5 s on FalkorDB
Graph links only
Any CAUSES → TREATED_BY link between two of the patient’s drugs.
tp 632 · fp 1463 · fn 0 · deliberate pairs flagged 227
+ time order
The second drug must start after the first.
tp 630 · fp 810 · fn 2 · deliberate pairs flagged 200
+ onset window
Score by how common the effect is and whether the gap fits its usual onset.
tp 630 · fp 434 · fn 2 · deliberate pairs flagged 200
+ other reasons
Down-weight when the second drug has its own diagnosis, or the effect was already diagnosed.
tp 606 · fp 446 · fn 26 · deliberate pairs flagged 226
Domino (full)
Adds documented patterns and routes deliberate pairs (gastroprotection, potassium) aside.
tp 606 · fp 204 · fn 26 · deliberate pairs flagged 0