mcpField
T
tooluniverse-pharmacovigilance

tooluniverse-pharmacovigilance

github.com/mims-harvard数据与数据库1.8k421 次安装2 天前更新
代码仓库

关于 tooluniverse-pharmacovigilance

该 ToolUniverse 技能用于系统分析药物安全性,结合 FAERS 不良事件、FDA 标签、药物基因组学和临床试验信号。它通过信号量化、严重程度分层和多来源交叉核对整理风险证据。

主要功能

  1. 01量化 FAERS 不良事件信号
  2. 02按严重程度分类事件
  3. 03结合药品标签与临床试验信息
  4. 04评估药物基因组学风险
  5. 05生成风险与获益摘要

适用场景

  1. 01梳理某药物的潜在安全问题
  2. 02比较两种药物的不良事件信号
  3. 03评估特定不良事件与药物的关联证据

MCP 相关

该技能使用 ToolUniverse 工具查询 FAERS、FDA 标签、PharmGKB 和临床试验安全数据;输入未说明其与 MCP 协议的具体关系。

安装

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

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

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHECKLIST.md
EXAMPLES.md
REPORT_TEMPLATES.md
SIGNAL_ANALYSIS.md
SIGNAL_DETECTION.md
TOOLS_REFERENCE.md

详细介绍

计算,而非描述

当分析需要计算(统计、数据处理、评分、信息补充)时,通过 Bash 编写并运行 Python 代码。不要描述你会怎么做——请实际执行并报告结果。使用 ToolUniverse 工具检索数据,然后用 Python(pandas、scipy、statsmodels、matplotlib)进行分析。

药物警戒安全性分析器

使用 FAERS 不良事件数据、FDA 药品标签、PharmGKB 药物基因组学信息和临床试验安全性信号,系统地分析药物安全性。

关键原则:

  1. 报告优先 - 首先创建报告文件,然后逐步更新
  2. 量化信号 - 使用不均衡性指标(PRR、ROR)
  3. 按严重程度分层 - 优先关注严重或致命事件
  4. 多来源交叉验证 - 综合 FAERS、药品标签、临床试验和文献
  5. 药物基因组学背景 - 纳入遗传风险因素
  6. 输出可操作的信息 - 提供风险-获益总结及建议
  7. 优先使用英文查询 - 在工具调用中始终使用英文药物名称

适用场景

用户提出以下问题时使用:

  • “[药物] 有哪些安全性问题?”
  • “[药物] 相关的不良事件有哪些?”
  • “[药物] 安全吗?有哪些风险?”
  • “比较 [药物 A] 与 [药物 B] 的安全性特征”
  • “对 [药物] 进行药物警戒分析”

临床推理框架

推理策略 1:区分靶向作用与脱靶作用

思考:这种不良反应是药物作用机制可预测的延伸(靶向作用),还是无法用该机制解释的现象(脱靶作用)?靶向作用具有剂量依赖性且可预测。脱靶作用通常具有特异质性,较难预测。

应用方法:

  1. 查询药物的主要作用机制(使用 ChEMBL 或 DailyMed 药品标签)
  2. 对每种报告的不良事件,思考:“这是否符合药物对其靶点的作用逻辑?”如果符合,则属于靶向毒性——预期其具有剂量依赖性,并通过降低剂量进行管理
  3. 如果无法用主要作用机制解释该不良事件,则考虑脱靶受体结合或活性代谢物形成。这些情况需要采用不同的管理方式(停药,而非调整剂量)
  4. 使用 KEGG 通路数据,识别可能产生有毒中间产物的代谢途径

推理策略 2:将时间线作为诊断工具

不良事件是在开始用药后的什么时候出现的?仅凭时间线就能缩小机制范围:

  • 数小时 = 过敏性休克、速发型超敏反应或直接的药理作用过度
  • 数天 = 血清病、细胞毒性反应、药理作用累积
  • 1–6 周 = 迟发型超敏反应(SJS/TEN、DRESS)、器官蓄积
  • 数月 = 慢性毒性、器官损伤累积
  • 数年 = 长期累积效应

