中药配伍禁忌校验
本 skill 是拦截器,不是开方器。 职责只有一个:把清单里存在的风险组合全部标出来,交给人判断。永远不给"这方子能不能吃"的结论——十八反十九畏在特定病情下可有意使用,是否可用只有执业医师能定。
何时使用
用户出现以下任一情形时调用:
- 贴出一张方子或药材清单,问"有没有问题""能不能一起用"
- 明确提"十八反""十九畏""妊娠禁忌""配伍禁忌"
- 问某味药"孕妇能不能吃""是不是毒性药"
- 审方、点评处方、核对中成药成分是否重复
- 药房调配前做最后一道核对
快速开始
# 整方直接粘贴,剂量和"先煎"之类的标注会自动去掉
python3 scripts/check_herbs.py --prescription "法半夏9g、制附子6g(先煎)、甘草6g、海藻9g、茯苓15g"
# 只有药名也可以
python3 scripts/check_herbs.py --herbs "半夏,附子,甘草,海藻"
# 加查妊娠禁忌
python3 scripts/check_herbs.py --prescription "三棱9g 莪术9g 川芎6g" --pregnancy
# 机器可读
python3 scripts/check_herbs.py --herbs "附子,半夏" --json
脚本在 skill 根目录下执行;若当前目录不是 skill 根目录,改用脚本的绝对路径。
不装 Python 也能用
给不熟悉命令行的同事(药房、临床、审方)用这个:
assets/处方自查.html
双击用浏览器打开 → 粘贴方子 → 点「开始自查」。剂量、先煎、后下会自动剥离;结果按 高危 / 配伍禁忌 / 妊娠禁用 / 妊娠慎用 / 提示 分级,并列出解析到的药味与未纳入规则库的药味。勾选「按妊娠期检查」即加查妊娠禁忌。
单文件、离线、不上传处方,可以直接发给别人。
> 页面里的规则不是手抄的。 规则表由 scripts/build_worksheet.py 从 check_herbs.py 导入后注入页面;判定逻辑另有 scripts/parity_test.py 做跨语言一致性测试(14 组处方逐字段比对)。改规则只改 check_herbs.py,然后重建页面——不要手改生成的 HTML,否则两份规则会分叉。
python3 scripts/build_worksheet.py # 改完规则后重建页面
python3 scripts/build_worksheet.py --check # 校验页面是否已过期(可接 CI)
python3 scripts/parity_test.py # 页面 JS 与命令行结果逐字段比对
上面第一条的实际输出:
=== 校验范围 ===
药材 5 味:法半夏、制附子、甘草、海藻、茯苓
妊娠禁忌:未检查(如需请加 --pregnancy)
【配伍禁忌·十八反】
- 制附子 × 法半夏(十八反·半蒌贝蔹及攻乌)
- 甘草 × 海藻(十八反·藻戟遂芫俱战草)
→ 原则上应避免同用;是否可用须由执业医师评估,**并非绝对禁用**
附注:1 味药未纳入禁忌规则库(仅表示无对应规则可查,不代表有风险):茯苓
输入处理
- 分隔符:
、,,;;空格 / |均可,混排也能识别。 - 剂量:
9g、6克、3钱、2枚、1剂自动剥离。 - 煎法标注:括号内的
先煎、后下、包煎、另煎、冲服自动剥离。 - 别名归一:按
references/incompatibility.md第五节归一,循环解析(赤芍药→赤芍→芍药)。 - 炮制前缀:
生/制/法/炒/炙/醋/酒/姜/蜜/煅/焦/盐/麸炒等先剥离再比对规则,同时保留前缀用于判断生品/制品;姜黄、干姜、生地黄这类本身带前缀字的药名不会被误剥。 - 归一不了的名字:直接列入"未纳入规则库",不要猜。
输出分级
| 级别 | 触发条件 | 必须给出的动作 |
|---|---|---|
| 高危·仅外用 | 红粉、白降丹、雪上一枝蒿内服 | 立即核对用途,停止调配并联系开方医师 |
| 高危·毒性品种 | 命中毒性中药 28 种 | 凭签名处方调配、二日极量、未注明生用付炮制品、留存二年 |
| 可能升为高危 | 附子/半夏/川乌等未注明生制 | 要求处方注明生/制,未注明按生品从严 |
| 配伍禁忌 | 十八反 / 十九畏命中 | 说明并非绝对禁用,需医师评估 |
| 妊娠禁用 | 名单内 | 妊娠期不得使用 |
| 妊娠慎用 | 名单内 | 医师权衡后决定 |
| 提示·重复用药 | 同一药味重复、同类叠加 | 核对一药多名与实际投药总量 |
禁用与慎用必须分开表述,不得合并——两者严重程度不同。
硬性要求
- 报禁忌时必须同时说明:该组合并非绝对禁止,属"原则上避免、需医师评估",不得渲染成"有毒不能吃"。
- 涉及毒性中药时补充管理要求,不能只报"这是毒药"。
- 不提供替代药、不提供剂量、不建议"减量后可用"。
- 所有结论附一句:仅为风险提示,处方安全性由执业医师负责。
判定口径与已知边界
- 十八反按药味组匹配(附子/川乌/草乌/天雄/黑顺片/白附片均归乌头类),覆盖常见炮制品与别名,不保证穷尽地方习用名。
- 妊娠禁忌采用教材通行名单:川乌、草乌禁用,附子慎用——二者虽同源,严重程度不同,不可合并。
- 妊娠名单按药物收、不按写法收:芒硝/朴硝/元明粉/皮硝 是同一种药的不同提纯等级,四个名字都查;附子与天雄同属乌头类根,均列慎用。别名归一后再查一遍(
base与canon都比对),避免同物异名漏检。 - 毒性中药 28 种依据《医疗用毒性药品管理办法》口径,⚠具体品种以现行目录为准。
- 不覆盖:中西药相互作用、食物禁忌、证候禁忌(寒热虚实误用)、超量克数判定、煎煮方法风险。
- 未检出 ≠ 安全。规则库外的药味只代表"无对应规则可查"。
不要使用本 skill 的场景
- 要求开方、改方、推荐替代药、给剂量 —— 一律拒绝
- 要求判断某方剂"能不能吃" —— 只报风险,不下结论
- 单一药材的性味功效查询 —— 不属于配伍禁忌范畴
- 中西药相互作用 —— 未收录,明确告知不覆盖,不要用中医配伍规则套用
- 急症、中毒急救 —— 立即建议就医或拨打 120,不做任何处理建议
文件结构
SKILL.md 本文件
scripts/check_herbs.py 校验脚本(无第三方依赖,Python 3.7+)
scripts/build_worksheet.py 把规则表注入模板,生成网页版(含 --check 防过期)
scripts/parity_test.py 页面 JS 与命令行结果的一致性测试(需 Chrome,缺失时跳过)
assets/处方自查.html 生成的单文件网页版,双击即用(勿手改)
assets/worksheet-template.html 网页模板,改版式改这里
references/incompatibility.md 十八反/十九畏/妊娠/毒性 28 种/别名表/输出模板
examples/prescription-sample.txt 可直接跑的示例方
数据表已内置于脚本,离线可用,不联网、不上传处方。