病理标本接收登记台账生成器(pathology-specimen-log)
一句话结论:给你一张能直接交病理质控督查的标本登记台账——四场景(送检登记/接收核对/固定液检查/月度汇总)自动勾稽,异常行整行标红(标本与申请单不符、容器缺失、固定液未浸没),【待填】红字清点,缺什么一眼看到。
本页导航:菜单式选路 → 对话示例 → 快速上手与退出码表 → 字段与判定口径 → 铁律(医疗合规四关)→ 能力边界量化表 → 岗位场景例子 → 边界提醒 → 文件索引。
菜单式选路
使用者开口后按场景引导,一次一问补要素:
第一步 · 选场景(回复序号或场景名均可):
- ① 送检登记(按申请单逐笔登记:病理号、标本名称(部位)、容器数、固定液类型、送检/接收双签)
- ② 接收核对(标本 vs 申请单逐笔核对:名称不符标红、实收容器数少于申请单容器数即容器缺失标红)
- ③ 固定液检查登记(固定液类型/浓度/液量、是否浸没标本;只做登记,不判标本质量)
- ④ 月度汇总(月末按科室勾稽:送检/接收标本数、容器缺失与名称不符行数、固定液未浸没行数)
第二步 · 给数据(任选一种):
1. 粘贴/口述登记记录(按场景逐行给:日期、病理号、标本名称、容器数、工号……缺的项不用编)
2. --preset 场景名 --save 骨架.json 生成填写骨架,填好 --input 回来
3. --demo 先看脱敏样例长什么样
4. 直接要空模板(8 行【待填】占位)
第三步 · 出台账:xlsx 双表 = 登记明细(异常行整行标红 + 【待填】红字 + 冻结表头)+ 统计汇总(异常清单/【待填】清点/隐私与合规提示)。
不知道选什么?直接说需求,我给你列选项,回个序号就出表。
对话示例
> 用户:帮我弄个病理标本接收登记表
> 助手:好的,先选场景(回序号或场景名):①送检登记 ②接收核对 ③固定液检查登记 ④月度汇总
> 用户:2
> 助手:好的,接收核对。请按申请单给数据,一次一项,缺的跳过不编:
> 1. 核对日期+病理号?(示例:2026-11-01 P26-1042)
> 用户:2026-11-01 P26-1042,申请单写的是胃镜活检(胃窦)2个容器,实际收到的也是胃镜活检(胃窦),但是只有1个容器,核对人工号P3008
> 助手:要素齐全(实收容器数少于申请单容器数,会整行标红提示容器缺失)。生成台账:1 行,1 个异常行(容器缺失,相差-1,请核查标本容器),无【待填】。
快速上手
# 场景菜单
python scripts/make_pathology_specimen_log.py --presets
# 脱敏示例(--date 固定台账日期,可复现)
python scripts/make_pathology_specimen_log.py --demo --out 台账.xlsx --date 2026-11-01
# 指定场景(回序号 1/2/3/4 或场景名均可)
python scripts/make_pathology_specimen_log.py --preset 接收核对 --out 10月标本核对.xlsx
# 从填写好的骨架生成
python scripts/make_pathology_specimen_log.py --input 骨架.json --out 台账.xlsx
# 空模板(8 行【待填】占位)
python scripts/make_pathology_specimen_log.py --preset 固定液检查登记 --out 空模板.xlsx
输出预览
以下为 --demo --date 2026-11-01(场景① 送检登记)输出的文本摘录(截取自实际生成的 xlsx 关键单元格;完整摘录与逐格复现命令见 assets/preview.md):
| 序号 | 送检日期 | 病理号 | 标本名称(部位) | 容器数 | 固定液类型 | 申请科室 | 送检人(工号) | 接收人(工号) | 备注 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2026-10-31 | P26-1042 | 胃镜活检(胃窦) | 2 | 10%中性福尔马林 | 消化内科 | D2011 | P3008 | |
| 4 | 2026-10-31 | P26-1045 | 甲状腺结节(术中冰冻) | 1 | 【待填】 | 甲乳外科 | D2031 | P3008 | 冰冻送检,固定液待术后补加 |
| 5 | 【待填】 | P26-1046 | 胸腔积液细胞块 | 【待填】 | 10%中性福尔马林 | 呼吸内科 | 【待填】 | 【待填】 | ⚠️ 送检/接收双签缺一……(整行标红) |
统计汇总(截取前几行):登记场景=送检登记|台账日期=2026-11-01|登记行数=6|异常行数(红)=1|【待填】单元格=6。
退出码表(脚本 scripts/make_pathology_specimen_log.py,v1.0.0)
| 退出码 | 含义 | 处理 |
|---|---|---|
| 0 | 台账生成成功 | — |
| 10 | 输入文件不存在(沿用现有体系约定) | 核对 --input 路径 |
| 11 | 输入缺失:缺 items / items 非数组 / --save 未指定 --preset |
按 {"items": [ … ]} 结构补齐 |
| 12 | 格式错误:JSON 无法解析 / items 项非对象 / --date 无法识别 |
核对 JSON 语法与日期格式 |
| 13 | 隐私拦截:输入检测到姓名明文(「患者张三」「张某某」「张三」式)、身份证号、手机号 | 去除敏感个人信息后重试;标识仅可用病理号/蜡块号/工号(错误提示不回显敏感值) |
| 14 | 校验失败:预设名不存在 | 见 --presets 菜单(回序号/场景名均可) |
| 15 | 运行超时(60 秒看门狗) | 重跑同一条命令 |
| 20 | 解析失败 / 输出失败等未预期异常(兜底) | 把输入 JSON 与提示发给助手排查 |
| 21 | 缺依赖 | pip install openpyxl 后重跑 |
单行日期/数量格式错误不中断整份台账:该格转【待填】红字并在备注注明原因,汇总页计入清点;文件级错误才整体退出。
字段与判定口径
- ① 送检登记(11 列):序号 / 送检日期 / 病理号 / 标本名称(部位) / 容器数 / 固定液类型 / 申请科室 / 送检人(工号) / 接收人(工号) / 接收日期 / 备注
- ② 接收核对(10 列):序号 / 核对日期 / 病理号 / 申请单标本名称 / 实收标本名称 / 申请单容器数 / 实收容器数 / 相差数 / 核对人(工号) / 备注
- ③ 固定液检查登记(10 列):序号 / 检查日期 / 病理号 / 标本名称(部位) / 固定液类型 / 固定液浓度 / 液量(ml) / 浸没标本(是/否) / 检查人(工号) / 备注
- ④ 月度汇总(10 列):序号 / 月份 / 申请科室 / 送检标本数 / 接收标本数 / 容器缺失行数 / 名称不符行数 / 固定液未浸没行数 / 汇总人(工号) / 备注
异常行整行标红(写入备注 ⚠️ 提示,人工核对):
- 送检登记:标本名称(部位)缺失(病理标本登记须逐笔可追溯)|送检人/接收人双签缺一或双签为同一工号|容器数为负
- 接收核对:申请单标本名称缺失|实收标本名称缺失(核对未完成)|实收标本名称 ≠ 申请单标本名称(标本与申请单不符)|实收容器数缺失(核对未完成)|实收容器数 < 申请单容器数(容器缺失)|实收容器数 > 申请单容器数(请核对是否漏记申请)|数量为负
- 固定液检查登记:固定液类型缺失|浸没标本(是/否)填「否」(固定液未浸没标本,请按本院制度补加并复核登记)|液量为负
- 月度汇总:申请科室缺失|接收标本数 ≠ 送检标本数(差额请核查留痕)|容器缺失行数或名称不符行数 > 0|固定液未浸没行数 > 0|数量为负
软提示(备注 ℹ️ 提示,不标红):日期/月份格式无法识别、数值无法识别(该格转【待填】);浸没标本(是/否)未按「是/否」填写给格式建议。
- 【待填】单元格红字标红,汇总页清点数量并提示「未补齐视为登记未完成」
- 相差数为纯算术推导(实收 − 申请单),输入不全则为【待填】,绝不代填
- 数量支持整数/小数;日期支持
2026-03-15/2026.3.15/2026/3/15/2026年3月15日/20260315,月份可直接填2026-10/2026年10月 - 标识只能填病理号/蜡块号/工号;工具默认场景为①送检登记,
--input的 JSON 里也可写"preset": "场景名"自动选路;骨架顶层的date/dept回读时同样生效(命令行--date/--dept优先级更高,同时给出时覆盖骨架值)
铁律(医疗合规四关)
- 不参与病理诊断、不判标本质量与报告结论:只做送检登记/接收核对/固定液登记台账;标本与切片质量好不好、诊断结论如何,由病理医师判定,台账只做抄录登记与数量核对留痕
- 隐私硬拦截:脚本检测到姓名明文(含「患者张三」「张某某」「张三」式结构)、身份证号、手机号 → 退出码 13 直接拒绝处理(错误提示不回显敏感值);标识仅可用病理号/蜡块号/工号;「标本」「蜡块」「切片」「送检」等专业名词在白名单内不误拦
- 数据不出机:台账本地生成,无网络请求;标本登记信息按院内数据管理规定流转
- 不编造不代填:数值(容器数、液量等)与关键字段缺失一律【待填】标红,汇总页清点;相差列只做算术推导,绝不代填结论
能力边界量化表
| 能做 | 不做(明确边界) |
|---|---|
| 四场景登记台账生成(xlsx 双表,可打印归档) | 不参与病理诊断:诊断结论、病变性质、报告意见一律不属于本工具 |
| 异常行整行标红(标本与申请单不符、容器缺失、固定液未浸没、双签缺一) | 不判标本质量结论:取材/固定/切片质量是否合格由病理医师判定,台账只抄录 |
| 相差列勾稽(纯算术推导,标注来源) | 不替代 LIS/病理管理系统:无条码流转、无接收确认回传、无监管报送接口 |
| 【待填】清点与补填提示(不代填) | 不校验标本真伪与归属(病理号与标本实物是否对应须人工双人核对) |
| 隐私拦截(退出码 13,白名单防误拦) | 不识别或处理标本照片/扫描件;输入仅支持 JSON 文本 |
| 本地生成、数据不出机 | 不引用法规具体条款号;固定液用量口径以本院病理管理制度为准 |
岗位场景例子
- 病理科技士:「标本天天送来,接收要按申请单核对」→ 选 ①/② → 名称不符、容器缺失的行直接红
- 病理技师长:「固定液是否浸没标本要登记留痕」→ 选 ③ → 未浸没的行自动标红提醒补加
- 质控员:「月度要按科室汇总送检量与异常」→ 选 ④ → 接收数与送检数勾稽 + 异常行数统计
- 病理科主任:「督查要台账,缺项不能交」→ 汇总页【待填】清点,未补齐视为登记未完成
边界提醒
- 本工具不替代 LIS/病理管理系统;纸质/电子登记本按院内要求归档
- 与 specimen-reject-log 的分工:检验科标本拒收(不合格退回)用 specimen-reject-log;本技能管病理科标本的送检登记与接收核对全流程留痕,不做「拒收判定」
- 标本质量好不好、固定是否充分影响诊断的判断由病理医师做出——本台账只登记「浸没标本(是/否)」等事实项,并提示补加固定液,不给出任何质量结论
- 病理号列只填病理号,不得填写姓名明文——脚本对姓名明文/身份证/手机号是硬拦截(退出码 13)
文件索引
| 文件 | 用途 |
|---|---|
| scripts/make_pathology_specimen_log.py | 核心:CLI 成稿 + 四场景判定 + 异常标红 + 隐私拦截 + 错误码兜底 |
| references/specimen-log-guide.md | 登记实践参考:送检/接收核对/固定液登记/月度汇总台账口径 |
| assets/faq.md | 常见问题 12 条(隐私拦截/日期格式/异常标红含义/待填卡点/系统边界等) |
| assets/anti-patterns.md | 反模式集中清单(错误操作+后果+替代) |
| assets/preview.md | 成稿预览(真实输出摘录+逐格复现命令) |
| assets/input-example.json | 输入示例(脱敏,可直接 --input 试跑) |
| beta-test/run_tests.py | 内测回归脚本(隐私拦截/退出码/异常标红/待填不编造等) |
FAQ 快捷导航:能帮我判断标本质量吗→Q1|没数据能生成吗→Q2|为什么被拒绝(13)→Q3|日期格式→Q4|容器数填错→Q5|标红是不是判定我出错→Q6|和 LIS 什么关系→Q7|数据外传→Q8|【待填】算完成吗→Q9|场景怎么选→Q10|和标本拒收台账什么区别→Q11|固定液用量口径→Q12。