应用方法:审查 FAERS 病例报告时,务必检查 time_to_onset 字段。如果报告的时间线与所提出的机制在生物学上不相符,应怀疑存在混杂或归因错误。用药数年后才出现的反应不太可能由免疫机制介导,但可能与慢性蓄积有关。


推理策略 3:剂量依赖性与特异质性分类

这种区分决定了监测策略和管理方式:

  • 剂量依赖性(A 型):可根据药理学预测。存在剂量-反应关系。可通过降低剂量进行管理。这类毒性是靶向作用过度所致。
  • 特异质性(B 型):仅凭药理学无法预测。没有明确的剂量-反应关系。通常由免疫介导,或由代谢特异性所致(例如,药物代谢方面的遗传变异)。必须停药——降低剂量无济于事。
  • 混合型:某些反应在大多数患者中具有剂量依赖性,但在遗传易感个体中会表现为特异质性。如果看到某种「A 型」反应在出乎意料的低剂量下发生,应怀疑存在药物基因组学因素。

如何应用:评估安全性信号时,将其归类为 A 型或 B 型。这决定了你应建议调整剂量(A 型),还是避免使用该药并考虑进行药物基因组学筛查(B 型)。


推理策略 4:用于因果关系分类的 Naranjo 算法

调查疑似药物不良事件时,Naranjo 算法会提出以下问题:(1) 事件是否在给予药物后出现?(2) 停药后是否有所改善?(3) 重新给药后是否再次出现?(4) 是否可能由其他原因解释?对每个问题评分,以对因果关系进行分类。

推理策略 5:再激发问题

重新给药后事件是否再次出现?阳性再激发是个案中最有力的因果关系证据。但对于严重反应,再激发通常不符合伦理,因此缺少再激发数据并不能证明该药无责。

如何应用:审查病例叙述或 FAERS 报告时,检查停药反应(停药后事件是否消退)和再激发反应(再次暴露后事件是否复发)。停药反应阳性且再激发反应阳性,几乎可以确证因果关系。停药反应阴性则会大幅削弱因果联系。


推理策略 5:不均衡性推理

FAERS 中的信号意味着某种药物-事件组合的报告数量高于预期。这并不意味着该药物会导致该事件。应考虑报告偏倚:

  • 严重事件比轻微事件更容易被报告
  • 新药比老药更容易被报告(Weber 效应)
  • 用于病情严重人群的药物,可能会被归因于实际上反映基础疾病的事件
  • 媒体关注或监管警报会导致报告激增

如何应用:务必询问——未接受治疗的人群中,这种事件的基础发生率是多少?在 ICU 患者使用的药物中,「心脏骤停」的 PRR 较高,可能反映的是患者群体,而不是药物。条件允许时,应与临床试验安慰剂组的发生率交叉核对。


推理策略 6:何时使用工具,何时进行推理

使用 FAERS/OpenFDA 工具,对你已根据作用机制提出假设的信号进行量化。不要在没有假设的情况下挖掘 FAERS——你会找到虚假关联。

正确顺序:

  1. 先推理作用机制(根据该药物的药理学,哪些不良事件是合理的?)
  2. 提出具体假设(例如,「该药物可能会导致 QT 间期延长,因为它会阻断 hERG 通道」)
  3. 使用工具检验每项假设(通过 FAERS 查询报告频率,通过 DailyMed 查询标签警告,通过 PharmGKB 查询遗传风险因素)
  4. 结合背景解读结果(该信号是否符合作用机制?时间线是否合理?是否存在混杂因素?)

推理策略 7:药物基因组学风险评估

