mcpField
T
tooluniverse-drug-regulatory

tooluniverse-drug-regulatory

github.com/mims-harvard其他1.8k255 次安装3 天前更新
代码仓库

关于 tooluniverse-drug-regulatory

面向药品监管研究的 ToolUniverse 技能,可查询药品身份、分类、审批、专利、标签和临床试验。它整合 FDA 资源及其他药物数据库的检索流程,并强调按市场核实动态监管状态。

主要功能

  1. 01FDA 物质身份查询
  2. 02药物类别与 ATC 查询
  3. 03审批和仿制药状态检查
  4. 04专利与独占期查询
  5. 05结构化药品标签检索
  6. 06临床试验搜索

适用场景

  1. 01整理药品监管信息档案
  2. 02检查仿制药可用性和独占期
  3. 03查看给药或不良反应标签
  4. 04查找药品或生物类似药试验

MCP 相关

列出用于查询 FDA、DailyMed、RxClass 和临床试验数据的 ToolUniverse 工具;未说明特定 MCP 服务的连接或管理方式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-drug-regulatory

安装后在 Claude Code 中输入/tooluniverse-drug-regulatory确认已加载。

详细介绍

药品监管研究

监管状态因司法管辖区而异。 FDA 批准不等于 EMA 批准——请核实用户所问的具体市场。仿制药能否上市取决于专利到期和监管批准两项条件——专利可能已到期,但尚无 ANDA 提交或获批。即使专利到期,独占权代码(NCE、ODE、PED)仍可能阻止仿制药上市;在得出仿制药可以上市的结论前,务必先查询 FDA_OrangeBook_get_exclusivity。505(b)(2) NDA 并非仿制药——它需要自己的临床数据,并获得独立的独占期。

查询,不要猜测:切勿假定 NDA 编号、独占日期或 ATC 代码——务必调用 FDAGSRS、Orange Book 和 RxClass 工具检索当前数据;监管状态会随着新批准和到期而变化。

药品监管情报:识别 FDA 物质、按治疗类别对药品进行分类、核查批准和仿制药状态、检索说明书章节并查找临床试验。

适用场景

  • “司美格鲁肽的 FDA 监管状态是什么?”
  • “Humira 有仿制药吗?”
  • “二甲双胍属于哪个 ATC 类别?”
  • “获取布洛芬药品说明书中的不良反应”
  • “Eliquis 的专利何时到期?”
  • “列出 ACE 抑制剂类别中的所有药品”
  • “查找阿达木单抗生物类似药的临床试验”

不适用场景(请改用其他技能)

  • 药物相互作用 -> 使用 tooluniverse-drug-drug-interaction
  • 药物基因组学 / 基因型指导的剂量 -> 使用 tooluniverse-pharmacogenomics
  • 药物作用机制 / 靶点结合 -> 使用 tooluniverse-drug-mechanism-research
  • 药物再利用 / 新适应症 -> 使用 tooluniverse-drug-repurposing

工作流概览

