diff --git a/data/medication-interaction-index.json b/data/medication-interaction-index.json index 349623cfa6..23ddf90d0e 100644 --- a/data/medication-interaction-index.json +++ b/data/medication-interaction-index.json @@ -347,7 +347,8 @@ "severity": "low", "counterparties": ["diazepam", "disulfiram", "imipramine", "naltrexone"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — No pharmacokinetic interaction shown with diazepam, disulfiram, or imipramine. Naltrexone increases acamprosate exposure, but the PI states no dose adjustment is necessary. Monitor carefully with psychotropics not studied." } ], "unresolvedRowCount": 0 @@ -374,7 +375,8 @@ "tramadol-ir" ], "termIds": ["cns-depressants", "opioids"], - "resolved": false + "resolved": false, + "note": "CRITICAL - CNS depressants and other opioids increase sedation and respiratory-depression risk. Buprenorphine may complicate acute pain management; use specialist multimodal analgesia rather than assuming standard opioids simply fail." } ], "unresolvedRowCount": 1 @@ -411,7 +413,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "cns-depressants", "gabapentinoids", "opioids"], - "resolved": false + "resolved": false, + "note": "CRITICAL - CNS depressants, alcohol, benzodiazepines, gabapentinoids and other opioids can cause profound sedation, respiratory depression, coma and death. Acute pain may need specialist strategies; do not assume high-dose opioids are safe or ineffective." }, { "rowKey": "Pharmacodynamic", @@ -428,7 +431,8 @@ "temazepam" ], "termIds": ["alcohol", "benzodiazepines"], - "resolved": true + "resolved": true, + "note": "HIGH — Benzodiazepines/Alcohol (Increases risk of respiratory depression)." } ], "unresolvedRowCount": 1 @@ -441,7 +445,8 @@ "severity": "high", "counterparties": ["levodopa-benserazide"], "termIds": ["alcohol", "cyp-substrates"], - "resolved": false + "resolved": false, + "note": "HIGH — Bupropion and hydroxybupropion inhibit CYP2D6. For CYP2D6 substrates with narrow therapeutic index or dose-sensitive toxicity, start low or reduce the existing medicine dose; monitor closely. Also avoid/minimise alcohol and use caution with levodopa/amantadine or seizure-threshold-lowering drugs." } ], "unresolvedRowCount": 1 @@ -454,7 +459,8 @@ "severity": "high", "counterparties": ["amitriptyline", "chlorpromazine", "metronidazole", "phenytoin"], "termIds": ["alcohol"], - "resolved": true + "resolved": true, + "note": "HIGH - Alcohol and alcohol-containing preparations are contraindicated. Avoid metronidazole and paraldehyde. Monitor phenytoin levels if used together; disulfiram-alcohol reaction intensity may be increased by amitriptyline or chlorpromazine." } ], "unresolvedRowCount": 0 @@ -467,7 +473,8 @@ "severity": "high", "counterparties": ["carbamazepine", "phenytoin"], "termIds": ["antiretrovirals", "cns-depressants", "cyp-inducers", "st-johns-wort"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP inducers such as rifampicin, phenytoin, carbamazepine, St John's Wort, and some antiretrovirals can lower methadone exposure and precipitate withdrawal. CNS depressants increase sedation/respiratory depression; QT-prolongers and electrolyte-lowering medicines increase torsade risk." } ], "unresolvedRowCount": 1 @@ -495,7 +502,8 @@ "tramadol-ir" ], "termIds": ["opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioid analgesia is antagonised. Attempts to overcome blockade can cause fatal overdose; emergency opioid analgesia may require higher opioid doses and closer respiratory monitoring because respiratory depression may be deeper and prolonged." } ], "unresolvedRowCount": 0 @@ -515,7 +523,8 @@ "olanzapine-pamoate-lai" ], "termIds": ["acidic-drinks", "smoking"], - "resolved": true + "resolved": true, + "note": "CAUTION - Acidic drinks such as coffee, juice and soft drinks reduce buccal nicotine absorption; avoid them for 15 minutes before and during gum use. Smoking cessation can also increase levels of some CYP1A2 substrates such as clozapine or olanzapine." } ], "unresolvedRowCount": 0 @@ -538,7 +547,8 @@ "olanzapine-pamoate-lai" ], "termIds": ["acidic-drinks", "smoking"], - "resolved": true + "resolved": true, + "note": "CAUTION - Acidic drinks can reduce oral nicotine absorption. Smoking cessation can increase levels of CYP1A2 substrates such as theophylline, clozapine, olanzapine, imipramine, clomipramine, fluvoxamine, ropinirole, and caffeine." } ], "unresolvedRowCount": 0 @@ -551,7 +561,8 @@ "severity": "caution", "counterparties": ["nicotine-mouth-spray", "nicotine-patch", "nicotine-sublingual-tablet"], "termIds": ["acidic-drinks"], - "resolved": true + "resolved": true, + "note": "CAUTION - Do not eat or drink while the lozenge is in the mouth. Acidic drinks such as coffee, juice and soft drinks can reduce buccal nicotine absorption; avoid them for about 15 minutes before use." } ], "unresolvedRowCount": 0 @@ -564,7 +575,8 @@ "severity": "critical", "counterparties": [], "termIds": ["acidic-drinks"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Coffee, Juice, Soft Drinks. Acidic environment destroys mucosal absorption. Wait 15 mins." } ], "unresolvedRowCount": 0 @@ -583,7 +595,8 @@ "olanzapine-pamoate-lai" ], "termIds": ["smoking"], - "resolved": true + "resolved": true, + "note": "HIGH — Cigarette smoke (the polycyclic aromatic hydrocarbons, NOT the nicotine) heavily induces CYP1A2. When a patient stops smoking and uses a patch, their CYP1A2 drops. Drugs like Clozapine and Olanzapine will dangerously spike in the blood. Doses must be reduced." } ], "unresolvedRowCount": 0 @@ -596,7 +609,8 @@ "severity": "critical", "counterparties": [], "termIds": ["acidic-drinks"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Acidic drinks destroy oral absorption. Wait 15 mins." } ], "unresolvedRowCount": 0 @@ -609,7 +623,8 @@ "severity": "caution", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CAUTION — Transdermal NRT co-administration increased adverse effects in study data. Avoid routine combination unless there is a clear plan to monitor nausea, headache, vomiting, dizziness, dyspepsia, fatigue, and overall tolerability." }, { "rowKey": "Pharmacokinetic", @@ -617,7 +632,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Varenicline has minimal clinically meaningful CYP450 interaction burden and is largely renally excreted unchanged; renal function matters more than CYP-mediated interactions." } ], "unresolvedRowCount": 2 @@ -638,7 +654,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-selective beta-blockers (Propranolol). They block the beta-2 vasodilation of adrenaline, leaving alpha-1 vasoconstriction unopposed, causing massive, lethal hypertensive spikes." } ], "unresolvedRowCount": 0 @@ -651,7 +668,8 @@ "severity": "moderate", "counterparties": [], "termIds": ["alcohol", "cns-depressants"], - "resolved": false + "resolved": false, + "note": "MODERATE — Additive CNS depression if combined with alcohol or sedatives (due to slight BBB penetration)." } ], "unresolvedRowCount": 1 @@ -736,7 +754,8 @@ "opioids", "tcas" ], - "resolved": false + "resolved": false, + "note": "CRITICAL — Alcohol, opioids, benzodiazepines, barbiturates, antipsychotics, and other sedatives enhance CNS depression; MAOIs, TCAs, and atropine-like medicines intensify anticholinergic effects." }, { "rowKey": "Pharmacodynamic", @@ -782,7 +801,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — TCAs, Antipsychotics, Oxybutynin (Massive additive anticholinergic toxidrome)." } ], "unresolvedRowCount": 1 @@ -795,7 +815,8 @@ "severity": "critical", "counterparties": [], "termIds": ["grapefruit", "pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Organic Anion Transporting Polypeptides (OATP) in the gut absorb Fexofenadine. Fruit juices (orange, apple, grapefruit) profoundly inhibit OATP, blocking absorption by up to 70%. Drug will fail." }, { "rowKey": "Pharmacokinetic", @@ -803,7 +824,8 @@ "severity": "moderate", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "MODERATE — Antacids (Aluminium/Magnesium) bind the drug in the gut. Separate by 2 hours." } ], "unresolvedRowCount": 1 @@ -816,7 +838,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Metabolised by CYP3A4 and CYP2D6, but interaction potential is clinically insignificant at standard doses." } ], "unresolvedRowCount": 1 @@ -889,7 +912,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["alcohol", "anticholinergics", "antipsychotics", "benzodiazepines", "opioids", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive CNS depression with opioids, benzos, and alcohol. Additive anticholinergic toxidrome with TCAs/antipsychotics." } ], "unresolvedRowCount": 0 @@ -916,7 +940,8 @@ "tramadol-ir" ], "termIds": ["opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Buprenorphine's extreme receptor affinity means it can physically block full agonists (like Oxycodone) from working if breakthrough pain occurs. However, at the low doses in Norspan patches (5-20 mcg/hr), this blockade is minimal and breakthrough PRN opioids usually still work fine." } ], "unresolvedRowCount": 0 @@ -929,7 +954,8 @@ "severity": "critical", "counterparties": ["bupropion-sr", "fluoxetine", "morphine-sr-mr", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — **CYP2D6** Inhibitors (Fluoxetine, Paroxetine, Bupropion). These completely block the liver from converting Codeine to Morphine. The patient will get zero pain relief." }, { "rowKey": "Pharmacodynamic", @@ -937,7 +963,8 @@ "severity": "high", "counterparties": [], "termIds": ["cns-depressants"], - "resolved": false + "resolved": false, + "note": "HIGH — Additive sedation with other CNS depressants." } ], "unresolvedRowCount": 2 @@ -950,7 +977,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) block hepatic clearance, spiking blood levels and risking fatal apnoea." }, { "rowKey": "Pharmacodynamic", @@ -967,7 +995,8 @@ "temazepam" ], "termIds": ["benzodiazepines"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines (Synergistic respiratory arrest)." } ], "unresolvedRowCount": 1 @@ -989,7 +1018,8 @@ "temazepam" ], "termIds": ["benzodiazepines", "cns-depressants"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Benzodiazepines, CNS depressants." } ], "unresolvedRowCount": 1 @@ -1013,7 +1043,8 @@ "temazepam" ], "termIds": ["benzodiazepines", "gabapentinoids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines, Gabapentinoids (fatal respiratory arrest)." }, { "rowKey": "Pharmacodynamic", @@ -1040,7 +1071,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Antihypertensives (Morphine's histamine release guarantees a massive BP drop if given fast IV to a patient on BP meds)." } ], "unresolvedRowCount": 0 @@ -1062,7 +1094,8 @@ "temazepam" ], "termIds": ["benzodiazepines"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines (Synergistic respiratory arrest)." } ], "unresolvedRowCount": 0 @@ -1099,7 +1132,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "gabapentinoids", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines, Gabapentinoids, Alcohol. Co-administration is the #1 cause of fatal opioid overdoses due to profound synergistic respiratory depression." }, { "rowKey": "Pharmacokinetic", @@ -1107,7 +1141,8 @@ "severity": "high", "counterparties": ["clarithromycin", "oxycodone-sr-mr"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Clarithromycin, Azoles) increase oxycodone blood levels and toxicity." } ], "unresolvedRowCount": 1 @@ -1129,7 +1164,8 @@ "temazepam" ], "termIds": ["benzodiazepines"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines (Synergistic respiratory arrest)." }, { "rowKey": "Pharmacokinetic", @@ -1137,7 +1173,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 inhibitors (spikes levels)." } ], "unresolvedRowCount": 1 @@ -1150,7 +1187,8 @@ "severity": "low", "counterparties": ["codeine", "tramadol-ir"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Tapentadol does NOT rely on CYP450 enzymes. It is immune to the drug interactions that plague Tramadol and Codeine." }, { "rowKey": "Pharmacodynamic", @@ -1193,7 +1231,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["alcohol", "antipsychotics", "benzodiazepines"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with alcohol, benzos, and antipsychotics." } ], "unresolvedRowCount": 0 @@ -1222,7 +1261,8 @@ "venlafaxine-xr" ], "termIds": ["snris", "ssris", "st-johns-wort", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — SSRIs, SNRIs, TCAs, St John's Wort. Massive risk of lethal Serotonin Syndrome (hyperthermia, rigidity, clonus)." }, { "rowKey": "Pharmacokinetic", @@ -1250,7 +1290,8 @@ "venlafaxine-xr" ], "termIds": ["cyp-inhibitors", "opioids", "snris"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP2D6 inhibitors (Fluoxetine, Paroxetine) block conversion to the active M1 opioid metabolite, robbing the patient of opioid pain relief while increasing the SNRI seizure/serotonin risks." } ], "unresolvedRowCount": 1 @@ -1263,7 +1304,8 @@ "severity": "high", "counterparties": ["fluconazole"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Fluconazole (Inhibits CYP2C9, massively spiking Celecoxib levels. Halve Celecoxib dose)." }, { "rowKey": "Triple Whammy", @@ -1279,7 +1321,8 @@ "spironolactone" ], "termIds": ["acei", "diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi + Diuretic + Celecoxib = AKI." } ], "unresolvedRowCount": 0 @@ -1305,7 +1348,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — DOACs, Warfarin, Clopidogrel (GI Bleeding)." }, { "rowKey": "Triple Whammy", @@ -1315,16 +1359,15 @@ "amiloride", "candesartan", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "indapamide", - "meropenem", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi/ARB + Diuretic + Diclofenac = AKI." }, { "rowKey": "Pharmacokinetic", @@ -1332,7 +1375,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Lithium (massively raises lithium levels)." } ], "unresolvedRowCount": 1 @@ -1349,19 +1393,18 @@ "candesartan", "diclofenac", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "indapamide", "ketorolac", "meloxicam", - "meropenem", "naproxen", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAID + ACEi/ARB + Diuretic. Will virtually guarantee acute renal failure. NEVER prescribe this combination." }, { "rowKey": "Pharmacodynamic", @@ -1383,7 +1426,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "antiplatelets"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Anticoagulants (Warfarin, DOACs) and Antiplatelets (Clopidogrel). Massive increase in fatal GI bleeding." }, { "rowKey": "Pharmacokinetic", @@ -1391,7 +1435,8 @@ "severity": "high", "counterparties": ["aspirin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Blocks the cardioprotective effect of low-dose Aspirin by competing for the COX-1 binding site. Take aspirin 2 hours before ibuprofen." } ], "unresolvedRowCount": 0 @@ -1406,16 +1451,15 @@ "amiloride", "candesartan", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "indapamide", - "meropenem", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi/ARB + Diuretic + Ketorolac = Renal Necrosis." }, { "rowKey": "Pharmacodynamic", @@ -1436,7 +1480,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Warfarin, DOACs, Prophylactic Heparin (Massive bleeding risk)." } ], "unresolvedRowCount": 0 @@ -1453,19 +1498,18 @@ "candesartan", "diclofenac", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "ibuprofen", "indapamide", "ketorolac", - "meropenem", "naproxen", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAID + ACEi/ARB + Diuretic = AKI." }, { "rowKey": "Pharmacodynamic", @@ -1486,7 +1530,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Anticoagulants (DOACs/Warfarin). Massive GI bleeding risk." }, { "rowKey": "Pharmacokinetic", @@ -1494,7 +1539,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Lithium and Methotrexate (Reduces their renal clearance, causing toxic spikes)." } ], "unresolvedRowCount": 0 @@ -1511,19 +1557,18 @@ "candesartan", "diclofenac", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "ibuprofen", "indapamide", "ketorolac", "meloxicam", - "meropenem", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAID + ACEi/ARB + Diuretic = AKI." }, { "rowKey": "Pharmacodynamic", @@ -1544,7 +1589,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Anticoagulants (DOACs/Warfarin). High risk of fatal upper GI bleed." }, { "rowKey": "Pharmacokinetic", @@ -1552,7 +1598,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Lithium and Methotrexate (Naproxen heavily blocks their renal clearance, causing toxic spikes)." } ], "unresolvedRowCount": 0 @@ -1565,7 +1612,8 @@ "severity": "critical", "counterparties": [], "termIds": ["alcohol"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Chronic heavy alcohol use depletes glutathione stores and upregulates CYP2E1, drastically increasing the amount of toxic NAPQI produced. Alcoholics are at high risk of liver failure even at standard 4g/day doses." }, { "rowKey": "Pharmacodynamic", @@ -1573,7 +1621,8 @@ "severity": "high", "counterparties": ["flucloxacillin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — IV Flucloxacillin. Co-administration with high-dose paracetamol causes severe High Anion Gap Metabolic Acidosis (HAGMA) due to 5-oxoproline accumulation (especially in malnourished women)." } ], "unresolvedRowCount": 0 @@ -1588,16 +1637,15 @@ "amiloride", "candesartan", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "indapamide", - "meropenem", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi/ARB + Diuretic + Parecoxib = High risk of post-op renal failure." }, { "rowKey": "Pharmacokinetic", @@ -1605,7 +1653,8 @@ "severity": "high", "counterparties": ["fluconazole"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Fluconazole (CYP2C9 inhibitor) increases valdecoxib levels. Halve parecoxib dose." } ], "unresolvedRowCount": 0 @@ -1618,7 +1667,8 @@ "severity": "critical", "counterparties": ["lidocaine-patch"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive toxicity with other local anaesthetics. You must calculate the TOTAL cumulative dose if the patient has had a Lidocaine block and a Bupivacaine epidural." } ], "unresolvedRowCount": 0 @@ -1631,7 +1681,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — Safe to use with all systemic medications." } ], "unresolvedRowCount": 1 @@ -1644,7 +1695,8 @@ "severity": "low", "counterparties": ["amitriptyline", "pregabalin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Extremely safe to use alongside systemic neuropathic agents like Pregabalin or Amitriptyline (highly recommended synergistic combo)." } ], "unresolvedRowCount": 0 @@ -1657,7 +1709,8 @@ "severity": "high", "counterparties": ["bupivacaine", "flecainide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Additive toxicity with Class I antiarrhythmics (e.g., Flecainide) or other local anaesthetics (e.g., concurrent bupivacaine infusions)." } ], "unresolvedRowCount": 0 @@ -1680,7 +1733,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers and Amiodarone increase the risk of bradycardia and toxicity if lidocaine is used systemically." } ], "unresolvedRowCount": 0 @@ -1693,7 +1747,8 @@ "severity": "critical", "counterparties": ["atorvastatin", "digoxin", "rosuvastatin", "warfarin-anticoagulant", "warfarin-vka"], "termIds": ["pgp", "statins"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Potent inhibitor of CYP3A4, CYP2C9, and P-gp. Doubles the levels of Digoxin and Warfarin (halve their doses when starting amiodarone!). Increases statin toxicity." }, { "rowKey": "Pharmacodynamic", @@ -1709,7 +1764,8 @@ "sotalol" ], "termIds": ["beta-blockers", "qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "HIGH — Beta-blockers, CCBs, and other QTc prolonging drugs." } ], "unresolvedRowCount": 2 @@ -1729,7 +1785,8 @@ "verapamil" ], "termIds": ["macrolides", "pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Amiodarone, Verapamil, and Macrolides double Digoxin levels via P-glycoprotein inhibition." }, { "rowKey": "Pharmacodynamic", @@ -1744,7 +1801,8 @@ "spironolactone" ], "termIds": ["diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Diuretics (via potassium depletion)." } ], "unresolvedRowCount": 1 @@ -1765,7 +1823,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Beta-blockers/CCBs (additive negative inotropy and bradycardia)." }, { "rowKey": "Pharmacokinetic", @@ -1773,7 +1832,8 @@ "severity": "high", "counterparties": ["amiodarone", "fluoxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (fluoxetine, amiodarone) significantly increase flecainide levels." } ], "unresolvedRowCount": 1 @@ -1823,7 +1883,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["antipsychotics", "macrolides", "qtc-prolonging", "ssris"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Any other QT prolonging drugs (e.g., Macrolides, SSRIs, Antipsychotics) risk fatal arrhythmias." }, { "rowKey": "Pharmacodynamic", @@ -1831,7 +1892,8 @@ "severity": "critical", "counterparties": ["verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-DHP CCBs (Verapamil) risk asystole." } ], "unresolvedRowCount": 1 @@ -1844,7 +1906,8 @@ "severity": "critical", "counterparties": ["sildenafil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — PDE-5 Inhibitors (Sildenafil/Viagra). Co-administration within 24 hours causes catastrophic, refractory, and fatal hypotension. Check before giving in ED." }, { "rowKey": "Pharmacodynamic", @@ -1870,7 +1933,8 @@ "verapamil" ], "termIds": ["alcohol", "antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Alcohol, other antihypertensives (additive drops in BP)." } ], "unresolvedRowCount": 0 @@ -1883,7 +1947,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) spike Amlodipine levels, worsening edema and hypotension." }, { "rowKey": "Pharmacokinetic", @@ -1891,7 +1956,8 @@ "severity": "safe", "counterparties": ["felodipine"], "termIds": ["grapefruit"], - "resolved": true + "resolved": true, + "note": "SAFE — Unlike Felodipine, Amlodipine does NOT interact significantly with Grapefruit juice." } ], "unresolvedRowCount": 1 @@ -1907,19 +1973,18 @@ "aspirin", "diclofenac", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "ibuprofen", "indapamide", "ketorolac", "meloxicam", - "meropenem", "naproxen", "spironolactone" ], "termIds": ["arbs", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ARB + Diuretic + NSAID (Guaranteed AKI)." }, { "rowKey": "Pharmacodynamic", @@ -1927,7 +1992,8 @@ "severity": "high", "counterparties": ["spironolactone", "trimethoprim"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hyperkalemia with Spironolactone or Trimethoprim." } ], "unresolvedRowCount": 0 @@ -1948,7 +2014,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Beta-blockers. High risk of complete heart block and severe bradycardia if combined." }, { "rowKey": "Pharmacokinetic", @@ -1956,7 +2023,8 @@ "severity": "high", "counterparties": ["atorvastatin", "digoxin", "rosuvastatin"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "HIGH — Moderate **CYP3A4** inhibitor. Markedly increases statin levels (myopathy) and increases Digoxin concentrations by ~20%." } ], "unresolvedRowCount": 0 @@ -1969,7 +2037,8 @@ "severity": "critical", "counterparties": ["azithromycin", "clarithromycin", "erythromycin", "roxithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors", "grapefruit", "macrolides"], - "resolved": false + "resolved": false, + "note": "CRITICAL — **CYP3A4** inhibitors (macrolides, azoles, grapefruit juice) vastly increase felodipine levels causing severe hypotension." }, { "rowKey": "Pharmacokinetic", @@ -1977,7 +2046,8 @@ "severity": "caution", "counterparties": ["carbamazepine", "phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CAUTION — Inducers (carbamazepine, phenytoin) will drastically reduce efficacy." } ], "unresolvedRowCount": 1 @@ -1990,7 +2060,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors", "grapefruit"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors significantly increase levels (avoid grapefruit juice)." }, { "rowKey": "Pharmacodynamic", @@ -1998,7 +2069,8 @@ "severity": "caution", "counterparties": ["magnesium-sulfate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CAUTION — Magnesium sulfate (used in pre-eclampsia) plus nifedipine can cause profound neuromuscular blockade and hypotension." } ], "unresolvedRowCount": 1 @@ -2024,7 +2096,8 @@ "spironolactone" ], "termIds": ["acei", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi + Diuretic + NSAID (Ibuprofen/Naproxen). This combination guarantees acute renal failure by destroying both afferent and efferent glomerular blood flow." }, { "rowKey": "Pharmacodynamic", @@ -2039,7 +2112,8 @@ "spironolactone" ], "termIds": ["diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Potassium-sparing diuretics (Spironolactone), K+ supplements (Severe hyperkalemia)." } ], "unresolvedRowCount": 0 @@ -2063,7 +2137,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Beta-blockers (oral or IV). The combination leads to profound bradycardia, complete heart block, and cardiogenic shock." }, { "rowKey": "Pharmacokinetic", @@ -2071,7 +2146,8 @@ "severity": "high", "counterparties": ["atorvastatin", "digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Moderate **CYP3A4** inhibitor. Massively increases levels of Simvastatin/Atorvastatin (myopathy risk) and Digoxin." } ], "unresolvedRowCount": 0 @@ -2084,7 +2160,8 @@ "severity": "critical", "counterparties": ["diltiazem", "verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Verapamil and Diltiazem (Risk of asystole)." }, { "rowKey": "Pharmacodynamic", @@ -2092,7 +2169,8 @@ "severity": "high", "counterparties": ["amiodarone", "digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Digoxin, Amiodarone." } ], "unresolvedRowCount": 0 @@ -2105,7 +2183,8 @@ "severity": "critical", "counterparties": ["diltiazem", "verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-DHP CCBs (Verapamil, Diltiazem) due to profound AV node blockade." }, { "rowKey": "Pharmacodynamic", @@ -2113,7 +2192,8 @@ "severity": "high", "counterparties": ["amiodarone", "digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Amiodarone and Digoxin (additive bradycardia)." } ], "unresolvedRowCount": 0 @@ -2126,7 +2206,8 @@ "severity": "critical", "counterparties": ["diltiazem", "prazosin", "verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Verapamil/Diltiazem (asystole risk). Additive hypotension with other alpha-blockers (e.g., Prazosin)." }, { "rowKey": "Pharmacokinetic", @@ -2134,7 +2215,8 @@ "severity": "moderate", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "MODERATE — Increases Digoxin levels by ~15%." } ], "unresolvedRowCount": 0 @@ -2147,7 +2229,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Additive hypotension with halothane/anaesthetics. Bradycardia with non-DHP CCBs." } ], "unresolvedRowCount": 1 @@ -2160,7 +2243,8 @@ "severity": "critical", "counterparties": ["diltiazem", "verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Verapamil and Diltiazem. Concurrent use risks fatal asystole." }, { "rowKey": "Pharmacokinetic", @@ -2168,7 +2252,8 @@ "severity": "high", "counterparties": ["fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (e.g., fluoxetine, paroxetine) will significantly increase metoprolol levels and bradycardia risk." } ], "unresolvedRowCount": 1 @@ -2179,9 +2264,10 @@ "rowKey": "Pharmacodynamic", "rowIndex": 0, "severity": "critical", - "counterparties": ["candesartan", "ertapenem", "meropenem", "perindopril", "spironolactone"], + "counterparties": ["candesartan", "perindopril", "spironolactone"], "termIds": ["acei", "arbs"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi, ARBs, Spironolactone, K+ supplements. Do not use together unless under intense specialist monitoring." }, { "rowKey": "Pharmacodynamic", @@ -2189,7 +2275,8 @@ "severity": "high", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs (exacerbate renal failure and hyperkalemia)." } ], "unresolvedRowCount": 0 @@ -2202,15 +2289,17 @@ "severity": "critical", "counterparties": ["clarithromycin"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong **CYP3A4** inhibitors (clarithromycin, itraconazole) massively increase eplerenone levels. Use is contraindicated." }, { "rowKey": "Pharmacodynamic", "rowIndex": 1, "severity": "high", - "counterparties": ["candesartan", "ertapenem", "meropenem", "perindopril"], + "counterparties": ["candesartan", "perindopril"], "termIds": ["acei", "arbs"], - "resolved": true + "resolved": true, + "note": "HIGH — Potassium supplements, ACEi, ARBs (Hyperkalemia)." } ], "unresolvedRowCount": 1 @@ -2225,16 +2314,15 @@ "aspirin", "candesartan", "diclofenac", - "ertapenem", "ibuprofen", "ketorolac", "meloxicam", - "meropenem", "naproxen", "perindopril" ], "termIds": ["acei", "arbs", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs + ACEi/ARB + Frusemide = High risk of renal failure." }, { "rowKey": "Pharmacodynamic", @@ -2242,7 +2330,8 @@ "severity": "high", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Enhances lithium toxicity. Increases risk of digoxin toxicity via hypokalemia." } ], "unresolvedRowCount": 0 @@ -2255,7 +2344,8 @@ "severity": "high", "counterparties": ["indapamide"], "termIds": ["thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Lithium (thiazides reduce lithium clearance by 25-40%, causing severe toxicity)." }, { "rowKey": "Triple Whammy", @@ -2272,7 +2362,8 @@ "perindopril" ], "termIds": ["acei", "nsaids", "thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs + ACEi + Thiazide." } ], "unresolvedRowCount": 0 @@ -2285,7 +2376,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Lithium (decreases clearance, high toxicity risk)." }, { "rowKey": "Triple Whammy", @@ -2293,7 +2385,8 @@ "severity": "critical", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen", "perindopril"], "termIds": ["acei", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs + ACEi + Indapamide." } ], "unresolvedRowCount": 1 @@ -2304,9 +2397,10 @@ "rowKey": "Pharmacodynamic", "rowIndex": 0, "severity": "critical", - "counterparties": ["candesartan", "ertapenem", "meropenem", "perindopril"], + "counterparties": ["candesartan", "perindopril"], "termIds": ["acei", "arbs"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi, ARBs, potassium supplements (Massive hyperkalemia risk)." }, { "rowKey": "Pharmacokinetic", @@ -2314,7 +2408,8 @@ "severity": "caution", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CAUTION — May increase half-life of Digoxin. Monitor **TDM**." } ], "unresolvedRowCount": 0 @@ -2327,7 +2422,8 @@ "severity": "critical", "counterparties": ["amiodarone", "clarithromycin", "diltiazem"], "termIds": ["grapefruit"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Metabolised exclusively by **CYP3A4**. Inhibitors (Clarithromycin, Grapefruit juice, Amiodarone, Diltiazem) massively increase Atorvastatin levels, precipitating rhabdomyolysis." }, { "rowKey": "Pharmacokinetic", @@ -2335,7 +2431,8 @@ "severity": "high", "counterparties": ["rosuvastatin"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "HIGH — Gemfibrozil (Fibrate) blocks statin uptake, drastically increasing blood levels. Avoid combo." } ], "unresolvedRowCount": 0 @@ -2348,7 +2445,8 @@ "severity": "caution", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CAUTION — Bile acid sequestrants (Cholestyramine) bind to Ezetimibe in the gut. Must be taken 2 hours before or 4 hours after." }, { "rowKey": "Pharmacodynamic", @@ -2356,7 +2454,8 @@ "severity": "caution", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CAUTION — Fibrates (increases risk of gallstones/cholelithiasis)." } ], "unresolvedRowCount": 2 @@ -2369,7 +2468,8 @@ "severity": "critical", "counterparties": ["atorvastatin", "rosuvastatin"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Statins. The combo risks massive muscle breakdown. (Note: Gemfibrozil + Statin is an absolute contraindication. Fenofibrate + Statin is used with extreme caution)." }, { "rowKey": "Pharmacokinetic", @@ -2377,7 +2477,8 @@ "severity": "high", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Enhances the effect of Warfarin. Monitor INR closely." } ], "unresolvedRowCount": 0 @@ -2390,7 +2491,8 @@ "severity": "low", "counterparties": ["atorvastatin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Much fewer CYP interactions than Atorvastatin/Simvastatin." }, { "rowKey": "Pharmacokinetic", @@ -2398,7 +2500,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Cyclosporin (increases rosuvastatin levels 7-fold)." } ], "unresolvedRowCount": 1 @@ -2419,7 +2522,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Beta-blockers. Combining them massively increases the severity of rebound hypertension if Clonidine is missed/ceased (Beta-blockers leave alpha vasoconstriction unopposed)." }, { "rowKey": "Pharmacodynamic", @@ -2462,7 +2566,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["alcohol", "antipsychotics", "benzodiazepines"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with alcohol, benzos, and antipsychotics." } ], "unresolvedRowCount": 0 @@ -2475,7 +2580,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Additive hypotension with other vasodilators and anaesthetics." }, { "rowKey": "Pharmacodynamic", @@ -2497,7 +2603,8 @@ "spironolactone" ], "termIds": ["beta-blockers", "diuretics"], - "resolved": true + "resolved": true, + "note": "BENEFICIAL — Beta-blockers (blunt reflex tachycardia) and Diuretics (blunt fluid retention)." } ], "unresolvedRowCount": 1 @@ -2510,7 +2617,8 @@ "severity": "critical", "counterparties": ["sildenafil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — PDE-5 Inhibitors (Sildenafil/Viagra) cause severe, refractory hypotension if given within 4 hours of Prazosin." }, { "rowKey": "Pharmacodynamic", @@ -2532,7 +2640,8 @@ "spironolactone" ], "termIds": ["beta-blockers", "diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive effects with beta-blockers and diuretics." } ], "unresolvedRowCount": 0 @@ -2545,7 +2654,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (e.g., phenelzine). Since metaraminol releases endogenous norepinephrine, MAOIs prevent its breakdown, causing lethal hypertensive crisis." } ], "unresolvedRowCount": 0 @@ -2566,7 +2676,8 @@ "tranylcypromine" ], "termIds": ["maois", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs and TCAs massively potentiate the pressor effects, leading to hypertensive crisis." } ], "unresolvedRowCount": 0 @@ -2579,7 +2690,8 @@ "severity": "critical", "counterparties": ["sildenafil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — PDE5 inhibitors (e.g., Sildenafil) cause catastrophic hypotension." } ], "unresolvedRowCount": 0 @@ -2592,7 +2704,8 @@ "severity": "high", "counterparties": ["noradrenaline"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Additive profound vasoconstriction with Noradrenaline (though intentionally used together for synergy)." } ], "unresolvedRowCount": 0 @@ -2605,7 +2718,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — Significant systemic interactions are rare unless heavily abused." } ], "unresolvedRowCount": 1 @@ -2618,7 +2732,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Additive immunosuppression with systemic agents." } ], "unresolvedRowCount": 1 @@ -2631,7 +2746,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — No systemic interactions." } ], "unresolvedRowCount": 1 @@ -2644,7 +2760,8 @@ "severity": "unknown", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE." } ], "unresolvedRowCount": 1 @@ -2657,7 +2774,8 @@ "severity": "moderate", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "MODERATE — Delayed gastric emptying can slightly delay the absorption of concomitant oral medications." } ], "unresolvedRowCount": 1 @@ -2670,7 +2788,8 @@ "severity": "high", "counterparties": ["paracetamol"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Because it paralyzes the stomach (slows gastric emptying), it can severely delay the absorption of oral drugs that require rapid peak levels (e.g., Paracetamol, oral contraceptives, antibiotics)." } ], "unresolvedRowCount": 0 @@ -2706,7 +2825,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers, steroids." } ], "unresolvedRowCount": 0 @@ -2727,7 +2847,8 @@ "sotalol" ], "termIds": ["alcohol", "beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers (masks hypo symptoms). Alcohol (blocks hepatic gluconeogenesis, exacerbating hypos)." } ], "unresolvedRowCount": 0 @@ -2763,7 +2884,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Corticosteroids (spike BSL), Beta-blockers (mask hypos)." } ], "unresolvedRowCount": 0 @@ -2799,7 +2921,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers mask hypoglycemia. Corticosteroids massively increase insulin requirements." } ], "unresolvedRowCount": 0 @@ -2820,7 +2943,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers mask the adrenergic warning signs of hypoglycemia (tremor/tachycardia)." }, { "rowKey": "Pharmacodynamic", @@ -2844,7 +2968,8 @@ "triamcinolone" ], "termIds": ["corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Corticosteroids (Prednisolone) massively increase insulin resistance, requiring Glargine doses to be increased by 20-50%." } ], "unresolvedRowCount": 0 @@ -2880,7 +3005,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Corticosteroids, Beta-blockers." } ], "unresolvedRowCount": 0 @@ -2916,7 +3042,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers (masks hypos), steroids (causes resistance)." } ], "unresolvedRowCount": 0 @@ -2952,7 +3079,8 @@ "triamcinolone" ], "termIds": ["beta-blockers", "corticosteroids"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers, steroids." } ], "unresolvedRowCount": 0 @@ -2965,7 +3093,8 @@ "severity": "moderate", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "MODERATE — Delays the absorption of rapidly acting oral medications due to gastric stasis." } ], "unresolvedRowCount": 1 @@ -2978,7 +3107,8 @@ "severity": "high", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "HIGH — Antacids and digestive enzymes (e.g., Creon) will alter or abolish its effect." } ], "unresolvedRowCount": 0 @@ -2991,7 +3121,8 @@ "severity": "high", "counterparties": ["hydrochlorothiazide", "indapamide"], "termIds": ["thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypotension and dehydration if combined with Loop or Thiazide diuretics." } ], "unresolvedRowCount": 0 @@ -3004,7 +3135,8 @@ "severity": "high", "counterparties": ["hydrochlorothiazide", "indapamide"], "termIds": ["thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypovolemia/hypotension if combined with Loop or Thiazide diuretics." } ], "unresolvedRowCount": 0 @@ -3025,7 +3157,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers mask the physiological warning signs of a hypo (tremor, tachycardia), leaving only sweating as a warning sign. The patient may collapse without realizing their BSL dropped." } ], "unresolvedRowCount": 0 @@ -3046,7 +3179,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers mask the adrenergic warning signs of hypoglycemia (tremor/tachycardia)." }, { "rowKey": "Pharmacokinetic", @@ -3054,7 +3188,8 @@ "severity": "high", "counterparties": ["fluconazole"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Fluconazole/Miconazole inhibit CYP2C9, significantly increasing glipizide levels and hypo risk." } ], "unresolvedRowCount": 0 @@ -3067,7 +3202,8 @@ "severity": "high", "counterparties": [], "termIds": ["pgp"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong CYP3A4/P-gp inducers (Rifampicin) significantly drop linagliptin blood levels, reducing efficacy." } ], "unresolvedRowCount": 1 @@ -3080,7 +3216,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — IV Contrast Dye. Contrast can cause acute kidney injury. If a patient on metformin gets contrast-induced AKI, the metformin will accumulate and cause fatal lactic acidosis. Withhold metformin for 48 hours post-contrast if eGFR is borderline." }, { "rowKey": "Pharmacodynamic", @@ -3088,7 +3225,8 @@ "severity": "high", "counterparties": [], "termIds": ["alcohol"], - "resolved": true + "resolved": true, + "note": "HIGH — Alcohol (increases risk of lactic acidosis)." } ], "unresolvedRowCount": 1 @@ -3101,7 +3239,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Extremely clean drug interaction profile. Highly safe to mix with most ward medications." } ], "unresolvedRowCount": 1 @@ -3114,7 +3253,8 @@ "severity": "critical", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs (Massive risk of bleeding gastric ulcers)." } ], "unresolvedRowCount": 0 @@ -3134,7 +3274,8 @@ "spironolactone" ], "termIds": ["diuretics", "thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Potassium-wasting diuretics (Frusemide, Thiazides) will cause catastrophic, synergistic hypokalemia." }, { "rowKey": "Pharmacodynamic", @@ -3142,7 +3283,8 @@ "severity": "high", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Digoxin (Toxicity skyrockets due to the fludrocortisone-induced hypokalemia)." } ], "unresolvedRowCount": 0 @@ -3164,7 +3306,8 @@ "naproxen" ], "termIds": ["nsaids", "thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Loop/Thiazide Diuretics (Synergistic hypokalemia). NSAIDs (GI bleeding)." } ], "unresolvedRowCount": 0 @@ -3177,7 +3320,8 @@ "severity": "high", "counterparties": ["azithromycin", "clarithromycin", "erythromycin", "roxithromycin"], "termIds": ["azole-antifungals", "macrolides"], - "resolved": true + "resolved": true, + "note": "HIGH — Macrolides (Clarithromycin) and Azoles inhibit CYP3A4, blocking methylprednisolone clearance and worsening toxicity." } ], "unresolvedRowCount": 0 @@ -3199,7 +3343,8 @@ "pantoprazole" ], "termIds": ["nsaids", "ppis"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs. Concurrent use massively amplifies the risk of bleeding gastric ulcers. Cover with a PPI." }, { "rowKey": "Pharmacodynamic", @@ -3207,7 +3352,8 @@ "severity": "high", "counterparties": ["ciprofloxacin", "moxifloxacin", "norfloxacin"], "termIds": ["fluoroquinolones"], - "resolved": true + "resolved": true, + "note": "HIGH — Fluoroquinolones (Ciprofloxacin) exponentially increase the risk of Achilles tendon rupture." } ], "unresolvedRowCount": 0 @@ -3229,7 +3375,8 @@ "pantoprazole" ], "termIds": ["nsaids", "ppis"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs. Concurrent use massively amplifies the risk of bleeding gastric ulcers. Cover with a PPI." }, { "rowKey": "Pharmacodynamic", @@ -3237,7 +3384,8 @@ "severity": "high", "counterparties": ["ciprofloxacin", "moxifloxacin", "norfloxacin"], "termIds": ["fluoroquinolones"], - "resolved": true + "resolved": true, + "note": "HIGH — Fluoroquinolones (Ciprofloxacin) exponentially increase the risk of Achilles tendon rupture." } ], "unresolvedRowCount": 0 @@ -3250,7 +3398,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["acidic-drinks", "antacids", "food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium supplements, antacids, food, coffee, juice. ANY multivalent cation will bind the drug in the gut, dropping absorption to zero. Must separate by at least 2 hours." } ], "unresolvedRowCount": 0 @@ -3263,7 +3412,8 @@ "severity": "high", "counterparties": ["digoxin", "warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — As hyperthyroidism resolves, the clearance of other drugs (like Warfarin or Digoxin) slows down, massively increasing their toxicity if their doses aren't reduced accordingly." } ], "unresolvedRowCount": 0 @@ -3276,7 +3426,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Immunosuppressants (additive risk of severe infections)." } ], "unresolvedRowCount": 1 @@ -3289,7 +3440,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium, iron, antacids, bile-acid sequestrants, and some foods/drinks can markedly reduce absorption. Separate interacting doses and keep administration consistent." } ], "unresolvedRowCount": 0 @@ -3302,7 +3454,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids", "food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium supplements, antacids, dairy. Forms an indestructible physical complex in the gut, dropping absorption to zero. Separate by 2 hours." } ], "unresolvedRowCount": 0 @@ -3315,7 +3468,8 @@ "severity": "high", "counterparties": ["amikacin", "frusemide", "gentamicin"], "termIds": ["aminoglycosides", "loop-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Loop diuretics and Aminoglycosides massively compound the risk of nephrotoxicity and hypocalcemia." } ], "unresolvedRowCount": 0 @@ -3328,7 +3482,8 @@ "severity": "critical", "counterparties": ["carbamazepine", "phenytoin"], "termIds": ["antiretrovirals", "cyp-inducers", "st-johns-wort"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Enzyme inducers such as carbamazepine, phenytoin, rifampicin/rifabutin, some antiretrovirals, and St John's wort can reduce contraceptive efficacy; use a non-interacting method or additional contraception per guidance." }, { "rowKey": "Pharmacodynamic", @@ -3336,7 +3491,8 @@ "severity": "high", "counterparties": ["lamotrigine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Ethinylestradiol can lower lamotrigine concentrations during active tablets and levels may rebound during hormone-free intervals; coordinate dosing and monitoring if used together." } ], "unresolvedRowCount": 1 @@ -3349,7 +3505,8 @@ "severity": "critical", "counterparties": ["copper"], "termIds": ["cyp-inducers"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Enzyme inducers can reduce oral levonorgestrel exposure and emergency contraception efficacy; copper IUD is most reliable, or use current double-dose advice if oral levonorgestrel is chosen." } ], "unresolvedRowCount": 1 @@ -3362,7 +3519,8 @@ "severity": "high", "counterparties": ["carbamazepine", "phenytoin"], "termIds": ["cyp-inducers"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inducers (Carbamazepine, Phenytoin) accelerate the clearance of the oral tablets, but the massive 150mg IM depot is generally resistant to clinically failing from this." } ], "unresolvedRowCount": 1 @@ -3375,7 +3533,8 @@ "severity": "high", "counterparties": ["aspirin", "clopidogrel", "dipyridamole", "pantoprazole", "ticagrelor"], "termIds": ["antiplatelets", "ppis"], - "resolved": true + "resolved": true, + "note": "HIGH — CYP2C19 inhibition may reduce clopidogrel activation; avoid routine combination where antiplatelet effect is critical and use pantoprazole if a PPI is needed." } ], "unresolvedRowCount": 0 @@ -3388,7 +3547,8 @@ "severity": "safe", "counterparties": ["phenytoin", "warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "SAFE — Unlike Cimetidine (which violently blocks CYP450 enzymes and interacts with Warfarin/Phenytoin), Famotidine has ZERO effect on hepatic CYP enzymes. It is completely safe to mix." }, { "rowKey": "Pharmacokinetic", @@ -3396,7 +3556,8 @@ "severity": "high", "counterparties": ["iron"], "termIds": ["azole-antifungals"], - "resolved": true + "resolved": true, + "note": "HIGH — Drugs requiring an acidic gut to absorb (Ketoconazole, Iron) will fail to absorb properly." } ], "unresolvedRowCount": 0 @@ -3409,7 +3570,8 @@ "severity": "low", "counterparties": ["clopidogrel"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Unlike Omeprazole, Pantoprazole does NOT significantly inhibit CYP2C19. It is completely safe to use with Clopidogrel." }, { "rowKey": "Pharmacokinetic", @@ -3417,7 +3579,8 @@ "severity": "high", "counterparties": ["iron"], "termIds": ["azole-antifungals"], - "resolved": true + "resolved": true, + "note": "HIGH — Drugs requiring acidic pH for absorption (e.g., Ketoconazole, Itraconazole, Iron) will fail to absorb." } ], "unresolvedRowCount": 0 @@ -3491,7 +3654,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["alcohol", "anticholinergics", "antipsychotics", "benzodiazepines", "opioids", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive sedation and anticholinergic toxicity with opioids, benzodiazepines, alcohol, TCAs, antipsychotics, promethazine, oxybutynin, and other antimuscarinics." } ], "unresolvedRowCount": 0 @@ -3504,7 +3668,8 @@ "severity": "critical", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) block clearance, spiking Domperidone levels and causing lethal arrhythmias. DO NOT COMBINE." }, { "rowKey": "Pharmacodynamic", @@ -3521,7 +3686,8 @@ "sotalol" ], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Amiodarone, Sotalol, SSRIs (Additive QTc prolongation)." } ], "unresolvedRowCount": 1 @@ -3594,7 +3760,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["alcohol", "anticholinergics", "antipsychotics", "benzodiazepines", "opioids", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive anticholinergic and CNS-depressant effects with TCAs, antipsychotics, promethazine, oxybutynin, benzodiazepines, opioids, and alcohol." } ], "unresolvedRowCount": 0 @@ -3634,7 +3801,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["antipsychotics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Antipsychotics (Haloperidol, Risperidone). Massively amplifies EPSE and Neuroleptic Malignant Syndrome (NMS) risk." }, { "rowKey": "Pharmacodynamic", @@ -3650,7 +3818,8 @@ "solifenacin" ], "termIds": ["anticholinergics"], - "resolved": true + "resolved": true, + "note": "HIGH — Anticholinergics (e.g., Amitriptyline) completely cancel out the prokinetic gut effects of metoclopramide." } ], "unresolvedRowCount": 0 @@ -3675,7 +3844,8 @@ "sertraline" ], "termIds": ["macrolides", "qtc-prolonging", "ssris"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Other QTc prolonging drugs (Amiodarone, Haloperidol, SSRIs, Macrolides)." }, { "rowKey": "Pharmacodynamic", @@ -3683,7 +3853,8 @@ "severity": "moderate", "counterparties": [], "termIds": ["serotonergic"], - "resolved": false + "resolved": false, + "note": "MODERATE — Serotonergic drugs. Very rare risk of serotonin syndrome." } ], "unresolvedRowCount": 2 @@ -3696,7 +3867,8 @@ "severity": "critical", "counterparties": ["metoclopramide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other D2 antagonists (Haloperidol, Metoclopramide) vastly increase risk of Neuroleptic Malignant Syndrome (NMS) and severe EPSE." }, { "rowKey": "Pharmacodynamic", @@ -3727,7 +3899,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with Opioids/Benzodiazepines." } ], "unresolvedRowCount": 0 @@ -3784,7 +3957,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antihistamines", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive anticholinergic effects with TCAs, antipsychotics, and antihistamines." } ], "unresolvedRowCount": 0 @@ -3812,7 +3986,8 @@ "verapamil" ], "termIds": ["azole-antifungals", "opioids", "pgp"], - "resolved": false + "resolved": false, + "note": "MODERATE — P-gp inhibitors (e.g., Verapamil, Ketoconazole) can theoretically push loperamide across the blood-brain barrier, causing opioid sedation, but rare at normal doses." } ], "unresolvedRowCount": 1 @@ -3825,7 +4000,8 @@ "severity": "caution", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "CAUTION — Concurrent use with other nephrotoxic drugs (NSAIDs) increases the risk of renal failure." }, { "rowKey": "Pharmacokinetic", @@ -3833,7 +4009,8 @@ "severity": "low", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Decreases absorption of Digoxin." } ], "unresolvedRowCount": 0 @@ -3846,7 +4023,8 @@ "severity": "high", "counterparties": ["folic-acid"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Inhibits absorption of Folic Acid (MANDATORY to prescribe concurrent oral folic acid)." }, { "rowKey": "Pharmacodynamic", @@ -3854,7 +4032,8 @@ "severity": "moderate", "counterparties": ["gliclazide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "MODERATE — Can enhance the hypoglycemic effect of sulfonylureas (e.g., Gliclazide)." } ], "unresolvedRowCount": 0 @@ -3867,7 +4046,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "esomeprazole", "magnesium-oxide", "pantoprazole"], "termIds": ["antacids", "food", "ppis"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Antacids, Milk, and PPIs (Pantoprazole). These raise gastric pH, causing the enteric coating of Bisacodyl to dissolve in the stomach instead of the colon, leading to severe vomiting and gastric cramps. Separate by 2 hours." } ], "unresolvedRowCount": 0 @@ -3880,7 +4060,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Liquid paraffin (mineral oil laxatives). Docusate increases the systemic absorption of mineral oil, leading to lipoid pneumonia and hepatic granulomas. Never combine them." } ], "unresolvedRowCount": 1 @@ -3893,7 +4074,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Flushes EVERYTHING out. Any oral medication (e.g., blood pressure pills, oral contraceptives) taken within 2-3 hours of the prep will be flushed out completely unabsorbed." } ], "unresolvedRowCount": 1 @@ -3906,7 +4088,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — No significant drug interactions as it acts entirely locally." } ], "unresolvedRowCount": 1 @@ -3919,7 +4102,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Binds other oral medications. Separate by 2 hours." } ], "unresolvedRowCount": 1 @@ -3932,7 +4116,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Theoretically, oral antibiotics (like Neomycin) can kill the colonic bacteria needed to ferment lactulose, reducing its efficacy, but in practice, they are often used together successfully for encephalopathy." } ], "unresolvedRowCount": 1 @@ -3945,7 +4130,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Can speed up transit time, mildly reducing the absorption of other heavily reliant drugs. Separate by 1-2 hours if possible." } ], "unresolvedRowCount": 1 @@ -3958,7 +4144,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — May reduce transit time of other drugs." } ], "unresolvedRowCount": 1 @@ -3971,7 +4158,8 @@ "severity": "high", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Physically binds and traps other oral medications in the gut gel. Must separate Psyllium from ALL other drugs (especially Digoxin/Lithium) by at least 2 hours." } ], "unresolvedRowCount": 0 @@ -3984,7 +4172,8 @@ "severity": "low", "counterparties": ["digoxin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Minimal direct interactions, but chronic diarrhea can deplete potassium, increasing Digoxin toxicity risk." } ], "unresolvedRowCount": 0 @@ -4001,20 +4190,19 @@ "candesartan", "diclofenac", "eplerenone", - "ertapenem", "frusemide", "hydrochlorothiazide", "ibuprofen", "indapamide", "ketorolac", "meloxicam", - "meropenem", "naproxen", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — ACE inhibitors, ARBs, NSAIDs, diuretics, calcium channel blockers, and other drugs affecting renal perfusion/electrolytes increase AKI or electrolyte-risk context; avoid unless medically reviewed." } ], "unresolvedRowCount": 0 @@ -4027,7 +4215,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Broad-spectrum antibiotics may theoretically reduce the colonic bacteria needed to activate the drug, but rarely clinically significant." } ], "unresolvedRowCount": 1 @@ -4040,7 +4229,8 @@ "severity": "critical", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong combined inhibitors of CYP3A4 and P-gp (Ketoconazole, Clarithromycin). Avoid combination." }, { "rowKey": "Pharmacodynamic", @@ -4061,7 +4251,8 @@ "sertraline" ], "termIds": ["nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs, SSRIs." } ], "unresolvedRowCount": 1 @@ -4074,7 +4265,8 @@ "severity": "critical", "counterparties": ["amiodarone", "clarithromycin", "verapamil"], "termIds": ["pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — P-gp inhibitors (e.g., Amiodarone, Verapamil, Clarithromycin). These drastically increase Dabigatran absorption, causing severe bleeding. Dose reduction to 110mg BD is mandatory." }, { "rowKey": "Pharmacodynamic", @@ -4095,7 +4287,8 @@ "sertraline" ], "termIds": ["nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs, SSRIs, Aspirin (Additive bleeding risk)." } ], "unresolvedRowCount": 1 @@ -4126,7 +4319,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other anticoagulants, high-dose Aspirin, NSAIDs (Massive bleeding risk)." } ], "unresolvedRowCount": 0 @@ -4146,7 +4340,8 @@ "verapamil" ], "termIds": ["macrolides", "pgp"], - "resolved": false + "resolved": false, + "note": "HIGH — P-gp inhibitors (Amiodarone, Verapamil, Quinidine, Macrolides) increase Edoxaban levels. Often mandates a dose reduction to 30 mg." }, { "rowKey": "Pharmacodynamic", @@ -4167,7 +4362,8 @@ "sertraline" ], "termIds": ["nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs, Aspirin, SSRIs (Synergistic bleeding risk)." } ], "unresolvedRowCount": 1 @@ -4198,7 +4394,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other anticoagulants, high-dose Aspirin, NSAIDs." } ], "unresolvedRowCount": 0 @@ -4229,7 +4426,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other anticoagulants, Aspirin, NSAIDs. Massive bleeding risk." } ], "unresolvedRowCount": 0 @@ -4242,7 +4440,8 @@ "severity": "critical", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong combined inhibitors of CYP3A4 and P-gp (e.g., Ketoconazole, Ritonavir, Clarithromycin) massively increase bleeding risk." }, { "rowKey": "Pharmacodynamic", @@ -4263,7 +4462,8 @@ "sertraline" ], "termIds": ["nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs, SSRIs, Aspirin." } ], "unresolvedRowCount": 1 @@ -4276,7 +4476,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Combined Oral Contraceptive Pill (COCP). Using TXA and estrogen together synergistically increases the risk of a fatal DVT or PE." } ], "unresolvedRowCount": 1 @@ -4289,7 +4490,8 @@ "severity": "critical", "counterparties": ["amiodarone", "fluconazole", "metronidazole", "warfarin-anticoagulant"], "termIds": ["cotrimoxazole"], - "resolved": true + "resolved": true, + "note": "CRITICAL — **CYP2C9** Inhibitors (Fluconazole, Metronidazole, Amiodarone, Bactrim). These will massively spike Warfarin levels, shooting the INR to 8+ and causing fatal bleeding. Dose must be halved preemptively." }, { "rowKey": "Pharmacokinetic", @@ -4297,7 +4499,8 @@ "severity": "critical", "counterparties": ["carbamazepine", "warfarin-anticoagulant"], "termIds": ["st-johns-wort"], - "resolved": true + "resolved": true, + "note": "CRITICAL — **CYP2C9** Inducers (Carbamazepine, Rifampicin, St John's Wort). These destroy Warfarin, dropping the INR to 1.0 and causing massive strokes." }, { "rowKey": "Dietary", @@ -4305,7 +4508,8 @@ "severity": "high", "counterparties": ["vitamin-k", "warfarin-anticoagulant"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Leafy green vegetables (Spinach, Broccoli) contain high Vitamin K, directly canceling out Warfarin. Patients must maintain a consistent, unchanging diet." } ], "unresolvedRowCount": 0 @@ -4318,7 +4522,8 @@ "severity": "critical", "counterparties": ["amiodarone", "fluconazole", "metronidazole", "warfarin-vka"], "termIds": ["cotrimoxazole"], - "resolved": true + "resolved": true, + "note": "CRITICAL — **CYP2C9** inhibitors (Amiodarone, Metronidazole, Fluconazole, Bactrim) massively spike INR and cause bleeding. You MUST halve the warfarin dose if starting these." }, { "rowKey": "Pharmacodynamic", @@ -4339,7 +4544,8 @@ "sertraline" ], "termIds": ["nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs, Aspirin, SSRIs (increase bleeding risk without changing INR)." }, { "rowKey": "Dietary", @@ -4347,7 +4553,8 @@ "severity": "high", "counterparties": ["vitamin-k"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Leafy greens (broccoli, spinach) contain high Vitamin K and reverse the drug's effect. Diet must be consistent." } ], "unresolvedRowCount": 0 @@ -4378,7 +4585,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "antiplatelets", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other antiplatelets (Clopidogrel), DOACs, Warfarin, NSAIDs. Massively increases fatal bleed risk. (Dual Antiplatelet Therapy (DAPT) is strictly for stenting/ACS and usually limited to 1-12 months)." }, { "rowKey": "Pharmacokinetic", @@ -4386,7 +4594,8 @@ "severity": "caution", "counterparties": ["ibuprofen"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CAUTION — Ibuprofen competitively binds COX-1, physically blocking Aspirin from accessing the receptor. Take aspirin 2 hours before ibuprofen." } ], "unresolvedRowCount": 0 @@ -4399,7 +4608,8 @@ "severity": "critical", "counterparties": ["esomeprazole", "pantoprazole"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Omeprazole and Esomeprazole strongly inhibit **CYP2C19**. This prevents Clopidogrel from converting into its active form, leading to fatal stent thrombosis. Use Pantoprazole instead." }, { "rowKey": "Pharmacodynamic", @@ -4431,7 +4641,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "nsaids", "ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — Anticoagulants, NSAIDs, SSRIs (additive bleeding risk)." } ], "unresolvedRowCount": 0 @@ -4473,7 +4684,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive bleeding risk with other anticoagulants. Additive hypotension with antihypertensives." } ], "unresolvedRowCount": 0 @@ -4486,7 +4698,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals"], - "resolved": true + "resolved": true, + "note": "HIGH — Metabolised by **CYP3A4**. Strong inhibitors (ketoconazole, clarithromycin) drastically increase bleeding risk." }, { "rowKey": "Pharmacodynamic", @@ -4494,7 +4707,8 @@ "severity": "critical", "counterparties": ["aspirin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — High-dose Aspirin (>150 mg/day) reduces the efficacy of Ticagrelor. Aspirin dose MUST be strictly 100 mg/day." } ], "unresolvedRowCount": 0 @@ -4516,7 +4730,8 @@ "vancomycin" ], "termIds": ["loop-diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other nephrotoxic or ototoxic drugs, including vancomycin, loop diuretics, NSAIDs and contrast, can markedly increase gentamicin kidney/ear toxicity risk; avoid combinations where possible and monitor renal function/drug levels closely." } ], "unresolvedRowCount": 0 @@ -4529,7 +4744,8 @@ "severity": "critical", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — **Warfarin**. Fluconazole shuts down CYP2C9, causing Warfarin levels to skyrocket. INR will spike dangerously. Halve the Warfarin dose and monitor tightly." }, { "rowKey": "Pharmacokinetic", @@ -4553,7 +4769,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "statins"], - "resolved": true + "resolved": true, + "note": "HIGH — Statins (increased rhabdomyolysis), Phenytoin (toxicity), DOACs (bleeding)." } ], "unresolvedRowCount": 0 @@ -4566,7 +4783,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — No systemic drug interactions." } ], "unresolvedRowCount": 1 @@ -4588,7 +4806,8 @@ "naproxen" ], "termIds": ["aminoglycosides", "nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — Concurrent nephrotoxic drugs (NSAIDs, Aminoglycosides, Tazocin) exponentially increase AKI risk." } ], "unresolvedRowCount": 0 @@ -4601,7 +4820,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Live Attenuated Influenza Vaccine (LAIV). Oseltamivir will kill the live vaccine. Do not give LAIV within 2 weeks of taking Oseltamivir. (Note: Standard Australian flu shots are INACTIVATED and do not interact)." } ], "unresolvedRowCount": 1 @@ -4628,7 +4848,8 @@ "spironolactone" ], "termIds": ["acei", "diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — Nephrotoxic drugs (NSAIDs, ACEi, Diuretics) increase the risk of crystal nephropathy. Encourage heavy oral hydration." } ], "unresolvedRowCount": 0 @@ -4641,7 +4862,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Vaginal creams/pessaries contain oils that can degrade latex condoms and diaphragms, causing them to break. Warn patients to use alternative contraception methods." } ], "unresolvedRowCount": 1 @@ -4654,7 +4876,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Exceptionally clean drug interaction profile. Highly safe to use with anaesthetic agents." } ], "unresolvedRowCount": 1 @@ -4667,7 +4890,8 @@ "severity": "low", "counterparties": ["tramadol-ir"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Generally few drug-drug interactions, but additive neurotoxicity if given with other seizure-threshold lowering drugs (like high-dose Tramadol or Imipenem)." } ], "unresolvedRowCount": 0 @@ -4680,7 +4904,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — IV Calcium solutions (Hartmann's, Plasmalyte). Wait 48 hours or use distinct, deeply flushed lines." } ], "unresolvedRowCount": 1 @@ -4693,7 +4918,8 @@ "severity": "high", "counterparties": ["calcium-carbonate", "esomeprazole", "magnesium-oxide", "pantoprazole"], "termIds": ["antacids", "ppis"], - "resolved": true + "resolved": true, + "note": "HIGH — Antacids and PPIs (Pantoprazole) raise gastric pH, which severely drops the absorption of the oral prodrug. Separate by 2 hours or avoid." } ], "unresolvedRowCount": 0 @@ -4706,7 +4932,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Generally free of major liver/CYP interactions." } ], "unresolvedRowCount": 1 @@ -4719,7 +4946,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids", "food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Dairy, Calcium, Iron, Antacids. Multi-valent cations bind ciprofloxacin in the gut, dropping absorption to zero. Separate by 2-4 hours." }, { "rowKey": "Pharmacodynamic", @@ -4749,7 +4977,8 @@ "triamcinolone" ], "termIds": ["corticosteroids", "nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs (massively increases risk of seizures). Corticosteroids (exponentially increases risk of tendon rupture)." } ], "unresolvedRowCount": 0 @@ -4772,7 +5001,8 @@ "naproxen" ], "termIds": ["aminoglycosides", "loop-diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other nephrotoxic or ototoxic drugs, including aminoglycosides, loop diuretics and NSAIDs, increase toxicity risk; monitor renal function and vancomycin exposure closely." }, { "rowKey": "Pharmacodynamic", @@ -4790,7 +5020,8 @@ "naproxen" ], "termIds": ["aminoglycosides", "loop-diuretics", "nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — Aminoglycosides, Loop Diuretics, NSAIDs (additive nephrotoxicity)." } ], "unresolvedRowCount": 0 @@ -4820,7 +5051,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "statins"], - "resolved": true + "resolved": true, + "note": "LOW — Unlike Clarithromycin and Erythromycin, Azithromycin does NOT significantly inhibit CYP3A4. It is much safer to use alongside statins and DOACs." }, { "rowKey": "Pharmacodynamic", @@ -4828,7 +5060,8 @@ "severity": "critical", "counterparties": ["amiodarone", "ondansetron", "sotalol"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive QTc prolongation with Amiodarone, Haloperidol, Sotalol, Ondansetron." } ], "unresolvedRowCount": 0 @@ -4841,7 +5074,8 @@ "severity": "critical", "counterparties": ["apixaban", "atorvastatin", "colchicine", "rivaroxaban"], "termIds": ["pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Absolute blockade of **CYP3A4** and **P-glycoprotein**. Causes Atorvastatin to trigger rhabdomyolysis, Colchicine to cause fatal bone marrow failure, and Apixaban/Rivaroxaban to cause major bleeding. You MUST withhold these drugs while the patient is on Clarithromycin." }, { "rowKey": "Pharmacodynamic", @@ -4849,7 +5083,8 @@ "severity": "critical", "counterparties": ["amiodarone", "sotalol"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Synergistic QTc prolongation with Amiodarone, Haloperidol, Sotalol." } ], "unresolvedRowCount": 1 @@ -4862,7 +5097,8 @@ "severity": "critical", "counterparties": ["atorvastatin", "colchicine", "warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Shuts down **CYP3A4**. Fatal interactions with Simvastatin/Atorvastatin (rhabdomyolysis), Colchicine, and Warfarin." } ], "unresolvedRowCount": 0 @@ -4875,7 +5111,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Chelates with Iron, Calcium, and Antacids. Separate by 2 hours." }, { "rowKey": "Pharmacodynamic", @@ -4883,7 +5120,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Oral Retinoids (Isotretinoin/Roaccutane). Fatal interaction causing pseudotumor cerebri." } ], "unresolvedRowCount": 1 @@ -4913,7 +5151,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "macrolides"], - "resolved": true + "resolved": true, + "note": "LOW — It has very low affinity for CYP3A4 compared to Clarithromycin. It does not significantly spike levels of Atorvastatin, Warfarin, or DOACs, making it the macrolide of choice in polypharmacy." } ], "unresolvedRowCount": 0 @@ -4926,7 +5165,8 @@ "severity": "critical", "counterparties": ["frusemide", "vancomycin"], "termIds": ["loop-diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Vancomycin, Loop Diuretics (Frusemide), Cisplatin. Synergistic, catastrophic nephrotoxicity and ototoxicity." } ], "unresolvedRowCount": 0 @@ -4939,7 +5179,8 @@ "severity": "low", "counterparties": ["amikacin", "gentamicin"], "termIds": ["aminoglycosides"], - "resolved": true + "resolved": true, + "note": "LOW — Extremely clean interaction profile. Synergistic with aminoglycosides against Pseudomonas." } ], "unresolvedRowCount": 0 @@ -4952,7 +5193,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Neuromuscular blocking agents (Anaesthetics). Clindamycin has intrinsic neuromuscular blocking properties and will dangerously prolong the paralysis of surgical muscle relaxants." } ], "unresolvedRowCount": 1 @@ -4963,9 +5205,10 @@ "rowKey": "Pharmacodynamic", "rowIndex": 0, "severity": "critical", - "counterparties": ["candesartan", "ertapenem", "meropenem", "perindopril", "spironolactone"], + "counterparties": ["candesartan", "perindopril", "spironolactone"], "termIds": ["acei", "arbs"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi, ARBs, Spironolactone (Guarantees severe hyperkalemia)." }, { "rowKey": "Pharmacokinetic", @@ -4973,7 +5216,8 @@ "severity": "critical", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Methotrexate (Both block folate synthesis. Combo causes fatal bone marrow failure)." }, { "rowKey": "Pharmacokinetic", @@ -4981,7 +5225,8 @@ "severity": "high", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Warfarin (Drastically increases INR)." } ], "unresolvedRowCount": 0 @@ -4994,7 +5239,8 @@ "severity": "critical", "counterparties": ["amikacin", "gentamicin"], "termIds": ["aminoglycosides"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Neuromuscular blocking agents (Rocuronium) and Aminoglycosides. The combination causes prolonged, fatal respiratory muscle paralysis." }, { "rowKey": "Pharmacodynamic", @@ -5002,7 +5248,8 @@ "severity": "high", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen", "vancomycin"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — Nephrotoxins (NSAIDs, Vancomycin). Synergistic kidney destruction." } ], "unresolvedRowCount": 0 @@ -5015,7 +5262,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Sodium Valproate. Ertapenem rapidly destroys valproate blood levels, dropping them to sub-therapeutic levels within 24 hours, guaranteeing breakthrough seizures in epileptics. AVOID." } ], "unresolvedRowCount": 1 @@ -5028,7 +5276,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Sodium Valproate (Epilim). Meropenem rapidly accelerates the hepatic breakdown of Valproate. Blood levels drop to zero within 24 hours. The interaction cannot be overcome by increasing Valproate dose. Use alternative antibiotic or antiepileptic." } ], "unresolvedRowCount": 1 @@ -5041,7 +5290,8 @@ "severity": "critical", "counterparties": ["disulfiram"], "termIds": ["alcohol"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Alcohol. Causes a severe 'Disulfiram-like' reaction (accumulation of acetaldehyde) resulting in violent vomiting, flushing, tachycardia, and hypotension. Must avoid alcohol during and for 48h after course." }, { "rowKey": "Pharmacokinetic", @@ -5049,7 +5299,8 @@ "severity": "high", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Warfarin. Metronidazole inhibits CYP2C9, drastically spiking INR. Halve the Warfarin dose proactively." } ], "unresolvedRowCount": 0 @@ -5062,7 +5313,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Iron, Calcium, Antacids. Multi-valent cations bind the drug in the gut, dropping absorption to zero. Separate by 4 hours." }, { "rowKey": "Pharmacodynamic", @@ -5079,7 +5331,8 @@ "sotalol" ], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Amiodarone, Sotalol, SSRIs (Synergistic fatal QTc prolongation)." } ], "unresolvedRowCount": 0 @@ -5092,7 +5345,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Iron, Calcium, Magnesium (Antacids). Binds the drug in the gut, completely blocking absorption. Separate by 2-4 hours." } ], "unresolvedRowCount": 0 @@ -5105,7 +5359,8 @@ "severity": "high", "counterparties": ["allopurinol"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Allopurinol (Concurrent use massively increases the risk of a severe skin rash)." }, { "rowKey": "Pharmacokinetic", @@ -5113,7 +5368,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Methotrexate (Penicillins reduce renal clearance of MTX, risking fatal bone marrow toxicity)." } ], "unresolvedRowCount": 0 @@ -5126,7 +5382,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Increases toxicity of Methotrexate (reduced renal clearance)." }, { "rowKey": "Pharmacodynamic", @@ -5134,7 +5391,8 @@ "severity": "moderate", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "MODERATE — Can prolong INR in patients on Warfarin." } ], "unresolvedRowCount": 0 @@ -5147,7 +5405,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Extremely low systemic blood levels mean drug interactions are virtually non-existent." } ], "unresolvedRowCount": 1 @@ -5160,7 +5419,8 @@ "severity": "high", "counterparties": [], "termIds": ["food"], - "resolved": true + "resolved": true, + "note": "HIGH — Food severely impairs absorption." }, { "rowKey": "Pharmacokinetic", @@ -5168,7 +5428,8 @@ "severity": "high", "counterparties": ["probenecid"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Probenecid blocks renal tubular secretion, doubling blood levels (often used intentionally in bone infections)." } ], "unresolvedRowCount": 0 @@ -5181,7 +5442,8 @@ "severity": "high", "counterparties": ["paracetamol"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Paracetamol. Co-administration of IV Flucloxacillin and high-dose Paracetamol in malnourished/elderly women can trigger severe High Anion Gap Metabolic Acidosis (HAGMA) due to 5-oxoproline accumulation." } ], "unresolvedRowCount": 0 @@ -5194,7 +5456,8 @@ "severity": "high", "counterparties": [], "termIds": ["food"], - "resolved": true + "resolved": true, + "note": "HIGH — Food drops absorption by up to 50%. Must take 1 hour before or 2 hours after meals." }, { "rowKey": "Pharmacokinetic", @@ -5202,7 +5465,8 @@ "severity": "high", "counterparties": ["probenecid"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Probenecid blocks renal excretion, doubling blood levels." } ], "unresolvedRowCount": 0 @@ -5215,7 +5479,8 @@ "severity": "critical", "counterparties": ["vancomycin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Vancomycin. The combination 'Vanc/Taz' is notoriously nephrotoxic. Monitor creatinine daily." }, { "rowKey": "Pharmacokinetic", @@ -5223,7 +5488,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Methotrexate (decreases clearance, risking fatal MTX toxicity)." } ], "unresolvedRowCount": 0 @@ -5236,7 +5502,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "iron", "magnesium-oxide"], "termIds": ["antacids", "food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Chelates heavily with multivalent cations. Iron, Calcium, Magnesium (Antacids), and Dairy products will irreversibly bind Doxycycline in the gut, dropping absorption to zero. Separate by 2-4 hours." }, { "rowKey": "Pharmacokinetic", @@ -5244,7 +5511,8 @@ "severity": "high", "counterparties": ["carbamazepine", "phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Phenytoin and Carbamazepine induce Doxy metabolism, slashing its half-life to 7 hours." } ], "unresolvedRowCount": 0 @@ -5257,7 +5525,8 @@ "severity": "moderate", "counterparties": ["metoclopramide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "MODERATE — Metoclopramide accelerates gastric emptying and drastically reduces the absorption of fosfomycin. Separate or avoid." } ], "unresolvedRowCount": 0 @@ -5270,7 +5539,8 @@ "severity": "high", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "HIGH — Antacids containing magnesium delay absorption." }, { "rowKey": "Pharmacodynamic", @@ -5278,7 +5548,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Antagonises the action of nalidixic acid (rarely used)." } ], "unresolvedRowCount": 1 @@ -5289,9 +5560,10 @@ "rowKey": "Pharmacodynamic", "rowIndex": 0, "severity": "critical", - "counterparties": ["candesartan", "ertapenem", "meropenem", "perindopril", "spironolactone"], + "counterparties": ["candesartan", "perindopril", "spironolactone"], "termIds": ["acei", "arbs"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi, ARBs, Spironolactone. The combination guarantees hyperkalemia in the elderly. Check K+ levels." }, { "rowKey": "Pharmacokinetic", @@ -5299,7 +5571,8 @@ "severity": "critical", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Methotrexate. Co-administration causes fatal bone marrow failure." } ], "unresolvedRowCount": 0 @@ -5312,7 +5585,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Azathioprine and 6-Mercaptopurine. Xanthine oxidase breaks down these immunosuppressants. Allopurinol blocks this, causing 1000x fatal bone marrow toxicity. Do NOT combine without oncology oversight." }, { "rowKey": "Pharmacodynamic", @@ -5320,7 +5594,8 @@ "severity": "high", "counterparties": ["amoxicillin", "amoxicillin-clavulanate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Amoxicillin/Ampicillin (massive increase in non-allergic maculopapular rash)." } ], "unresolvedRowCount": 1 @@ -5356,7 +5631,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Extreme additive CNS depression and weakness if combined with Opioids, Benzodiazepines, or Alcohol." }, { "rowKey": "Pharmacodynamic", @@ -5382,7 +5658,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Antihypertensives (Additive hypotension)." } ], "unresolvedRowCount": 0 @@ -5402,7 +5679,8 @@ "verapamil" ], "termIds": ["azole-antifungals", "macrolides", "pgp"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Macrolides (Clarithromycin), Azoles, and Verapamil/Diltiazem block CYP3A4/P-gp. Colchicine levels spike exponentially, causing fatal multi-organ failure. AVOID combination." }, { "rowKey": "Pharmacodynamic", @@ -5410,7 +5688,8 @@ "severity": "high", "counterparties": ["atorvastatin", "rosuvastatin"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "HIGH — Statins (additive risk of severe myopathy/rhabdomyolysis)." } ], "unresolvedRowCount": 1 @@ -5423,7 +5702,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid calcium channel blockers with IV dantrolene because severe hyperkalaemia and cardiovascular collapse have been reported." } ], "unresolvedRowCount": 1 @@ -5436,7 +5716,8 @@ "severity": "high", "counterparties": ["amiodarone", "azithromycin", "clarithromycin", "erythromycin", "roxithromycin"], "termIds": ["macrolides", "qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "HIGH — Other QTc prolonging drugs (e.g., Amiodarone, Macrolides)." }, { "rowKey": "Pharmacokinetic", @@ -5444,7 +5725,8 @@ "severity": "low", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "LOW — Antacids reduce absorption (separate by 4 hours)." } ], "unresolvedRowCount": 1 @@ -5457,7 +5739,8 @@ "severity": "critical", "counterparties": ["trimethoprim"], "termIds": ["cotrimoxazole"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Trimethoprim (Bactrim). Completely blocks folate synthesis at a different step. Co-administration causes catastrophic bone marrow failure. NEVER combine." }, { "rowKey": "Pharmacokinetic", @@ -5474,7 +5757,8 @@ "pantoprazole" ], "termIds": ["nsaids", "ppis"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs, Penicillins, PPIs (Reduce renal clearance of methotrexate, spiking toxicity)." } ], "unresolvedRowCount": 0 @@ -5525,7 +5809,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive and severe anticholinergic toxicity when combined with TCAs (Amitriptyline), Antipsychotics, and Promethazine." }, { "rowKey": "Pharmacodynamic", @@ -5556,7 +5841,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive CNS depression with Opioids and Benzos." } ], "unresolvedRowCount": 0 @@ -5569,7 +5855,8 @@ "severity": "critical", "counterparties": ["aspirin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Low-dose Aspirin antagonises the uricosuric effect of Probenecid. Do not use together." }, { "rowKey": "Pharmacokinetic", @@ -5577,7 +5864,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Penicillins and Cephalosporins (massively increases their blood levels and half-life)." }, { "rowKey": "Pharmacokinetic", @@ -5585,7 +5873,8 @@ "severity": "high", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Methotrexate (reduces MTX clearance, spiking fatal toxicity)." } ], "unresolvedRowCount": 1 @@ -5598,7 +5887,8 @@ "severity": "critical", "counterparties": ["copper"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Strong inducer of **CYP3A4**. It rapidly destroys the estrogen/progesterone in the Combined Oral Contraceptive Pill. Women MUST use alternative non-hormonal contraception (Copper IUD) while on the drug and for 1 month after stopping." }, { "rowKey": "Pharmacokinetic", @@ -5606,7 +5896,8 @@ "severity": "high", "counterparties": ["diazepam", "phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Inhibits CYP2C19 (Spikes levels of Diazepam, Phenytoin, Omeprazole)." } ], "unresolvedRowCount": 0 @@ -5628,7 +5919,8 @@ "solifenacin" ], "termIds": ["anticholinergics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Anticholinergics (e.g., Oxybutynin, Amitriptyline, Promethazine). These drugs directly cancel each other out. Prescribing both is irrational and guarantees clinical failure." }, { "rowKey": "Pharmacodynamic", @@ -5645,7 +5937,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers, Amiodarone (additive bradycardia/syncope)." } ], "unresolvedRowCount": 0 @@ -5688,7 +5981,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["antipsychotics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Antipsychotics (Haloperidol, Metoclopramide) are D2 antagonists. They directly block Levodopa from working, instantly paralyzing the Parkinson's patient. If an antiemetic is needed, use Domperidone or Ondansetron. If an antipsychotic is needed, use Quetiapine." } ], "unresolvedRowCount": 0 @@ -5701,7 +5995,8 @@ "severity": "high", "counterparties": ["ketamine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Other NMDA antagonists (Amantadine, Ketamine, Dextromethorphan). Avoid combination due to risk of pharmacotoxic psychosis." }, { "rowKey": "Pharmacokinetic", @@ -5709,7 +6004,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Very clean metabolic profile (no CYP interactions)." } ], "unresolvedRowCount": 1 @@ -5741,7 +6037,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants", "macrolides"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Massively induces CYP3A4, CYP1A2, and CYP2C9. Destroys efficacy of DOACs (Apixaban/Rivaroxaban), Warfarin, Oral Contraceptives, Clozapine, Quetiapine, and Macrolides. A nightmare for polypharmacy." }, { "rowKey": "Pharmacokinetic", @@ -5749,7 +6046,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Valproate pushes Carbamazepine off proteins and inhibits its breakdown, causing a massive spike in the toxic active metabolite (carbamazepine-10,11-epoxide)." } ], "unresolvedRowCount": 1 @@ -5777,7 +6075,8 @@ "tramadol-ir" ], "termIds": ["opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids. The combination of Gabapentin + Oxycodone/Morphine is a leading cause of accidental respiratory overdose in chronic pain patients." }, { "rowKey": "Pharmacokinetic", @@ -5785,7 +6084,8 @@ "severity": "high", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["antacids"], - "resolved": true + "resolved": true, + "note": "HIGH — Antacids (Magnesium/Aluminium) physically block absorption in the gut. Separate by 2 hours." } ], "unresolvedRowCount": 0 @@ -5798,7 +6098,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Valproate heavily inhibits glucuronidation, doubling Lamotrigine levels and guaranteeing SJS. Must use the specialized 'Blue' titration pack." }, { "rowKey": "Pharmacokinetic", @@ -5806,7 +6107,8 @@ "severity": "high", "counterparties": ["carbamazepine", "phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Carbamazepine/Phenytoin induce clearance, halving Lamotrigine levels. Must use the 'Green' pack." }, { "rowKey": "Endocrine", @@ -5814,7 +6116,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — The combined oral contraceptive pill (COCP) halves lamotrigine blood levels. If the woman stops the pill for the placebo week, lamotrigine levels spike, causing acute neurotoxicity (ataxia/double vision)." } ], "unresolvedRowCount": 2 @@ -5840,7 +6143,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "LOW — Essentially zero drug-drug interactions. Safe to mix with all other anticonvulsants, OCPs, and DOACs." } ], "unresolvedRowCount": 0 @@ -5867,7 +6171,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Broad-spectrum enzyme INDUCER (CYP3A4, CYP2C9). Obliterates blood levels of OCPs, DOACs, Warfarin, and Quetiapine." }, { "rowKey": "Pharmacokinetic", @@ -5875,7 +6180,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Highly protein bound. Valproate will knock Phenytoin off albumin, causing 'free' (active) Phenytoin levels to spike and cause toxicity, even while total Phenytoin lab levels look normal." } ], "unresolvedRowCount": 1 @@ -5911,7 +6217,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Benzodiazepines, Alcohol. The combination causes profound respiratory arrest and is the leading cause of poly-drug overdose deaths globally." } ], "unresolvedRowCount": 0 @@ -5924,7 +6231,8 @@ "severity": "critical", "counterparties": ["lamotrigine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Lamotrigine. Valproate completely blocks the clearance of Lamotrigine, doubling its levels and causing fatal SJS/TEN. If combining, Lamotrigine dose must be halved and titrated glacially." }, { "rowKey": "Pharmacokinetic", @@ -5932,7 +6240,8 @@ "severity": "critical", "counterparties": ["meropenem"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Meropenem/Carbapenems. Within 24 hours of starting Meropenem, Valproate levels drop to ZERO. The patient will seize. Avoid combination." } ], "unresolvedRowCount": 0 @@ -5945,7 +6254,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Doses > 200mg/day induce CYP3A4, accelerating the clearance of oral contraceptives (OCPs), rendering them ineffective and leading to unplanned pregnancies." } ], "unresolvedRowCount": 1 @@ -5972,7 +6282,8 @@ "venlafaxine-xr" ], "termIds": ["maois", "snris", "ssris"], - "resolved": true + "resolved": true, + "note": "CAUTION — Serotonergic medicines such as SSRIs, SNRIs, and tramadol rarely cause serotonin toxicity with triptans; counsel and monitor. MAOIs remain contraindicated." }, { "rowKey": "Pharmacodynamic", @@ -5980,7 +6291,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Ergotamines (e.g., Cafergot). Risk of prolonged, severe vasospasm. Must separate by 24 hours." } ], "unresolvedRowCount": 1 @@ -6008,7 +6320,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol. Co-ingestion is a primary cause of overdose death." }, { "rowKey": "Pharmacokinetic", @@ -6016,7 +6329,8 @@ "severity": "critical", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong CYP3A4 inhibitors (Ketoconazole, Clarithromycin) significantly increase Alprazolam toxicity." } ], "unresolvedRowCount": 1 @@ -6044,7 +6358,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol (Fatal respiratory arrest)." }, { "rowKey": "Pharmacokinetic", @@ -6052,7 +6367,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 inhibitors (Clarithromycin, Ketoconazole) spike clonazepam levels." } ], "unresolvedRowCount": 1 @@ -6080,7 +6396,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "barbiturates", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Barbiturates, Alcohol. Additive and synergistic CNS/respiratory depression. Major cause of overdose deaths." }, { "rowKey": "Pharmacokinetic", @@ -6088,7 +6405,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 and CYP2C19 inhibitors (e.g., Omeprazole, Cimetidine) significantly prolong half-life." } ], "unresolvedRowCount": 1 @@ -6116,7 +6434,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "barbiturates", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol, Barbiturates (fatal respiratory depression)." } ], "unresolvedRowCount": 0 @@ -6129,7 +6448,8 @@ "severity": "critical", "counterparties": ["fentanyl", "morphine-sr-mr"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Fentanyl / Morphine. The combination of Midazolam + Fentanyl is synergistic for procedural sedation but synergistic for fatal apnoea." }, { "rowKey": "Pharmacokinetic", @@ -6137,7 +6457,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inhibitors (Clarithromycin) massively prolong the coma." } ], "unresolvedRowCount": 1 @@ -6165,7 +6486,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol (Fatal respiratory arrest)." }, { "rowKey": "Pharmacokinetic", @@ -6173,7 +6495,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 inhibitors (Clarithromycin, Azoles) prolong half-life further." } ], "unresolvedRowCount": 1 @@ -6201,7 +6524,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol (Fatal respiratory arrest)." }, { "rowKey": "Pharmacokinetic", @@ -6209,7 +6533,8 @@ "severity": "low", "counterparties": ["amiodarone", "clarithromycin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "LOW — Impervious to CYP450 drug interactions. Safe to mix with Clarithromycin or Amiodarone." } ], "unresolvedRowCount": 0 @@ -6237,7 +6562,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Opioids, Alcohol (Fatal respiratory arrest)." }, { "rowKey": "Pharmacokinetic", @@ -6245,7 +6571,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — No significant CYP interactions." } ], "unresolvedRowCount": 1 @@ -6258,7 +6585,8 @@ "severity": "critical", "counterparties": [], "termIds": ["alcohol"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Alcohol (Massively increases the risk of sleepwalking/amnesia and respiratory depression)." }, { "rowKey": "Pharmacokinetic", @@ -6266,7 +6594,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 inhibitors (increase levels) and inducers (Rifampicin makes Zolpidem useless)." } ], "unresolvedRowCount": 1 @@ -6279,7 +6608,8 @@ "severity": "critical", "counterparties": [], "termIds": ["alcohol", "cns-depressants"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Alcohol and other CNS depressants (Synergistic respiratory depression)." }, { "rowKey": "Pharmacokinetic", @@ -6287,7 +6617,8 @@ "severity": "high", "counterparties": ["erythromycin"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP3A4 inhibitors (e.g., Erythromycin) double blood levels, causing severe next-day sedation." } ], "unresolvedRowCount": 2 @@ -6300,7 +6631,8 @@ "severity": "high", "counterparties": ["fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP2D6** inhibitors (Fluoxetine, Paroxetine) massively spike Atomoxetine levels. Max dose must be capped at 80 mg/day (or much lower in children) if combined." }, { "rowKey": "Pharmacodynamic", @@ -6308,7 +6640,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (Fatal hypertensive crisis)." } ], "unresolvedRowCount": 1 @@ -6321,7 +6654,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (Fatal hypertensive crisis). Must wait 14 days after stopping MAOI." }, { "rowKey": "Pharmacokinetic", @@ -6329,7 +6663,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Vitamin C / Acidic juices. Acidic urine massively accelerates the excretion of amphetamine, dropping blood levels. Ural / alkaline urine traps the drug in the blood, causing toxicity." } ], "unresolvedRowCount": 1 @@ -6342,7 +6677,8 @@ "severity": "high", "counterparties": ["carbamazepine", "clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) drastically spike Guanfacine levels, causing severe hypotension/bradycardia. Dose must be halved. Inducers (Carbamazepine) require dose doubling." }, { "rowKey": "Pharmacodynamic", @@ -6368,7 +6704,8 @@ "verapamil" ], "termIds": ["antihypertensives", "cns-depressants"], - "resolved": false + "resolved": false, + "note": "HIGH — Antihypertensives (Additive BP drop). CNS Depressants (Additive sedation)." } ], "unresolvedRowCount": 2 @@ -6381,7 +6718,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (Hypertensive crisis)." }, { "rowKey": "Pharmacokinetic", @@ -6389,7 +6727,8 @@ "severity": "high", "counterparties": ["ascorbic-acid"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Urinary alkalizers (Ural) reduce clearance; Ascorbic acid (Vit C) accelerates clearance." } ], "unresolvedRowCount": 0 @@ -6402,7 +6741,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (Fatal hypertensive crisis)." }, { "rowKey": "Pharmacodynamic", @@ -6421,7 +6761,8 @@ "venlafaxine-xr" ], "termIds": ["snris", "tcas"], - "resolved": true + "resolved": true, + "note": "HIGH — TCAs, SNRIs (Synergistic cardiovascular toxicity)." } ], "unresolvedRowCount": 0 @@ -6457,7 +6798,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive CNS depression with Opioids, Benzos, and Alcohol." }, { "rowKey": "Pharmacodynamic", @@ -6503,7 +6845,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive anticholinergic burden with TCAs and Antipsychotics." } ], "unresolvedRowCount": 0 @@ -6535,7 +6878,8 @@ "solifenacin" ], "termIds": ["anticholinergics", "antihistamines", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive anticholinergic toxidrome with TCAs (Amitriptyline), antihistamines (Promethazine), and Clozapine (risk of toxic megacolon)." } ], "unresolvedRowCount": 0 @@ -6571,7 +6915,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive CNS depression with Benzodiazepines, Alcohol, and Opioids." }, { "rowKey": "Pharmacodynamic", @@ -6617,7 +6962,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive anticholinergic burden with TCAs and Antipsychotics." } ], "unresolvedRowCount": 0 @@ -6640,7 +6986,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "HIGH — Beta-blockers, Digoxin, Amiodarone (Massive additive bradycardia risk)." }, { "rowKey": "Pharmacodynamic", @@ -6663,7 +7010,8 @@ "tramadol-ir" ], "termIds": ["opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Enhances the effect of opioids and propofol, requiring their doses to be slashed." } ], "unresolvedRowCount": 0 @@ -6683,7 +7031,8 @@ "sotalol" ], "termIds": ["macrolides"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Other QTc prolonging agents (Amiodarone, Sotalol, Macrolides)." }, { "rowKey": "Pharmacodynamic", @@ -6714,7 +7063,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with Benzodiazepines/Opioids." } ], "unresolvedRowCount": 0 @@ -6750,7 +7100,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with Benzos/Opioids, but Benzos are actually *beneficial* to prevent emergence delirium." } ], "unresolvedRowCount": 0 @@ -6786,7 +7137,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive hypotension with ANY blood pressure medication. Additive sedation with Opioids/Benzos." } ], "unresolvedRowCount": 0 @@ -6799,7 +7151,8 @@ "severity": "critical", "counterparties": ["diltiazem", "verapamil"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-DHP CCBs (Verapamil, Diltiazem) cause fatal heart block/asystole." }, { "rowKey": "Pharmacodynamic", @@ -6807,7 +7160,8 @@ "severity": "critical", "counterparties": ["adrenaline-epinephrine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Adrenaline. If a patient on Propranolol is given Adrenaline, the Beta-2 receptors are blocked, leaving Alpha-1 unopposed, causing a massive, lethal hypertensive spike." } ], "unresolvedRowCount": 0 @@ -6827,7 +7181,8 @@ "roxithromycin" ], "termIds": ["macrolides", "qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid concurrent use of other QTc prolonging drugs (e.g., Droperidol, Amiodarone, Macrolides)." }, { "rowKey": "Pharmacodynamic", @@ -6853,7 +7208,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypotension with antihypertensives." } ], "unresolvedRowCount": 1 @@ -6866,7 +7222,8 @@ "severity": "critical", "counterparties": ["ciprofloxacin", "fluvoxamine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Fluvoxamine and Ciprofloxacin inhibit CYP1A2, skyrocketing Agomelatine blood levels and guaranteeing liver damage. AVOID." }, { "rowKey": "Pharmacokinetic", @@ -6874,7 +7231,8 @@ "severity": "high", "counterparties": [], "termIds": ["smoking"], - "resolved": true + "resolved": true, + "note": "HIGH — Smoking induces CYP1A2, significantly dropping blood levels. If patient stops smoking, levels will spike." } ], "unresolvedRowCount": 0 @@ -6887,7 +7245,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol (Serotonin Syndrome)." }, { "rowKey": "Pharmacodynamic", @@ -6903,7 +7262,8 @@ "solifenacin" ], "termIds": ["anticholinergics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive anticholinergic burden (Oxybutynin, Promethazine)." }, { "rowKey": "Pharmacokinetic", @@ -6911,7 +7271,8 @@ "severity": "high", "counterparties": ["clomipramine", "doxepin", "fluoxetine", "imipramine", "nortriptyline", "paroxetine"], "termIds": ["cyp-inhibitors", "tcas"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine) spike TCA blood levels into the toxic range." } ], "unresolvedRowCount": 1 @@ -6924,7 +7285,8 @@ "severity": "critical", "counterparties": ["amiodarone", "sotalol"], "termIds": ["qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid mixing with other QTc prolonging drugs (e.g., Amiodarone, Haloperidol, Sotalol)." }, { "rowKey": "Pharmacokinetic", @@ -6932,7 +7294,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Omeprazole inhibits CYP2C19, spiking Citalopram levels. Max dose is 20mg if on Omeprazole." } ], "unresolvedRowCount": 2 @@ -6955,7 +7318,8 @@ "tranylcypromine" ], "termIds": ["maois", "ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — SSRIs, Tramadol, MAOIs (Extreme risk of fatal Serotonin Syndrome)." }, { "rowKey": "Pharmacokinetic", @@ -6963,7 +7327,8 @@ "severity": "high", "counterparties": ["fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine) spike Clomipramine levels into the lethal seizure range." } ], "unresolvedRowCount": 1 @@ -6976,7 +7341,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois", "st-johns-wort"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol, St John's Wort (Serotonin Syndrome)." }, { "rowKey": "Pharmacokinetic", @@ -6984,7 +7350,8 @@ "severity": "safe", "counterparties": ["atorvastatin", "rosuvastatin", "venlafaxine-xr"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "SAFE — Unlike Venlafaxine, it has zero significant CYP450 interactions, making it highly safe to mix with Tamoxifen, Statins, or heart meds." } ], "unresolvedRowCount": 0 @@ -6997,7 +7364,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["alcohol", "maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol (Serotonin Syndrome). Additive CNS depression with alcohol." }, { "rowKey": "Pharmacokinetic", @@ -7005,7 +7373,8 @@ "severity": "high", "counterparties": ["fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — CYP2D6 inhibitors (Fluoxetine, Paroxetine) spike levels into the lethal range." } ], "unresolvedRowCount": 1 @@ -7041,7 +7410,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive severe CNS depression with Opioids, Benzos, and Alcohol." }, { "rowKey": "Pharmacokinetic", @@ -7049,7 +7419,8 @@ "severity": "high", "counterparties": ["paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Paroxetine) drastically spike Doxepin levels." } ], "unresolvedRowCount": 1 @@ -7062,7 +7433,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol (Fatal Serotonin Syndrome)." }, { "rowKey": "Pharmacokinetic", @@ -7070,7 +7442,8 @@ "severity": "high", "counterparties": ["ciprofloxacin", "fluvoxamine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Potent **CYP1A2** inhibitors (Ciprofloxacin, Fluvoxamine) massively spike Duloxetine levels causing severe toxicity. Moderate inhibitor of CYP2D6." } ], "unresolvedRowCount": 1 @@ -7083,7 +7456,8 @@ "severity": "critical", "counterparties": ["amiodarone", "sotalol"], "termIds": ["qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid mixing with other QTc prolonging drugs (e.g., Amiodarone, Haloperidol, Sotalol)." }, { "rowKey": "Pharmacokinetic", @@ -7091,7 +7465,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Omeprazole inhibits CYP2C19, significantly increasing Escitalopram levels and QTc risk. Max Escitalopram dose is 10mg if on Omeprazole." }, { "rowKey": "Pharmacodynamic", @@ -7099,7 +7474,8 @@ "severity": "high", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs (Bleeding risk)." } ], "unresolvedRowCount": 2 @@ -7123,7 +7499,8 @@ "tramadol-ir" ], "termIds": ["tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Potent irreversible inhibitor of **CYP2D6**. Will completely block Codeine/Tramadol from working. Will massively spike levels of Risperidone, Metoprolol, and TCAs into the toxic range." }, { "rowKey": "Pharmacodynamic", @@ -7131,7 +7508,8 @@ "severity": "high", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs and Aspirin (Doubles risk of upper GI bleeds)." } ], "unresolvedRowCount": 0 @@ -7144,7 +7522,8 @@ "severity": "critical", "counterparties": ["agomelatine", "clozapine", "duloxetine"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Absolute blockade of **CYP1A2** and **CYP2C19**. If given to a patient on Clozapine, Clozapine levels will skyrocket by 500-1000%, causing fatal seizures and coma. If given to a patient on Duloxetine or Agomelatine, severe liver toxicity ensues." } ], "unresolvedRowCount": 0 @@ -7157,7 +7536,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol (Serotonin Syndrome)." }, { "rowKey": "Pharmacokinetic", @@ -7165,7 +7545,8 @@ "severity": "high", "counterparties": ["fluoxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine) spike Imipramine levels into the toxic range." } ], "unresolvedRowCount": 1 @@ -7201,7 +7582,8 @@ "tramadol-ir" ], "termIds": ["alcohol", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive sedation with alcohol, benzos, and opioids." }, { "rowKey": "Pharmacodynamic", @@ -7219,7 +7601,8 @@ "tranylcypromine" ], "termIds": ["maois", "ssris"], - "resolved": true + "resolved": true, + "note": "MODERATE — Less risk of Serotonin Syndrome than SSRIs, but still a risk if combined with Tramadol or MAOIs." } ], "unresolvedRowCount": 0 @@ -7232,7 +7615,8 @@ "severity": "critical", "counterparties": ["citalopram", "escitalopram", "fluoxetine", "fluvoxamine", "paroxetine", "sertraline"], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ANY serotonergic drug (SSRIs, MDMA, Dextromethorphan cough syrup). Will cause hyperthermia, seizures, and death." }, { "rowKey": "Pharmacokinetic", @@ -7240,7 +7624,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Cimetidine (doubles moclobemide levels)." } ], "unresolvedRowCount": 1 @@ -7253,7 +7638,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol (Serotonin Syndrome)." }, { "rowKey": "Pharmacokinetic", @@ -7261,7 +7647,8 @@ "severity": "high", "counterparties": ["bupropion-sr", "fluoxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Bupropion) will spike Nortriptyline levels." } ], "unresolvedRowCount": 1 @@ -7274,7 +7661,8 @@ "severity": "critical", "counterparties": ["codeine", "metoprolol", "risperidone", "risperidone-lai", "tramadol-ir"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Potent irreversible inhibitor of **CYP2D6**. Will completely block the liver from converting Codeine or Tramadol into their active pain-killing forms. Will massively spike levels of Risperidone and Metoprolol." } ], "unresolvedRowCount": 0 @@ -7287,7 +7675,8 @@ "severity": "critical", "counterparties": ["noradrenaline"], "termIds": ["food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Aged cheeses (Cheddar, Brie), cured meats (salami), tap beer, red wine, Marmite/Vegemite, soy sauce. (These contain Tyramine. Without MAO in the gut to destroy it, Tyramine floods the blood, forcing massive noradrenaline release)." }, { "rowKey": "Pharmacodynamic", @@ -7309,7 +7698,8 @@ "tramadol-ir" ], "termIds": ["ssris", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — SSRIs, TCAs, Tramadol, Dextromethorphan (Cough syrup), Pseudoephedrine (Cold meds), Adrenaline. ALL ARE FATAL." } ], "unresolvedRowCount": 0 @@ -7322,7 +7712,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tranylcypromine"], "termIds": ["maois"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs (Fatal hypertensive crisis)." }, { "rowKey": "Pharmacokinetic", @@ -7330,7 +7721,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) spike Reboxetine levels, worsening tachycardia and urinary retention." } ], "unresolvedRowCount": 1 @@ -7343,7 +7735,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tapentadol-sr", "tramadol-ir", "tranylcypromine"], "termIds": ["maois", "st-johns-wort"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol, Tapentadol, St John's Wort. Massive risk of Serotonin Syndrome (hyperthermia, clonus, rigidity, death)." }, { "rowKey": "Pharmacodynamic", @@ -7365,7 +7758,8 @@ "paroxetine" ], "termIds": ["nsaids", "ppis", "ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs and Aspirin. SSRIs deplete platelet serotonin, doubling the risk of upper GI bleeds. Cover with PPI if combined." } ], "unresolvedRowCount": 0 @@ -7378,7 +7772,8 @@ "severity": "critical", "counterparties": [], "termIds": ["food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Aged cheeses, cured meats, tap beer, Vegemite/Marmite, fermented soy (Tyramine)." }, { "rowKey": "Pharmacodynamic", @@ -7394,7 +7789,8 @@ "tramadol-ir" ], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Cold and flu tablets containing Pseudoephedrine/Phenylephrine will cause a fatal stroke. SSRIs and Tramadol cause fatal Serotonin Syndrome." } ], "unresolvedRowCount": 0 @@ -7407,7 +7803,8 @@ "severity": "critical", "counterparties": ["phenelzine", "tramadol-ir", "tranylcypromine"], "termIds": ["maois", "st-johns-wort"], - "resolved": true + "resolved": true, + "note": "CRITICAL — MAOIs, Tramadol, St John's Wort. Extreme risk of Serotonin Syndrome." }, { "rowKey": "Pharmacodynamic", @@ -7415,7 +7812,8 @@ "severity": "high", "counterparties": ["aspirin", "diclofenac", "ibuprofen", "ketorolac", "meloxicam", "naproxen"], "termIds": ["nsaids"], - "resolved": true + "resolved": true, + "note": "HIGH — NSAIDs (Bleeding risk)." } ], "unresolvedRowCount": 0 @@ -7428,7 +7826,8 @@ "severity": "high", "counterparties": ["bupropion-sr", "fluoxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP2D6** inhibitors (Bupropion, Fluoxetine) double the blood levels of Vortioxetine. Halve the dose." }, { "rowKey": "Pharmacokinetic", @@ -7436,7 +7835,8 @@ "severity": "high", "counterparties": ["carbamazepine"], "termIds": ["cyp-inducers"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong CYP inducers (Rifampicin, Carbamazepine) wipe out the drug. Must double the dose." }, { "rowKey": "Pharmacodynamic", @@ -7444,7 +7844,8 @@ "severity": "moderate", "counterparties": ["tramadol-ir"], "termIds": ["st-johns-wort"], - "resolved": true + "resolved": true, + "note": "MODERATE — Additive risk of Serotonin Syndrome with Tramadol or St John's Wort." } ], "unresolvedRowCount": 2 @@ -7457,7 +7858,8 @@ "severity": "high", "counterparties": ["aripiprazole-lai", "clarithromycin", "fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine) or **CYP3A4** inhibitors (Clarithromycin) require the Aripiprazole dose to be halved." }, { "rowKey": "Pharmacokinetic", @@ -7465,7 +7867,8 @@ "severity": "high", "counterparties": ["aripiprazole-lai", "carbamazepine", "phenytoin"], "termIds": ["cyp-inducers"], - "resolved": false + "resolved": false, + "note": "HIGH — Carbamazepine/Phenytoin (CYP inducers) will wipe out Aripiprazole levels; dose must be doubled." } ], "unresolvedRowCount": 2 @@ -7478,7 +7881,8 @@ "severity": "critical", "counterparties": [], "termIds": ["smoking"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Smoking. Cigarette smoke heavily induces CYP1A2. If a patient stops smoking (e.g., admitted to hospital), their Clozapine levels will DOUBLE, causing seizures and coma. Dose must be reduced rapidly." }, { "rowKey": "Pharmacokinetic", @@ -7486,7 +7890,8 @@ "severity": "high", "counterparties": ["ciprofloxacin", "fluvoxamine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Ciprofloxacin and Fluvoxamine (potent CYP1A2 inhibitors) spike clozapine levels." } ], "unresolvedRowCount": 1 @@ -7522,7 +7927,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "cns-depressants", "opioids"], - "resolved": false + "resolved": false, + "note": "CRITICAL — CNS Depressants (Opioids, Benzos). Massive risk of respiratory collapse." }, { "rowKey": "Pharmacokinetic", @@ -7530,7 +7936,8 @@ "severity": "high", "counterparties": ["olanzapine-pamoate-lai"], "termIds": ["smoking"], - "resolved": true + "resolved": true, + "note": "HIGH — Smoking. Polycyclic aromatic hydrocarbons in cigarette smoke induce CYP1A2. If a patient stops smoking in hospital, their Olanzapine levels will artificially spike by up to 50%, causing heavy sedation." } ], "unresolvedRowCount": 1 @@ -7543,7 +7950,8 @@ "severity": "critical", "counterparties": ["phenytoin"], "termIds": ["cyp-inducers", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — **CYP3A4** inhibitors massively spike Quetiapine levels, causing profound sedation, coma, and QTc prolongation. CYP3A4 inducers (Phenytoin) render it useless." }, { "rowKey": "Pharmacodynamic", @@ -7569,7 +7977,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypotension with antihypertensives." } ], "unresolvedRowCount": 1 @@ -7582,7 +7991,8 @@ "severity": "high", "counterparties": ["bupropion-sr", "fluoxetine", "paroxetine", "risperidone-lai"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine, Bupropion) massively increase risperidone levels, triggering severe EPS and hyperprolactinemia." }, { "rowKey": "Pharmacodynamic", @@ -7608,7 +8018,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Antihypertensives (additive hypotension)." } ], "unresolvedRowCount": 1 @@ -7621,7 +8032,8 @@ "severity": "high", "counterparties": ["clarithromycin", "fluoxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inhibitors (Clarithromycin) or **CYP2D6** inhibitors (Fluoxetine) require the depot dose to be reduced to 300 mg." }, { "rowKey": "Pharmacokinetic", @@ -7629,7 +8041,8 @@ "severity": "critical", "counterparties": ["carbamazepine"], "termIds": ["cyp-inducers"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong CYP inducers (Carbamazepine) will destroy depot blood levels. Avoid combination." } ], "unresolvedRowCount": 2 @@ -7642,7 +8055,8 @@ "severity": "critical", "counterparties": [], "termIds": ["qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid concurrent QTc prolonging drugs." }, { "rowKey": "Pharmacokinetic", @@ -7650,7 +8064,8 @@ "severity": "high", "counterparties": ["paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Paroxetine) spike Flupentixol levels." } ], "unresolvedRowCount": 2 @@ -7663,7 +8078,8 @@ "severity": "critical", "counterparties": ["amiodarone", "azithromycin", "clarithromycin", "erythromycin", "roxithromycin"], "termIds": ["macrolides", "qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid concurrent QTc prolonging drugs (e.g., Amiodarone, Macrolides)." }, { "rowKey": "Pharmacokinetic", @@ -7671,7 +8087,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP2D6** or **CYP3A4** inhibitors significantly raise haloperidol levels." } ], "unresolvedRowCount": 2 @@ -7707,7 +8124,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Benzodiazepines/Opioids (Additive severe CNS depression)." }, { "rowKey": "Pharmacokinetic", @@ -7715,7 +8133,8 @@ "severity": "high", "counterparties": [], "termIds": ["smoking"], - "resolved": true + "resolved": true, + "note": "HIGH — Smoking induces CYP1A2, accelerating olanzapine clearance." } ], "unresolvedRowCount": 0 @@ -7728,7 +8147,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Minimal CYP450 metabolism. Cleared largely unchanged by the kidneys, avoiding major hepatic drug interactions." }, { "rowKey": "Pharmacodynamic", @@ -7754,7 +8174,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypotension with antihypertensives (Alpha-1 blockade)." } ], "unresolvedRowCount": 1 @@ -7767,7 +8188,8 @@ "severity": "high", "counterparties": ["fluoxetine", "paroxetine", "risperidone"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine) spike Risperidone levels, worsening EPS/prolactin." } ], "unresolvedRowCount": 1 @@ -7789,7 +8211,8 @@ "temazepam" ], "termIds": ["benzodiazepines"], - "resolved": true + "resolved": true, + "note": "CRITICAL — High-dose Benzodiazepines. Giving Acuphase to a patient already loaded with Midazolam/Diazepam carries a severe risk of respiratory arrest over the next 24 hours." } ], "unresolvedRowCount": 0 @@ -7825,7 +8248,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Synergistic respiratory depression with high-dose Benzodiazepines or Opioids." }, { "rowKey": "Pharmacodynamic", @@ -7851,7 +8275,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Antihypertensives (Additive hypotension)." } ], "unresolvedRowCount": 0 @@ -7866,18 +8291,17 @@ "aspirin", "candesartan", "diclofenac", - "ertapenem", "hydrochlorothiazide", "ibuprofen", "indapamide", "ketorolac", "meloxicam", - "meropenem", "naproxen", "perindopril" ], "termIds": ["acei", "arbs", "nsaids", "thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "CRITICAL — NSAIDs, ACEi/ARBs, and Thiazide Diuretics. All three of these completely destroy the kidney's ability to excrete Lithium, doubling blood levels and causing lethal toxicity. DO NOT prescribe Ibuprofen, Perindopril, or HCTZ to a Lithium patient." } ], "unresolvedRowCount": 0 @@ -7890,7 +8314,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Weak inducer of CYP3A4, but strong enough to completely destroy the efficacy of oral contraceptives (OCPs), causing unplanned pregnancy. Must use IUD or barrier." }, { "rowKey": "Pharmacokinetic", @@ -7898,7 +8323,8 @@ "severity": "high", "counterparties": ["phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Inhibits CYP2C19. Will significantly raise blood levels of Phenytoin." } ], "unresolvedRowCount": 1 @@ -7911,7 +8337,8 @@ "severity": "critical", "counterparties": ["levodopa-benserazide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Concurrent use of Levodopa (directly antagonizes Parkinson's therapy)." }, { "rowKey": "Pharmacodynamic", @@ -7927,7 +8354,8 @@ "sertraline" ], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — QTc prolonging agents (Amiodarone, SSRIs)." }, { "rowKey": "Pharmacokinetic", @@ -7935,7 +8363,8 @@ "severity": "safe", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "SAFE — Zero significant CYP450 interactions (Safe to mix with liver-metabolized drugs)." } ], "unresolvedRowCount": 1 @@ -7948,7 +8377,8 @@ "severity": "high", "counterparties": ["ciprofloxacin", "fluvoxamine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP1A2** inhibitors (Fluvoxamine, Ciprofloxacin) significantly increase asenapine levels." }, { "rowKey": "Pharmacodynamic", @@ -7974,7 +8404,8 @@ "verapamil" ], "termIds": ["antihypertensives", "cns-depressants"], - "resolved": false + "resolved": false, + "note": "HIGH — Additive sedation with CNS depressants and hypotension with antihypertensives." } ], "unresolvedRowCount": 2 @@ -7987,7 +8418,8 @@ "severity": "high", "counterparties": ["clarithromycin", "fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP2D6** inhibitors (Fluoxetine, Paroxetine) or **CYP3A4** inhibitors (Clarithromycin) require the Brexpiprazole dose to be halved. If on BOTH, dose must be quartered." } ], "unresolvedRowCount": 1 @@ -8000,7 +8432,8 @@ "severity": "critical", "counterparties": ["carbamazepine", "clarithromycin"], "termIds": ["azole-antifungals", "cyp-inducers", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Strong **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) require the Cariprazine dose to be halved. CYP3A4 inducers (Carbamazepine) will completely destroy blood levels; avoid combination." } ], "unresolvedRowCount": 1 @@ -8036,7 +8469,8 @@ "tramadol-ir" ], "termIds": ["benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive hypotension with BP meds. Additive severe CNS depression with Opioids/Benzos." }, { "rowKey": "Pharmacodynamic", @@ -8056,7 +8490,8 @@ "solifenacin" ], "termIds": ["anticholinergics", "tcas"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive anticholinergic toxicity with TCAs or Oxybutynin (can trigger toxic megacolon)." } ], "unresolvedRowCount": 0 @@ -8069,7 +8504,8 @@ "severity": "critical", "counterparties": ["clarithromycin", "diltiazem"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — **CYP3A4** inhibitors (Diltiazem, Clarithromycin) massively spike lurasidone levels. Maximum lurasidone dose is 40 mg/day if on a moderate inhibitor. Avoid strong inhibitors." } ], "unresolvedRowCount": 1 @@ -8082,7 +8518,8 @@ "severity": "safe", "counterparties": ["fluoxetine", "paroxetine", "risperidone", "risperidone-lai"], "termIds": [], - "resolved": true + "resolved": true, + "note": "SAFE — Because it is not heavily metabolised by CYP450 enzymes, it avoids the massive drug interactions that plague Risperidone (like Fluoxetine or Paroxetine spiking blood levels)." } ], "unresolvedRowCount": 0 @@ -8135,7 +8572,8 @@ "verapamil" ], "termIds": ["antihypertensives", "benzodiazepines", "opioids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive hypotension and sedation with antihypertensives, Opioids, and Benzos." } ], "unresolvedRowCount": 0 @@ -8148,7 +8586,8 @@ "severity": "critical", "counterparties": [], "termIds": ["qtc-prolonging"], - "resolved": false + "resolved": false, + "note": "CRITICAL — Avoid concurrent QTc prolonging drugs." }, { "rowKey": "Pharmacokinetic", @@ -8156,7 +8595,8 @@ "severity": "high", "counterparties": ["citalopram", "escitalopram", "fluoxetine", "fluvoxamine", "paroxetine", "sertraline"], "termIds": ["ssris"], - "resolved": true + "resolved": true, + "note": "HIGH — SSRIs (Fluoxetine) increase levels, worsening EPS." } ], "unresolvedRowCount": 1 @@ -8181,7 +8621,8 @@ "sertraline" ], "termIds": ["ssris", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive QTc prolongation with SSRIs, TCAs, and antiarrhythmics." }, { "rowKey": "Pharmacokinetic", @@ -8189,7 +8630,8 @@ "severity": "high", "counterparties": ["carbamazepine"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Ketoconazole) increase levels; inducers (Carbamazepine) drastically reduce levels." } ], "unresolvedRowCount": 1 @@ -8202,7 +8644,8 @@ "severity": "high", "counterparties": ["bupropion-sr", "fluoxetine", "paroxetine"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP2D6** inhibitors (Fluoxetine, Paroxetine, Bupropion) massively increase zuclopenthixol levels, triggering severe EPS." }, { "rowKey": "Pharmacodynamic", @@ -8210,7 +8653,8 @@ "severity": "high", "counterparties": [], "termIds": ["cns-depressants"], - "resolved": false + "resolved": false, + "note": "HIGH — Additive sedation with CNS depressants." } ], "unresolvedRowCount": 2 @@ -8223,7 +8667,8 @@ "severity": "moderate", "counterparties": ["fluticasone"], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "MODERATE — CYP3A4 inhibitors can slightly raise systemic levels, but much less dangerous than with Fluticasone." } ], "unresolvedRowCount": 1 @@ -8236,7 +8681,8 @@ "severity": "high", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inhibitors (Itraconazole, Ritonavir) can drastically increase systemic budesonide levels, leading to Cushing's syndrome and adrenal suppression." } ], "unresolvedRowCount": 1 @@ -8249,7 +8695,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — Negligible clinical interactions." } ], "unresolvedRowCount": 1 @@ -8262,7 +8709,8 @@ "severity": "critical", "counterparties": [], "termIds": ["cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "CRITICAL — **CYP3A4** inhibitors (Ritonavir, Cobicistat) completely block hepatic breakdown. Swallowed fluticasone builds up, causing profound iatrogenic Cushing's syndrome and adrenal crisis." } ], "unresolvedRowCount": 1 @@ -8283,7 +8731,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-selective beta-blockers antagonise the effect." }, { "rowKey": "Pharmacodynamic", @@ -8309,7 +8758,8 @@ "triamcinolone" ], "termIds": ["corticosteroids", "thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypokalemia with loop/thiazide diuretics and high-dose corticosteroids." } ], "unresolvedRowCount": 0 @@ -8367,7 +8817,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antihistamines", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "MODERATE — Additive anticholinergic effects if given with TCAs, sedating antihistamines, or antipsychotics." } ], "unresolvedRowCount": 0 @@ -8380,7 +8831,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — No clinically significant interactions for the nasal spray." } ], "unresolvedRowCount": 1 @@ -8393,7 +8845,8 @@ "severity": "low", "counterparties": ["phenytoin"], "termIds": ["barbiturates"], - "resolved": true + "resolved": true, + "note": "LOW — Phenytoin and phenobarbital can induce CYP enzymes and reduce montelukast levels." } ], "unresolvedRowCount": 0 @@ -8414,7 +8867,8 @@ "sotalol" ], "termIds": ["beta-blockers"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Non-selective Beta-blockers (e.g., Propranolol) directly antagonise Salbutamol and can trigger fatal bronchospasm." }, { "rowKey": "Pharmacodynamic", @@ -8429,7 +8883,8 @@ "spironolactone" ], "termIds": ["diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Additive hypokalemia if given with non-potassium sparing diuretics (e.g., Frusemide)." } ], "unresolvedRowCount": 0 @@ -8451,7 +8906,8 @@ "solifenacin" ], "termIds": ["anticholinergics"], - "resolved": true + "resolved": true, + "note": "MODERATE — Additive effects with other anticholinergics (e.g., Oxybutynin, Amitriptyline). Avoid concurrent use with Ipratropium." } ], "unresolvedRowCount": 0 @@ -8464,7 +8920,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — No major systemic interactions. However, it is chemically incompatible in the same IV line with many drugs (e.g., penicillins). Run on a dedicated line." } ], "unresolvedRowCount": 1 @@ -8491,7 +8948,8 @@ "temazepam" ], "termIds": ["benzodiazepines", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — TCAs. If a patient overdosed on a TCA and a Benzo, the Benzo is protecting their brain from the TCA-induced seizures. Giving Flumazenil removes the shield, causing immediate, often fatal seizures." } ], "unresolvedRowCount": 0 @@ -8504,7 +8962,8 @@ "severity": "critical", "counterparties": ["buprenorphine-patch"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Buprenorphine (Suboxone). Buprenorphine binds so tightly to the receptor that standard doses of Naloxone cannot displace it. Massive doses (or continuous infusions) are required." } ], "unresolvedRowCount": 0 @@ -8517,7 +8976,8 @@ "severity": "high", "counterparties": [], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (e.g., Ritonavir, Ketoconazole) can significantly increase dutasteride blood levels." } ], "unresolvedRowCount": 1 @@ -8530,7 +8990,8 @@ "severity": "low", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "LOW — No major clinically significant drug interactions." } ], "unresolvedRowCount": 1 @@ -8587,7 +9048,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antihistamines", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Additive anticholinergic burden with TCAs, antipsychotics, and antihistamines (leads to frank delirium and bowel impaction)." }, { "rowKey": "Pharmacodynamic", @@ -8595,7 +9057,8 @@ "severity": "high", "counterparties": ["metoclopramide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Antagonises prokinetics like Metoclopramide." } ], "unresolvedRowCount": 0 @@ -8608,7 +9071,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Nitrates, nitric oxide donors, amyl nitrite/poppers, or riociguat can cause profound hypotension. Do not give nitrates within 24 hours of sildenafil." }, { "rowKey": "Pharmacodynamic", @@ -8616,7 +9080,8 @@ "severity": "high", "counterparties": ["prazosin", "tamsulosin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Alpha-blockers (Prazosin, Tamsulosin). Space doses by at least 4 hours to prevent orthostatic collapse." }, { "rowKey": "Pharmacokinetic", @@ -8624,7 +9089,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["cyp-inhibitors", "grapefruit"], - "resolved": false + "resolved": false, + "note": "HIGH — **CYP3A4** inhibitors (Clarithromycin, Grapefruit juice) drastically increase Sildenafil levels. Max dose 25mg." } ], "unresolvedRowCount": 2 @@ -8637,7 +9103,8 @@ "severity": "high", "counterparties": [], "termIds": ["azole-antifungals"], - "resolved": true + "resolved": true, + "note": "HIGH — Heavily metabolised by **CYP3A4**. Strong inhibitors (Ketoconazole, Ritonavir) mandate a maximum dose of 5 mg/day to prevent toxicity." }, { "rowKey": "Pharmacodynamic", @@ -8682,7 +9149,8 @@ "zuclopenthixol-decanoate" ], "termIds": ["anticholinergics", "antipsychotics", "tcas"], - "resolved": true + "resolved": true, + "note": "MODERATE — Additive anticholinergic effects with TCAs/antipsychotics." } ], "unresolvedRowCount": 0 @@ -8695,7 +9163,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Nitrates, nitric oxide donors, amyl nitrite/poppers, or riociguat can cause profound hypotension. Avoid nitrates for at least 48 hours after tadalafil." }, { "rowKey": "Pharmacodynamic", @@ -8703,7 +9172,8 @@ "severity": "high", "counterparties": ["tamsulosin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Alpha-blockers (Tamsulosin). Tadalafil 5mg daily is approved for BPH, but if the patient is already on Tamsulosin, the combo can cause severe orthostatic drops." } ], "unresolvedRowCount": 1 @@ -8735,7 +9205,8 @@ "verapamil" ], "termIds": ["antihypertensives"], - "resolved": true + "resolved": true, + "note": "HIGH — Concurrent use with PDE5 inhibitors (Sildenafil) or other antihypertensives increases orthostatic collapse risk." }, { "rowKey": "Pharmacokinetic", @@ -8743,7 +9214,8 @@ "severity": "high", "counterparties": ["clarithromycin"], "termIds": ["azole-antifungals", "cyp-inhibitors"], - "resolved": false + "resolved": false, + "note": "HIGH — Strong **CYP3A4** inhibitors (Clarithromycin, Ketoconazole) drastically spike tamsulosin levels." } ], "unresolvedRowCount": 1 @@ -8756,7 +9228,8 @@ "severity": "beneficial", "counterparties": ["iron"], "termIds": [], - "resolved": true + "resolved": true, + "note": "BENEFICIAL — Oral Iron (Ferrous sulfate). Vitamin C converts ferric iron (Fe3+) to ferrous iron (Fe2+), significantly boosting gut absorption." }, { "rowKey": "Pharmacokinetic", @@ -8764,7 +9237,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Amphetamines (Dexamphetamine). Because high-dose Vitamin C intensely acidifies the urine, it traps amphetamines in the urine and forces their rapid excretion, ruining their clinical effect." } ], "unresolvedRowCount": 1 @@ -8777,7 +9251,8 @@ "severity": "critical", "counterparties": ["ciprofloxacin", "iron", "levothyroxine", "moxifloxacin", "norfloxacin"], "termIds": ["fluoroquinolones"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium chelates levothyroxine, iron, fluoroquinolones, tetracyclines, and bisphosphonates; separate doses by at least 2-4 hours, and keep bisphosphonates separate per their product directions." }, { "rowKey": "Pharmacodynamic", @@ -8785,7 +9260,8 @@ "severity": "high", "counterparties": ["hydrochlorothiazide", "indapamide"], "termIds": ["thiazide-diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Thiazide diuretics (HCTZ) reduce calcium excretion in the kidneys, massively increasing the risk of hypercalcemia." } ], "unresolvedRowCount": 0 @@ -8798,7 +9274,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Zinc. Massive doses of oral Zinc induce proteins in the gut that trap Copper and poop it out. The #1 cause of Copper deficiency on the ward is a doctor prescribing high-dose Zinc for a bed-sore for 6 months." } ], "unresolvedRowCount": 1 @@ -8811,7 +9288,8 @@ "severity": "critical", "counterparties": ["methotrexate"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Methotrexate. Folate replaces the exact compound Methotrexate is trying to starve the body of. If taken on the *same day*, the Folate will cancel out the Methotrexate, causing a severe arthritis flare. Must be staggered." }, { "rowKey": "Pharmacokinetic", @@ -8819,7 +9297,8 @@ "severity": "high", "counterparties": ["phenytoin"], "termIds": ["barbiturates"], - "resolved": true + "resolved": true, + "note": "HIGH — Phenytoin and Barbiturates lower folate levels, and paradoxically, giving folate can lower Phenytoin levels, risking seizures." } ], "unresolvedRowCount": 0 @@ -8832,7 +9311,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Lithium (Additive hypothyroid effect)." } ], "unresolvedRowCount": 1 @@ -8845,7 +9325,8 @@ "severity": "critical", "counterparties": ["calcium-carbonate", "magnesium-oxide"], "termIds": ["acidic-drinks", "antacids", "food"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium, Antacids, Milk, Tea, Coffee. These instantly bind iron in the gut, dropping absorption to near ZERO. Separate by 2-4 hours." }, { "rowKey": "Pharmacokinetic", @@ -8853,7 +9334,8 @@ "severity": "critical", "counterparties": ["ciprofloxacin", "doxycycline", "levodopa-benserazide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Doxycycline, Ciprofloxacin, Thyroxine, Levodopa. Iron binds to these drugs and destroys their absorption. Separate strictly by 2-4 hours." }, { "rowKey": "Pharmacokinetic", @@ -8861,7 +9343,8 @@ "severity": "beneficial", "counterparties": ["ascorbic-acid"], "termIds": [], - "resolved": true + "resolved": true, + "note": "BENEFICIAL — Vitamin C (Ascorbic Acid) drastically acidifies the stomach and keeps iron in the absorbable Fe2+ state, boosting absorption by 30%." } ], "unresolvedRowCount": 0 @@ -8874,7 +9357,8 @@ "severity": "critical", "counterparties": ["ciprofloxacin", "doxycycline", "moxifloxacin", "norfloxacin"], "termIds": ["fluoroquinolones"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Binds to Tetracyclines (Doxycycline) and Fluoroquinolones (Ciprofloxacin) in the gut, completely destroying their antibiotic absorption. Separate by 4 hours." } ], "unresolvedRowCount": 0 @@ -8887,7 +9371,8 @@ "severity": "critical", "counterparties": ["amlodipine", "nifedipine-xr"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Calcium Channel Blockers (Nifedipine, Amlodipine). Combining IV Magnesium with high-dose CCBs causes profound, refractory hypotension and neuromuscular blockade." }, { "rowKey": "Pharmacodynamic", @@ -8895,7 +9380,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Non-depolarizing muscle relaxants (Rocuronium). Mag sulfate massively prolongs surgical paralysis." } ], "unresolvedRowCount": 1 @@ -8908,7 +9394,8 @@ "severity": "high", "counterparties": ["atorvastatin", "rosuvastatin"], "termIds": ["statins"], - "resolved": true + "resolved": true, + "note": "HIGH — Niacin combined with Statins exponentially increases the risk of rhabdomyolysis." } ], "unresolvedRowCount": 0 @@ -8924,17 +9411,16 @@ "aspirin", "candesartan", "diclofenac", - "ertapenem", "ibuprofen", "ketorolac", "meloxicam", - "meropenem", "naproxen", "perindopril", "spironolactone" ], "termIds": ["acei", "arbs", "nsaids"], - "resolved": true + "resolved": true, + "note": "CRITICAL — ACEi, ARBs, Spironolactone, Amiloride, NSAIDs, Tacrolimus. Co-administration drastically reduces renal K+ excretion, leading to massive hyperkalemia." } ], "unresolvedRowCount": 0 @@ -8947,7 +9433,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Isoniazid (INH) and Penicillamine actively deplete the body of B6, directly causing seizures and nerve death. You must replace it." }, { "rowKey": "Pharmacokinetic", @@ -8955,7 +9442,8 @@ "severity": "high", "counterparties": ["levodopa-benserazide"], "termIds": [], - "resolved": true + "resolved": true, + "note": "HIGH — Levodopa. Pyridoxine accelerates the peripheral breakdown of Levodopa, stopping it from reaching the brain and ruining Parkinson's control (This interaction is largely bypassed by modern combo pills like Madopar, which contain Benserazide)." } ], "unresolvedRowCount": 1 @@ -8968,7 +9456,8 @@ "severity": "unknown", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE." } ], "unresolvedRowCount": 1 @@ -8981,7 +9470,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — At standard doses." } ], "unresolvedRowCount": 1 @@ -9013,7 +9503,8 @@ "verapamil" ], "termIds": ["antihypertensives", "diuretics"], - "resolved": true + "resolved": true, + "note": "HIGH — Antagonises the effect of all antihypertensives and diuretics." } ], "unresolvedRowCount": 0 @@ -9026,7 +9517,8 @@ "severity": "none", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "NONE — Safe to combine with all standard ward medications." } ], "unresolvedRowCount": 1 @@ -9039,7 +9531,8 @@ "severity": "critical", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "CRITICAL — Isotretinoin/Acitretin. These are Vitamin A derivatives. Adding Vitamin A supplements causes instant, severe systemic toxicity and intracranial hypertension." }, { "rowKey": "Pharmacokinetic", @@ -9047,7 +9540,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Orlistat blocks absorption (fat-soluble)." } ], "unresolvedRowCount": 2 @@ -9060,7 +9554,8 @@ "severity": "high", "counterparties": ["colchicine", "esomeprazole", "metformin", "pantoprazole"], "termIds": ["ppis"], - "resolved": true + "resolved": true, + "note": "HIGH — Metformin, PPIs (Pantoprazole), and Colchicine physically block the absorption of oral B12 in the terminal ileum. Patients on long-term Metformin/PPIs frequently become deficient and require IM replacement." } ], "unresolvedRowCount": 0 @@ -9073,7 +9568,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Orlistat and Bile Acid Sequestrants block the absorption of all fat-soluble vitamins (A, D, E, K). Separate doses by 2-4 hours." }, { "rowKey": "Pharmacokinetic", @@ -9081,7 +9577,8 @@ "severity": "moderate", "counterparties": ["carbamazepine", "phenytoin"], "termIds": [], - "resolved": true + "resolved": true, + "note": "MODERATE — Phenytoin and Carbamazepine accelerate Vitamin D metabolism, increasing the dose requirement." } ], "unresolvedRowCount": 1 @@ -9108,7 +9605,8 @@ "warfarin-vka" ], "termIds": ["anticoagulants"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Warfarin, DOACs, Aspirin. High-dose Vitamin E acts as a blood thinner and will synergistically increase the risk of fatal hemorrhage." } ], "unresolvedRowCount": 0 @@ -9121,7 +9619,8 @@ "severity": "critical", "counterparties": ["warfarin-anticoagulant", "warfarin-vka"], "termIds": [], - "resolved": true + "resolved": true, + "note": "CRITICAL — Warfarin. Vitamin K directly antagonises it." }, { "rowKey": "Pharmacokinetic", @@ -9129,7 +9628,8 @@ "severity": "high", "counterparties": [], "termIds": [], - "resolved": false + "resolved": false, + "note": "HIGH — Bile acid sequestrants (Cholestyramine) and Orlistat block fat-soluble vitamin absorption in the gut. Avoid giving PO Vitamin K with them." } ], "unresolvedRowCount": 1 @@ -9142,7 +9642,8 @@ "severity": "critical", "counterparties": ["ciprofloxacin", "doxycycline", "moxifloxacin", "norfloxacin"], "termIds": ["fluoroquinolones"], - "resolved": true + "resolved": true, + "note": "CRITICAL — Binds and destroys the absorption of Tetracyclines (Doxycycline) and Fluoroquinolones (Ciprofloxacin). Separate by 4 hours." } ], "unresolvedRowCount": 0 diff --git a/docs/branch-review-records/43d12e14e914d36f453a41694d38cd76fa9d83f8ffe3a3b7768fb27108c8d377.record.md b/docs/branch-review-records/43d12e14e914d36f453a41694d38cd76fa9d83f8ffe3a3b7768fb27108c8d377.record.md new file mode 100644 index 0000000000..3b5e04ea84 --- /dev/null +++ b/docs/branch-review-records/43d12e14e914d36f453a41694d38cd76fa9d83f8ffe3a3b7768fb27108c8d377.record.md @@ -0,0 +1 @@ +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | 807d13f4ab2fbff8f292dafda7687cedf9079f2d | interaction note text polish (severity prefix, per-row severity chip, unclamped prose) | self-reviewed; shipped PR #1898 | verify:pr-local 9 stages green, failed:(none); 41 interaction tests pass; docs/adoption checks current; phone-chrome browser stages delegated to CI (#255 drift) | diff --git a/docs/branch-review-records/89ef6892ffb66555f7f243204381cf9669f9683b3056177942eafa88f5014e62.record.md b/docs/branch-review-records/89ef6892ffb66555f7f243204381cf9669f9683b3056177942eafa88f5014e62.record.md new file mode 100644 index 0000000000..fa29839c3e --- /dev/null +++ b/docs/branch-review-records/89ef6892ffb66555f7f243204381cf9669f9683b3056177942eafa88f5014e62.record.md @@ -0,0 +1 @@ +| 2026-08-13 | claude/patient-interactions-drug-alerts-3tztvw | 378dc1b2c966d7765c086581245b86e4e810bc23 | medication interaction lexicon review sheet + reverse-direction note wording | ARB/carbapenem misclassification fixed; divergent duplicate Warfarin records reported; reverse-only alerts now carry their text | verify:pr-local 27/27 green (failed: none, not reached: none), 6326 unit tests | diff --git a/docs/medication-interaction-lexicon-review.md b/docs/medication-interaction-lexicon-review.md new file mode 100644 index 0000000000..95772d0cf7 --- /dev/null +++ b/docs/medication-interaction-lexicon-review.md @@ -0,0 +1,115 @@ +# Medication interaction lexicon — clinical review sheet + +**Status: UNREVIEWED.** No clinician has checked these mappings. Record sign-off at the bottom. + +Generated by `npm run medications:lexicon-report` from `src/lib/medication-interaction-lexicon.ts`. +Do not hand-edit — fix the lexicon and regenerate. `npm run check:medication-lexicon-report` fails when +this file and the lexicon disagree. + +## What you are checking + +The catalogue writes interactions as prose (`CRITICAL — NSAIDs and Aspirin. SSRIs deplete platelet +serotonin…`). To warn a clinician that _this_ patient's drug is the one being described, the app has to +decide which catalogue medications a phrase like **NSAIDs** covers. This table is every one of those +decisions, expanded to the drugs it actually resolves to. + +Three questions per row: + +1. Does the term cover a drug it should **not**? (a false alert) +2. Does it **miss** a drug it should cover? (a missed alert — the dangerous direction) +3. Is the classification (`catalogue` / `external` / `nonDrug` / `mechanism`) right? + +`Rows` is how many catalogue interaction rows the term fires on; `Severe` is how many of those are +CRITICAL or HIGH. Start at the top — the table is sorted by severe usage. + +## Drug-class terms + +| Term | Matches these phrases | Rows | Severe | Resolves to | +| -------------------- | ------------------------------------------------------------------------------------- | ---- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `nsaids` | nsaids, nsaid | 39 | 38 | **6** — Aspirin, Diclofenac, Ibuprofen, Ketorolac, Meloxicam, Naproxen | +| `opioids` | opioids, opioid, opioid analgesia, opiates, full agonists | 36 | 35 | **14** — Buprenorphine (SL/depot), Buprenorphine + naloxone, Buprenorphine patch, Codeine, Fentanyl, Hydromorphone (IR/IV), Loperamide, Methadone, Morphine (IR/IV), Morphine SR / MR, Oxycodone IR, Oxycodone SR / MR, Tapentadol SR, Tramadol IR | +| `benzodiazepines` | benzodiazepines, benzodiazepine, benzos, benzo | 32 | 32 | **8** — Alprazolam, Clonazepam, Diazepam, Lorazepam, Midazolam, Nitrazepam, Oxazepam, Temazepam | +| `beta-blockers` | beta-blockers, beta blockers, beta-blocker, beta blocker, non-selective beta-blockers | 23 | 22 | **7** — Atenolol, Bisoprolol, Carvedilol, Labetalol, Metoprolol, Propranolol, Sotalol | +| `tcas` | tcas, tca, tricyclics, tricyclic antidepressants, anticholinergic tcas | 22 | 20 | **5** — Amitriptyline, Clomipramine, Doxepin, Imipramine, Nortriptyline | +| `acei` | acei, aceis, ace inhibitors, ace inhibitor | 20 | 20 | **1** — Perindopril | +| `ssris` | ssris, ssri | 21 | 19 | **6** — Citalopram, Escitalopram, Fluoxetine, Fluvoxamine, Paroxetine, Sertraline | +| `maois` | maois, maoi, monoamine oxidase inhibitors | 19 | 17 | **2** — Phenelzine, Tranylcypromine | +| `diuretics` | diuretics, diuretic | 18 | 17 | **6** — Amiloride, Eplerenone, Frusemide, Hydrochlorothiazide, Indapamide, Spironolactone | +| `arbs` | arbs, arb | 16 | 16 | **1** — Candesartan | +| `anticholinergics` | anticholinergics, anticholinergic, atropine-like medicines | 18 | 15 | **6** — Benzatropine, Hyoscine butylbromide, Hyoscine hydrobromide, Orphenadrine, Oxybutynin, Solifenacin | +| `anticoagulants` | anticoagulants, anticoagulant, doacs, doac | 18 | 15 | **12** — Apixaban, Clopidogrel, Dabigatran, Dalteparin, Dipyridamole, Edoxaban, Enoxaparin, Heparin (IV/SC), Rivaroxaban, Ticagrelor, Warfarin (`warfarin-anticoagulant`), Warfarin (`warfarin-vka`) | +| `antipsychotics` | antipsychotics, antipsychotic | 17 | 15 | **26** — Amisulpride, Aripiprazole, Aripiprazole LAI, Asenapine, Brexpiprazole, Cariprazine, Chlorpromazine, Clozapine, Flupentixol decanoate, Haloperidol decanoate, Levomepromazine, Lurasidone, Olanzapine (wafer/ODT), Olanzapine pamoate LAI, Paliperidone ER, Paliperidone LAI, Periciazine, Quetiapine, Risperidone, Risperidone LAI, Trifluoperazine, Ziprasidone, Ziprasidone IM, Zuclopenthixol, Zuclopenthixol acetate, Zuclopenthixol decanoate | +| `antacids` | antacids, antacid | 16 | 14 | **2** — Calcium carbonate, Magnesium oxide | +| `antihypertensives` | antihypertensives, antihypertensive | 14 | 14 | **17** — Amlodipine, Atenolol, Bisoprolol, Candesartan, Carvedilol, Diltiazem, Eplerenone, Felodipine, Frusemide, Hydrochlorothiazide, Indapamide, Labetalol, Metoprolol, Nifedipine XR, Perindopril, Spironolactone, Verapamil | +| `macrolides` | macrolides, macrolide | 13 | 12 | **4** — Azithromycin, Clarithromycin, Erythromycin, Roxithromycin | +| `corticosteroids` | corticosteroids, corticosteroid, steroids, steroid | 9 | 9 | **15** — Beclometasone, Betamethasone, Budesonide, Ciclesonide, Clobetasol, Dexamethasone, Fludrocortisone, Fluticasone, Hydrocortisone, Hydrocortisone 1%, Methylprednisolone, Mometasone, Prednisolone, Prednisone, Triamcinolone | +| `thiazide-diuretics` | thiazide diuretics, thiazides, thiazide | 9 | 9 | **2** — Hydrochlorothiazide, Indapamide | +| `ppis` | ppis, ppi, proton pump inhibitors | 8 | 8 | **2** — Esomeprazole, Pantoprazole | +| `statins` | statins, statin | 9 | 7 | **2** — Atorvastatin, Rosuvastatin | +| `aminoglycosides` | aminoglycosides, aminoglycoside | 6 | 5 | **2** — Amikacin, Gentamicin | +| `fluoroquinolones` | fluoroquinolones, fluoroquinolone, quinolones | 5 | 5 | **3** — Ciprofloxacin, Moxifloxacin, Norfloxacin | +| `loop-diuretics` | loop diuretics, loop diuretic | 5 | 5 | **1** — Frusemide | +| `antihistamines` | antihistamines, antihistamine | 4 | 3 | **7** — Alimemazine, Cetirizine, Cyclizine, Diphenhydramine, Fexofenadine, Loratadine, Promethazine | +| `snris` | snris, snri | 4 | 3 | **5** — Atomoxetine, Desvenlafaxine, Duloxetine, Tramadol IR, Venlafaxine XR | +| `antiplatelets` | antiplatelets, antiplatelet | 3 | 3 | **4** — Aspirin, Clopidogrel, Dipyridamole, Ticagrelor | +| `gabapentinoids` | gabapentinoids, gabapentinoid | 3 | 3 | **2** — Gabapentin, Pregabalin | +| `z-drugs` | z-drugs, z drugs, zolpidem-type hypnotics | 0 | 0 | **2** — Zolpidem, Zopiclone | + +## Deliberate exclusions + +Drugs a selector would otherwise have swept in. Each is a clinical claim worth checking. + +| Term | Excluded | Why it would otherwise match | +| ----------------- | ---------------------- | ------------------------------------------------------------ | +| `benzodiazepines` | Clozapine | class `Antipsychotic`, subclass `SGA / Dibenzodiazepine` | +| `benzodiazepines` | Olanzapine (wafer/ODT) | class `Antipsychotic`, subclass `SGA / Thienobenzodiazepine` | +| `opioids` | Naltrexone | class `Addiction`, subclass `Opioid Antagonist` | +| `opioids` | Naloxone | class `Antidote`, subclass `Opioid Antagonist` | +| `anticoagulants` | Aspirin | class `Anticoagulant`, subclass `Antiplatelet / NSAID` | + +## Terms that resolve to no catalogue drug + +These never produce an alert. `nonDrug` and `external` are deliberate; `mechanism` is an admission that +the class cannot be enumerated, and holds the medication at grey rather than green. + +| Term | Kind | Matches these phrases | Rows | Note | +| ------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------------------------------------- | +| `alcohol` | nonDrug | alcohol, alcohol-containing preparations, ethanol | 33 | Substance use, not a prescribable catalogue entry. | +| `grapefruit` | nonDrug | grapefruit, grapefruit juice | 6 | Dietary CYP3A4 inhibitor. | +| `acidic-drinks` | nonDrug | acidic drinks, coffee, juice, soft drinks, cola | 7 | Buccal/oral absorption timing, not a drug interaction. | +| `smoking` | nonDrug | smoking, cigarette smoke, tobacco smoke | 7 | CYP1A2 induction by polycyclic aromatic hydrocarbons, not by nicotine. | +| `food` | nonDrug | food, dairy, milk, high-fat meals, tyramine | 10 | Dietary. | +| `st-johns-wort` | external | st john's wort, st johns wort, hypericum | 8 | Herbal CYP3A4 inducer; not stocked in the catalogue. | +| `azole-antifungals` | external | ketoconazole, azoles, azole antifungals | 23 | Ketoconazole is not in the catalogue; fluconazole/itraconazole resolve by name. | +| `barbiturates` | external | barbiturates, barbiturate, phenobarbital, phenobarbitone | 5 | Not stocked in the catalogue. | +| `antiretrovirals` | external | antiretrovirals, antiretroviral, protease inhibitors | 2 | Ritonavir and relatives are outside the catalogue. | +| `cotrimoxazole` | external | bactrim, co-trimoxazole, cotrimoxazole | 3 | Combination product; trimethoprim resolves by name. | +| `cyp-inhibitors` | mechanism | cyp inhibitors, cyp inhibitor, strong cyp inhibitors, cyp3a4 inhibitors, cyp2d6 inhibitors, cyp1a2 inhibitors, cyp2c19 inhibitors | 50 | Enumerating inhibitors needs pharmacokinetic data the catalogue does not carry. | +| `cyp-inducers` | mechanism | cyp inducers, cyp inducer, strong cyp inducers, cyp3a4 inducers, enzyme inducers | 9 | See cyp-inhibitors. | +| `cyp-substrates` | mechanism | cyp substrates, cyp2d6 substrates, cyp3a4 substrates, narrow therapeutic index drugs | 1 | | +| `pgp` | mechanism | p-gp, p-gp inhibitors, p-glycoprotein, oatp | 11 | | +| `cns-depressants` | mechanism | cns depressants, cns depressant, sedatives, sedative, sedating drugs | 12 | Deliberately unenumerable: the surface spans benzodiazepines, opioids, antihistamines, alcohol and more. | +| `qtc-prolonging` | mechanism | qtc prolonging drugs, qt prolonging drugs, concurrent qtc prolonging drugs, qt-prolonging agents | 10 | The catalogue carries QTc risk per drug but not a curated interacting set. | +| `serotonergic` | mechanism | serotonergic drugs, serotonergic agents, other serotonergics | 1 | | + +## Flagged for a closer look + +- The catalogue holds 2 records named **Warfarin** (`warfarin-vka`, `warfarin-anticoagulant`), and a lexicon class resolves to them. They carry **different** interaction rows (`warfarin-vka`: 3, `warfarin-anticoagulant`: 3; only 0 in common), so which record the clinician opens changes which warnings they see. Reconcile them in the catalogue. +- `antipsychotics` resolves to **26 drugs** — broad enough to be worth re-reading. +- `acei` resolves to a single drug; check the class is not wider than the catalogue. +- `arbs` resolves to a single drug; check the class is not wider than the catalogue. +- `loop-diuretics` resolves to a single drug; check the class is not wider than the catalogue. +- `z-drugs` fires on no catalogue row — dead entry, or its phrasing never occurs. + +## Sign-off + +| Field | Value | +| ---------------------- | ------------------ | +| Reviewer (name + role) | _not yet reviewed_ | +| Date | _not yet reviewed_ | +| Outcome | _not yet reviewed_ | +| Corrections raised | _not yet reviewed_ | + +Until this is filled in, treat every interaction alert as unvalidated mapping over source-backed text. +The wording shown to the clinician is always verbatim from the catalogue; what is unreviewed is _which +drugs a phrase was taken to mean_. diff --git a/docs/samd-classification-medication-considerations.md b/docs/samd-classification-medication-considerations.md index 002ebbfa7d..2e226f3b59 100644 --- a/docs/samd-classification-medication-considerations.md +++ b/docs/samd-classification-medication-considerations.md @@ -52,11 +52,46 @@ Mitigations specific to the interaction surface: - Colour is never the only channel: each verdict also carries an icon and a text label. +**The lexicon needs its own clinical review, separately from the classification +question.** `src/lib/medication-interaction-lexicon.ts` decides which catalogue +drugs a phrase like "NSAIDs" or "CNS depressants" refers to, and that decision +drives every red and amber alert. It was assembled by pattern-matching the +corpus, not by a clinician, and has never been reviewed. `docs/medication-interaction-lexicon-review.md` +(generated by `npm run medications:lexicon-report`) expands every mapping to the +drugs it actually resolves to and carries a sign-off block; it is **UNREVIEWED** +until that block is filled in. + +That report has already paid for itself twice: + +1. It exposed `ARB` matching _C-**arb**-apenem_, which had put ertapenem and + meropenem in the angiotensin-receptor-blocker class across 16 CRITICAL/HIGH + rows. Fixed, and pinned by + `tests/medication-interaction-lexicon-coverage.test.ts`. +2. It exposed **two catalogue records both named "Warfarin"** + (`warfarin-vka`, `warfarin-anticoagulant`) that share **no interaction rows + at all** — three rows each, zero in common. Which record a clinician opens + therefore decides which warnings they see, and nothing on screen + distinguishes the two. This one is a **catalogue data defect, not a lexicon + fault**, so it is reported rather than silently patched: merging or + de-duplicating the records is a clinical content decision. It needs an owner. + +Neither was found by review of the code; both fell out of rendering the mappings +in a form a human could read. That is a fair indication of what an hour of +clinical reading would still turn up. + Residual risk the reviewer should weigh: the lexicon is hand-curated, so a missed term is a false negative. It is fail-safe by construction (unresolved → grey, not -green) but the resolution rate is not 100% — currently 400 of 523 rows resolve, -and `tests/medication-interaction-lexicon-coverage.test.ts` ratchets that figure -so it cannot silently regress. +green) but the resolution rate is not 100% — currently **355 of 523** interaction +rows are fully read, leaving 149 of the catalogue's medications holding at grey +rather than ever showing green. `tests/medication-interaction-lexicon-coverage.test.ts` +ratchets both that figure and the underlying drug-match count (417 rows) so +neither can silently regress. + +Read the 355 carefully, because it went **down** from 400 deliberately. A row +naming an unenumerable mechanism ("CYP3A4 inhibitors (Clarithromycin, +Ketoconazole)") used to count as resolved once any one named drug matched, +which implied the whole mechanism class had been checked. It is now unresolved, +so more medications sit at grey. That is the safety direction, not a regression. ## Why this needs a classification decision diff --git a/docs/scripts-index.md b/docs/scripts-index.md index 54004edc84..d5c9f3a4ce 100644 --- a/docs/scripts-index.md +++ b/docs/scripts-index.md @@ -1,6 +1,6 @@ # Scripts index -Curated map of `scripts/` (233 files) and the `package.json` script surface (242 entries), +Curated map of `scripts/` (234 files) and the `package.json` script surface (244 entries), grouped by purpose. This is orientation, not an exhaustive per-file listing — the authoritative command list is `package.json`, and `npm run docs:check-scripts` verifies every `npm run ` referenced in docs resolves to a real script. `npm run docs:update` refreshes the exact counts above. diff --git a/package.json b/package.json index a1fe7907a2..d128b6bbab 100644 --- a/package.json +++ b/package.json @@ -180,6 +180,8 @@ "medications:seed": "node scripts/run-tsx.mjs scripts/seed-medication-records.ts", "medications:interactions": "node scripts/run-tsx.mjs scripts/build-medication-interaction-index.ts", "check:medication-interactions": "node scripts/run-tsx.mjs scripts/build-medication-interaction-index.ts --check", + "medications:lexicon-report": "node scripts/run-tsx.mjs scripts/build-medication-lexicon-report.ts", + "check:medication-lexicon-report": "node scripts/run-tsx.mjs scripts/build-medication-lexicon-report.ts --check", "reindex": "node scripts/run-tsx.mjs scripts/reindex.ts", "reindex:health": "node scripts/run-tsx.mjs scripts/reindex-health.ts", "ingestion:autopilot": "node scripts/run-tsx.mjs scripts/ingestion-autopilot.ts", diff --git a/scripts/build-medication-interaction-index.ts b/scripts/build-medication-interaction-index.ts index 6eef27e8f6..ed485e41cc 100644 --- a/scripts/build-medication-interaction-index.ts +++ b/scripts/build-medication-interaction-index.ts @@ -36,6 +36,21 @@ type IndexRow = { counterparties: string[]; termIds: string[]; resolved: boolean; + /** + * Verbatim `row.val`. + * + * Dropped from the artefact once, on the reasoning that every consumer already + * holds the `MedicationRecord` and could read the text back by `rowIndex`. That + * is true in one direction only. Interaction prose is not symmetric, so the + * evaluator also scans the PATIENT's medications for rows naming the viewed + * drug — and it has no record for those, which left a reverse-only match + * rendering a drug name and a severity chip with no explanation under it. + * + * The whole corpus is ~60 KB of prose (the 661 KB the artefact once weighed was + * repeated counterparty display names, not this), so carrying it is cheap + * relative to shipping an alert nobody can read. + */ + note: string; }; type IndexEntry = { rows: IndexRow[]; unresolvedRowCount: number }; type InteractionIndex = { @@ -200,6 +215,7 @@ function main(): void { counterparties: Array.from(counterparties.keys()).sort(), termIds: Array.from(termIds).sort(), resolved, + note: value, }); }); } diff --git a/scripts/build-medication-lexicon-report.ts b/scripts/build-medication-lexicon-report.ts new file mode 100644 index 0000000000..8b4d2b6f07 --- /dev/null +++ b/scripts/build-medication-lexicon-report.ts @@ -0,0 +1,374 @@ +// Renders the curated interaction lexicon as something a clinician can actually +// review: `docs/medication-interaction-lexicon-review.md`. +// +// WHY THIS EXISTS +// `src/lib/medication-interaction-lexicon.ts` decides which drugs a phrase like +// "NSAIDs" or "CNS depressants" refers to, and that decision drives every red and +// amber interaction alert in the app. It was assembled by pattern-matching the +// catalogue corpus, not by a clinician, and it has never had clinical review. +// +// The blocker to that review was legibility, not willingness: nobody should be +// asked to check `{ subclassIncludes: ["Opioid"], denySlugs: ["naltrexone"] }` and +// work out in their head which of 328 medications that covers. This report +// expands every selector to the actual drug names it resolves to, reports how +// many catalogue rows depend on each term, and flags the shapes most likely to be +// wrong — so the review is reading a table, not reading code. +// +// Run with `npm run medications:lexicon-report`. `--check` verifies the committed +// report matches the current lexicon, so the two cannot drift. +// +// This script reports. It does not validate: nothing here asserts a mapping is +// clinically correct, and a generated report is not a review. + +import { readFileSync, writeFileSync } from "node:fs"; +import path from "node:path"; + +import { format } from "prettier"; + +import { INTERACTION_LEXICON, selectCatalogueSlugs, type LexiconTerm } from "../src/lib/medication-interaction-lexicon"; +import type { MedicationRecord } from "../src/lib/medications"; + +const SNAPSHOT_PATH = "data/medications-snapshot.json"; +const INDEX_PATH = "data/medication-interaction-index.json"; +const OUTPUT_PATH = "docs/medication-interaction-lexicon-review.md"; + +/** A resolved set this large is usually a selector that is too broad. */ +const WIDE_EXPANSION = 25; + +type IndexShape = { + bySlug: Record; +}; + +function escapePipes(value: string): string { + return value.replaceAll("|", "\\|"); +} + +async function main(): Promise { + const checkOnly = process.argv.includes("--check"); + const records = JSON.parse(readFileSync(path.resolve(process.cwd(), SNAPSHOT_PATH), "utf8")) as MedicationRecord[]; + const index = JSON.parse(readFileSync(path.resolve(process.cwd(), INDEX_PATH), "utf8")) as IndexShape; + const nameBySlug = new Map(records.map((record) => [record.slug, record.name])); + + // The catalogue is not guaranteed to give a drug one record. It currently + // holds two called "Warfarin" (`warfarin-vka`, `warfarin-anticoagulant`), + // which rendered as "Warfarin, Warfarin" and read like a bug in this report + // rather than a duplicate in the source. Disambiguate by slug so the reviewer + // can see which record is which, and flag the duplicates explicitly below. + const slugsByName = new Map(); + for (const record of records) { + const bucket = slugsByName.get(record.name) ?? []; + bucket.push(record.slug); + slugsByName.set(record.name, bucket); + } + const drugLabel = (slug: string): string => { + const name = nameBySlug.get(slug); + if (!name) return slug; + return (slugsByName.get(name)?.length ?? 0) > 1 ? `${name} (\`${slug}\`)` : name; + }; + + // How many catalogue rows each term fires on, and how many of those are the + // two severities that paint a row red. A wrong mapping on a high-usage, + // high-severity term is the most expensive kind. + const usage = new Map(); + for (const entry of Object.values(index.bySlug)) { + for (const row of entry.rows) { + const severe = row.severity === "critical" || row.severity === "high"; + for (const id of row.termIds) { + const current = usage.get(id) ?? { rows: 0, severe: 0 }; + current.rows += 1; + if (severe) current.severe += 1; + usage.set(id, current); + } + } + } + + const lines: string[] = []; + lines.push("# Medication interaction lexicon — clinical review sheet"); + lines.push(""); + lines.push("**Status: UNREVIEWED.** No clinician has checked these mappings. Record sign-off at the bottom."); + lines.push(""); + lines.push( + "Generated by `npm run medications:lexicon-report` from `src/lib/medication-interaction-lexicon.ts`.", + "Do not hand-edit — fix the lexicon and regenerate. `npm run check:medication-lexicon-report` fails when", + "this file and the lexicon disagree.", + ); + lines.push(""); + lines.push("## What you are checking"); + lines.push(""); + lines.push( + "The catalogue writes interactions as prose (`CRITICAL — NSAIDs and Aspirin. SSRIs deplete platelet", + "serotonin…`). To warn a clinician that *this* patient's drug is the one being described, the app has to", + "decide which catalogue medications a phrase like **NSAIDs** covers. This table is every one of those", + "decisions, expanded to the drugs it actually resolves to.", + ); + lines.push(""); + lines.push("Three questions per row:"); + lines.push(""); + lines.push("1. Does the term cover a drug it should **not**? (a false alert)"); + lines.push("2. Does it **miss** a drug it should cover? (a missed alert — the dangerous direction)"); + lines.push("3. Is the classification (`catalogue` / `external` / `nonDrug` / `mechanism`) right?"); + lines.push(""); + lines.push("`Rows` is how many catalogue interaction rows the term fires on; `Severe` is how many of those are"); + lines.push("CRITICAL or HIGH. Start at the top — the table is sorted by severe usage."); + lines.push(""); + + const catalogueTerms = INTERACTION_LEXICON.filter((term) => term.kind === "catalogue"); + const expansions = new Map(); + for (const term of catalogueTerms) { + expansions.set(term.id, term.select ? selectCatalogueSlugs(term.select, records) : []); + } + + const sorted = [...catalogueTerms].sort((a, b) => { + const usageA = usage.get(a.id) ?? { rows: 0, severe: 0 }; + const usageB = usage.get(b.id) ?? { rows: 0, severe: 0 }; + return usageB.severe - usageA.severe || usageB.rows - usageA.rows || a.id.localeCompare(b.id); + }); + + lines.push("## Drug-class terms"); + lines.push(""); + lines.push("| Term | Matches these phrases | Rows | Severe | Resolves to |"); + lines.push("| --- | --- | --- | --- | --- |"); + for (const term of sorted) { + const stat = usage.get(term.id) ?? { rows: 0, severe: 0 }; + const slugs = expansions.get(term.id) ?? []; + const names = slugs.map(drugLabel).sort(); + lines.push( + `| \`${term.id}\` | ${escapePipes(term.surfaces.join(", "))} | ${stat.rows} | ${stat.severe} | ` + + `**${names.length}** — ${escapePipes(names.join(", ")) || "_nothing_"} |`, + ); + } + lines.push(""); + + // Deny-lists are the guards against known mis-classifications, so they are + // called out rather than left implicit in a selector. + lines.push("## Deliberate exclusions"); + lines.push(""); + lines.push("Drugs a selector would otherwise have swept in. Each is a clinical claim worth checking."); + lines.push(""); + const denied = catalogueTerms.filter((term) => (term.select?.denySlugs ?? []).length > 0); + if (denied.length === 0) { + lines.push("_None._"); + } else { + lines.push("| Term | Excluded | Why it would otherwise match |"); + lines.push("| --- | --- | --- |"); + for (const term of denied) { + for (const slug of term.select?.denySlugs ?? []) { + const record = records.find((item) => item.slug === slug); + const reason = record ? `class \`${record.class}\`, subclass \`${record.subclass}\`` : "not in catalogue"; + lines.push(`| \`${term.id}\` | ${drugLabel(slug)} | ${escapePipes(reason)} |`); + } + } + } + lines.push(""); + + lines.push("## Terms that resolve to no catalogue drug"); + lines.push(""); + lines.push( + "These never produce an alert. `nonDrug` and `external` are deliberate; `mechanism` is an admission that", + "the class cannot be enumerated, and holds the medication at grey rather than green.", + ); + lines.push(""); + lines.push("| Term | Kind | Matches these phrases | Rows | Note |"); + lines.push("| --- | --- | --- | --- | --- |"); + for (const term of INTERACTION_LEXICON.filter((item) => item.kind !== "catalogue")) { + const stat = usage.get(term.id) ?? { rows: 0, severe: 0 }; + lines.push( + `| \`${term.id}\` | ${term.kind} | ${escapePipes(term.surfaces.join(", "))} | ${stat.rows} | ` + + `${escapePipes(term.note ?? "")} |`, + ); + } + lines.push(""); + + lines.push("## Flagged for a closer look"); + lines.push(""); + const flags = [ + ...substringTraps(catalogueTerms, records), + ...duplicateCatalogueNames(slugsByName, expansions, records), + ...collectFlags(catalogueTerms, expansions, usage), + ]; + if (flags.length === 0) { + lines.push("_Nothing flagged._"); + } else { + for (const flag of flags) lines.push(`- ${flag}`); + } + lines.push(""); + + lines.push("## Sign-off"); + lines.push(""); + lines.push("| Field | Value |"); + lines.push("| --- | --- |"); + lines.push("| Reviewer (name + role) | _not yet reviewed_ |"); + lines.push("| Date | _not yet reviewed_ |"); + lines.push("| Outcome | _not yet reviewed_ |"); + lines.push("| Corrections raised | _not yet reviewed_ |"); + lines.push(""); + lines.push( + "Until this is filled in, treat every interaction alert as unvalidated mapping over source-backed text.", + "The wording shown to the clinician is always verbatim from the catalogue; what is unreviewed is *which", + "drugs a phrase was taken to mean*.", + ); + lines.push(""); + + // Format here, exactly as `generate-site-map.ts` does. `npm run format` runs + // over the whole tree and reflows these markdown tables; without this the + // generator's raw output and the committed file disagree the moment anyone + // formats, and `--check` reports a stale artefact that is not actually stale. + const rendered = await format(`${lines.join("\n")}\n`, { parser: "markdown", printWidth: 120 }); + const outputPath = path.resolve(process.cwd(), OUTPUT_PATH); + + if (checkOnly) { + let current = ""; + try { + current = readFileSync(outputPath, "utf8"); + } catch { + current = ""; + } + // Compare everything except the human-maintained sign-off block, so recording + // a review does not make the report look stale. + if (beforeSignOff(current) !== beforeSignOff(rendered)) { + console.error( + `[lexicon-report] ${OUTPUT_PATH} is stale.\nRun \`npm run medications:lexicon-report\` and commit the result.`, + ); + process.exit(1); + } + console.log(`[lexicon-report] ${OUTPUT_PATH} is up to date (${catalogueTerms.length} catalogue terms).`); + return; + } + + // Preserve any sign-off already recorded by a human. + let existingSignOff = ""; + try { + const current = readFileSync(outputPath, "utf8"); + const marker = current.indexOf("## Sign-off"); + if (marker >= 0 && !current.includes("_not yet reviewed_")) existingSignOff = current.slice(marker); + } catch { + existingSignOff = ""; + } + + const output = existingSignOff ? `${beforeSignOff(rendered)}${existingSignOff}` : rendered; + writeFileSync(outputPath, output); + console.log( + `[lexicon-report] wrote ${OUTPUT_PATH}: ${catalogueTerms.length} catalogue terms, ${flags.length} flagged.`, + ); +} + +function beforeSignOff(value: string): string { + const marker = value.indexOf("## Sign-off"); + return marker >= 0 ? value.slice(0, marker) : value; +} + +/** + * Does a `subclassIncludes` token hide inside an unrelated subclass? + * + * This is the check that would have caught "ARB" inside "Carbapenem" on the day + * it was written. A token is treated as legitimate for a subclass when it + * appears there as a whole word; if it only appears as a bare substring, the + * match is almost certainly accidental. + */ +function substringTraps(terms: readonly LexiconTerm[], records: readonly MedicationRecord[]): string[] { + const subclasses = Array.from(new Set(records.map((record) => record.subclass ?? "").filter(Boolean))); + const traps: string[] = []; + for (const term of terms) { + for (const token of term.select?.subclassIncludes ?? []) { + const lower = token.toLowerCase(); + for (const subclass of subclasses) { + if (!subclass.toLowerCase().includes(lower)) continue; + const words = subclass + .toLowerCase() + .split(/[^a-z0-9]+/) + .filter(Boolean); + const tokenWords = lower.split(/[^a-z0-9]+/).filter(Boolean); + const wholeWord = tokenWords.every((part) => words.includes(part)); + if (!wholeWord) { + traps.push( + `\`${term.id}\` matches subclass **${subclass}** only as a substring of \`${token}\` — ` + + "almost certainly accidental. Use `subclassEquals`, or narrow the token.", + ); + } + } + } + } + return traps; +} + +/** + * Two catalogue records sharing a drug name. + * + * Not a lexicon fault, but it lands on the clinician reading this sheet: a class + * that expands to the same name twice looks like a bug here when the duplication + * is upstream in `data/medications-snapshot.json`. It also matters clinically — + * a duplicated record means the same drug can carry two different interaction + * row sets, so a warning present on one and absent on the other is invisible + * from the drug's name alone. Reported only when a lexicon term actually + * resolves to the duplicate; an unused duplicate is a catalogue chore, not a + * safety question for this review. + * + * The row sets are compared here rather than left as "confirm they agree", + * because the first duplicate found (Warfarin) did NOT agree — so the flag has + * to state the divergence, not ask about it. + */ +function duplicateCatalogueNames( + slugsByName: Map, + expansions: Map, + records: readonly MedicationRecord[], +): string[] { + const resolved = new Set(Array.from(expansions.values()).flat()); + const bySlug = new Map(records.map((record) => [record.slug, record])); + const rowSet = (slug: string): Set => + new Set( + (bySlug.get(slug)?.sections.find((section) => section.type === "inter")?.rows ?? []).map( + (row) => `${row.key}::${row.val}`, + ), + ); + + const flags: string[] = []; + for (const [name, slugs] of slugsByName) { + if (slugs.length < 2) continue; + if (!slugs.some((slug) => resolved.has(slug))) continue; + const sets = slugs.map(rowSet); + const shared = [...sets[0]].filter((row) => sets.every((set) => set.has(row))).length; + const agree = sets.every((set) => set.size === shared); + const detail = agree + ? `They carry identical interaction rows, so the duplication is cosmetic.` + : `They carry **different** interaction rows (${slugs + .map((slug, index) => `\`${slug}\`: ${sets[index].size}`) + .join(", ")}; only ${shared} in common), so which record the clinician opens changes which ` + + `warnings they see. Reconcile them in the catalogue.`; + flags.push( + `The catalogue holds ${slugs.length} records named **${name}** ` + + `(${slugs.map((slug) => `\`${slug}\``).join(", ")}), and a lexicon class resolves to them. ${detail}`, + ); + } + return flags; +} + +function collectFlags( + terms: readonly LexiconTerm[], + expansions: Map, + usage: Map, +): string[] { + const flags: string[] = []; + for (const term of terms) { + const slugs = expansions.get(term.id) ?? []; + const stat = usage.get(term.id) ?? { rows: 0, severe: 0 }; + if (slugs.length === 0) { + flags.push(`\`${term.id}\` resolves to **no drug at all** — it can never fire.`); + } else if (slugs.length === 1) { + flags.push(`\`${term.id}\` resolves to a single drug; check the class is not wider than the catalogue.`); + } else if (slugs.length >= WIDE_EXPANSION) { + flags.push(`\`${term.id}\` resolves to **${slugs.length} drugs** — broad enough to be worth re-reading.`); + } + if (stat.severe > 0 && slugs.length === 0) { + flags.push(`\`${term.id}\` appears in ${stat.severe} CRITICAL/HIGH rows but resolves to nothing.`); + } + if (stat.rows === 0) { + flags.push(`\`${term.id}\` fires on no catalogue row — dead entry, or its phrasing never occurs.`); + } + } + return flags; +} + +main().catch((error) => { + console.error(`[lexicon-report] ${error instanceof Error ? error.message : String(error)}`); + process.exit(1); +}); diff --git a/scripts/verify-pr-local.mjs b/scripts/verify-pr-local.mjs index e58c9e7810..5b49082c8f 100644 --- a/scripts/verify-pr-local.mjs +++ b/scripts/verify-pr-local.mjs @@ -127,6 +127,9 @@ export function selectedScripts(scope, extended) { // old safety verdict. Cheap and deterministic, so it rides every executable // scope rather than needing its own path classification. if (scope.static_heavy_changed) add("check:medication-interactions"); + // The lexicon review sheet is the artefact a clinician signs off; if it does + // not describe the current lexicon, the sign-off covers something else. + if (scope.static_heavy_changed) add("check:medication-lexicon-report"); if (extended && scope.ui_changed) add("verify:ui"); return scripts; } @@ -211,6 +214,7 @@ function selfTest() { ...staticHeavyScripts, "check:rag:fixtures", "check:medication-interactions", + "check:medication-lexicon-report", ], ); assertPlan("unknown-or-product-change-fails-heavy", { static_heavy_changed: true }, [ @@ -218,17 +222,26 @@ function selfTest() { ...staticHeavyScripts, "check:rag:fixtures", "check:medication-interactions", + "check:medication-lexicon-report", ]); assertPlan("rag-change", { static_heavy_changed: true, rag_eval_changed: true }, [ ...commonScripts, ...staticHeavyScripts, "eval:rag:offline", "check:medication-interactions", + "check:medication-lexicon-report", ]); assertPlan( "ui-extended", { static_heavy_changed: true, ui_changed: true }, - [...commonScripts, ...staticHeavyScripts, "check:rag:fixtures", "check:medication-interactions", "verify:ui"], + [ + ...commonScripts, + ...staticHeavyScripts, + "check:rag:fixtures", + "check:medication-interactions", + "check:medication-lexicon-report", + "verify:ui", + ], true, ); assertPlan( @@ -241,6 +254,7 @@ function selfTest() { "build", "check:rag:fixtures", "check:medication-interactions", + "check:medication-lexicon-report", ], ); assertPlan( @@ -253,6 +267,7 @@ function selfTest() { "build", "check:rag:fixtures", "check:medication-interactions", + "check:medication-lexicon-report", ], ); console.log("PR-local verification plan self-test passed."); diff --git a/src/components/clinical-dashboard/medication-considerations.tsx b/src/components/clinical-dashboard/medication-considerations.tsx index c7c092398b..c3db0da81e 100644 --- a/src/components/clinical-dashboard/medication-considerations.tsx +++ b/src/components/clinical-dashboard/medication-considerations.tsx @@ -18,6 +18,8 @@ import { BadgeCluster, ClinicalBadge, type ClinicalBadgeItem } from "@/component import { usePatientProfile } from "@/components/clinical-dashboard/patient-profile-context"; import { evaluateMedicationInteractions, + interactionNoteBody, + severityLabel, type MedicationInteraction, type MedicationVerdict, } from "@/lib/medication-interactions"; @@ -218,23 +220,36 @@ export function MedicationInteractionCallout({ : "border-[color:var(--warning-border)] bg-[color:var(--warning-soft)]", )} > + {/* One card per interaction, on the panel's own surface rather than the + tinted wash behind it: body text on a same-hue fill is the + readability trap (#659), and it is also what made these read as an + undifferentiated block. */}
    {headline.map((interaction) => (
  • - - {interaction.counterpartyName} -
  • ))} @@ -419,13 +434,20 @@ function MedicationInteractionBlock({ record }: { record: MedicationRecord }) { compact /> - {/* Verbatim catalogue text — never a paraphrase. */} + {/* Verbatim catalogue text — never a paraphrase. The leading + "CRITICAL — " is dropped only because the badges above already + state it; no sentence is removed or reworded. */} {interaction.note ? ( -

    {interaction.note}

    +

    + {interactionNoteBody(interaction.note)} +

    ) : null} diff --git a/src/lib/medication-interaction-lexicon.ts b/src/lib/medication-interaction-lexicon.ts index 01f2b730af..89e65acec1 100644 --- a/src/lib/medication-interaction-lexicon.ts +++ b/src/lib/medication-interaction-lexicon.ts @@ -7,7 +7,17 @@ export type LexiconTermKind = "catalogue" | "external" | "nonDrug" | "mechanism" export type CatalogueSelector = { slugs?: string[]; classes?: string[]; + /** + * Substring match against `record.subclass`. Correct for a family name that + * legitimately appears inside longer subclasses ("NSAID" inside "NSAID + * (COX-2 preferential)"), and WRONG for a short acronym that can hide inside + * an unrelated word — "ARB" sits inside "C-arb-apenem", which put two + * carbapenem antibiotics in the ARB class across 16 CRITICAL/HIGH rows until + * the review report surfaced it. Use `subclassEquals` for short acronyms. + */ subclassIncludes?: string[]; + /** Exact (case-insensitive) match against `record.subclass`. */ + subclassEquals?: string[]; denySlugs?: string[]; }; @@ -65,7 +75,9 @@ const CATALOGUE_TERMS: LexiconTerm[] = [ kind: "catalogue", select: { subclassIncludes: ["ACE Inhibitor"] }, }, - { id: "arbs", surfaces: ["arbs", "arb"], kind: "catalogue", select: { subclassIncludes: ["ARB"] } }, + // Exact, not substring: "ARB" is a substring of "Carbapenem", which put + // ertapenem and meropenem in the ARB class across 16 CRITICAL/HIGH rows. + { id: "arbs", surfaces: ["arbs", "arb"], kind: "catalogue", select: { subclassEquals: ["ARB"] } }, { id: "diuretics", surfaces: ["diuretics", "diuretic"], @@ -299,7 +311,8 @@ export function selectCatalogueSlugs(select: CatalogueSelector, records: readonl const recordSubclass = (record.subclass ?? "").toLowerCase(); const classHit = (select.classes ?? []).some((value) => value.toLowerCase() === recordClass); const subclassHit = (select.subclassIncludes ?? []).some((value) => recordSubclass.includes(value.toLowerCase())); - if (classHit || subclassHit) matched.add(record.slug); + const subclassExact = (select.subclassEquals ?? []).some((value) => value.toLowerCase() === recordSubclass); + if (classHit || subclassHit || subclassExact) matched.add(record.slug); } for (const slug of deny) matched.delete(slug); diff --git a/src/lib/medication-interactions.ts b/src/lib/medication-interactions.ts index b8b9011bcf..3830582448 100644 --- a/src/lib/medication-interactions.ts +++ b/src/lib/medication-interactions.ts @@ -67,6 +67,8 @@ type IndexRow = { counterparties: string[]; termIds: string[]; resolved: boolean; + /** Verbatim row text, carried so the reverse direction has wording too. */ + note: string; }; type InteractionIndexShape = { @@ -133,6 +135,32 @@ function normaliseSeverity(value: string): InteractionSeverity { return (SEVERITY_ORDER as string[]).includes(value) ? (value as InteractionSeverity) : "unknown"; } +// The catalogue writes every interaction row as `SEVERITY — body`, e.g. +// "CRITICAL — MAOIs, Tramadol… Massive risk of Serotonin Syndrome". The prefix +// is the same value already carried in `severity`, so rendering it inside the +// paragraph both repeats the badge beside it and opens every entry with a +// shouty all-caps token and a dangling dash — which is what made the block read +// as unformatted dump rather than prose. Only recognised severity labels are +// removable: a broad all-caps pattern can eat clinical acronyms or instructions +// such as "NSAID-induced" and "NEVER-combine". +const SEVERITY_PREFIX = new RegExp(`^\\s*(?:${SEVERITY_ORDER.join("|")})\\s*[—–-]\\s*`, "i"); + +/** + * The interaction row's text with that redundant severity prefix removed. + * + * Deliberately NOT a summariser: no sentence is dropped, reordered or reworded, + * because the wording is the clinical claim and the surface promises it + * verbatim. A row that does not carry the prefix is returned untouched. + */ +export function interactionNoteBody(note: string): string { + return note.replace(SEVERITY_PREFIX, "").trim(); +} + +/** Display label for a severity, e.g. "critical" → "Critical". */ +export function severityLabel(severity: InteractionSeverity): string { + return severity.charAt(0).toUpperCase() + severity.slice(1); +} + export function interactionRowCount(slug: string): number { return INDEX.bySlug[slug]?.rows.length ?? 0; } @@ -178,7 +206,10 @@ export function evaluateMedicationInteractions( for (const row of entry.rows) { for (const counterpartySlug of row.counterparties) { if (!patient.has(counterpartySlug)) continue; - interactions.push(interactionFromRow(slug, row, counterpartySlug, sourceRows[row.rowIndex]?.val ?? "")); + // Prefer the live record's wording; fall back to the indexed copy when no + // record was supplied. The two are kept identical by + // `check:medication-interactions`, which fails on a stale artefact. + interactions.push(interactionFromRow(slug, row, counterpartySlug, sourceRows[row.rowIndex]?.val || row.note)); } } } @@ -191,7 +222,11 @@ export function evaluateMedicationInteractions( if (!reverseEntry) continue; for (const row of reverseEntry.rows) { if (!row.counterparties.includes(slug)) continue; - interactions.push(interactionFromRow(patientSlug, row, patientSlug, "", true)); + // The reverse row belongs to the PATIENT's medication, whose record this + // caller does not hold — so its wording can only come from the index. It + // used to be passed as "", which rendered a drug name and a severity chip + // with nothing underneath explaining either. + interactions.push(interactionFromRow(patientSlug, row, patientSlug, row.note, true)); } } diff --git a/tests/medication-interaction-callout-tap-target.dom.test.tsx b/tests/medication-interaction-callout-tap-target.dom.test.tsx new file mode 100644 index 0000000000..91bfc2d189 --- /dev/null +++ b/tests/medication-interaction-callout-tap-target.dom.test.tsx @@ -0,0 +1,33 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import { beforeEach, describe, expect, it } from "vitest"; + +import { MedicationInteractionCallout } from "@/components/clinical-dashboard/medication-considerations"; +import { PatientProfileProvider } from "@/components/clinical-dashboard/patient-profile-context"; +import { getMedicationRecord } from "@/lib/medication-snapshot"; +import { PATIENT_PROFILE_STORAGE_KEY } from "@/lib/patient-profile-storage"; +import type { MedicationRecord } from "@/lib/medications"; + +beforeEach(() => { + window.sessionStorage.clear(); +}); + +describe("MedicationInteractionCallout tap targets", () => { + it("keeps each counterparty navigation link at the production tap-height floor", () => { + window.sessionStorage.setItem(PATIENT_PROFILE_STORAGE_KEY, JSON.stringify({ medications: ["tramadol-ir"] })); + const record = getMedicationRecord("sertraline") as MedicationRecord; + + render( + + {}} + onOpenInteractionsSection={() => {}} + /> + , + ); + + fireEvent.click(screen.getByRole("button", { name: /interaction with this patient/i })); + + expect(screen.getByRole("link", { name: /Tramadol IR/i })).toHaveClass("min-h-tap"); + }); +}); diff --git a/tests/medication-interaction-lexicon-coverage.test.ts b/tests/medication-interaction-lexicon-coverage.test.ts index fe587be777..d18dfbed86 100644 --- a/tests/medication-interaction-lexicon-coverage.test.ts +++ b/tests/medication-interaction-lexicon-coverage.test.ts @@ -123,6 +123,68 @@ describe("lexicon deny-lists (the traps this module exists for)", () => { expect(opioids).not.toContain("naloxone"); }); + it("never resolves a carbapenem antibiotic as an ARB", () => { + // "ARB" is a substring of "C-arb-apenem". `subclassIncludes` is a substring + // match, so it swept ertapenem and meropenem into the ARB class across 16 + // CRITICAL/HIGH rows until the review report surfaced it. The selector is + // `subclassEquals` now; this pins the outcome by name. + const arbs = slugsFor("arbs"); + expect(arbs).toContain("candesartan"); + expect(arbs).not.toContain("ertapenem"); + expect(arbs).not.toContain("meropenem"); + expect(arbs.every((slug) => records.find((item) => item.slug === slug)?.class !== "Antibiotic")).toBe(true); + }); + + it("keeps every subclass substring token a whole-word match", () => { + // The systemic form of the ARB trap: a `subclassIncludes` token that only + // appears inside a longer word is matching by accident. Legitimate uses — + // "NSAID" inside "NSAID (COX-2 preferential)" — are whole words. + const subclasses = Array.from(new Set(records.map((record) => record.subclass ?? "").filter(Boolean))); + const accidental: string[] = []; + for (const term of INTERACTION_LEXICON) { + for (const token of term.select?.subclassIncludes ?? []) { + const tokenWords = token + .toLowerCase() + .split(/[^a-z0-9]+/) + .filter(Boolean); + for (const subclass of subclasses) { + if (!subclass.toLowerCase().includes(token.toLowerCase())) continue; + const words = subclass + .toLowerCase() + .split(/[^a-z0-9]+/) + .filter(Boolean); + if (!tokenWords.every((part) => words.includes(part))) { + accidental.push(`${term.id}: "${token}" inside "${subclass}"`); + } + } + } + } + expect(accidental).toEqual([]); + }); + + it("keeps the divergent duplicate Warfarin records visible", () => { + // The catalogue holds two records named "Warfarin" whose interaction rows + // have nothing in common, so which one a clinician opens changes which + // warnings they see. That is a catalogue defect, not a lexicon one, and it + // is deliberately left unpatched pending a clinical decision — but it must + // not become invisible. If someone reconciles the records, this test goes + // red and the review sheet's flag can be retired with it. + const duplicates = records.filter((record) => record.name === "Warfarin"); + expect(duplicates.map((record) => record.slug).sort()).toEqual(["warfarin-anticoagulant", "warfarin-vka"]); + + const rowSet = (slug: string) => + new Set( + ( + records.find((record) => record.slug === slug)?.sections.find((section) => section.type === "inter")?.rows ?? + [] + ).map((row) => `${row.key}::${row.val}`), + ); + const [a, b] = [rowSet("warfarin-vka"), rowSet("warfarin-anticoagulant")]; + expect(a.size).toBeGreaterThan(0); + expect(b.size).toBeGreaterThan(0); + expect([...a].filter((row) => b.has(row))).toEqual([]); + }); + it("resolves beta blockers across both catalogue spellings", () => { const betaBlockers = slugsFor("beta-blockers"); // "Beta Blocker" (metoprolol) and "Beta-Blocker" (propranolol). diff --git a/tests/medication-interactions.test.ts b/tests/medication-interactions.test.ts index e755d3ca87..187d47745a 100644 --- a/tests/medication-interactions.test.ts +++ b/tests/medication-interactions.test.ts @@ -4,7 +4,9 @@ import { getMedicationRecord } from "@/lib/medication-snapshot"; import { composeMedicationVerdict, evaluateMedicationInteractions, + interactionNoteBody, interactionRowCount, + severityLabel, medicationDisplayName, SEVERITY_TONE, } from "@/lib/medication-interactions"; @@ -36,6 +38,27 @@ describe("evaluateMedicationInteractions", () => { expect(result.highestTone).toBe("danger"); }); + it("gives a reverse-only match its wording, not just a name and a severity", () => { + // Buprenorphine/naloxone's own rows never name naltrexone; naltrexone's row + // names it. The caller holds only the viewed drug's record, so this text can + // come from nowhere but the index — and it used to be passed as "", leaving a + // CRITICAL alert with nothing underneath explaining it. + const result = evaluateMedicationInteractions("buprenorphine-naloxone", ["naltrexone"]); + const reverse = result.interactions.find((item) => item.counterpartySlug === "naltrexone"); + expect(reverse?.severity).toBe("critical"); + expect(reverse?.note).toMatch(/Opioid analgesia is antagonised/i); + }); + + it("prefers the live record's wording over the indexed copy when both exist", () => { + const record = getMedicationRecord("sertraline"); + const withRecord = evaluateMedicationInteractions("sertraline", ["ibuprofen"], record); + const withoutRecord = evaluateMedicationInteractions("sertraline", ["ibuprofen"]); + // Same text either way while the artefact is fresh — `check:medication-interactions` + // is what keeps that true — but the record is the authority when supplied. + expect(withRecord.interactions[0]?.note).toBe(withoutRecord.interactions[0]?.note); + expect(withoutRecord.interactions[0]?.note).toContain("NSAIDs"); + }); + it("keeps missing interaction data incomplete instead of green", () => { const result = evaluateMedicationInteractions("not-a-real-drug", ["sertraline"]); expect(result.dataAvailable).toBe(false); @@ -85,7 +108,10 @@ describe("composeMedicationVerdict", () => { }; it("is green only when both engines ran clean", () => { - expect(composeMedicationVerdict(base)).toMatchObject({ tone: "success", incomplete: false }); + expect(composeMedicationVerdict(base)).toMatchObject({ + tone: "success", + incomplete: false, + }); }); it("degrades green to grey when interaction data is incomplete", () => { @@ -97,7 +123,56 @@ describe("composeMedicationVerdict", () => { it("keeps danger even when data is incomplete", () => { expect( - composeMedicationVerdict({ ...base, interactionTone: "danger", interactionCount: 1, unresolvedRowCount: 1 }), + composeMedicationVerdict({ + ...base, + interactionTone: "danger", + interactionCount: 1, + unresolvedRowCount: 1, + }), ).toMatchObject({ tone: "danger", incomplete: true }); }); }); + +describe("interactionNoteBody", () => { + it("drops the redundant severity prefix the badge already states", () => { + expect(interactionNoteBody("CRITICAL — MAOIs, Tramadol. Massive risk of Serotonin Syndrome.")).toBe( + "MAOIs, Tramadol. Massive risk of Serotonin Syndrome.", + ); + }); + + it("handles the hyphen and en-dash the catalogue also uses", () => { + expect(interactionNoteBody("HIGH - Benzodiazepines/Alcohol.")).toBe("Benzodiazepines/Alcohol."); + expect(interactionNoteBody("MODERATE – Antacids bind the drug.")).toBe("Antacids bind the drug."); + }); + + it("removes nothing else — every sentence of the clinical claim survives", () => { + const note = + "CRITICAL — NSAID + ACEi/ARB + Diuretic. Will virtually guarantee acute renal failure. NEVER prescribe this combination."; + const body = interactionNoteBody(note); + expect(body).toContain("Will virtually guarantee acute renal failure."); + expect(body).toContain("NEVER prescribe this combination."); + // Only the prefix is gone; the rest is byte-identical. + expect(note.endsWith(body)).toBe(true); + }); + + it("leaves a row with no severity prefix untouched", () => { + expect(interactionNoteBody("Blocks the cardioprotective effect of low-dose Aspirin.")).toBe( + "Blocks the cardioprotective effect of low-dose Aspirin.", + ); + }); + + it("does not strip unknown uppercase clinical wording before a dash", () => { + expect(interactionNoteBody("NSAID-induced renal injury")).toBe("NSAID-induced renal injury"); + expect(interactionNoteBody("NEVER-combine with MAOIs")).toBe("NEVER-combine with MAOIs"); + }); + + it("does not eat an all-caps word that is part of the sentence", () => { + // No dash, so nothing is a prefix. + expect(interactionNoteBody("NEVER combine with MAOIs")).toBe("NEVER combine with MAOIs"); + }); + + it("labels severity for display", () => { + expect(severityLabel("critical")).toBe("Critical"); + expect(severityLabel("unknown")).toBe("Unknown"); + }); +});