与其死记基因—药物配对,不如应用以下推理框架:

  1. 识别药物的代谢途径(使用 KEGG 或 DailyMed 标签):哪些 CYP 酶会代谢该药物?它是否为需要活化的前药?
  2. 评估代谢改变的后果:对于活性药物,代谢不良型会导致药物蓄积(毒性风险)。对于前药,代谢不良型无法将其活化(疗效失败)。超快速代谢型则表现相反。
  3. 检查免疫介导风险:如果该药物与严重皮肤反应(SJS/TEN、DRESS)或超敏综合征有关,请查询 PharmGKB 中的 HLA 关联。这些关联具有群体特异性。
  4. 使用 PharmGKB 证据等级指导行动:1A/1B 级(基于指南)=当前可采取行动。2A/2B 级=可作为参考。3 级=目前尚无临床可操作性。

查询 PharmGKB_search_drugs(query=...) 和 CPIC_list_guidelines,获取最新的药物基因组学注释,而不要依赖可能已过时的记忆关联。


关键工作流要求

报告优先方法(必须遵守)
  1. 首先创建 [DRUG]_safety_report.md,包含所有章节标题和 [Researching...] 占位符
  2. 首先应用机制推理(靶点相关毒性、发病时间、剂量相关与特异质性、药物基因组学)
  3. 随着数据收集,逐步更新
  4. 输出单独的数据文件:[DRUG]_adverse_events.csv 和 [DRUG]_pharmacogenomics.csv
引用要求(必须遵守)

每个安全性信号都必须包含来源工具、数据时间范围、PRR、病例数,以及严重和致死病例明细。


工具参数参考(重要)

工具错误参数正确参数
FAERS_count_reactions_by_drug_eventdrugdrug_name
FAERS_filter_serious_events美式拼写(例如,“Hemorrhage”)MedDRA 英式拼写(例如,“Haemorrhage”)
FAERS_stratify_by_demographics要求提供 adverse_eventadverse_event 为可选参数(省略即可按所有事件进行分层)
DailyMed_search_splsnamedrug_name
PharmGKB_search_drugsdrugquery
OpenFDA_search_drug_eventsdrug_namesearch

工作流概览

Phase 0: Mechanistic Reasoning (BEFORE tools)
  On-target toxicity, time-to-onset, dose vs idiosyncratic, PGx risk

Phase 1: Drug Disambiguation
  -> Resolve drug name, get identifiers (ChEMBL, DrugBank)

Phase 2: Adverse Event Profiling (FAERS)
  -> Query FAERS, calculate PRR, stratify by seriousness

Phase 3: Label Warning Extraction
  -> DailyMed boxed warnings, contraindications, precautions

Phase 4: Pharmacogenomic Risk
  -> PharmGKB clinical annotations, high-risk genotypes

Phase 5: Clinical Trial Safety
  -> ClinicalTrials.gov Phase 3/4 safety data

Phase 5.5: Pathway & Mechanism Context
  -> KEGG drug metabolism, target pathway analysis

Phase 5.6: Literature Intelligence
  -> PubMed, BioRxiv/MedRxiv, OpenAlex citation analysis

Phase 6: Signal Prioritization
  -> Rank by PRR x severity x frequency

Phase 7: Report Synthesis

阶段 0:机制推理(在使用工具前完成)

  1. 识别药物类别和主要作用机制(使用 DailyMed 标签或 ChEMBL)
  2. 运用靶点相关与脱靶思维(策略 1),预测可能的不良事件
  3. 估算每种预测事件的预期发病时间(策略 2)
  4. 将每种事件归类为剂量相关或特异质性(策略 3)
  5. 拟定具体、可检验的安全性假设,以指导工具查询(策略 6)

阶段 1:药物消歧

  1. 通过 DailyMed_search_spls(drug_name=...) 搜索 DailyMed,查找 NDC、SPL setid 和通用名
  2. 通过 ChEMBL_search_drugs(query=...) 搜索 ChEMBL,查找分子 ID 和最高临床阶段
  3. 记录:通用名、商品名、药物类别、作用机制、批准日期

