处方点评分类及初筛

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

【世界药师节·AI药学技能大赛参赛作品】 医院处方点评月度小结生成工具。对HIS/智慧药学平台导出的处方Excel(含诊断、处方用药情况多行文本)执行:药品行结构化解析、六类专项分组(基本药物/抗菌药物/中成药/糖皮质激素/质子泵抑制剂/麻精一药品)、规则引擎初筛疑似不合理处方(R0-R9)、门诊抗菌药物使用率计算、科室分布统计,并按四段式结构生成月度处方点评小结(总体情况-专项情况-存在问题-总结)。当用户上传处方数据要求处方点评、专项分组统计、计算门诊抗菌药物使用率、提取不合理处方案例或生成处方点评小结时使用。门诊口径不含DDDs/使用强度指标。

一句话选型结论

按资料字段整理

处方点评分类及初筛是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_767538ff/prescription-review-0092-psm2026
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_767538ff仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791681266
正文体量39.0 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
处方点评分类及初筛当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

39.0 KB
模型实际读到的说明书原文,来自技能仓库

处方点评(prescription-review)

工作流程

  1. 解析:用 scripts/parse_prescriptions.py 的 load_prescriptions(path, sheet_name, header=1) 读入处方Excel。平台导出格式为:第1行标题、第2行列名(序号/处方日期/年龄/诊断/处方用药情况/点评意见),"处方用药情况"为多行文本(序号 药品名 规格 用法 频次 单次剂量 总量 金额元)。解析失败行保留原文,按R0交人工核对。
  2. 分组+初筛:运行 python3 scripts/batch_review.py 处方.xlsx -o 结果.xlsx [--sheet 表名],输出带六类分组标记列、"疑似问题"列的Excel;汇总打印各专项处方数与处方率、门诊抗菌药物使用率;若导出含科室列,自动生成"科室分布"sheet(计数+占比)。
  3. 复核:逐条复核"疑似问题"命中的处方。规则口径见下文【分组口径与初筛规则】。初筛只标疑点,不得把规则命中直接写成不合理结论——须结合诊断、说明书与指南人工确认。
  4. 写存在问题:确认的不合理处方按规范类型归类(遴选药物不适宜/用法用量不适宜/联合用药不适宜等),每类对照下文【典型不合理处方情形清单】写成叙述式案例:处方概要→问题→指南/说明书依据→可执行建议。
  5. 生成小结:按下文【月度小结结构】生成,四段式:一、总体情况(点评依据+不合理处方数与比率+主要问题类型+科室分布表);二、专项情况(六类专项处方数与处方率+专项不适宜表);三、不合理处方存在问题(分类型叙述,详细见附件);四、总结(问题概括+对医师的要求)。落款:制表人、医院名称、处方点评小组、日期。

指标口径

  • 门诊只报门诊抗菌药物使用率(=含全身用抗菌药物处方数/点评处方总数,二级医院目标≤20%),不计算DDDs与使用强度。口径细节见下文【门诊抗菌药物使用率计算口径】。
  • 糖皮质激素专项只计全身用制剂;麻精专项严格按国家目录=麻醉药品+第一类精神药品(丙泊酚、右美托咪定等舒适化麻醉用药非国家目录品种,不计入);精二与含特殊药品复方制剂只作监控预警、不计入专项数。依据与调整方法见下文【分组口径与初筛规则】。

分组清单维护

scripts/group_lists.json 是六类专项的药品识别库,按本院在用药品维护:新药入库时在对应数组追加关键词或品名;与平台计数出现个位数差异时先核对品种口径再调整。

月度小结结构

按四段式生成,落款为制表人、医院名称、处方点评小组、日期:

  1. 总体情况:抽查张数与来源(智慧药学平台随机抽取门急诊处方)、点评依据(《处方管理办法》《2015抗菌药物临床应用指导原则》《中华人民共和国药典临床用药须知》等)、不合理处方数与比率、主要问题类型,附科室分布表(处方科室名称/计数/占比)。
  2. 专项情况:六类专项处方数与处方率,附专项表(专项名称/专项处方数/不适宜处方数/不适宜率),麻精专项列名"麻、精一处方"。
  3. 不合理处方存在问题(详细见附件):按规范类型分节(1.遴选药物不适宜 2.用法用量不适宜 3.联合用药不适宜……),每类叙述式书写:抽查发现患者诊断为××,处方使用××,根据《××》××条款……建议××。
  4. 总结:问题概括+对医师的要求(对精神药品、抗菌药物、PPI类药物、中成药等重点监控药品严格按文件要求,明确诊断、核对适应症与用法用量)。

其他处方导出格式

列名或行格式不同时:调整 header 参数或用药文本正则(parse_prescriptions.py 顶部模式常量);无法解析的行不会丢失,会保留原文进入R0复核队列。


附录A:分组口径与初筛规则

一、六类专项分组口径

每张处方可同时属于多个专项,按其所含药品判定。专项统计口径与智慧药学平台保持一致:

专项 判定口径 点评关注重点
基本药物 药品通用名在国家基本药物目录内(优先用HIS/平台基药标识列,其次用 group_lists.json 关键词) 基药处方率、优先选择是否合理
抗菌药物 全身用抗菌药物(含抗真菌药);滴眼/滴耳/外用软膏/阴道栓等局部制剂及抗病毒药不计入 有无指征、品种选择、用法用量、分级管理权限
中成药 国药准字Z品种(含民族药、含化药成分中成药如维C银翘片),按 group_lists.json 品种清单精确匹配 辨证用药、功能主治与诊断相符、联用重叠、含化药成分重复
糖皮质激素 仅全身用(口服/注射/吸入雾化);乳膏、软膏、眼膏、滴眼液、鼻喷雾剂等局部制剂不计入专项处方数 指征、疗程、退热等不规范使用
质子泵抑制剂 PPI及P-CAB(伏诺拉生、替戈拉生) 无指征用药、超常规频次(如艾司奥美拉唑Bid用于慢性胃炎)、预防用药合理性
麻、精一药品 严格按国家最新版《麻醉药品品种目录》《精神药品品种目录》:麻醉药品+第一类精神药品。丙泊酚、右美托咪定等舒适化麻醉用药非国家目录品种,不计入;精二及含特殊药品复方制剂不计入专项数,仅作规则监控预警 处方权限、剂量与给药时长、用量合理性

分组清单维护:scripts/group_lists.json 按本院在用药品维护,新药入库时追加,
无需修改代码。与平台计数出现个位数差异时,先核对品种口径再调整清单。

二、规则引擎初筛规则(R0–R9)

初筛只标疑点,不直接下结论。命中规则的处方必须由点评药师复核后方可写入小结。