Input (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

补充工具(不属于核心阶段,但很有用):

  • OpenFDA_get_approval_history — 完整的 FDA 申报 / 批准历史(需要 operation 参数)
  • FAERS_count_reactions_by_drug_event — 按报告数量排列的主要不良事件(参数:medicinalproduct,全大写)
  • RxNorm_get_drug_names — 将药品名称解析为 RXCUI 和商品名
  • drugbank_vocab_search — 查询 DrugBank ID、CAS、UNII
  • PubMed_search_articles — 监管和临床文献

阶段 1:物质识别(FDAGSRS)

FDAGSRS_search_substances:query(字符串,必填——药品名称、UNII、InChIKey 或分子式)、substance_class(字符串,可选:“chemical”/“protein”/“nucleic acid”/“polymer”/“mixture”)、limit(整数,1-50,默认 10)。 返回 {status, data: [{uuid, unii, name, substanceClass, status, formula, smiles, synonyms, xrefs}], metadata: {query, total, returned, substance_class_filter}}(data 为列表)。

  • xrefs(字典)包含该物质的交叉引用(DrugBank ID、ATC 代码、CAS 编号等)。
  • 在调用 FDAGSRS_get_substance 前,用此工具获取官方 UNII 标识符。

FDAGSRS_get_substance:unii(字符串,必填,10 个字符的 FDA UNII 代码)。 返回完整的物质记录,包括所有别名、名称、结构和交叉引用。

  • 提供所有已注册名称(INN、USAN、商品名、化学名称)的权威列表。

FDAGSRS_get_structure:unii(字符串,必填)。 返回 {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"][0]["unii"]
full = tu.tools.FDAGSRS_get_substance(unii=unii)

第 2 阶段:药物分类(RxClass)

RxClass_get_drug_classes:drug_name(字符串,药物名称)、rxcui(字符串,RxNorm RXCUI——可替代 drug_name)、rela_source(字符串,可选:"ATC"/"FDASPL"/"MESH"/"VA")、limit(整数,默认值 20)。 返回 {status, data: [{classId, className, classType, rxcui, drugName, tty, rela, relaSource}], metadata}(data 为列表)。

  • 除非通过 rela_source 筛选某一个分类系统,否则会返回所有分类系统。
  • class_type 的取值:"ATC1-4"、"EPC"(FDA 已确立的药理学类别)、"MoA"、"VA"、"MESH"。
  • 用于查找药物的 ATC 代码、药理学类别和作用机制标签。

RxClass_find_classes:query(字符串,必填,关键词,例如 "beta blocker")、class_type(字符串,可选:"ATC1-4"/"EPC"/"MoA")、limit(整数,默认值 20)。 返回 {status, data: [{classId, className, classType}]}(列表;classType 显示分类系统:ATC1-4、EPC、MOA、DISPOS 等)。

  • 需要在调用 RxClass_get_class_members 前查找类别 ID 时使用。

RxClass_get_class_members:class_id(字符串,必填,例如 "M01AE")、rela_source(字符串,可选:"ATC"/"FDASPL")、ttys(字符串,可选:"IN" 表示成分)、limit(整数,默认值 50)。 返回 {status, data: [{rxcui, name, tty}]}。

  • rela_source 必须与类别所属的分类系统匹配:默认值 ATC 只会列出 ATC 代码(例如 A02BC)的成员。对于 EPC/MoA 类别 ID(例如 N0000175525),请传入 rela_source="DAILYMED"(或 "FDASPL");使用默认值时会返回空列表。
  • ttys="IN" 会将结果限制为活性成分级条目(推荐)。
# Find all proton pump inhibitors
classes = tu.tools.RxClass_find_classes(query="proton pump inhibitor", class_type="EPC")
class_id = classes["data"][0]["classId"]  # N0000175525 (EPC class)
members = tu.tools.RxClass_get_class_members(class_id=class_id, rela_source="DAILYMED", ttys="IN")

第 3 阶段:批准与仿制药状态(FDA 橙皮书 / 紫皮书)

橙皮书涵盖小分子药物;生物制剂和生物类似药(例如“阿达木单抗有生物类似药吗”)完全收录在另一个 FDA 列表中——这类药物请使用 FDAPurpleBook_search_products,而不要使用不收录这类药物的橙皮书。

FDA_OrangeBook_search_drug:brand_name(字符串)、generic_name(字符串)、application_number(字符串)、limit(整数,默认值 10)。 返回 {status, data: {products: [{brand_name, generic_name, dosage_form, strength, te_code, application_number, approval_date}]}}。

  • 使用品牌名(大写)或通用名查找 NDA/ANDA 编号和批准信息。
  • te_code:治疗等效性代码(例如 "AB" = 治疗等效)。

FDA_OrangeBook_check_generic_availability:brand_name(字符串)、generic_name(字符串)。 返回 {status, data: {reference_listed_drug, generics_available: bool, generics_count, generic_products: [...]}}。

  • 用于回答“有仿制药吗?”这类问题的主要工具。

FDA_OrangeBook_get_te_code:除 brand_name/application_number 外没有特殊参数。 返回用于评估可替代性的治疗等效性代码。

FDA_OrangeBook_get_approval_history:application_number(字符串,例如 "NDA020402")。 返回按时间顺序排列的批准历史记录,包括补充批准和标签变更。

# Check generic availability
result = tu.tools.FDA_OrangeBook_check_generic_availability(brand_name="LIPITOR")
# result["data"]["generics_available"] -> True
# result["data"]["generics_count"] -> N

第 4 阶段:专利与独占期

FDA_OrangeBook_get_patent_info:application_number(字符串)、brand_name(字符串)。 返回专利信息。注意:完整专利号和到期日期需要使用橙皮书数据文件。

FDA_OrangeBook_get_exclusivity:application_number(字符串)、brand_name(字符串)。 返回 {status, data: {exclusivities: [{exclusivity_code, exclusivity_date, description}]}}。

  • exclusivity_code 的取值:"NCE"(新化学实体,5 年)、"ODE"(孤儿药,7 年)、"PED"(儿科,6 个月)、"NP"(新产品)、"M"(新剂型)。

阶段 5:标签解析(DailyMed)

所有 DailyMed 解析工具都接受 setid(SPL Set ID UUID)或 drug_name(自动查询)。 如果不知道 setid,建议使用 drug_name。

DailyMed_parse_adverse_reactions:setid 或 drug_name。返回结构化的不良反应表,包含发生频率和严重程度。

DailyMed_parse_dosing:setid 或 drug_name。返回剂量与给药章节(剂量、给药方案、肾功能/肝功能调整)。

DailyMed_parse_contraindications:setid 或 drug_name。返回禁忌症章节。

DailyMed_parse_drug_interactions:setid 或 drug_name。返回药物相互作用章节,并提供临床处理建议。

DailyMed_parse_clinical_pharmacology:setid 或 drug_name。返回 PK/PD 数据(Cmax、AUC、半衰期、蛋白结合、代谢途径)。

DailyMed_search_spls:drug_name(字符串),返回该药物的 SPL Set ID。需要显式查找 setid 时使用。

# Parse adverse reactions for apixaban
ae = tu.tools.DailyMed_parse_adverse_reactions(drug_name="apixaban")

阶段 6:临床试验

search_clinical_trials:condition(字符串)、intervention(字符串)、query_term(字符串)、pageSize(整数,别名:max_results/limit)、overall_status(数组,别名:status)。 返回 {status, data: {studies: [{NCT ID, brief_title, brief_summary, overall_status, phase}], total_count}}。

  • 药物名称使用 intervention,疾病使用 condition。
  • 使用 overall_status=["RECRUITING"] 筛选正在招募受试者的试验。
  • 即使存在结果,total_count 也可能为 None;请检查 len(studies) > 0。
# Find recruiting trials for a biosimilar
trials = tu.tools.search_clinical_trials(
    intervention="adalimumab biosimilar",
    overall_status=["RECRUITING"],
    pageSize=10
)

示例工作流

工作流 1:药物完整监管概况
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
工作流 2:列出某治疗类别中的所有药物
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
工作流 3:药品标签审查
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

常见错误

  • Orange Book 的 brand_name 必须为大写(例如 "LIPITOR")
  • FDAGSRS_get_substance 需要 UNII,而非药物名称——请先调用 FDAGSRS_search_substances
  • FDAGSRS_get_structure 仅适用于化学物质,不适用于生物制品
  • RxClass_get_class_members:传入 ttys="IN",以限定为活性成分
  • search_clinical_trials 的 overall_status 必须是数组:["RECRUITING"]

推理框架

解读指南

审批途径:505(b)(1) NDA 是完整的新药申请,包含申办方提供的完整安全性/有效性数据。505(b)(2) NDA 部分依赖已发表文献或 FDA 对已获批药物的认定(常见于新剂型、给药途径变更)。ANDA(简化新药申请)是仿制药审批途径,只要求与参比制剂具有生物等效性。

Orange Book 专利与独占权:NCE(新化学实体)独占权提供 5 年数据保护。ODE(孤儿药独占权)提供 7 年保护。PED(儿科)在现有专利/独占权期限上增加 6 个月。TE 代码为 "AB" 表示仿制药在治疗上等效且可替代。没有 TE 代码或代码为 "BX" 表示尚未确定其可替代性。

DailyMed 标签章节:"Adverse Reactions"(不良反应)章节区分临床试验发生率(受控)与上市后报告(非受控,仅作为信号)。"Contraindications"(禁忌症)为绝对禁忌;"Warnings and Precautions"(警告和注意事项)则为有条件的风险。"Clinical Pharmacology"(临床药理学)提供 PK 参数(Cmax、AUC、半衰期),这些参数对评估药物相互作用和给药方案至关重要。

综合问题

完整的药物监管报告应回答:

  1. 当前 FDA 批准状态和审批途径是什么(NDA、ANDA 还是 505(b)(2))?
  2. 是否有仿制药等效品?其治疗等效性评级是什么?
  3. 重要专利和独占权何时到期(或是否已经到期)?
  4. 该药物属于哪个药物类别(ATC、EPC、MoA)?同类药物有哪些?
  5. 标签中临床意义最重大的不良反应和禁忌症有哪些?

评论

支持 Markdown