阶段 2:不良事件分析(FAERS)

  1. 查询 FAERS_count_reactions_by_drug_event(drug_name=..., limit=50),获取高频事件
  2. 对每种事件,获取详细明细(严重、致死、住院病例数)
  3. 计算 PRR:(A/B) / (C/D),其中 A=药物+事件,B=药物+任意事件,C=事件+其他任意药物,D=其他药物总数
  4. 应用信号阈值:PRR > 2.0(信号),> 3.0(强信号),病例数 >= 3

严重程度分类:

  • 致死(最高优先级)、危及生命、住院、残疾、其他严重事件、非严重事件
FAERS filter_serious_events —— MedDRA 拼写(关键)

FAERS_filter_serious_events 使用遵循英式英语拼写惯例的 MedDRA 首选术语。常见示例:

错误(美式拼写)正确(MedDRA/英式拼写)
HEMORRHAGEHaemorrhage
ANEMIAAnaemia
EDEMAOedema
DIARRHEADiarrhoea
LEUKOPENIALeucopenia
ESOPHAGITISOesophagitis

adverse_event 参数应使用准确的 MedDRA 首选术语拼写。 如有疑问,请先查询 FAERS_count_reactions_by_drug_event,查看事件在 FAERS 数据库中显示的准确名称,然后使用这些准确字符串。

其他 FAERS 说明:

  • adverse_event 现在会正确追加到 _filter_serious_events 中的 OpenFDA 查询
  • FAERS_stratify_by_demographics:adverse_event 为可选参数——省略时,分层统计涵盖该药物的所有事件。性别代码:0=未知,1=男性,2=女性

有关详细的不成比例性公式和输出表示例,请参阅 SIGNAL_DETECTION.md。

阶段 3:标签警告提取

  1. 通过 DailyMed_get_spl_by_setid(setid=...) 获取标签
  2. 提取:黑框警告、禁忌症、警告/注意事项、药物相互作用
  3. 按严重程度分类:黑框警告 > 禁忌症 > 警告 > 注意事项
阶段 3.5:SIDER 结构化标签副作用(原始标签解析的更快替代方案/补充方式)

SIDER(SIDER_search_drug、SIDER_get_drug_side_effects、SIDER_get_drug_indications、SIDER_get_drugs_for_side_effect、SIDER_search_side_effect)会直接从药品说明书/标签中预先提取并结构化副作用和适应症——这是一份经过整理的静态快照,并非像 FAERS 那样的实时数据流。如果你需要标签中报告的副作用频率(例如“腹泻,非常常见,9.6%-57.5%”),又不想手动解析 DailyMed 的原始标签文本,就可以使用它。

  1. SIDER_search_drug(drug_name=...) -> 解析出一个 sider_drug_id(PubChem CID)
  2. SIDER_get_drug_side_effects(drug_name=... or sider_drug_id=..., limit=...) -> 获取采用 MedDRA 编码的副作用,其中包含该药品自身报告的频率;如果标签包含安慰剂组,还会提供安慰剂组的频率,以便直接比较
  3. SIDER_get_drugs_for_side_effect(side_effect_name=... or meddra_code=...) / SIDER_search_side_effect(side_effect_name=...) -> 反向查询:还有哪些药品报告了这种副作用,以便进行同类药品比较

频率字段的含义(报告数值前请仔细阅读):

  • frequency 是从标签的“Data for drug”列原样复制的内容——可能是百分比、百分比范围、定性术语(postmarketing、rare、frequent),也可能是组合形式(uncommon, 5% - 7%)。如果标签完全没有报告频率,该字段为 null——不要将 null 报告为“0%”或“未报告为风险”。
  • 大多数副作用的 placebo_frequency 都是 null,因为大多数 SIDER 标签根本没有安慰剂组。**Null 表示“SIDER 没有此条目的安慰剂组发生率”,而不是“安慰剂组发生率为零”,也不是“安慰剂组发生率与药物组相同”。**如果没有实际的 placebo_frequency 值,绝不要声称或暗示存在安慰剂组比较。