编号 规则 依据要点
R0 药品行解析失败 HIS导出格式异常,人工核对用法用量
R1 单张处方药品>5种 《处方管理办法》第六条:每张处方不得超过5种药品
R2 抗菌药物诊断中无感染相关描述 《抗菌药物临床应用指导原则》无指征用药
R3 儿童禁忌用药 尼美舒利<12岁禁用;全身用氟喹诺酮<18岁不推荐;四环素类<8岁禁用
R4 同类药品≥2种(NSAIDs/抗组胺/他汀/ARB/复方感冒药/胰岛素促泌剂);中成药≥3种联用 重复用药、功效重叠;促泌剂联用见《中国糖尿病防治指南》
R5 全身用糖皮质激素诊断无常见适应证描述 激素用于普通上感退热等属典型不合理
R6 PPI/P-CAB诊断无酸相关疾病描述 无指征用药;另核查频次(常规剂量每日1次)
R7 精二药品估算用量>7天;麻醉药品用量偏大 《处方管理办法》第23–24条处方限量
R8 诊断缺失或仅为"开药" 处方书写规范
R9 中药注射剂使用 重点监控品种,核查适应证与溶媒

三、点评意见书写规范

  • 不合理类型用规范术语:遴选(遴选药物)不适宜、用法用量不适宜、联合用药不适宜、重复给药、有配伍禁忌或不良相互作用、无正当理由超说明书用药、处方书写不规范。
  • 附依据:写明文件名称+关键内容,如《中成药临床应用指导原则》《质子泵抑制剂优化应用专家共识》《中国糖尿病防治指南(2024版)》、药品说明书;不写"根据相关规定"这类空话。
  • 可执行:给出替代或调整建议(品种、剂量、频次、疗程),如"针对胃肠炎的腹痛腹泻建议辨证考虑腹可安片或保济丸"。
  • 跨机构或上期已归类问题需注明历史处理情况,要求补充证明材料。

附录B:典型不合理处方情形清单

按月点评时对照本清单提取典型案例,每类至少保留1份实例,全院通报通常选20份以上、
覆盖不同科室与不同分组。编号与初筛规则(见 review-rules.md)对应可互相印证。

抗菌药物类

  1. 无感染诊断使用抗菌药物(如"头痛""体检"开头孢)
  2. 上呼吸道感染(病毒性)常规联用两种抗菌药物
  3. 抗菌药物给药频次错误(如头孢克洛 Qd 应为 Tid,时间依赖型未按半衰期给药)
  4. 氟喹诺酮用于18岁以下、尼美舒利用于12岁以下
  5. 围手术期/拔牙后预防用药疗程过长(>48小时无依据延长)
  6. 甲硝唑单用于需氧菌感染,品种选择错误
  7. 抗菌药物超分级管理权限开具(特殊使用级门诊使用)

中成药类

  1. 中成药功能主治与诊断不符(如风寒感冒用清开灵等寒凉药)
  2. 功效相近中成药≥3种联用(重复用药)
  3. 含化药成分中成药与单方化药重复(维C银翘片+对乙酰氨基酚;咳特灵+氯苯那敏)
  4. 中药注射剂超适应证、溶媒选择不当、与抗菌药物同瓶混合

糖皮质激素类

  1. 地塞米松/甲泼尼龙用于普通感冒、发热退热
  2. 全身用激素无过敏/哮喘/自身免疫等适应证描述
  3. 激素长疗程无减量方案

PPI类

  1. PPI无酸相关疾病诊断(如为"护胃"常规搭车开具)
  2. 注射用PPI用于可口服患者
  3. PPI与H2受体拮抗剂/铋剂无指征联用

麻精及重点监控药品类

  1. 第二类精神药品单张处方超过7日常用量
  2. 含可待因/麻黄碱复方制剂用于儿童、或与其他含相同成分药品联用
  3. 麻醉药品、精一药品处方权或限量不符

通用书写与用法类

  1. 单张处方超过5种药品
  2. 诊断缺失、以"开药"代替诊断
  3. 给药途径与剂型不符(如外用制剂写口服)
  4. 单次剂量超过说明书极量
  5. 用药天数与总量不符(如 Bid×7天却只开4粒)

案例书写模板

> 处方概要:X岁男/女,诊断XX;用药XX。
> 问题:不合理类型(用规范术语)。
> 依据:指南/说明书具体条款。
> 建议:可直接执行的调整方案。


附录C:门诊抗菌药物使用率计算口径

门诊点评只上报门诊抗菌药物使用率,不计算DDDs与使用强度(AUD属住院指标,门诊无处方人天数数据,不得硬算)。

一、公式

门诊抗菌药物使用率 = 含全身用抗菌药物处方数 / 同期点评处方总数 × 100%

scripts/batch_review.py 汇总输出时自动计算并打印该指标。

二、计入与不计入

  • 计入:全身用(口服/注射/输注)抗菌药物,含抗真菌药(氟康唑、伊曲康唑、特比萘芬口服等)。
  • 不计入:滴眼液、滴耳液、外用软膏/乳膏/凝胶、阴道栓、洗剂等局部制剂;抗病毒药(奥司他韦、恩替卡韦、阿比多尔、伐昔洛韦等);抗结核药。
  • 剔除规则由 group_lists.json 中抗菌药物组的 exclude_form 维护,与平台计数不一致时核对品种后调整。

三、控制目标

二级医院门诊抗菌药物使用率 ≤20%(以当年卫生健康行政部门要求为准)。

四、分级管理要点

  • 按省级抗菌药物临床应用分级管理目录分为非限制使用级、限制使用级、特殊使用级。
  • 门诊不得使用特殊使用级抗菌药物。
  • 越级使用需有相应权限医师处方并留存依据;点评发现越级开具按"无正当理由"情形记录。

附录D:脚本与药品识别库(代码)

以下代码在有Python执行环境时使用;纯对话场景下可仅依据上述规则口径人工执行。

D1. scripts/parse_prescriptions.py

#!/usr/bin/env python3
&quot;&quot;&quot;处方用药情况文本解析器。

将点评导出处方 Excel 中&quot;处方用药情况&quot;列的多行文本解析为结构化药品记录。
行格式(来自医院HIS导出):序号 药品名 规格 用法 频次 单次剂量 总量 金额元
示例:1 磷酸奥司他韦胶囊 75mg/粒 口服 Bid 75mg 4粒 4元

用法:
    from parse_prescriptions import load_prescriptions, parse_drug_line
    df = load_prescriptions(&quot;处方.xlsx&quot;)          # 处方级 DataFrame,含 drugs 列表列
&quot;&quot;&quot;
import re
import pandas as pd

FREQ_PATTERN = re.compile(
    r&quot;^(Qd|Bid|Tid|Qid|Qn|Qm|Qod|Qw|Biw|Tiw|Prn|Sos|St|Q\d+h|Q\d+d)&quot;
    r&quot;(早|午|晚|早午|早中晚|下午|睡前|必要时)?$&quot;,
    re.IGNORECASE,
)
# 规格特征:含&quot;/&quot;(75mg/粒),或 数字+单位(+xN包装)(1片、10mlx10支、0.2gx36s、60ml:2%/瓶),
# 或浓度+装量连写(10%10g、10g1%)
SPEC_PATTERN = re.compile(
    r&quot;^([\d.]+\s*(mg|g|ml|ug|μg|IU|iu|%|片|支|盒|袋|丸|瓶|揿|s|粒|枚|贴|滴|喷|板)&quot;
    r&quot;([x::].*)?|[\d.]+%[\d.]+(g|ml)|[\d.]+(g|ml)[\d.]+%)$&quot;,
    re.IGNORECASE,
)


