年度处方点评分析
概述
本技能覆盖医院门急诊处方点评年度分析报告从原始台账到Word初稿的完整流程。适用于年度总结、药事委员会汇报、合理用药持续改进评估等场景。输出为药师辅助底稿,供处方点评小组审阅修订后定稿。
触发条件
当用户提出以下需求时使用本技能:
- 对全年(或多月)门急诊处方点评台账进行汇总分析
- 生成年度处方点评分析报告
- 对不合格处方进行分类统计与根因分析
- 生成药学期刊风格的三线表、扇形图等图表
- 大处方专项点评年度报告
工作流程
阶段0:环境准备
安装必需的Python包(在隔离venv中):
pip install openpyxl pandas matplotlib python-docx
确认中文字体可用(Windows: Microsoft YaHei/SimHei)。
阶段1:一键生成报告(推荐)
引擎为单一入口,内部自动完成:数据提取 → 多维度统计 → 写出图表JSON → 生成5张PNG图表 → 根因分析 → 生成嵌入图表的Word报告。
python scripts/annual_review_engine.py <台账文件夹路径> <年份>
# 示例:
python scripts/annual_review_engine.py "C:\Users\Maple\Desktop\大处方点评分析" 2025
执行流程(脚本内部自动串联):
1. extract_data() 遍历台账文件夹所有 .xlsx,按表头关键词动态定位列,用精确正则 [::]\s*(\d-\d{1,2})\s 匹配分类编码
2. 写出 result.json(分类汇总)与 multi_dim.json(多维度数据)
3. 子进程调用 make_charts.py + make_supplementary_charts.py 生成 5 张 PNG(DPI 300)
4. generate_report() 生成含 5 张三线表 + 5 张嵌入图表 + 七大章节的 Word 文档
生成的 Word 文档(.docx)结构:
1. 封面与摘要:年度、数据来源、结构化摘要(目的-方法-结果-结论)
2. 一、概述:背景依据、分析目的、底稿性质声明
3. 二、资料与方法:数据来源、评价标准(三大类分类体系)、统计方法
4. 三、结果:总体情况、分类汇总(表+扇形图)、月度趋势、科室分布、TOP药品、年龄性别
5. 四、根因分析:每类问题含"问题特征→根因分析→改进方向"三段式(含通用兜底,覆盖全部编码)
6. 五、讨论:大类构成、核心问题解读、科室差异、局限性
7. 六、干预建议:信息系统优化、人员培训考核、管理制度完善
8. 七、结论:核心靶点、综合干预模式、量化改进目标
阶段2:仅重新生成图表(可选)
若需单独调整图表样式或仅导出 PNG(不生成报告):
python scripts/extract_data_standalone.py <台账文件夹路径> # 产出 result.json / multi_dim.json
python scripts/make_charts.py # 三线表 + 扇形图
python scripts/make_supplementary_charts.py # 月度趋势 + 科室分布 + TOP药品
阶段3:审阅与定稿
报告为药师辅助底稿,需人工审阅修订以下内容:
- 根因分析与干预建议的具体措辞(结合本院实际情况)
- 数据局限性说明
- 与既往年度的比较(如有)
- 签署信息
关键技术要点
1. 动态列定位(必须)
不同月份的台账Excel文件列结构可能存在差异:
- 部分文件有前置空列(合并单元格标题行)
- 部分文件新增"复核意见"列
- 不可硬编码列索引,必须按表头关键词动态查找
实现方式:遍历前3行的所有单元格,匹配包含目标关键词(如"点评意见")的列。
2. 分类编码精确匹配(必须)
不合格处方编码格式为 X-Y(如 1-10、2-5)。
- 错误做法:用宽松正则
(\d+-\d+)会误匹配日期(2025-1-2→1-2)和剂量(1-2片) - 正确做法:用
[::]\s*(\d-\d{1,2})\s限定编码前必须有冒号、编码后必须有空白
3. 统计口径
- 按"问题例次"计数:同一处方涉及多个问题时,分别计入对应类别
- 报告中注明总抽查处方数和问题例次,说明口径差异
4. 三线表格式(药学期刊规范)
- 仅3条横线:顶线1.5pt、表头下线0.75pt、底线1.5pt
- 无竖线、无行间横线
- 表题在表上方居中加粗
- 大类小计行用细灰线分隔
- 合计行用粗体
5. Python引号陷阱(关键坑)
在Python f-string中使用中文引号做强调时,必须用Unicode转义 \u201c/\u201d,不能用ASCII双引号 ",否则会提前终止f-string。
# 错误:会报SyntaxError
f"建议通过"信息系统硬性校验"的综合干预模式"
# 正确:使用Unicode转义
f"建议通过\u201c信息系统硬性校验\u201d的综合干预模式"
6. 大类聚合计数陷阱(关键坑)
聚合"大类"计数(如不规范/用药不适宜/超常)时,必须先用 Counter 累加同类,再包装成字典,切忌用 dict 推导覆盖:
# 错误:{cat(c): count for c in codes} 对同键只保留最后一项,导致大类计数严重失真
# (曾误算为 不规范处方=19、用药不适宜处方=1,实际应为 110 / 122)
# 正确:先累加
cat_counter = Counter()
for c in code_counter:
cat_counter[cat(c)] += code_counter[c]
cat_summary = {k: {"count": v, "pct": round(v/tp*100,2)} for k,v in cat_counter.items()}
7. 分类体系与兜底机制
- 引擎内置《医院处方点评管理规范》完整三大类编码(不规范 1-x / 用药不适宜 2-x / 超常 3-x),可适配任意年度出现的新编码,不会显示"?"。
- 根因分析采用"模板+通用兜底":8 个高频编码有定制化三段式文本;其余编码自动用通用模板补充,确保年度报告中每个不合格类型都有根因分析覆盖。
捆绑脚本
| 脚本 | 用途 |
|---|---|
scripts/annual_review_engine.py |
主引擎:数据提取→统计→根因分析→Word报告生成(一体化) |
scripts/make_charts.py |
生成三线表与扇形图PNG |
scripts/make_supplementary_charts.py |
生成月度趋势、科室分布、TOP药品补充图表 |
scripts/extract_data_standalone.py |
独立数据提取(输出JSON,供图表脚本使用) |
参考文件
references/classification_std.md:《医院处方点评管理规范》不合格处方分类编码标准
注意事项
- 台账文件结构差异:不同月份文件的列顺序可能不同,务必使用动态列定位
- 正则匹配精度:分类编码匹配必须用精确正则,避免误匹配日期和剂量
- 一键流程:
annual_review_engine.py已内置"提取→写JSON→生成PNG→嵌图报告"全链路,单条命令即可产出含图表的完整报告;无需手动先跑图表脚本 - 根因分析可编辑:引擎自动生成的根因分析文本基于数据特征和常见模式,需人工审阅结合本院实际修订
- 年度复用:只需将新年份台账放入同一文件夹,运行引擎即可生成新年度报告
- 产物留痕:引擎运行会在脚本目录生成
result.json、multi_dim.json及 5 张 PNG,可一并复制作为数据溯源依据