药品冷链温控与出入库记录核对(免费版)
完全本地运行:引擎已经打包在本技能里(
engine/目录)。 核对过程不需要联网、不需要 API Key、没有调用次数上限。
什么时候用
谁会在什么时候用:药店、医药商业公司、疫苗点的质量管理员 / 药师,在每月的温控记录月结、 GSP 内审、药监飞行检查前自查这几个固定节点上,必须把冷链台账核一遍才能往下走。
为什么这件事非做不可:冷藏药品(2–8℃)、阴凉库(≤20℃)、冷冻(-20℃ 以下)在收货、储存、运输 全程都要有温控记录 ——
- 收货要同时记运输温度与到货温度;
- 储存要按该设施批准的应记录频次按时点记库温(比如冷藏库每 6 小时一个点,少一个就是「温控记录断档」);
- 冷链运输要有在途温度曲线;
- 超温必须留下处理记录:谁处理的、什么时候处理的、评估结论是什么。
GSP 检查与药监飞行检查最常见的整改项就是「温控记录断档」「超温没处理」「冷链药品与常温药品混放」。 这三件事都落在一张合并台账上,也都能用逐行算术与时间序列比对查出来。
这张表长什么样:一张把「温控记录」和「出入库记录」合在一起的台账。每行 = 一个设施 × 一个记录时点 × 一个品种批号的库存快照,最后通常还有一行「合计」。
这个免费版查什么(6 项)
- 温控记录连续性 —— 按 设施编号 + 记录日期 比对:按该设施的应记录频次点名缺失的时点, 并点名整天一条记录都没有的日期。
- 温度区间合规 —— 记录温度是否落在该设施要求下限~要求上限内;超限给出偏差值与该行原文; 上下限填颠倒了也报。
- 出入库数量勾稽 —— 逐品种逐批号:期初库存 + 入库数量 − 出库数量 = 期末库存; 同一设施同一品种同一批号前后时点的结存也要接得上。
- 同一设施同一时间点重复记录 —— 设施编号 + 记录日期 + 记录时间 + 品种 + 批号 完全重复即点名 (重复记录会让连续性统计看起来「时点记全了」)。
- 合计行逐列复核 —— 表里有 合计/小计 行时,四个数量类列须逐列等于明细行之和。
- 空白/占位符与格式检测 —— 关键字段空白或占位符、温度非数字、温度列表头缺单位、 记录日期时间格式非法、报警状态或设施类型取值非法、数量为负或无法解析。
本版本不包含另外 5 项(超温处理闭环、冷链与储存条件匹配、运输在途温度、超温批次追溯、
分设施×分品种汇总清单):它们一项都不执行,并在结果的 checks_not_run 里如实列出 ——
只记「没做」,不会用默认值编造结论。
每条结论都带原文行号与原文,可被第三方用同一口径复算;材料不足时不给结论,会明确列出还缺什么。
输入需要哪些列
15 个必需列:设施编号、设施名称、设施类型(冷藏库 / 阴凉库 / 冷冻库 / 冷藏车)、要求下限(℃)、 要求上限(℃)、记录日期、记录时间、记录温度(℃)、品种、批号、期初库存、入库数量、出库数量、期末库存、报警状态。
可选列(有则更准):应记录频次、品种要求储存条件、报警时间、处理人、处理日期、评估结论、 运输温度(℃)、到货温度(℃)、备注。
缺必需列时只报「材料不足」并点名缺哪一列,绝不给结论;也不会套用默认温度区间。
怎么用
node scripts/run.mjs --sample # 先看样例(内置一张干净台账)
node scripts/run.mjs --input 你的台账.json # 跑自己的台账
node scripts/run.mjs --input 你的台账.json --json # 机器可读
入参就是 {"text": "表头…\n数据行…"},直接从 Excel 把表头和数据行一起复制成文本粘进来即可(Tab 分隔最稳)。
常见错法(冷链/GSP 专属的坑,本工具就是照这些坑设计的)
- 「时点记全了」是错觉 —— 交接班把 06:00 的记录复制了一遍当 12:00 用,时点数看着够, 实际缺的是另外两个时点。所以第 4 项专门查同一设施同一时间点的重复记录。
- 只并了库房、漏了冷藏车 —— 冷藏车的在途温度记在司机本子上,月结时没并进台账, 于是「这个设施两天都没记录」。本工具按设施分别点名,漏掉的设施跑不掉。
- 库温写成「正常」「合格」 —— 温度列填了文字,数字没了,区间核对整项做不了, 飞检时这一栏等于空白。格式检测会把这类值点名出来,不会悄悄当成 0。
- 出库了但期末库存照上一行抄 —— 行内勾稽立刻不平;跨时点还会出现 「上一时点期末库存 ≠ 本时点期初库存」,两个时点之间的出入库就成了无据记录。
- 合计行是手工改过的公式 —— 明细改过之后合计没重算,明细全对、合计不对, 检查员扫一眼合计就能看出台账被动过。
需要完整档时(可选)
本免费版是完整可用的核心产出,本版本不包含下面这些项:
- 超温处理闭环(报警状态=超温 却缺处理人/处理日期/评估结论;温度已超限但报警状态没标超温;处理时长超过 24 小时时限)
- 冷链与储存条件匹配(品种要求储存条件 与 所在设施类型 不一致,如冷藏药品放进阴凉库)
- 运输在途温度(运输温度/到货温度 超出该设施要求区间,给出偏差值与连续超温时段时长)
- 超温批次追溯(同一批号在超温时段有出入库记录 ⇒ 点名批号与数量,供召回判断)
- 分设施×分品种汇总清单(按超温次数与最大偏差排序,给出可整改动作)—— 结果里的 consolidated_actions 就是这份清单
同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。
边界(请务必知道)
本工具只核这张台账的字面一致性,不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断 ——
不判定药品是否因超温失效、不判定 GSP 认证或飞检结论、核对过程不联网核验批号与追溯码、不读原件与温控仪曲线。
材料不足时不给结论,也不会输出「未发现问题」。
