药房调剂工作量计算
概述
本技能用于处理医院门诊药房月度工作量统计表,完成从原始排班表到绩效分值的完整计算。固化了以下业务逻辑:按窗口排班识别上窗口人数、计算每日发药/配药总数与人均、将门诊窗口均数折算给住院药房/机动/补休岗位、合并日班+夜班工作量、按"工作总量=发×2+配+借药"公式重算绩效分值。
何时触发
当用户出现以下意图时使用本技能:
- 统计药师工作量、算绩效、算工作量、算分值
- 处理药房排班表/工作量统计表(xls/xlsx,含日班/夜班/均数/个人汇总等 sheet)
- 计算每日窗口人数、发药总数、配药总数、人均发/配
- 住院药房/机动/补休岗位按门诊均数折算
- 合并日班+夜班算月度绩效
表格结构约定
本技能针对结构如下的月度工作量统计簿(详细规则见 references/workload_rules.md):
- 日班 sheet:每天占 3 列(窗口/发/配),第1天起始列=2,人员从第4行起,姓名在 A 列。
- 夜班 sheet:每天占 4 列(窗口/发/配/借药),结构同上。
- 均数 sheet:日班副本,用于住院药房/机动/补休岗位按门诊均数折算。
- 个人汇总 sheet:工号/姓名/发/配/借药/工作总量/分值/基准/差额。
窗口列标记规则(核心):
- 纯数字 = 上窗口(计入窗口人数)
- "住" = 住院药房(不计入;均数sheet按当天门诊人均折算)
- "X+补休" = 上窗口+补休(计入窗口人数;均数sheet按人均折算)
- "X机动" = 机动岗(不计入;均数sheet按人均折算)
- 空 = 休息/夜班/产假(不计入,不填)
若实际表格结构与上述不符,先读取表头与若干行样本确认结构,再调整脚本参数或人工处理。
工作流
方式 A:一键全流程(结构一致时)
当表格结构与上述约定一致时,直接运行脚本:
# 安装依赖(仅首次)
/Users/zxx/.workbuddy/binaries/python/envs/default/bin/pip install openpyxl xlrd
# 执行全流程
/Users/zxx/.workbuddy/binaries/python/envs/default/bin/python \
/Users/zxx/.workbuddy/skills/pharmacy-workload-calc/scripts/calc_pharmacy_workload.py \
<输入文件.xls/.xlsx> \
--pool 11200 --chanjia "敖雪敏,张璐"
脚本依次完成:
1. 日班每日统计(窗口人数/发药总数/配药总数/人均发/人均配)+ 填统计行 + 机动人员回填均数
2. 均数 sheet:住/机动/补休岗位发配列填当天门诊均数 + 月末新增月发合计/月配合计列
3. 夜班 sheet:月末新增月发/月配/月借药合计列
4. 个人汇总 sheet:合并日班+夜班工作量,按绩效公式重算
5. 生成"每日统计汇总"sheet
输出文件默认在原目录加 _统计结果.xlsx 后缀,原文件不改动。
方式 B:分步人工执行(结构有差异时)
若表格结构(列数、统计行位置、sheet名、绩效公式)与约定不一致,按 references/workload_rules.md 的规则,参考脚本中对应函数单独调用或手工调整:
- 日班每日统计 →
calc_day_stats(),参数--day-cols调整每天列数 - 绩效池子/产假名单 → 命令行
--pool--chanjia调整 - sheet 名 →
--day-sheet/--jun-sheet/--night-sheet/--summary-sheet显式指定
绩效计算公式
工作总量 = 发 × 2 + 配 + 借药
均值 = 绩效池子(默认11200=28人×400) / 总工作总量
分值 = 工作总量 × 均值
基准 = 400
差额 = 分值 − 基准 (产假人员差额特殊设0,不扣400)
分值守恒:全员分值之和 = 绩效池子。
合并口径
个人汇总 sheet 的发/配/借药来自日班+夜班合并:
- 发(日+夜) = 均数sheet月发合计 + 夜班sheet月发合计
- 配(日+夜) = 均数sheet月配合计 + 夜班sheet月配合计
- 借药(夜) = 夜班sheet月借药合计(日班无借药列)
均数 sheet 月合计含住院药房/机动/补休按门诊均数折算量,故个人汇总总工作总量 > 日班纯窗口实际总数,属正常(住院等岗位按门诊平均贡献折算绩效)。
局限与注意事项
- .xls 输入:脚本用 xlrd 读取后重建为内存 workbook,会丢失原表合并单元格/样式;如需保留格式,先用 LibreOffice 转换为 .xlsx:
soffice --headless --convert-to xlsx <file>。 - 统计行位置:默认 R37/R38/R39/R42(1-based 38/39/40/43),对应原表预留行;若不同需改
stat_rows参数。 - 每日统计汇总 sheet:脚本生成的"星期""住院药房人数"字段为占位,需人工核对或后续完善。
- 重复运行:脚本针对原始未处理表设计;对已含合计列的结果文件重复运行可能重复新增列,建议始终从原始表开始。
- 绩效池子:默认 11200(28人×400)。若实际参与人数变动,需相应调整使差额合计归零;脚本不自动推断。
- 产假名单:默认"敖雪敏,张璐",通过
--chanjia覆盖;产假人员差额设0不扣基准。 - 底色:脚本未设置单元格底色;如需可视化区分(住院=浅绿/机动=浅橙/补休=浅蓝/数据=浅黄/工作总量分值=金),可后续手动添加或扩展脚本。
资源
scripts/calc_pharmacy_workload.py— 全流程计算脚本(参数化,支持 xls/xlsx)references/workload_rules.md— 表格结构约定、窗口标记规则、绩效公式、底色约定的详细参考