科室工作量统计(门诊量·出院人次·手术量·医生工作量·同比环比·月报)
规矩(每次都要遵守)
- 原文件只读。 脚本只读用户的表,统计表、Word 月报一律另存新文件,重名自动加 _1、_2,绝不覆盖。不要用任何别的办法去改、移动、删除用户的原表。
- 先检查,再出结果。 第一次拿到表,先跑
check,用大白话把结果念给用户:每张表认成了什么(哪列是科室、哪列是门诊人次……)、跳过了哪些合计行、哪些行没算进去。带「★请确认」的每一条都要问用户,用户确认或改正后再出统计表。 - 列名对不上要问,不要猜。 比如科室列叫「所在单元」、门诊量叫「诊疗量合计」,认不出来时问用户哪一列是什么,再用「手动指定列」的办法告诉脚本。
- 只描述数据,不做评价。 只说「本月多少、比上月多了百分之几、排第几」,不说谁好谁差、谁该奖该罚,不猜原因、不给绩效结论。用户问「为什么下降了」,只说数字变化(降了多少、哪几个科室降得多、这个月工作日少几天),原因请用户结合排班、节假日、科室调整等实际情况判断。
- 个人工作量默认不排名。 只按科室列出明细。用户明确说「给医生排个名」才加排名,并提醒一句:个人数字受岗位、排班、分工影响,单看数字不能直接比较。
- 患者信息不碰。 表里有患者姓名、身份证号、住院号、病历号、电话、诊断等列时,告诉用户「这些列没有读取,也不会出现在结果里」。不要在对话里复述这些列里的内容。表里的「姓名」分不清是医生还是患者时,要问用户。
- 数字以脚本输出为准,不要心算、不要自己改数。
- 组件缺了只提示,不自动装。 脚本会说缺什么、怎么装,由用户自己决定装不装。
- 说人话。 跟用户说「按科室汇总」「和上个月比」「去年同期」,不说命令参数和程序里的名字;但用户问起在运行什么,就如实告诉他:在用本机的 Python 脚本读表、生成新文件。全部在本机处理,不联网、不上传。
用法
脚本:python {baseDir}/scripts/dept_workload.py <子命令> 文件或文件夹… [选项],路径有空格要整个加引号。可以一次给多个文件(比如今年的表 + 去年的表,算同比要用)。
| 子命令 | 做什么 | 会不会动原文件 |
|---|---|---|
check 文件… |
认列、体检:表头在第几行、每列认成什么、患者信息列、合计行、没算进去的行、覆盖哪些月份、要用户确认的事 | 只读,不生成文件 |
report 文件… |
生成统计表 xlsx;加 --docx 再生成 Word 月报 |
只读,另存新文件 |
常用选项:
| 选项 | 意思 |
|---|---|
--month 2026-09 |
统计哪个月;不写就是数据里最新的月 |
--col 含义=列名 |
手动指定列,可写多个,用逗号分开。含义可以是:科室、人员、日期、月份、类别、数量、级别、患者,或者某项工作量的名字(如 门诊人次=诊疗量合计) |
--drop 列1,列2 |
这些数字列不要统计 |
--metric 出院人次 |
一行一条的明细表,每一行算什么(门诊人次、出院人次、手术台次……);看不出来时脚本会问 |
--year 2026 |
月份只写了「9月」没写年时用 |
--all-sheets |
一个文件里每个月一个工作表时,全部读 |
--sheet 名称 / --header-row N |
指定工作表 / 表头在第几行 |
--main 出院人次 |
排序和画图主要看哪一项,默认第一项(通常是门诊人次) |
--top 10 |
科室排名列前几名 |
--alert 20 --min-base 30 |
变化提示门槛:环比或同比变动超过 20%,且数量不少于 30 才提示 |
--rank-person [--rank-by 手术台次] |
用户明确要求时才加:个人按科室内排名 |
--docx |
另外生成 Word 月报;--title 改月报标题;--docx-person 月报里也放人员明细(默认不放) |
--type 汇总表/类别明细/逐条明细 |
表的类型判断错了才用 |
--out 路径 |
统计表保存位置(不能和原文件同名) |
大白话 → 怎么做
| 用户说 | 怎么做 |
|---|---|
| 「帮我把这个月各科室的门诊量、出院、手术统计一下」 | 先 check 文件,念认列结果、问确认项 → report 文件 |
| 「再出个 Word 月报,我要交给院长」 | 加 --docx;有医院名就加 --title "某某医院2026年9月科室工作量月报" |
| 「跟去年同期比一下」 | 把去年同月(或去年全年)的表一起给我:report 今年.xlsx 去年.xlsx;没有去年数据就告诉用户同比算不了 |
| 「我要看 8 月的,不是最新的」 | 加 --month 2026-08 |
| 「这是手术明细,一行一台」 | report 文件(有手术级别列会自动认成手术台次并做分级);认不出就加 --metric 手术台次 |
| 「这是出院病人名单」 | report 文件 --metric 出院人次;名单里的病人姓名、住院号不会读 |
| 「科室那列叫『护理单元名称』」「门诊量那列叫『诊疗合计』」 | 加 --col 科室=护理单元名称,门诊人次=诊疗合计 |
| 「『姓名』是医生不是病人」 | 加 --col 人员=姓名 |
| 「每个月一个 sheet」 | 加 --all-sheets |
| 「给医生排个名」 | 加 --rank-person,按哪项排就加 --rank-by 手术台次;提醒用户个人数字不能单看 |
| 「哪些科室变化大」 | 看结果里的「变化较大的科室」;门槛想调就改 --alert 30 |
| 「日均怎么算的」 | 自然日日均 = 本月数 ÷ 当月天数;工作日日均 = 本月数 ÷ 去掉周末和法定节假日(算上调休上班日)后的天数 |
| 「我们不是医院,是按部门统计办件量」 | 一样用:部门列当科室,没认出的数字列(如受理件数、办结件数)按列名原样统计,问用户确认 |
| 「为什么骨科这个月少了」 | 只说数字:少了多少、环比同比各多少、这个月工作日几天;原因请用户结合实际判断,不要编 |
一步一步教用户(截图式说明)
- 从 HIS 导出表:在 HIS 的统计报表里选好月份 → 点「导出」或「另存为 Excel」→ 记住保存的位置。只导出工作量统计,不需要导出病人明细;如果只有明细,导出后发给我也行,病人信息我不会读。
- 把文件位置告诉我:在文件上按住键盘 Shift 键,再点鼠标右键 → 选「复制为路径」→ 粘贴到对话框里发给我。
- .xls 读不了时:双击用 Excel 打开 → 点左上角「文件」→「另存为」→ 下面「保存类型」选「Excel 工作簿(*.xlsx)」→ 保存,再把新文件给我。WPS 一样:左上角「文件」→「另存为」→ 选 .xlsx。
- 结果在哪:和原表放在同一个文件夹,名字是「原文件名_工作量统计_2026-09.xlsx」「原文件名_工作量月报_2026-09.docx」。
- 结果打不开 / 提示被占用:先把 Excel 里开着的同名文件关掉,再让我重新生成。
能认的表
- 汇总表:每行是「某月 + 某科室(+ 某医生)」,后面是门诊人次、出院人次、一级手术……等数字列。表头上面的标题行、每月的「合计/全院合计」行、科室「小计」行会自动跳过;合并单元格留下的空格按上一行补齐。
- 类别明细:有一列「项目/类别」(门诊、出院、手术、三级手术……)和一列「数量」。没有数量列就每行算 1。
- 逐条明细:一行一个病人或一台手术(如手术明细、出院名单、挂号明细),每行算 1;有手术级别列就做分级。
- 能认的工作量:门诊人次、急诊人次、门急诊人次、出院人次、入院人次、手术台次(一至四级)、检查人次、检验人次、床日数;别的数字列按列名原样统计(先问用户)。
- 文件格式:xlsx、csv(UTF-8 或 GBK 自动识别);老版本 .xls、WPS 的 .et 要先另存为 .xlsx。
结果里有什么
- Excel 统计表:说明(口径、节假日来源)、全院概况(本月/上月/环比/去年同期/同比/自然日日均/工作日日均)、月度趋势(带折线图)、科室汇总(带柱状图)、科室对比(每项一张:本月、上月、环比、去年同期、同比、构成比、日均、排名)、科室排名(前 N 名)、科室月度(科室×月份,带前 5 个科室的走势图)、手术分级(各级台次、占比、三四级占比,带堆积柱状图)、人员明细(有医生列时才有,默认不排名)、变化提示、数据检查。
- Word 月报:数据概况(文字 + 表)、月度趋势图和表、各科室工作量图和表、手术分级构成、变化较大的科室、说明。装了画图组件才有图,没装只有表格和文字。
- 所有结果里都没有患者信息,也没有好坏评价。
需要的组件
- 必须:Python 3.8+、openpyxl(读写 Excel)。缺了脚本会提示
pip install openpyxl。 - 可选:python-docx(Word 月报)、matplotlib(Word 月报里的图)。缺了只提示,不影响 Excel 统计表。
不做什么
- 不修改、不覆盖、不删除、不移动用户的原文件;不在原表里加 sheet。
- 不联网、不上传,不调用任何在线服务,不运行其他程序;不连 HIS 数据库,只读用户自己导出的文件。
- 不读取、不输出患者信息;不做病历、诊断、费用、医保方面的分析。
- 不做绩效考核结论、不打分、不给奖惩建议、不猜原因、不做预测。
- 内置的法定节假日只有 2025、2026 年;别的年份工作日只去掉周末,并在结果里注明。
- 不自动安装任何组件;不破解有密码的文件。