医院药品季度盘点分析
用途
将三级医院药剂科每个季度的原始药品盘点 Excel,自动处理为可用于《药品盘点分析报告》的结构化结果:清洗无效行、计算实盘数量、做账实差异分析、隔离异常负数记录、并把进销存汇总数填入盘点模板。
何时使用
- 用户给出类似「对药品盘点表做清洗/算实盘数量/做差异分析/填盘点数据表」。
- 关键词命中:药品盘点、季度盘点、帐存、实盘、盘盈、盘亏、相符率、进销存、盘点数据表。
- 输入通常是
.xls(原始盘点)+ 可选的进销存数据.xlsx+盘点数据.xlsx(模板)。
环境与依赖
- 用 managed python:
C:/Users/Yen/.workbuddy/binaries/python/versions/3.13.12/python.exe - 依赖:
xlrd(读 .xls,需formatting_info=True)、openpyxl(读写 .xlsx)。如缺失,在该 managed python 的 venv 内pip install xlrd openpyxl。 - 读取顺序:
.xls用 xlrd;.xlsx用 openpyxl。
工作流程(五阶段)
按以下顺序执行;每个阶段产出独立新文件,绝不覆盖用户的原始文件(遵循用户一贯的"生成新文件"要求)。
- 清洗(
pipeline.py clean):删除三项数量(帐存/库房/药房)全为显式 0 的行;价格差异|盘前−盘后| > THRESHOLD(默认 0.01)整行标红。保留标题合并、表头、全部列,新增「序号」列。 - 实盘数量(
shipan):按references/schema_and_rules.md§3 的优先级 A→D 计算实盘数量 = 实存库房数量 × P + 实存药房数量。插入到「帐存数量」之后。 - 差异分析(
diff):差异数量=实盘−帐存;差异金额=差异数量×盘后进价;拆盘盈(>0 降序)、盘亏(<0 升序)、相符(=0);准确率=相符/总。 - 负数隔离(
negative):实盘数量<0 的行单独导出,并从差异分析中剔除后重算。 - 进销存填表(
fill):把进销存各项售价金额汇总 + 盘点最终数据,按字段映射填入竖向模板。
如何运行
脚本 scripts/pipeline.py 支持分阶段与全流程:
python pipeline.py clean <原始盘点.xls> <清洗后.xlsx> [阈值]
python pipeline.py shipan <清洗后.xlsx> <实盘数量.xlsx>
python pipeline.py diff <实盘数量.xlsx> <差异分析.xlsx>
python pipeline.py negative <实盘数量.xlsx> <负数记录.xlsx> <差异分析.xlsx>
python pipeline.py fill <实盘数量.xlsx> <进销存.xlsx> <模板.xlsx> <已填.xlsx>
python pipeline.py all <原始盘点.xls> <进销存.xlsx> <模板.xlsx> <输出目录> [阈值]
执行前先确认列名与 references/schema_and_rules.md §1 一致(用脚本读取 header 行);若用户表头不同,调整 pipeline.py 顶部常量或 COL 列表。
关键规则与陷阱(务必遵守)
- 删除全零行只认显式数值 0;空/非数值保留,避免误删真实缺失记录。
- 实盘数量优先级:特殊药品系数 → 单位一致取非零方 → 规格提取包装数 → 默认每盒10。规格提取单位集合必须含
瓶|揿|喷|吸|泡等,且不要把 ml/g 当包装数(落到默认10)。 - 差异金额乘子用盘后进价;保留到分。
- 负数实盘记录(源数据异常)必须隔离、不计入准确率,并向用户提示核对原始单据。
- 售价 vs 进价口径不一致:进销存各项是售价金额,账面/实盘总额是进价估算——向用户说明此口径差异。
- 差异率可能很大(如 188%)并非错误,多由少数高价盘盈药品造成,提示优先复核。
- 进销存表为多层分组表头,定位列用拼接第6~8行文本按关键词匹配;用「合计」行交叉校验求和。
输出文件清单(全流程)
2026Q2盘点_清洗后.xlsx2026Q2盘点_实盘数量.xlsx2026Q2盘点_负数实盘记录.xlsx2026Q2盘点_差异分析.xlsx(含 盘点差异总表/盘盈表/盘亏表/相符表/盘点汇总)盘点数据_已填.xlsx
参考
详细列结构、系数表、正则、已验证示例与数据质量提示见 references/schema_and_rules.md。
微信扫一扫