Drug regulatory and approval research -- FDA substance registry lookup, drug classification by ATC/EPC/MoA via RxClass, Orange Book generic availability and patent status, DailyMed label parsing (adverse reactions, dosing, contraindications), and clinical trial search. Use when users ask about FDA-approved drugs, drug regulatory status, generic availability, patent expiration, drug class membership, drug labeling, or substance identification.
Regulatory status depends on jurisdiction. FDA approval does not equal EMA approval — check the specific market the user is asking about. Generic availability depends on BOTH patent expiry AND regulatory approval — a patent may have expired but no ANDA may yet be filed or approved. Exclusivity codes (NCE, ODE, PED) can block generics even after patent expiry; always check FDA_OrangeBook_get_exclusivity before concluding a generic can enter. A 505(b)(2) NDA is not a generic — it requires its own clinical data and gets its own exclusivity period.
LOOK UP DON'T GUESS: never assume NDA numbers, exclusivity dates, or ATC codes — always call FDAGSRS, Orange Book, and RxClass tools to retrieve current data; regulatory status changes with new approvals and expirations.
Regulatory intelligence for drugs: identify FDA substances, classify drugs by therapeutic category, check approval and generic status, retrieve label sections, and find clinical trials.
tooluniverse-drug-drug-interactiontooluniverse-pharmacogenomicstooluniverse-drug-mechanism-researchtooluniverse-drug-repurposingInput (drug name / brand name / UNII)
|
v
Phase 1: Substance Identification -- FDAGSRS_search_substances, FDAGSRS_get_substance
|
v
Phase 2: Drug Classification -- RxClass_get_drug_classes, RxClass_find_classes
|
v
Phase 3: Approval & Generic Status -- FDA_OrangeBook_search_drug, FDA_OrangeBook_check_generic_availability
|
v
Phase 4: Patent & Exclusivity -- FDA_OrangeBook_get_patent_info, FDA_OrangeBook_get_exclusivity
|
v
Phase 5: Label Parsing -- DailyMed_parse_adverse_reactions, DailyMed_parse_dosing, etc.
|
v
Phase 6: Clinical Trials -- search_clinical_trials
|
v
Phase 7: Pharmacovigilance -- FAERS_count_reactions_by_drug_event (param: medicinalproduct)
|
v
Phase 8: Literature & Approval -- PubMed_search_articles, OpenFDA_get_approval_history, RxNorm_get_drug_names
Supplementary tools (not in core phases but useful):
OpenFDA_get_approval_history— full FDA submission/approval history (requiresoperationparam)FAERS_count_reactions_by_drug_event— top adverse events by report count (param:medicinalproduct, ALL CAPS)RxNorm_get_drug_names— resolve drug to RXCUI and brand namesdrugbank_vocab_search— DrugBank ID, CAS, UNII lookupPubMed_search_articles— regulatory and clinical literature
FDAGSRS_search_substances: query (string REQUIRED -- drug name, UNII, InChIKey, or formula), substance_class (string, optional: "chemical"/"protein"/"nucleic acid"/"polymer"/"mixture"), limit (int, 1-50, default 10).
Returns {status, data: {substances: [{unii, name, substance_class, status, cross_references: [{type, value}]}]}}.
cross_references contains DrugBank IDs, WHO-ATC codes, CAS numbers, CFR citations.FDAGSRS_get_substance.FDAGSRS_get_substance: unii (string REQUIRED, 10-char FDA UNII code).
Returns complete substance record including all synonyms, names, structure, and cross-references.
FDAGSRS_get_structure: unii (string REQUIRED).
Returns {status, data: {smiles, formula, inchikey, molfile, molecular_weight, stereochemistry, optical_activity}}.
# Full substance lookup workflow
search = tu.tools.FDAGSRS_search_substances(query="semaglutide")
unii = search["data"]["substances"][0]["unii"]
full = tu.tools.FDAGSRS_get_substance(unii=unii)
RxClass_get_drug_classes: drug_name (string, drug name), rxcui (string, RxNorm RXCUI -- alternative to drug_name), rela_source (string, optional: "ATC"/"FDASPL"/"MESH"/"VA"), limit (int, default 20).
Returns {status, data: {classes: [{class_id, class_name, class_type, rela}]}}.
rela_source filters to one.class_type values: "ATC1-4", "EPC" (FDA Established Pharmacologic Class), "MoA", "VA", "MESH".RxClass_find_classes: query (string REQUIRED, keyword e.g., "beta blocker"), class_type (string, optional: "ATC1-4"/"EPC"/"MoA"), limit (int, default 20).
Returns matching drug classes with class IDs.
RxClass_get_class_members.RxClass_get_class_members: class_id (string REQUIRED, e.g., "M01AE"), rela_source (string, optional: "ATC"/"FDASPL"), ttys (string, optional: "IN" for ingredients), limit (int, default 50).
Returns all drug ingredients in the class with RXCUIs and names.
ttys="IN" restricts to active ingredient-level entries (recommended).# Find all proton pump inhibitors
classes = tu.tools.RxClass_find_classes(query="proton pump inhibitor", class_type="EPC")
class_id = classes["data"]["classes"][0]["class_id"]
members = tu.tools.RxClass_get_class_members(class_id=class_id, ttys="IN")
FDA_OrangeBook_search_drug: brand_name (string), generic_name (string), application_number (string), limit (int, default 10).
Returns {status, data: {products: [{brand_name, generic_name, dosage_form, strength, te_code, application_number, approval_date}]}}.
te_code: Therapeutic Equivalence code (e.g., "AB" = therapeutically equivalent).FDA_OrangeBook_check_generic_availability: brand_name (string), generic_name (string).
Returns {status, data: {reference_listed_drug, generics_available: bool, generics_count, generic_products: [...]}}.
FDA_OrangeBook_get_te_code: No special params beyond brand_name/application_number.
Returns therapeutic equivalence codes for substitutability assessment.
FDA_OrangeBook_get_approval_history: application_number (string, e.g., "NDA020402").
Returns chronological approval history including supplemental approvals and label changes.
# Check generic availability
result = tu.tools.FDA_OrangeBook_check_generic_availability(brand_name="LIPITOR")
# result["data"]["generics_available"] -> True
# result["data"]["generics_count"] -> N
FDA_OrangeBook_get_patent_info: application_number (string), brand_name (string).
Returns patent information. Note: Full patent numbers and expiration dates require Orange Book data files.
FDA_OrangeBook_get_exclusivity: application_number (string), brand_name (string).
Returns {status, data: {exclusivities: [{exclusivity_code, exclusivity_date, description}]}}.
exclusivity_code values: "NCE" (New Chemical Entity, 5 years), "ODE" (Orphan Drug, 7 years), "PED" (Pediatric, 6 months), "NP" (New Product), "M" (new formulation).All DailyMed parse tools accept either setid (SPL Set ID UUID) OR drug_name (auto-lookup).
Using drug_name is recommended when the setid is unknown.
DailyMed_parse_adverse_reactions: setid or drug_name. Returns structured adverse reaction table with frequencies and severity.
DailyMed_parse_dosing: setid or drug_name. Returns dosage and administration section (doses, schedules, renal/hepatic adjustments).
DailyMed_parse_contraindications: setid or drug_name. Returns contraindications section.
DailyMed_parse_drug_interactions: setid or drug_name. Returns drug-drug interaction section with clinical management guidance.
DailyMed_parse_clinical_pharmacology: setid or drug_name. Returns PK/PD data (Cmax, AUC, half-life, protein binding, metabolism pathway).
DailyMed_search_spls: drug_name (string), returns SPL Set IDs for that drug. Use to find setid when needed explicitly.
# Parse adverse reactions for apixaban
ae = tu.tools.DailyMed_parse_adverse_reactions(drug_name="apixaban")
search_clinical_trials: condition (string), intervention (string), query_term (string), pageSize (int, alias: max_results/limit), overall_status (array, alias: status).
Returns {status, data: {studies: [{NCT ID, brief_title, brief_summary, overall_status, phase}], total_count}}.
intervention for drug name, condition for disease.overall_status=["RECRUITING"] for active enrollment.total_count may be None even when results exist; check len(studies) > 0.# Find recruiting trials for a biosimilar
trials = tu.tools.search_clinical_trials(
intervention="adalimumab biosimilar",
overall_status=["RECRUITING"],
pageSize=10
)
1. FDAGSRS_search_substances(query="apixaban")
-> UNII, substance class, ATC/DrugBank cross-refs
2. RxClass_get_drug_classes(drug_name="apixaban", rela_source="ATC")
-> ATC code B01AF02 (direct factor Xa inhibitor)
3. FDA_OrangeBook_search_drug(brand_name="ELIQUIS")
-> NDA206518, approval date, TE code
4. FDA_OrangeBook_check_generic_availability(brand_name="ELIQUIS")
-> Generic availability status
5. FDA_OrangeBook_get_exclusivity(brand_name="ELIQUIS")
-> Exclusivity codes and expiration dates
6. DailyMed_parse_adverse_reactions(drug_name="apixaban")
-> Bleeding rates and other AEs from label
1. RxClass_find_classes(query="ACE inhibitor", class_type="EPC")
-> class_id for "Angiotensin-Converting Enzyme Inhibitor"
2. RxClass_get_class_members(class_id=<id>, ttys="IN")
-> All ACE inhibitors (enalapril, lisinopril, ramipril, etc.)
3. For each drug: RxClass_get_drug_classes(drug_name=drug)
-> Confirm ATC code and additional classifications
1. DailyMed_parse_adverse_reactions(drug_name="metformin")
-> AE frequencies (GI: lactic acidosis, nausea, diarrhea)
2. DailyMed_parse_contraindications(drug_name="metformin")
-> eGFR thresholds, renal impairment contraindications
3. DailyMed_parse_drug_interactions(drug_name="metformin")
-> Iodinated contrast, carbonic anhydrase inhibitor interactions
4. DailyMed_parse_clinical_pharmacology(drug_name="metformin")
-> Half-life, renal clearance, bioavailability
brand_name must be UPPERCASE (e.g., "LIPITOR")FDAGSRS_get_substance requires UNII, not drug name — call FDAGSRS_search_substances firstFDAGSRS_get_structure only works for chemical substances, not biologicsRxClass_get_class_members: pass ttys="IN" to restrict to active ingredientssearch_clinical_trials overall_status must be an array: ["RECRUITING"]Approval pathways: A 505(b)(1) NDA is a full new drug application with complete safety/efficacy data from the sponsor. A 505(b)(2) NDA relies partly on published literature or FDA findings for an already-approved drug (common for reformulations, new routes). An ANDA (Abbreviated NDA) is the generic pathway requiring only bioequivalence to the reference listed drug.
Orange Book patent and exclusivity: NCE (New Chemical Entity) exclusivity gives 5 years of data protection. ODE (Orphan Drug Exclusivity) gives 7 years. PED (Pediatric) adds 6 months to existing patents/exclusivity. A TE code of "AB" means the generic is therapeutically equivalent and substitutable. No TE code or "BX" means substitutability is not established.
DailyMed label sections: The "Adverse Reactions" section distinguishes clinical trial rates (controlled) from post-marketing reports (uncontrolled, signal-only). "Contraindications" are absolute; "Warnings and Precautions" are conditional risks. "Clinical Pharmacology" provides PK parameters (Cmax, AUC, half-life) essential for drug interaction and dosing assessment.
A complete drug regulatory report should answer: