Methods & About
DrugInteract is a fully client-side static web page. There is no backend and no stored interaction dataset. Every lookup is a live query, from your browser, to free public APIs from the U.S. government (NLM and FDA).
How a lookup works
- Type-ahead suggestions. As you type, the input offers suggestions from the RxNorm display-name list (fetched once per session). Suggestions are a convenience only; you can type any name freely and it is normalized on submit.
- Normalize each drug. Your typed text is sent to the
RxNorm
REST API (
findRxcuiByString). If there is no exact match, RxNorm spelling suggestions are offered as "did you mean". A matched concept (including a brand name) is resolved to its active ingredient. - Fetch FDA labels. For each drug, the
openFDA Drug Label API
is queried by
openfda.generic_name(the most reliable key; label RxCUIs are product-level, not ingredient-level). Labels are de-duplicated byspl_set_idand read newest-first. - Search the label text. For each pair, the Drug Interactions (Section 7) text of every fetched label is searched, case-insensitively and on word boundaries, for the other drug's ingredient, generic, and brand names. The Contraindications (Section 4), Boxed Warning, and Warnings and Cautions (Section 5) sections are searched as secondary signals (some interactions are stated only there). The check is run in both directions, and transient API errors are retried.
- Report. Matches are shown with a quoted snippet and a citation to the specific FDA label (generic name, effective date, and a DailyMed link), plus a "found in N of M labels" count.
Because different manufacturers' labels for the same generic drug carry different Section 7 text, all returned labels are searched (capped at the most recent 100 per drug for performance) so that label selection does not hide a real interaction.
What the results mean
- Interaction mentioned. At least one drug's FDA label names the other in its Drug Interactions, Contraindications, Boxed Warning, or Warnings text. The snippet is the label's own wording, not a severity judgment.
- No interaction mentioned. Labels were found and searched, and neither names the other. This does not mean the combination is safe (see limitations).
- No FDA label to check. The drug is recognized by RxNorm, but no U.S. FDA label with interaction text was found to search. This is different from "no interaction mentioned" - nothing could be checked.
- Not recognized. RxNorm did not recognize the input. Spelling suggestions are offered.
Drug profiles (informational)
For each recognized drug, a separate "Drug profiles" panel shows categorical background from the RxClass API (NLM). It is fetched after the interaction check and never affects the interaction result.
- Drug family (ATC) - the WHO Anatomical Therapeutic
Chemical class, e.g. atorvastatin in
C10AA"HMG CoA reductase inhibitors". RxClass rolls a fixed-dose combination product's ATC up to each ingredient, which can attach a misleading family (for example simvastatin appearing under "DPP-4 inhibitors" via a sitagliptin combination). We suppress these: a family is shown only when the drug has at least one single-ingredient product classified under it. A drug with several legitimate single-ingredient families still shows all of them. - Pharmacologic class (EPC) - the FDA Established Pharmacologic Class, e.g. "HMG-CoA Reductase Inhibitor".
- Mechanism / target class (MoA) - the FDA/MED-RT Mechanism of Action, used here as mechanism and target context, e.g. "Vitamin K Epoxide Reductase Inhibitors".
- CYP enzymes - cytochrome P450 involvement. RxClass classifies drugs as CYP inhibitors and inducers only; it has no substrate classification, so substrate is always shown as "not classified in RxClass" and never inferred. CYP coverage is incomplete - some textbook roles (e.g. rifampin as a CYP3A4 inducer) are simply not coded in RxClass, in which case the line reads "none recorded in RxClass".
- Transporters - drug-disposition transporter involvement (P-glycoprotein, OATP, OCT, MATE, etc.), parsed from the same RxClass mechanism data. Neurotransmitter transporters (a drug target, not a disposition route) are excluded. Shown only when present; coverage is incomplete and there is no transporter "substrate" class.
- Patient info - a link to the NLM MedlinePlus search for the drug, for plain-language consumer information.
No inference. This profile is context, not an interaction predictor. A shared family, target, or CYP enzyme does not by itself mean two drugs interact, and the tool never draws that conclusion. The interaction verdict comes only from openFDA label text. Coverage is categorical and incomplete; where RxClass returns nothing, a field reads "not available in RxClass" rather than implying none.
True molecular target lists (e.g. ChEMBL) are intentionally out of scope to keep this project public-domain; MoA serves as the mechanism/target context.
Limitations
- No severity grading. openFDA labels contain no Major / Moderate / Minor classification. This tool reports only whether an interaction is mentioned, never how serious it is.
- Pairwise only. Each drug pair is evaluated independently. The tool does not model additive or cumulative effects across three or more drugs (for example, the combined sedation of several CNS depressants taken together).
- Free text, written by manufacturers. Section 7 is narrative text written by each label holder. Quality, depth, and completeness vary widely between products.
- Class-level statements are missed. A label may warn about a drug class (for example "strong CYP3A4 inhibitors") without naming a specific drug. A name-based search will not match these, so real interactions described only at the class level are a known miss.
- U.S. drugs only. openFDA covers U.S. labeling. Coverage may not reflect currently distributed products, and over-the-counter monograph products may be represented differently or not at all.
- Live and rate-limited. Results depend on the openFDA and RxNorm services being available and on per-IP rate limits. Results are cached only for the current browser session.
- Name matching is imperfect. Matching on names can both miss interactions (class-level, salts, synonyms not on the label) and, less often, over-match. Always confirm against the full label and a clinician.
Data sources, versions, and licenses
- openFDA Drug Label API -
https://api.fda.gov/drug/label.json. U.S. FDA, public domain. Queried live; the effective date of each label is shown with each result. FDA statement: "Do not rely on openFDA to make decisions regarding medical care." - RxNorm (RxNav REST API) -
https://rxnav.nlm.nih.gov/REST/. Courtesy of the U.S. National Library of Medicine. NLM does not endorse this product. RxNorm data is in the public domain. - RxClass (RxNav REST API) -
https://rxnav.nlm.nih.gov/REST/rxclass/. Source of the drug profile panel (ATC, EPC, MoA, CYP, transporter classes). Courtesy of the U.S. National Library of Medicine; NLM does not endorse this product. Public domain, no license or key required. - MedlinePlus (NLM) -
https://medlineplus.gov/. Linked (not fetched) for plain-language patient drug information. Courtesy of the U.S. National Library of Medicine; NLM does not endorse this product. Public domain. - Code license: see
LICENSEin the repository. Data license: seeDATA_LICENSE.md.
The discontinued RxNorm drug-drug interaction API (retired 2 January 2024) is not used. This tool does not call it.