临床科室盘点表汇总统计
概述
本技能用于药品盘点表的整理与汇总统计。以西药房(主药房)盘点表为参考格式和数据基准,整理各临床科室盘点表,并生成全院药品汇总盘点表。
激活条件
当用户输入中包含关键字 「计算盘点表」 时激活本技能。
典型触发场景:
- "计算盘点表,帮我把这几个科室的盘点表整理一下"
- "我需要计算盘点表,以西药房为基准汇总所有科室"
- "计算盘点表,生成一份汇总表"
盘点表格式规范
西药房盘点表(参考基准)
工作表 sheet1,8列结构:
| 列 | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 表头 | 行号 | 编码 | 药品 | 规格 | 数量 | 单位 | 单价 | 金额 |
| 格式 | 数字 | 文本(@) | 文本 | 文本 | 数字 | 文本 | 数字(0.00##) | 公式=E*G |
- 金额列使用公式
=E{row}*G{row} - 编码列使用文本格式
@防止前导零丢失 - 可能有多个工作表(Sheet2/3/4 为辅助数据),主数据在 sheet1
临床科室盘点表
8列结构(部分科室可能缺列):
| 列 | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 表头 | 编码 | 药品 | 规格 | 单位 | 数量 | 单价(元) | 金额(元) | 有效期(近半年) |
- 与西药房的差异:无「行号」列;列顺序不同(单位在数量前);有「有效期」列;表头带「(元)」后缀
- 金额列使用公式
=E{row}*F{row}或=F{row}*E{row} - 合计/总计行使用公式
=SUM(G2:G{n})
工作流程
第一步:读取与分析
- 读取西药房盘点表 sheet1,建立「编码 → {药品, 规格, 单位, 单价, 数量}」字典
- 读取各临床科室盘点表,识别缺项:
- 缺少整列(如内科缺少单价/金额列)
- 单元格级空缺
- 单价与西药房的冲突 - 记录不在西药房中的药品编码(需特殊处理)
第二步:整理科室盘点表
对每个临床科室盘点表执行:
- 补全缺列:若缺少「单价(元)」「金额(元)」列,在「数量」列后插入两列,设置表头和格式
- 补全单价:以编码为基准,从西药房字典中查找对应单价填入
- 处理单价冲突:科室单价与西药房不一致时,以西药房为准
- 设置金额公式:确保金额列公式为
=E{row}*F{row} - 更新合计行:确保合计行 SUM 公式范围正确
- 保留原格式:字体(宋体)、边框、对齐、列宽、行高
- 以原文件名保存
关键注意事项:
- 不在西药房中的药品,保留科室原单价(若有)
- 内科等缺列科室,使用 insert_cols 插入列后需手动复制格式
- 插入列后需恢复原列(如有效期)的格式和列宽
- 「有效期(近半年)」列在西药房中不存在,无法补全,保留为空
第三步:生成汇总盘点表
- 以西药房盘点表为基础:复制西药房文件作为汇总表基础
- 合并数量:以编码为基准,将各科室药品数量累加到西药房对应药品上
- 新增药品:不在西药房中的药品(如缩宫素注射液、盐酸利多卡因注射液),以编码为准追加到汇总表末尾
- 修复错误:若西药房中规格为
#VALUE!,用临床科室的规格数据替换 - 更新行号:所有数据行行号重新编号(1, 2, 3, ...)
- 添加合计行:在最后一行添加:
- 药品列(C):输入「合计」
- 数量列(E):=SUM(E2:E{last})
- 金额列(H):=SUM(H2:H{last}) - 清理工作表:删除西药房中的辅助工作表(Sheet2/3/4),仅保留主数据表
- 保存为
药品盘点表-汇总.xlsx
关键注意事项:
- 复制西药房文件后需先解除合并单元格(如 G48:H48)再写入新行
- 新增药品的单价优先取自临床科室盘点表
- 无单价数据的药品金额公式结果为 0
- 所有金额和合计使用公式,打开 Excel 时自动重算
脚本资源
scripts/process_inventory.py
整理单个或多个临床科室盘点表的脚本。功能:
- 以西药房盘点表为基准建立编码字典
- 自动识别科室盘点表缺项并补全
- 处理单价冲突(以西药房为准)
- 对缺列科室(如内科)自动插入列并复制格式
- 保留原文件格式和文件名
用法:修改脚本顶部的 BASE_DIR(盘点表所在目录)和 dept_files(科室文件映射)后执行。
scripts/create_summary.py
生成汇总盘点表的脚本。功能:
- 复制西药房盘点表作为基础
- 以编码为基准合并所有科室数量
- 追加不在西药房的药品
- 修复 #VALUE! 规格错误
- 添加合计行
- 删除辅助工作表
用法:修改脚本顶部的 BASE_DIR 后执行。
技术要点
- 使用 Python + openpyxl 库处理 Excel 文件
- 加载时使用
data_only=False保留公式,data_only=True读取缓存值 insert_cols插入列后需手动复制格式(字体、边框、对齐、数字格式)- 使用
copy()复制 openpyxl 样式对象(样式对象不可直接赋值) - 解除合并单元格:
ws.unmerge_cells(str(mc))后才能写入 - 编码列使用文本格式
@防止数字编码丢失前导零 - 金额列用公式而非硬编码值,确保数据一致性
环境要求
- Python 3.9+
- openpyxl 库(
pip install openpyxl) - 推荐使用隔离虚拟环境安装依赖