特殊使用级会诊率数据整理
Overview
对医院 HIS 导出的『特殊使用级抗菌药物统计表』(Excel,sheet 通常名为「专档管理」)按既定规则去重,使每个"会诊事件"仅保留 1 条代表性记录,供后续会诊率统计使用。直接在原表上删除多余行,保留行的原序号与原始出现顺序不变。
何时使用
触发场景:
- 用户提及"特殊使用级抗菌药物""会诊率""会诊情况分析""专档管理表"等关键词
- 用户提供一份 Excel 统计表,要求按科室+住院号+药物去重
- 临床药师/药学信息员做月度或季度抗菌药物会诊数据整理
输入要求
Excel 文件(.xlsx),结构须包含以下列(列名可不同,但列位置须一致):
| 列序 | 字段 | 说明 |
|---|---|---|
| 1 | 序号 | |
| 2 | 科室 | |
| 3 | 住院号 | |
| 4 | 药物名称 | |
| 11 | 会诊状态 | 取值:已完成 / 已接收 / 空白 |
| 12 | 首次医嘱时间 | datetime |
| 13 | 长嘱/临嘱 | 取值:长嘱 / 临嘱 |
- 第1行:标题行(如"特殊使用级抗菌药物统计表")
- 第2行:表头行
- 第3行起:数据行
去重规则
归组(两阶段)
- 预分组:按
科室 + 住院号 + 药物名称分组 - 连通归组:组内按"首次医嘱时间"升序排序,滑动窗口——相邻记录日期差
≤ 1 天归为同一子组;> 1 天断开,开启新子组。
- 选用"相邻连通"而非"以最早记录为锚的固定窗口",可避免把跨多天的两次独立用药事件错误合并。
- 若医院规则改为"以组内最早记录为锚、±1天内全归一组",修改脚本常量DAY_WINDOW逻辑即可。
单组保留优先级(每子组仅保留 1 条,从高到低)
| 优先级 | 条件 | 取哪条 |
|---|---|---|
| ① | 会诊状态=已完成 + 长嘱 | 该类第一条 |
| ② | 会诊状态=已完成 + 临嘱 | 该类第一条 |
| ③ | 全空白会诊(无任何"已完成"且状态全空) | 优先长嘱,无则临嘱第一条 |
| ④ | 强制兜底(含"已接收"等非"已完成"非空白状态) | 第一条 |
> 规则③判定前提:子组内无任何"已完成"且所有记录会诊状态均为空。"已接收"等中间态归入④兜底。
执行流程
1. 路由确认(必做)
本技能处理的是本地 Excel 文件的内容工作(数据清洗),按 tencent-docs-routing 技能规则应优先走 tencent-docs-sheetagent。但该技能为批量数据清洗任务,sheetagent 不可用时回退到本技能脚本直接处理——回退前必须告知用户,并先关闭 editor_sdk 占用的文件实例(避免写入锁定)。
2. 关闭已打开的文件实例
若文件已在 editor_sdk 中打开(<active_document> 或 get_pool_status 显示),先调用 close_file 释放,否则 Python 写入会失败。
3. 运行去重脚本
脚本路径:scripts/dedup_special_antibiotic.py
用法:
# 方式A:自动备份原文件(生成 xxx_原始备份.xlsx),去重结果写回原文件
python scripts/dedup_special_antibiotic.py "<输入xlsx>"
# 方式B:原文件不动,复制到指定输出路径后处理副本
python scripts/dedup_special_antibiotic.py "<输入xlsx>" "<输出xlsx>"
# 方式C:指定 sheet 名(默认取第一个 sheet)
python scripts/dedup_special_antibiotic.py "<输入xlsx>" "<输出xlsx>" "专档管理"
Python 运行时:使用隔离环境 C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe,依赖 openpyxl(已预装)。
4. 验证与汇报
脚本输出包含:原始有效记录数、保留数、去除数、各规则分布、最终数据行数、sheets 列表。向用户汇报时须包含:
- 原 → 保留条数对比
- 4 级规则各自触发次数
- 强调"原序号保留不变、行顺序保持原始出现顺序"
- 备份文件路径
5. 呈现结果
调用 present_files 工具呈现去重后的文件(及备份文件)。
关键约定
- 原序号保留不变:删除行后不重新编号,序号列保持原值(会出现 1,2,3,5,7… 的不连续,恰好反映被删除记录位置,便于与原始数据核对)
- 行顺序不变:保留行按原始出现顺序排列
- 不新增 sheet:直接在原 sheet 上删行
- 自动备份:默认生成
<原文件名>_原始备份.xlsx,避免数据丢失 - 跳过空行:序号为空的行视为空行,去重时一并清理
规则参数调整
若医院去重规则变更,修改脚本顶部常量:
- COL_*:列序号(若 HIS 导出列顺序变化)
- CONSULT_DONE:已完成状态值(如改为"完成")
- DAY_WINDOW:连通归组的天数阈值(如改为 0 表示仅同日归组)
资源
scripts/
dedup_special_antibiotic.py:去重主脚本,参数化输入/输出路径与 sheet 名,可独立运行。已通过 448 条真实数据验证(保留 223 条,规则分布:①192 / ②23 / ③8 / ④0)。