def parse_drug_line(line):
    &quot;&quot;&quot;解析单行用药文本,返回 dict;解析失败返回 None(调用方保留原文)。&quot;&quot;&quot;
    line = line.strip()
    if not line:
        return None
    tokens = line.split()
    if len(tokens) &lt; 7 or not tokens[0].isdigit():
        return None
    money = tokens[-1]
    if not money.endswith(&quot;元&quot;):
        return None
    # 频次固定在倒数第4位(剂量/总量/金额之后),不匹配则就近搜索
    freq_idx = None
    for i in range(len(tokens) - 4, 0, -1):
        if FREQ_PATTERN.match(tokens[i]):
            freq_idx = i
            break
    if freq_idx is None or freq_idx + 3 &gt;= len(tokens):
        return None
    # 规格:频次之前、药名之后,从右向左找最后一个符合规格特征或含&quot;/&quot;的 token
    spec_idx = None
    for i in range(freq_idx - 1, 0, -1):
        if &quot;/&quot; in tokens[i] or SPEC_PATTERN.match(tokens[i]):
            spec_idx = i
            break
    if spec_idx is None:
        return None
    return {
        &quot;序号&quot;: int(tokens[0]),
        &quot;药品名称&quot;: &quot; &quot;.join(tokens[1:spec_idx]),
        &quot;规格&quot;: tokens[spec_idx],
        &quot;用法&quot;: &quot; &quot;.join(tokens[spec_idx + 1 : freq_idx]),
        &quot;频次&quot;: tokens[freq_idx],
        &quot;单次剂量&quot;: tokens[freq_idx + 1],
        &quot;总量&quot;: tokens[freq_idx + 2],
        &quot;金额&quot;: float(money[:-1]) if money[:-1].replace(&quot;.&quot;, &quot;&quot;, 1).isdigit() else None,
        &quot;原文&quot;: line,
    }


def parse_prescription_text(text):
    &quot;&quot;&quot;解析整张处方的用药情况文本,返回药品 dict 列表(含未解析行的兜底记录)。&quot;&quot;&quot;
    drugs = []
    for line in str(text).strip().split(&quot;\n&quot;):
        if not line.strip():
            continue
        rec = parse_drug_line(line)
        if rec is None:
            rec = {&quot;药品名称&quot;: line.strip(), &quot;原文&quot;: line.strip(), &quot;解析失败&quot;: True}
        drugs.append(rec)
    return drugs


def load_prescriptions(path, sheet_name=0, header=1):
    &quot;&quot;&quot;读取点评处方 Excel。

    默认 header=1(第2行为列名:序号/处方日期/年龄/诊断/处方用药情况/点评意见),
    适配医院HIS导出格式;若导出格式不同,调整 header 参数。
    返回处方级 DataFrame,新增 drugs(结构化药品列表)与 药品数 两列。
    &quot;&quot;&quot;
    df = pd.read_excel(path, sheet_name=sheet_name, header=header)
    df.columns = [str(c).strip() for c in df.columns]
    df = df[df[&quot;诊断&quot;].notna() | df[&quot;处方用药情况&quot;].notna()].reset_index(drop=True)
    df[&quot;drugs&quot;] = df[&quot;处方用药情况&quot;].apply(parse_prescription_text)
    df[&quot;药品数&quot;] = df[&quot;drugs&quot;].apply(len)
    return df


if __name__ == &quot;__main__&quot;:
    import sys

    df = load_prescriptions(sys.argv[1])
    total_lines = df[&quot;drugs&quot;].apply(len).sum()
    failed = df[&quot;drugs&quot;].apply(lambda ds: sum(1 for d in ds if d.get(&quot;解析失败&quot;))).sum()
    print(f&quot;处方 {len(df)} 张,药品行 {total_lines} 条,解析失败 {failed} 条&quot;)

D2. scripts/batch_review.py

#!/usr/bin/env python3
&quot;&quot;&quot;处方批量分组与规则初筛。

流程:读入点评处方 Excel → 解析药品行 → 六类分组标记 → 规则引擎初筛疑似问题 →
输出带标记列的 Excel + 分组汇总统计。

初筛规则只负责&quot;标疑点&quot;,不替代药师判断:命中规则的处方在&quot;疑似问题&quot;列写明
规则编号与描述,由点评药师逐条复核后填写正式&quot;点评意见&quot;。

用法:
    python3 batch_review.py 处方.xlsx -o 点评结果.xlsx
    python3 batch_review.py 处方.xlsx -o 点评结果.xlsx --sheet 门诊点评数据
&quot;&quot;&quot;
import argparse
import json
import re
from pathlib import Path

import pandas as pd

from parse_prescriptions import load_prescriptions

GROUPS = [&quot;基本药物&quot;, &quot;抗菌药物&quot;, &quot;中成药&quot;, &quot;糖皮质激素&quot;, &quot;质子泵抑制剂&quot;, &quot;麻精药品&quot;]
LISTS_PATH = Path(__file__).parent / &quot;group_lists.json&quot;

# 感染相关诊断关键词(用于抗菌药物指征核查)
INFECTION_DX = re.compile(
    r&quot;感染|炎|脓|发热|发烧|热病|疖|痈|丹毒|蜂窝|败血|脓毒|菌血|结核|梅毒|淋病|&quot;
    r&quot;支原体|衣原体|立克次|螺旋体|真菌|念珠|曲霉|寄生虫|蛔虫|蛲虫|钩虫|&quot;
    r&quot;外伤|创伤|伤口|咬伤|刺伤|术后|切口|拔牙|种植|根尖|牙髓|冠周|龋齿|龋|&quot;
    r&quot;咽喉|扁桃体|鼻窦|中耳|支气管|肺|尿路|尿道|膀胱|肾盂|前列腺|胆囊|胆管|&quot;
    r&quot;阑尾|腹膜|盆腔|附睾|乳腺炎|角膜|结膜|睑腺|麦粒|胃肠炎|肠炎|腹泻|痢疾|&quot;
    r&quot;幽门螺杆菌|Hp|HP|猩红|百日咳|白喉|破伤风|上呼吸道|感冒|流感|咽炎&quot;
)
# 全身用糖皮质激素常见合理适应证关键词
GC_DX = re.compile(
    r&quot;过敏|哮喘|慢阻肺|COPD|鼻炎|皮炎|湿疹|荨麻疹|风湿|类风湿|狼疮|免疫|肾病|&quot;
    r&quot;肾炎|紫癜|血小板|溶血|休克|移植|肿瘤|癌|化疗|水肿(喉|声)|喉炎|喘憋|&quot;
    r&quot;痛风|关节|神经炎|面神经|带状疱疹|天疱疮|皮肌炎|干燥|溃疡性结肠|克罗恩&quot;
)
# 糖皮质激素全身给药用法规格提示
GC_SYSTEMIC_ROUTE = re.compile(r&quot;口服|注射|静|VD|iv|IV|im|IM|雾化|吸入|肌注&quot;)
# PPI 常见适应证关键词
PPI_DX = re.compile(
    r&quot;胃炎|胃食管|反流|食管炎|溃疡|十二指肠|消化不良|腹痛|胃痛|胃胀|呕血|黑便|&quot;
    r&quot;幽门螺杆菌|Hp|HP|应激|消化道出血|糜烂|Barrett|巴雷特|嗳气|反酸|烧心|恶心|呕吐&quot;
)