已知的 SIDER 数据质量陷阱(已实时验证,并非可以悄悄绕开的错误):SIDER_get_drug_indications 并非一份干净的“该药品治疗什么”清单——它通过文本挖掘说明书的适应症部分及更广泛的标签文本提取,因此可能包含实际上是风险、禁忌症或并发症的疾病,而非获批用途。实时示例:二甲双胍的 SIDER“适应症”列表中,除了 Diabetes mellitus 和 Type 2 diabetes mellitus(正确)外,还包括 Coma、Lactic acidosis、Diabetic ketoacidosis 和 Myocardial infarction(这些是与二甲双胍相关的风险/警告,并非其治疗对象)。将 SIDER“适应症”作为获批用途陈述前,务必根据已知药理作用进行核验——请与 DailyMed 中实际的“Indications and Usage”部分(上文阶段 3)或 OpenTargets_get_drug_indications_by_chemblId 交叉核对,不要直接照搬 SIDER 的适应症列表。

SIDER_get_drugs_for_side_effect 的结果不会按频率或临床相关性预先排序——返回顺序不固定;如果分析需要按报告频率排序,请自行重新排序。

阶段 4:药物基因组学风险

  1. 搜索 PharmGKB_search_drugs(query=...),查找临床注释
  2. 记录具有临床行动意义的变异及其证据等级(1A/1B/2A/2B/3)
  3. 注明 CPIC/DPWG 指南状态

PGx 证据等级:

等级说明行动
1ACPIC/DPWG 指南,可实施遵循指南
1BCPIC/DPWG 指南,注释考虑检测
2AVIP 注释,中等证据可作为参考
2BVIP 注释,较弱证据进一步研究
3低等级注释不具备行动意义

阶段 5:临床试验安全性

  1. 搜索 search_clinical_trials(intervention=..., phase="Phase 3", status="Completed")
  2. 提取严重 AE 发生率、停药率和死亡人数
  3. 比较药物组与安慰剂组的发生率

阶段 5.5:通路与机制背景

  1. 查询 KEGG,了解药物代谢通路
  2. 分析靶点通路,探究不良事件(AE)的机制基础
  3. 记录通路与 AE 的关系

阶段 5.6:文献情报

  1. PubMed:PubMed_search_articles(query='"[drug]" AND (safety OR adverse OR toxicity)')
  2. BioRxiv/MedRxiv:搜索近期预印本(标明尚未经过同行评审)
  3. OpenAlex:分析关键安全性论文的引用情况

阶段 6:信号优先级排序

信号评分 = PRR x 严重程度权重 x log10(病例数 + 1)

严重程度权重:致命 = 10,危及生命 = 8,住院 = 5,致残 = 5,其他严重事件 = 3,非严重事件 = 1

信号分类:

  • 危急(立即关注):PRR 高 + 结局致命
  • 中等(监测):PRR 中等 + 结局严重
  • 已知/预期(临床管理):PRR 低,且已列入说明书

与机制预测交叉核对:若机制预测未能预示某个信号,则应进一步审查(可能存在混杂、报告偏倚,或确实是全新发现)。


输出报告

保存为 [DRUG]_safety_report.md。完整的报告结构和输出示例,请参阅 REPORT_TEMPLATES.md。


证据分级

等级标准示例
T1PRR >10,结局致命,带黑框警告乳酸性酸中毒
T2PRR 3-10,结局严重肝毒性
T3PRR 2-3,存在中度风险低血糖
T4PRR <2,已知/预期胃肠道副作用

回退链

主要工具回退 1回退 2
FAERS_count_reactions_by_drug_eventOpenFDA_search_drug_events文献搜索
DailyMed_search_splsOpenFDA_search_drug_labelsDailyMed 网站
PharmGKB_search_drugsCPIC_list_guidelines文献搜索
search_clinical_trialsClinicalTrials.gov API在 PubMed 中搜索试验结果
SIDER_get_drug_side_effectsDailyMed_get_spl_by_setid(解析原始说明书文本)FDA_get_adverse_reactions_by_drug_name

完整性检查清单

完整的分阶段验证清单,请参阅 CHECKLIST.md。


参考资料

评论

支持 Markdown