关于 tooluniverse-pharmacovigilance
该 ToolUniverse 技能用于系统分析药物安全性,结合 FAERS 不良事件、FDA 标签、药物基因组学和临床试验信号。它通过信号量化、严重程度分层和多来源交叉核对整理风险证据。
主要功能
- 01量化 FAERS 不良事件信号
- 02按严重程度分类事件
- 03结合药品标签与临床试验信息
- 04评估药物基因组学风险
- 05生成风险与获益摘要
适用场景
- 01梳理某药物的潜在安全问题
- 02比较两种药物的不良事件信号
- 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.mdEXAMPLES.mdREPORT_TEMPLATES.mdSIGNAL_ANALYSIS.mdSIGNAL_DETECTION.mdTOOLS_REFERENCE.md详细介绍
计算,而非描述
当分析需要计算(统计、数据处理、评分、信息补充)时,通过 Bash 编写并运行 Python 代码。不要描述你会怎么做——请实际执行并报告结果。使用 ToolUniverse 工具检索数据,然后用 Python(pandas、scipy、statsmodels、matplotlib)进行分析。
药物警戒安全性分析器
使用 FAERS 不良事件数据、FDA 药品标签、PharmGKB 药物基因组学信息和临床试验安全性信号,系统地分析药物安全性。
关键原则:
- 报告优先 - 首先创建报告文件,然后逐步更新
- 量化信号 - 使用不均衡性指标(PRR、ROR)
- 按严重程度分层 - 优先关注严重或致命事件
- 多来源交叉验证 - 综合 FAERS、药品标签、临床试验和文献
- 药物基因组学背景 - 纳入遗传风险因素
- 输出可操作的信息 - 提供风险-获益总结及建议
- 优先使用英文查询 - 在工具调用中始终使用英文药物名称
适用场景
用户提出以下问题时使用:
- “[药物] 有哪些安全性问题?”
- “[药物] 相关的不良事件有哪些?”
- “[药物] 安全吗?有哪些风险?”
- “比较 [药物 A] 与 [药物 B] 的安全性特征”
- “对 [药物] 进行药物警戒分析”
临床推理框架
推理策略 1:区分靶向作用与脱靶作用
思考:这种不良反应是药物作用机制可预测的延伸(靶向作用),还是无法用该机制解释的现象(脱靶作用)?靶向作用具有剂量依赖性且可预测。脱靶作用通常具有特异质性,较难预测。
应用方法:
- 查询药物的主要作用机制(使用 ChEMBL 或 DailyMed 药品标签)
- 对每种报告的不良事件,思考:“这是否符合药物对其靶点的作用逻辑?”如果符合,则属于靶向毒性——预期其具有剂量依赖性,并通过降低剂量进行管理
- 如果无法用主要作用机制解释该不良事件,则考虑脱靶受体结合或活性代谢物形成。这些情况需要采用不同的管理方式(停药,而非调整剂量)
- 使用 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——你会找到虚假关联。
正确顺序:
- 先推理作用机制(根据该药物的药理学,哪些不良事件是合理的?)
- 提出具体假设(例如,「该药物可能会导致 QT 间期延长,因为它会阻断 hERG 通道」)
- 使用工具检验每项假设(通过 FAERS 查询报告频率,通过 DailyMed 查询标签警告,通过 PharmGKB 查询遗传风险因素)
- 结合背景解读结果(该信号是否符合作用机制?时间线是否合理?是否存在混杂因素?)
推理策略 7:药物基因组学风险评估
与其死记基因—药物配对,不如应用以下推理框架:
- 识别药物的代谢途径(使用 KEGG 或 DailyMed 标签):哪些 CYP 酶会代谢该药物?它是否为需要活化的前药?
- 评估代谢改变的后果:对于活性药物,代谢不良型会导致药物蓄积(毒性风险)。对于前药,代谢不良型无法将其活化(疗效失败)。超快速代谢型则表现相反。
- 检查免疫介导风险:如果该药物与严重皮肤反应(SJS/TEN、DRESS)或超敏综合征有关,请查询 PharmGKB 中的 HLA 关联。这些关联具有群体特异性。
- 使用 PharmGKB 证据等级指导行动:1A/1B 级(基于指南)=当前可采取行动。2A/2B 级=可作为参考。3 级=目前尚无临床可操作性。
查询 PharmGKB_search_drugs(query=...) 和 CPIC_list_guidelines,获取最新的药物基因组学注释,而不要依赖可能已过时的记忆关联。
关键工作流要求
报告优先方法(必须遵守)
- 首先创建
[DRUG]_safety_report.md,包含所有章节标题和[Researching...]占位符 - 首先应用机制推理(靶点相关毒性、发病时间、剂量相关与特异质性、药物基因组学)
- 随着数据收集,逐步更新
- 输出单独的数据文件:
[DRUG]_adverse_events.csv和[DRUG]_pharmacogenomics.csv
引用要求(必须遵守)
每个安全性信号都必须包含来源工具、数据时间范围、PRR、病例数,以及严重和致死病例明细。
工具参数参考(重要)
| 工具 | 错误参数 | 正确参数 |
|---|---|---|
FAERS_count_reactions_by_drug_event | drug | drug_name |
FAERS_filter_serious_events | 美式拼写(例如,“Hemorrhage”) | MedDRA 英式拼写(例如,“Haemorrhage”) |
FAERS_stratify_by_demographics | 要求提供 adverse_event | adverse_event 为可选参数(省略即可按所有事件进行分层) |
DailyMed_search_spls | name | drug_name |
PharmGKB_search_drugs | drug | query |
OpenFDA_search_drug_events | drug_name | search |
工作流概览
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:机制推理(在使用工具前完成)
- 识别药物类别和主要作用机制(使用 DailyMed 标签或 ChEMBL)
- 运用靶点相关与脱靶思维(策略 1),预测可能的不良事件
- 估算每种预测事件的预期发病时间(策略 2)
- 将每种事件归类为剂量相关或特异质性(策略 3)
- 拟定具体、可检验的安全性假设,以指导工具查询(策略 6)
阶段 1:药物消歧
- 通过
DailyMed_search_spls(drug_name=...)搜索 DailyMed,查找 NDC、SPL setid 和通用名 - 通过
ChEMBL_search_drugs(query=...)搜索 ChEMBL,查找分子 ID 和最高临床阶段 - 记录:通用名、商品名、药物类别、作用机制、批准日期
阶段 2:不良事件分析(FAERS)
- 查询
FAERS_count_reactions_by_drug_event(drug_name=..., limit=50),获取高频事件 - 对每种事件,获取详细明细(严重、致死、住院病例数)
- 计算 PRR:
(A/B) / (C/D),其中 A=药物+事件,B=药物+任意事件,C=事件+其他任意药物,D=其他药物总数 - 应用信号阈值:PRR > 2.0(信号),> 3.0(强信号),病例数 >= 3
严重程度分类:
- 致死(最高优先级)、危及生命、住院、残疾、其他严重事件、非严重事件
FAERS filter_serious_events —— MedDRA 拼写(关键)
FAERS_filter_serious_events 使用遵循英式英语拼写惯例的 MedDRA 首选术语。常见示例:
| 错误(美式拼写) | 正确(MedDRA/英式拼写) |
|---|---|
| HEMORRHAGE | Haemorrhage |
| ANEMIA | Anaemia |
| EDEMA | Oedema |
| DIARRHEA | Diarrhoea |
| LEUKOPENIA | Leucopenia |
| ESOPHAGITIS | Oesophagitis |
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:标签警告提取
- 通过
DailyMed_get_spl_by_setid(setid=...)获取标签 - 提取:黑框警告、禁忌症、警告/注意事项、药物相互作用
- 按严重程度分类:黑框警告 > 禁忌症 > 警告 > 注意事项
阶段 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 的原始标签文本,就可以使用它。
SIDER_search_drug(drug_name=...)-> 解析出一个sider_drug_id(PubChem CID)SIDER_get_drug_side_effects(drug_name=... or sider_drug_id=..., limit=...)-> 获取采用 MedDRA 编码的副作用,其中包含该药品自身报告的频率;如果标签包含安慰剂组,还会提供安慰剂组的频率,以便直接比较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:药物基因组学风险
- 搜索
PharmGKB_search_drugs(query=...),查找临床注释 - 记录具有临床行动意义的变异及其证据等级(1A/1B/2A/2B/3)
- 注明 CPIC/DPWG 指南状态
PGx 证据等级:
| 等级 | 说明 | 行动 |
|---|---|---|
| 1A | CPIC/DPWG 指南,可实施 | 遵循指南 |
| 1B | CPIC/DPWG 指南,注释 | 考虑检测 |
| 2A | VIP 注释,中等证据 | 可作为参考 |
| 2B | VIP 注释,较弱证据 | 进一步研究 |
| 3 | 低等级注释 | 不具备行动意义 |
阶段 5:临床试验安全性
- 搜索
search_clinical_trials(intervention=..., phase="Phase 3", status="Completed") - 提取严重 AE 发生率、停药率和死亡人数
- 比较药物组与安慰剂组的发生率
阶段 5.5:通路与机制背景
- 查询 KEGG,了解药物代谢通路
- 分析靶点通路,探究不良事件(AE)的机制基础
- 记录通路与 AE 的关系
阶段 5.6:文献情报
- PubMed:
PubMed_search_articles(query='"[drug]" AND (safety OR adverse OR toxicity)') - BioRxiv/MedRxiv:搜索近期预印本(标明尚未经过同行评审)
- OpenAlex:分析关键安全性论文的引用情况
阶段 6:信号优先级排序
信号评分 = PRR x 严重程度权重 x log10(病例数 + 1)
严重程度权重:致命 = 10,危及生命 = 8,住院 = 5,致残 = 5,其他严重事件 = 3,非严重事件 = 1
信号分类:
- 危急(立即关注):PRR 高 + 结局致命
- 中等(监测):PRR 中等 + 结局严重
- 已知/预期(临床管理):PRR 低,且已列入说明书
与机制预测交叉核对:若机制预测未能预示某个信号,则应进一步审查(可能存在混杂、报告偏倚,或确实是全新发现)。
输出报告
保存为 [DRUG]_safety_report.md。完整的报告结构和输出示例,请参阅 REPORT_TEMPLATES.md。
证据分级
| 等级 | 标准 | 示例 |
|---|---|---|
| T1 | PRR >10,结局致命,带黑框警告 | 乳酸性酸中毒 |
| T2 | PRR 3-10,结局严重 | 肝毒性 |
| T3 | PRR 2-3,存在中度风险 | 低血糖 |
| T4 | PRR <2,已知/预期 | 胃肠道副作用 |
回退链
| 主要工具 | 回退 1 | 回退 2 |
|---|---|---|
FAERS_count_reactions_by_drug_event | OpenFDA_search_drug_events | 文献搜索 |
DailyMed_search_spls | OpenFDA_search_drug_labels | DailyMed 网站 |
PharmGKB_search_drugs | CPIC_list_guidelines | 文献搜索 |
search_clinical_trials | ClinicalTrials.gov API | 在 PubMed 中搜索试验结果 |
SIDER_get_drug_side_effects | DailyMed_get_spl_by_setid(解析原始说明书文本) | FDA_get_adverse_reactions_by_drug_name |
完整性检查清单
完整的分阶段验证清单,请参阅 CHECKLIST.md。
参考资料
- FAERS:https://www.fda.gov/drugs/questions-and-answers-fdas-adverse-event-reporting-system-faers
- DailyMed:https://dailymed.nlm.nih.gov
- PharmGKB:https://www.pharmgkb.org
- ClinicalTrials.gov:https://clinicaltrials.gov
- OpenFDA:https://open.fda.gov
- KEGG Drug:https://www.genome.jp/kegg/drug
- 工具文档:TOOLS_REFERENCE.md