# 重复用药药理类别(同组内≥2个命中词即提示)
DUP_CLASSES = {
    &quot;NSAIDs&quot;: [&quot;布洛芬&quot;, &quot;双氯芬酸&quot;, &quot;塞来昔布&quot;, &quot;依托考昔&quot;, &quot;洛索洛芬&quot;, &quot;尼美舒利&quot;, &quot;美洛昔康&quot;, &quot;吲哚美辛&quot;, &quot;萘普生&quot;, &quot;赖氨匹林&quot;, &quot;氟比洛芬&quot;],
    &quot;抗组胺药&quot;: [&quot;氯雷他定&quot;, &quot;西替利嗪&quot;, &quot;酮替芬&quot;, &quot;依匹斯汀&quot;, &quot;氯苯那敏&quot;, &quot;赛庚啶&quot;, &quot;苯海拉明&quot;, &quot;氮卓斯汀&quot;, &quot;非索非那定&quot;, &quot;地氯雷他定&quot;, &quot;左西替利嗪&quot;],
    &quot;他汀类&quot;: [&quot;阿托伐他汀&quot;, &quot;瑞舒伐他汀&quot;, &quot;辛伐他汀&quot;, &quot;匹伐他汀&quot;, &quot;普伐他汀&quot;, &quot;氟伐他汀&quot;, &quot;洛伐他汀&quot;],
    &quot;ARB&quot;: [&quot;缬沙坦&quot;, &quot;厄贝沙坦&quot;, &quot;氯沙坦&quot;, &quot;替米沙坦&quot;, &quot;奥美沙坦&quot;, &quot;阿利沙坦&quot;, &quot;坎地沙坦&quot;],
    &quot;复方感冒药&quot;: [&quot;氨酚伪麻&quot;, &quot;双扑伪麻&quot;, &quot;氨酚麻美&quot;, &quot;氨咖黄敏&quot;, &quot;酚麻美敏&quot;, &quot;氨酚烷胺&quot;],
}

AGE_PATTERN = re.compile(r&quot;(\d+(?:\.\d+)?)\s*(岁|月|天|日|周)&quot;)


def parse_age_years(text):
    m = AGE_PATTERN.search(str(text))
    if not m:
        return None
    v, unit = float(m.group(1)), m.group(2)
    if unit == &quot;岁&quot;:
        return v
    if unit == &quot;月&quot;:
        return v / 12
    return v / 365


def match_group(name, cfg, count_subgroups=None):
    &quot;&quot;&quot;判断药品是否命中某分组。

    subgroups 型分组(麻精药品):返回命中的亚组名;指定 count_subgroups 时,
    只有命中这些亚组才计入分组(专项统计口径=麻醉药品+第一类精神药品),
    其余亚组(精二、含特殊药品复方制剂)仅供规则引擎监控预警。
    &quot;&quot;&quot;
    if cfg.get(&quot;匹配方式&quot;) == &quot;subgroups&quot;:
        for sub, kws in cfg.items():
            if sub in (&quot;匹配方式&quot;, &quot;备注&quot;):
                continue
            if any(k in name for k in kws):
                if count_subgroups is not None and not any(sub.startswith(c) for c in count_subgroups):
                    return None
                return sub
        return None
    names = cfg.get(&quot;names&quot;)
    if names and name in names:
        return True
    kws = cfg.get(&quot;keywords&quot;, [])
    if any(k in name for k in kws):
        for form in cfg.get(&quot;exclude_form&quot;, []):
            if form in name:
                return None
        return True
    return None


MJ_COUNT_SUBGROUPS = (&quot;麻醉药品&quot;, &quot;第一类精神药品&quot;)


def classify_prescription(drugs, lists):
    &quot;&quot;&quot;返回 (命中分组列表, 各组命中药品 dict)。&quot;&quot;&quot;
    hit = {}
    for d in drugs:
        name = d.get(&quot;药品名称&quot;, &quot;&quot;)
        name_clean = re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, name)  # 去商品名前缀括号
        for g in GROUPS:
            kw = {&quot;count_subgroups&quot;: MJ_COUNT_SUBGROUPS} if g == &quot;麻精药品&quot; else {}
            r = match_group(name_clean, lists[g], **kw) or match_group(name, lists[g], **kw)
            if r:
                hit.setdefault(g, set()).add(name)
    return sorted(hit), hit


def estimate_days(d):
    &quot;&quot;&quot;按 总量 ÷(单次剂量 × 每日次数)估算用药天数,无法估算返回 None。&quot;&quot;&quot;
    freq_map = {&quot;qd&quot;: 1, &quot;qn&quot;: 1, &quot;qm&quot;: 1, &quot;bid&quot;: 2, &quot;tid&quot;: 3, &quot;qid&quot;: 4, &quot;qod&quot;: 0.5}
    try:
        f = freq_map.get(re.match(r&quot;[A-Za-z]+&quot;, d[&quot;频次&quot;]).group(0).lower())
        if not f:
            return None
        dose = float(re.match(r&quot;[\d.]+&quot;, d[&quot;单次剂量&quot;]).group(0))
        dose_unit = re.sub(r&quot;^[\d.]+&quot;, &quot;&quot;, d[&quot;单次剂量&quot;])
        total = float(re.match(r&quot;[\d.]+&quot;, d[&quot;总量&quot;]).group(0))
        total_unit = re.sub(r&quot;^[\d.]+&quot;, &quot;&quot;, d[&quot;总量&quot;])
        if dose == 0 or dose_unit != total_unit:
            return None
        return round(total / (dose * f), 1)
    except (KeyError, AttributeError, ValueError, ZeroDivisionError):
        return None


def screen_rules(row, lists):
    &quot;&quot;&quot;规则引擎:对单张处方返回疑似问题列表。&quot;&quot;&quot;
    flags = []
    drugs = row[&quot;drugs&quot;]
    dx = str(row.get(&quot;诊断&quot;, &quot;&quot;))
    names = [d.get(&quot;药品名称&quot;, &quot;&quot;) for d in drugs]
    age = parse_age_years(row.get(&quot;年龄&quot;, &quot;&quot;))

    parsed = [d for d in drugs if not d.get(&quot;解析失败&quot;)]
    unparsed = [d for d in drugs if d.get(&quot;解析失败&quot;)]
    if unparsed:
        flags.append(&quot;R0 药品行解析失败,需人工核对用法用量:&quot; + &quot;;&quot;.join(d[&quot;原文&quot;] for d in unparsed))

    # R1 处方药品数&gt;5种(处方管理办法:每张处方不得超过5种药品)
    if len(drugs) &gt; 5:
        flags.append(f&quot;R1 单张处方{len(drugs)}种药品,超过5种上限&quot;)

    # R2 抗菌药物指征核查
    abx = [d for d in parsed if match_group(re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, d[&quot;药品名称&quot;]), lists[&quot;抗菌药物&quot;])
           or match_group(d[&quot;药品名称&quot;], lists[&quot;抗菌药物&quot;])]
    if abx and not INFECTION_DX.search(dx):
        flags.append(&quot;R2 使用抗菌药物但诊断未见感染相关描述,核查用药指征:&quot; + &quot;、&quot;.join(d[&quot;药品名称&quot;] for d in abx))

    # R3 儿童用药禁忌
    if age is not None:
        for d in parsed:
            n = d[&quot;药品名称&quot;]
            if age &lt; 12 and &quot;尼美舒利&quot; in n:
                flags.append(f&quot;R3 尼美舒利禁用于12岁以下儿童(患者{row[&#x27;年龄&#x27;]})&quot;)
            if age &lt; 18 and re.search(r&quot;沙星&quot;, n) and not re.search(r&quot;滴眼|滴耳&quot;, n):
                flags.append(f&quot;R3 全身用氟喹诺酮类不推荐18岁以下使用({n},患者{row[&#x27;年龄&#x27;]})&quot;)
            if age &lt; 8 and re.search(r&quot;多西环素|米诺环素|四环素&quot;, n):
                flags.append(f&quot;R3 四环素类禁用于8岁以下儿童({n},患者{row[&#x27;年龄&#x27;]})&quot;)
            if age &lt; 2 and re.search(r&quot;异丙嗪|喷托维林&quot;, n):
                flags.append(f&quot;R3 {n}慎/禁用于2岁以下儿童(患者{row[&#x27;年龄&#x27;]})&quot;)

    # R4 重复用药(同类≥2种)
    for cls, kws in DUP_CLASSES.items():
        hit = [n for n in names if any(k in n for k in kws)]
        if len(hit) &gt;= 2:
            flags.append(f&quot;R4 疑似重复用药({cls}):&quot; + &quot;、&quot;.join(hit))
    tcm_hit = [n for n in names if n in lists[&quot;中成药&quot;][&quot;names&quot;]]
    if len(tcm_hit) &gt;= 3:
        flags.append(f&quot;R4 中成药联用≥3种,核查辨证与功能主治重叠:&quot; + &quot;、&quot;.join(tcm_hit))

    # R5 全身用糖皮质激素指征
    for d in parsed:
        n = re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, d[&quot;药品名称&quot;])
        if (match_group(n, lists[&quot;糖皮质激素&quot;]) and d.get(&quot;用法&quot;)
                and GC_SYSTEMIC_ROUTE.search(d[&quot;用法&quot;]) and not GC_DX.search(dx)):
            flags.append(f&quot;R5 全身用糖皮质激素({d[&#x27;药品名称&#x27;]})诊断中未见常见适应证描述,核查指征&quot;)

    # R6 PPI 指征
    for d in parsed:
        n = re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, d[&quot;药品名称&quot;])
        if match_group(n, lists[&quot;质子泵抑制剂&quot;]) and not PPI_DX.search(dx):
            flags.append(f&quot;R6 使用PPI/P-CAB({d[&#x27;药品名称&#x27;]})诊断中未见酸相关疾病描述,核查指征&quot;)

    # R7 麻精/重点监控药品天数核查(精二口服一般≤7日常用量)
    for d in parsed:
        n = re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, d[&quot;药品名称&quot;])
        sub = match_group(n, lists[&quot;麻精药品&quot;])
        if sub:
            days = estimate_days(d)
            if sub.startswith(&quot;第二类精神药品&quot;) and days and days &gt; 7:
                flags.append(f&quot;R7 精二药品{d[&#x27;药品名称&#x27;]}估算用量约{days}天,超过7日常用量&quot;)
            elif sub == &quot;麻醉药品&quot; and days and days &gt; 3 and &quot;注射&quot; in str(d.get(&quot;规格&quot;, &quot;&quot;)):
                flags.append(f&quot;R7 麻醉药品注射剂{d[&#x27;药品名称&#x27;]}用量偏大(约{days}天),核查处方限量&quot;)

    # R8 无诊断或诊断过简
    if not dx or dx in (&quot;nan&quot;, &quot;无&quot;, &quot;开药&quot;, &quot;购药&quot;, &quot;复诊开药&quot;):
        flags.append(&quot;R8 诊断缺失或仅为开药描述,不符合处方书写规范&quot;)

    # R9 诊断与药品完全无关联的兜底提示(中药注射剂、辅助用药重点品种)
    for d in parsed:
        if re.search(r&quot;注射液&quot;, d[&quot;药品名称&quot;]) and re.search(r&quot;丹参|血栓通|血塞通|银杏|参麦|生脉|疏血通&quot;, d[&quot;药品名称&quot;]):
            flags.append(f&quot;R9 中药注射剂({d[&#x27;药品名称&#x27;]})按重点监控品种核查适应证与溶媒&quot;)

    return flags


def summarize(df):
    &quot;&quot;&quot;打印分组汇总统计(门诊口径:含门诊抗菌药物使用率,不含DDDs指标)。&quot;&quot;&quot;
    total = len(df)
    print(f&quot;\n===== 专项分组汇总(共{total}张处方)=====&quot;)
    for g in GROUPS:
        col = f&quot;分组_{g}&quot;
        n = df[col].apply(bool).sum()
        label = &quot;麻、精一药品&quot; if g == &quot;麻精药品&quot; else g
        print(f&quot;{label}: {n} 张,处方率 {n/total:.2%}&quot;)
    abx = df[&quot;分组_抗菌药物&quot;].apply(bool).sum()
    print(f&quot;\n门诊抗菌药物使用率: {abx/total:.2%}({abx}/{total},二级医院控制目标≤20%)&quot;)
    lists = json.loads(LISTS_PATH.read_text(encoding=&quot;utf-8&quot;))
    sub_counts = {}
    for drugs in df[&quot;drugs&quot;] if &quot;drugs&quot; in df.columns else []:
        for d in drugs:
            s = match_group(re.sub(r&quot;^\([^)]*\)&quot;, &quot;&quot;, d.get(&quot;药品名称&quot;, &quot;&quot;)), lists[&quot;麻精药品&quot;])
            if s:
                sub_counts[s] = sub_counts.get(s, 0) + 1
    if sub_counts:
        print(&quot;重点监控预警(不计入麻精专项): &quot; + &quot;;&quot;.join(f&quot;{k} {v}条&quot; for k, v in sub_counts.items()))
    flagged = df[&quot;疑似问题&quot;].apply(bool).sum()
    print(f&quot;\n初筛命中疑似问题处方: {flagged} 张({flagged/total:.2%})&quot;)
    rule_counts = {}
    for s in df[&quot;疑似问题&quot;]:
        for item in s:
            r = item.split()[0]
            rule_counts[r] = rule_counts.get(r, 0) + 1
    for r, c in sorted(rule_counts.items()):
        print(f&quot;  {r}: {c} 条&quot;)


def dept_stats(df):
    &quot;&quot;&quot;若导出含科室列,返回科室分布 DataFrame(计数+占比),否则返回 None。&quot;&quot;&quot;
    col = next((c for c in df.columns if &quot;科室&quot; in c), None)
    if col is None:
        return None
    s = df[col].fillna(&quot;未填写&quot;).value_counts()
    out = pd.DataFrame({&quot;处方科室名称&quot;: s.index, &quot;计数&quot;: s.values})
    out[&quot;占比&quot;] = (out[&quot;计数&quot;] / len(df)).apply(lambda x: f&quot;{x:.1%}&quot;)
    return out


def main():
    ap = argparse.ArgumentParser()
    ap.add_argument(&quot;input&quot;, help=&quot;处方Excel路径&quot;)
    ap.add_argument(&quot;-o&quot;, &quot;--output&quot;, required=True, help=&quot;输出Excel路径&quot;)
    ap.add_argument(&quot;--sheet&quot;, default=0, help=&quot;工作表名或序号&quot;)
    ap.add_argument(&quot;--header&quot;, type=int, default=1, help=&quot;列名所在行(0起,HIS导出通常为1)&quot;)
    args = ap.parse_args()

    lists = json.loads(LISTS_PATH.read_text(encoding=&quot;utf-8&quot;))
    sheet = int(args.sheet) if str(args.sheet).isdigit() else args.sheet
    df = load_prescriptions(args.input, sheet_name=sheet, header=args.header)

    group_cols, flag_cols = [], []
    for _, row in df.iterrows():
        groups, _ = classify_prescription(row[&quot;drugs&quot;], lists)
        group_cols.append(groups)
        flag_cols.append(screen_rules(row, lists))

    for g in GROUPS:
        df[f&quot;分组_{g}&quot;] = [[&quot;√&quot;] if g in gc else [] for gc in group_cols]
        df[f&quot;分组_{g}&quot;] = df[f&quot;分组_{g}&quot;].apply(lambda x: &quot;√&quot; if x else &quot;&quot;)
    df[&quot;分组汇总&quot;] = [&quot;、&quot;.join(gc) for gc in group_cols]
    df[&quot;疑似问题&quot;] = [&quot;\n&quot;.join(fc) for fc in flag_cols]
    if &quot;点评意见&quot; not in df.columns:
        df[&quot;点评意见&quot;] = &quot;&quot;

    out = df.drop(columns=[&quot;drugs&quot;])
    dept = dept_stats(out)
    if dept is not None:
        with pd.ExcelWriter(args.output) as w:
            out.to_excel(w, index=False, sheet_name=&quot;点评明细&quot;)
            dept.to_excel(w, index=False, sheet_name=&quot;科室分布&quot;)
    else:
        out.to_excel(args.output, index=False)
    print(f&quot;已输出: {args.output}&quot;)
    df[&quot;疑似问题&quot;] = flag_cols
    for g in GROUPS:
        df[f&quot;分组_{g}&quot;] = [g in gc for gc in group_cols]
    summarize(df)


if __name__ == &quot;__main__&quot;:
    main()

D3. scripts/group_lists.json

{
  &quot;版本&quot;: &quot;2026-06&quot;,
  &quot;维护说明&quot;: &quot;本文件为六类分组的药品识别库,按本院在用药品维护。匹配方式:keywords=药名包含任一关键词即命中;names=药名完全匹配命中;exclude_form=药品名称含这些剂型词时不计入该组(用于剔除局部外用制剂)。新增药品时直接在对应数组追加即可,无需改代码。目录依据以国家最新版为准:基本药物目录、抗菌药物分级管理目录(省级)、麻醉药品和精神药品目录。&quot;,

  &quot;基本药物&quot;: {
    &quot;匹配方式&quot;: &quot;keywords&quot;,
    &quot;备注&quot;: &quot;以下为常用基药通用名起始清单。若HIS导出已带基药标识列,优先用标识列;否则按本院执行的国家基本药物目录增补keywords。&quot;,
    &quot;keywords&quot;: [
      &quot;二甲双胍&quot;, &quot;格列美脲&quot;, &quot;格列齐特&quot;, &quot;阿卡波糖&quot;, &quot;伏格列波糖&quot;, &quot;吡格列酮&quot;,
      &quot;氨氯地平&quot;, &quot;硝苯地平&quot;, &quot;非洛地平&quot;, &quot;缬沙坦&quot;, &quot;厄贝沙坦&quot;, &quot;氯沙坦&quot;, &quot;培哚普利&quot;, &quot;贝那普利&quot;,
      &quot;美托洛尔&quot;, &quot;比索洛尔&quot;, &quot;阿替洛尔&quot;, &quot;普萘洛尔&quot;, &quot;氢氯噻嗪&quot;, &quot;吲达帕胺&quot;, &quot;呋塞米&quot;, &quot;螺内酯&quot;,
      &quot;阿托伐他汀&quot;, &quot;瑞舒伐他汀&quot;, &quot;辛伐他汀&quot;, &quot;匹伐他汀&quot;, &quot;非诺贝特&quot;,
      &quot;阿司匹林&quot;, &quot;氯吡格雷&quot;, &quot;华法林&quot;, &quot;单硝酸异山梨酯&quot;, &quot;地高辛&quot;,
      &quot;头孢呋辛&quot;, &quot;头孢克洛&quot;, &quot;头孢克肟&quot;, &quot;头孢拉定&quot;, &quot;头孢唑林&quot;, &quot;头孢曲松&quot;,
      &quot;阿莫西林&quot;, &quot;青霉素&quot;, &quot;苯唑西林&quot;, &quot;左氧氟沙星&quot;, &quot;阿奇霉素&quot;, &quot;罗红霉素&quot;, &quot;克拉霉素&quot;, &quot;红霉素&quot;,
      &quot;克林霉素&quot;, &quot;甲硝唑&quot;, &quot;多西环素&quot;, &quot;奥司他韦&quot;, &quot;恩替卡韦&quot;, &quot;氟康唑&quot;, &quot;特比萘芬&quot;, &quot;阿苯达唑&quot;,
      &quot;布洛芬&quot;, &quot;对乙酰氨基酚&quot;, &quot;双氯芬酸&quot;, &quot;秋水仙碱&quot;,
      &quot;氯雷他定&quot;, &quot;西替利嗪&quot;, &quot;酮替芬&quot;, &quot;氯苯那敏&quot;, &quot;孟鲁司特&quot;,
      &quot;氨溴索&quot;, &quot;溴己新&quot;, &quot;羧甲司坦&quot;, &quot;茶碱&quot;, &quot;沙丁胺醇&quot;, &quot;布地奈德&quot;, &quot;异丙托溴铵&quot;, &quot;丙卡特罗&quot;,
      &quot;奥美拉唑&quot;, &quot;雷尼替丁&quot;, &quot;法莫替丁&quot;, &quot;铝碳酸镁&quot;, &quot;硫糖铝&quot;, &quot;枸橼酸铋钾&quot;, &quot;胶体果胶铋&quot;,
      &quot;蒙脱石&quot;, &quot;多潘立酮&quot;, &quot;莫沙必利&quot;, &quot;乳果糖&quot;, &quot;口服补液盐&quot;, &quot;山莨菪碱&quot;, &quot;间苯三酚&quot;,
      &quot;泼尼松&quot;, &quot;地塞米松&quot;, &quot;甲泼尼龙&quot;, &quot;氢化可的松&quot;,
      &quot;甲巯咪唑&quot;, &quot;丙硫氧嘧啶&quot;, &quot;左甲状腺素&quot;,
      &quot;叶酸&quot;, &quot;维生素B1&quot;, &quot;维生素B2&quot;, &quot;维生素B6&quot;, &quot;维生素C&quot;, &quot;维生素D2&quot;, &quot;碳酸钙D3&quot;, &quot;骨化三醇&quot;, &quot;阿法骨化醇&quot;,
      &quot;氯化钠注射液&quot;, &quot;葡萄糖注射液&quot;, &quot;灭菌注射用水&quot;, &quot;利多卡因&quot;, &quot;破伤风抗毒素&quot;,
      &quot;特拉唑嗪&quot;, &quot;坦索罗辛&quot;, &quot;非那雄胺&quot;, &quot;卡马西平&quot;, &quot;甲氨蝶呤&quot;, &quot;别嘌醇&quot;, &quot;苯溴马隆&quot;, &quot;莫匹罗星&quot;, &quot;炉甘石&quot;, &quot;尿素乳膏&quot;, &quot;利可君&quot;, &quot;肌苷&quot;, &quot;葡醛内酯&quot;, &quot;联苯苄唑&quot;
    ]
  },

  &quot;抗菌药物&quot;: {
    &quot;匹配方式&quot;: &quot;keywords+exclude_form&quot;,
    &quot;备注&quot;: &quot;全身用抗菌药物(含抗真菌药)。滴眼/滴耳/外用软膏/阴道栓等局部制剂不计入抗菌药物组;抗病毒药(奥司他韦、恩替卡韦、阿比多尔、伐昔洛韦等)不计入。小檗碱、大蒜素等植物来源抗菌药是否计入按省级分级目录口径。&quot;,
    &quot;keywords&quot;: [
      &quot;头孢&quot;, &quot;阿莫西林&quot;, &quot;青霉素&quot;, &quot;苯唑西林&quot;, &quot;氨苄西林&quot;, &quot;哌拉西林&quot;, &quot;美洛西林&quot;,
      &quot;左氧氟沙星&quot;, &quot;氧氟沙星&quot;, &quot;诺氟沙星&quot;, &quot;环丙沙星&quot;, &quot;莫西沙星&quot;,
      &quot;阿奇霉素&quot;, &quot;罗红霉素&quot;, &quot;克拉霉素&quot;, &quot;红霉素&quot;, &quot;环酯红霉素&quot;, &quot;乙酰螺旋霉素&quot;,
      &quot;克林霉素&quot;, &quot;林可霉素&quot;, &quot;甲硝唑&quot;, &quot;替硝唑&quot;, &quot;奥硝唑&quot;,
      &quot;多西环素&quot;, &quot;米诺环素&quot;, &quot;四环素&quot;, &quot;磺胺&quot;, &quot;复方新诺明&quot;, &quot;呋喃妥因&quot;, &quot;磷霉素&quot;,
      &quot;万古霉素&quot;, &quot;去甲万古霉素&quot;, &quot;替考拉宁&quot;, &quot;利奈唑胺&quot;, &quot;庆大霉素&quot;, &quot;阿米卡星&quot;, &quot;妥布霉素&quot;,
      &quot;氟康唑&quot;, &quot;伊曲康唑&quot;, &quot;伏立康唑&quot;, &quot;卡泊芬净&quot;, &quot;两性霉素&quot;, &quot;制霉菌素&quot;, &quot;特比萘芬&quot;, &quot;硝呋太尔&quot;
    ],
    &quot;exclude_form&quot;: [&quot;滴眼液&quot;, &quot;滴耳液&quot;, &quot;乳膏&quot;, &quot;软膏&quot;, &quot;凝胶&quot;, &quot;栓&quot;, &quot;洗液&quot;, &quot;洗剂&quot;, &quot;搽剂&quot;, &quot;喷雾剂(外用)&quot;, &quot;含漱&quot;, &quot;眼膏&quot;, &quot;贴&quot;]
  },

  &quot;中成药&quot;: {
    &quot;匹配方式&quot;: &quot;names&quot;,
    &quot;备注&quot;: &quot;本院在用中成药品种清单(按国药准字Z口径,含维药、苗药等民族药及含化药成分的中成药如维C银翘片)。新药入库后在此追加品名。&quot;,
    &quot;names&quot;: [
      &quot;裸花紫珠片&quot;, &quot;肺力咳合剂&quot;, &quot;清开灵胶囊&quot;, &quot;清开灵颗粒&quot;, &quot;小儿热速清颗粒&quot;, &quot;香菊片&quot;, &quot;鼻炎片(中联)&quot;,
      &quot;肿痛安胶囊&quot;, &quot;金振口服液&quot;, &quot;玄麦甘桔胶囊&quot;, &quot;四磨汤口服液&quot;, &quot;致康胶囊&quot;, &quot;元胡止痛滴丸&quot;,
      &quot;口炎清颗粒&quot;, &quot;复方丹参滴丸&quot;, &quot;复方丹参片&quot;, &quot;寒喘祖帕颗粒&quot;, &quot;小儿柴桂退热口服液&quot;, &quot;比拜克胶囊&quot;,
      &quot;复方血栓通胶囊&quot;, &quot;大活络胶囊&quot;, &quot;抗病毒口服液&quot;, &quot;金天格胶囊&quot;, &quot;祖卡木颗粒&quot;, &quot;甘桔冰梅片&quot;,
      &quot;金叶败毒颗粒&quot;, &quot;清热八味胶囊&quot;, &quot;活血止痛胶囊&quot;, &quot;腹可安片&quot;, &quot;鼻炎康片&quot;, &quot;小儿消积止咳口服液&quot;,
      &quot;血脂康胶囊&quot;, &quot;金蝉止痒胶囊&quot;, &quot;妇炎康复胶囊&quot;, &quot;乌灵胶囊&quot;, &quot;血塞通胶囊&quot;, &quot;润燥止痒胶囊&quot;,
      &quot;鼻窦炎口服液&quot;, &quot;脑栓通胶囊&quot;, &quot;坤泰胶囊&quot;, &quot;尿毒清颗粒&quot;, &quot;玉屏风颗粒&quot;, &quot;脉血康胶囊&quot;,
      &quot;伤科接骨片&quot;, &quot;银丹心泰滴丸&quot;, &quot;醒脾养儿颗粒&quot;, &quot;杏贝止咳颗粒&quot;, &quot;加味藿香正气丸&quot;, &quot;稳心颗粒&quot;,
      &quot;荜铃胃痛颗粒&quot;, &quot;瘀血痹片&quot;, &quot;通心络胶囊&quot;, &quot;舒泌通胶囊&quot;, &quot;地奥心血康胶囊&quot;, &quot;小金丸&quot;, &quot;银杏叶片&quot;,
      &quot;保济丸&quot;, &quot;咳特灵胶囊&quot;, &quot;益气维血片&quot;, &quot;麝香追风止痛膏&quot;, &quot;固本益肠片&quot;, &quot;消炎利胆片&quot;,
      &quot;少腹逐瘀胶囊&quot;, &quot;消痛贴膏&quot;, &quot;胃复春胶囊&quot;, &quot;乳块消颗粒&quot;, &quot;芪苈强心胶囊&quot;, &quot;板蓝根颗粒&quot;,
      &quot;枣仁安神胶囊&quot;, &quot;参柏洗液&quot;, &quot;坤复康片&quot;, &quot;固肾安胎丸&quot;, &quot;芪参益气滴丸&quot;, &quot;七叶神安片&quot;,
      &quot;尿石通丸&quot;, &quot;都梁软胶囊&quot;, &quot;安胃疡胶囊&quot;, &quot;至灵胶囊&quot;, &quot;脉管复康片&quot;, &quot;化痔栓&quot;, &quot;宫炎平胶囊&quot;,
      &quot;镇痛活络酊&quot;, &quot;六神丸&quot;, &quot;银黄颗粒&quot;, &quot;和血明目片&quot;, &quot;滑膜炎片&quot;, &quot;心宝丸&quot;, &quot;湿润烧伤膏&quot;,
      &quot;大黄蟅虫片&quot;, &quot;缩泉胶囊&quot;, &quot;正清风痛宁缓释片&quot;, &quot;急支糖浆&quot;, &quot;蛇胆川贝液&quot;, &quot;松龄血脉康胶囊&quot;,
      &quot;参松养心胶囊&quot;, &quot;强力定眩胶囊&quot;, &quot;宁泌泰胶囊&quot;, &quot;双石通淋胶囊&quot;, &quot;维C银翘片&quot;,
      &quot;儿肤康搽剂&quot;, &quot;百安洗液&quot;, &quot;西帕依固龈液&quot;, &quot;开喉剑喷雾剂&quot;, &quot;马应龙麝香痔疮膏&quot;,
      &quot;骨通贴膏(天和)&quot;, &quot;通络祛痛膏&quot;, &quot;代温灸膏&quot;, &quot;保妇康栓&quot;
    ]
  },

  &quot;糖皮质激素&quot;: {
    &quot;匹配方式&quot;: &quot;keywords+exclude_form&quot;,
    &quot;备注&quot;: &quot;专项统计口径为全身用(口服/注射/吸入雾化)。乳膏、软膏、眼膏、滴眼液等局部外用制剂不计入专项处方数;糠酸莫米松鼻喷雾剂等鼻用制剂是否计入按本院平台口径执行(本院平台不计入,故列入exclude_form)。&quot;,
    &quot;keywords&quot;: [
      &quot;泼尼松&quot;, &quot;泼尼松龙&quot;, &quot;地塞米松&quot;, &quot;甲泼尼龙&quot;, &quot;氢化可的松&quot;, &quot;倍他米松&quot;,
      &quot;布地奈德&quot;, &quot;糠酸莫米松&quot;, &quot;氟米松&quot;, &quot;卤米松&quot;, &quot;曲安奈德&quot;, &quot;氟替卡松&quot;, &quot;倍氯米松&quot;, &quot;可的松&quot;
    ],
    &quot;exclude_form&quot;: [&quot;乳膏&quot;, &quot;软膏&quot;, &quot;眼膏&quot;, &quot;滴眼液&quot;, &quot;洗剂&quot;, &quot;洗液&quot;, &quot;搽剂&quot;, &quot;鼻喷雾剂&quot;, &quot;鼻喷&quot;]
  },

  &quot;质子泵抑制剂&quot;: {
    &quot;匹配方式&quot;: &quot;keywords&quot;,
    &quot;备注&quot;: &quot;含PPI与P-CAB(伏诺拉生、替戈拉生等钾离子竞争性酸阻滞剂,按同类管理)。&quot;,
    &quot;keywords&quot;: [
      &quot;奥美拉唑&quot;, &quot;兰索拉唑&quot;, &quot;泮托拉唑&quot;, &quot;雷贝拉唑&quot;, &quot;艾司奥美拉唑&quot;, &quot;艾普拉唑&quot;,
      &quot;伏诺拉生&quot;, &quot;替戈拉生&quot;
    ]
  },

  &quot;麻精药品&quot;: {
    &quot;匹配方式&quot;: &quot;subgroups&quot;,
    &quot;备注&quot;: &quot;专项统计口径严格按国家最新版《麻醉药品品种目录》《精神药品品种目录》执行=麻醉药品+第一类精神药品。丙泊酚、右美托咪定等舒适化麻醉用药非国家目录麻精品种,不计入麻精专项。第二类精神药品与含特殊药品复方制剂不计入专项处方数,仅用于R7规则重点监控预警。&quot;,
    &quot;麻醉药品&quot;: [&quot;吗啡&quot;, &quot;哌替啶&quot;, &quot;芬太尼&quot;, &quot;舒芬太尼&quot;, &quot;瑞芬太尼&quot;, &quot;羟考酮&quot;, &quot;磷酸可待因&quot;, &quot;可待因片&quot;, &quot;罂粟碱&quot;, &quot;阿片粉&quot;],
    &quot;第一类精神药品&quot;: [&quot;哌甲酯&quot;, &quot;氯胺酮&quot;, &quot;马吲哚&quot;],
    &quot;第二类精神药品(仅规则监控)&quot;: [
      &quot;地西泮&quot;, &quot;艾司唑仑&quot;, &quot;阿普唑仑&quot;, &quot;氯硝西泮&quot;, &quot;劳拉西泮&quot;, &quot;奥沙西泮&quot;, &quot;硝西泮&quot;, &quot;咪达唑仑&quot;,
      &quot;唑吡坦&quot;, &quot;佐匹克隆&quot;, &quot;右佐匹克隆&quot;, &quot;苯巴比妥&quot;, &quot;巴比妥&quot;, &quot;曲马多&quot;, &quot;氨酚待因&quot;,
      &quot;地佐辛&quot;, &quot;布托啡诺&quot;, &quot;喷他佐辛&quot;, &quot;含可待因复方口服溶液&quot;, &quot;复方地芬诺酯&quot;
    ],
    &quot;含特殊药品复方制剂(仅规则监控)&quot;: [&quot;可待因桔梗&quot;, &quot;复方甘草&quot;, &quot;氨酚伪麻&quot;, &quot;双扑伪麻&quot;, &quot;氨酚麻美&quot;]
  }
}

常见问题

5 问
答案由本站依据条目字段整理
处方点评分类及初筛怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_767538ff/prescription-review-0092-psm2026。安装方式为未标注。装完刷新技能列表或重开客户端。

处方点评分类及初筛支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

处方点评分类及初筛权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

处方点评分类及初筛收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

处方点评分类及初筛用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。