病理报告时限跟踪台账生成器(pathology-report-track)
一句话结论:给你一张能直接交病理质控督查的报告时限台账——四场景(常规/冰冻/会诊免疫组化/月度按时率)实际用时自动算,超时行整行标红,时限用 --limit-days / --limit-hours 参数给定不硬编(以本院病理管理制度为准),【待填】红字清点。
本页导航:菜单式选路 → 对话示例 → 快速上手与退出码表 → 字段与判定口径 → 铁律(医疗合规四关)→ 能力边界量化表 → 岗位场景例子 → 边界提醒 → 文件索引。
菜单式选路
使用者开口后按场景引导,一次一问补要素:
第一步 · 选场景(回复序号或场景名均可):
- ① 常规报告跟踪(病理号、收到/发出日期,实际用时(天)自动算,超时标红;时限用 --limit-days 给定)
- ② 冰冻报告跟踪(收到/发出时间精确到时分,实际用时(小时)自动算;时限用 --limit-hours 给定)
- ③ 会诊/免疫组化跟踪(报告类型细分「会诊/免疫组化」,实际用时(天)自动算;时限用 --limit-days 给定)
- ④ 月度按时率统计(按报告类型统计报告例数/按时例数/超时例数,按时率自动算,超时例数>0 标红)
第二步 · 给数据(任选一种):
1. 粘贴/口述登记记录(按场景逐行给:病理号、收到/发出时间、报告人工号……缺的项不用编)
2. --preset 场景名 --limit-days 3 --save 骨架.json 生成填写骨架,填好 --input 回来
3. --demo --limit-days 3 先看脱敏样例长什么样
4. 直接要空模板(8 行【待填】占位)
第三步 · 出台账:xlsx 双表 = 登记明细(超时行整行标红 + 【待填】红字 + 冻结表头)+ 统计汇总(异常清单/【待填】清点/时限口径与隐私提示)。
不知道选什么?直接说需求,我给你列选项,回个序号就出表。
对话示例
> 用户:帮我弄个病理报告超时跟踪表
> 助手:好的,先选场景(回序号或场景名):①常规报告跟踪 ②冰冻报告跟踪 ③会诊/免疫组化跟踪 ④月度按时率统计
> 用户:1,我们常规报告要求 3 个工作日
> 助手:好的,常规报告跟踪,时限按 3 天计(以本院病理管理制度为准)。请按例给数据,一次一项,缺的跳过不编:病理号?收到日期?发出日期?报告人工号?
> 用户:P26-1042,10月20收,10月23发,P3008;P26-1045,10月22收,10月29发,P3008,补做免疫组化
> 助手:要素齐全。生成台账:2 行,1 个超时行——P26-1045 实际用时 7 天超过规定时限 3 天,整行标红(补做免疫组化原因请按本院制度留痕);1 个【待填】。
快速上手
# 场景菜单
python scripts/make_pathology_report_track.py --presets
# 脱敏示例(--date 固定台账日期,--limit-days 给定时限,可复现)
python scripts/make_pathology_report_track.py --demo --out 台账.xlsx --date 2026-11-01 --limit-days 3
# 冰冻跟踪:时限按小时给定
python scripts/make_pathology_report_track.py --preset 冰冻报告跟踪 --demo --out 冰冻台账.xlsx --limit-hours 2
# 从填写好的骨架生成(骨架里的 date/dept/limit_days/limit_hours 一并回读)
python scripts/make_pathology_report_track.py --input 骨架.json --out 台账.xlsx
# 空模板(8 行【待填】占位)
python scripts/make_pathology_report_track.py --preset 会诊免疫组化跟踪 --out 空模板.xlsx
输出预览
以下为 --demo --date 2026-11-01 --limit-days 3(场景① 常规报告跟踪)输出的文本摘录(截取自实际生成的 xlsx 关键单元格;完整摘录与逐格复现命令见 assets/preview.md):
| 序号 | 病理号 | 收到日期 | 发出日期 | 规定时限(天) | 实际用时(天) | 报告人(工号) | 备注 |
|---|---|---|---|---|---|---|---|
| 1 | P26-1042 | 2026-10-20 | 2026-10-23 | 3 | 3 | P3008 | |
| 2 | P26-1043 | 2026-10-20 | 2026-10-24 | 3 | 4 | P3008 | ⚠️ 超时:实际用时(4天)超过规定时限(3天)……(整行标红) |
| 5 | P26-1046 | 2026-10-23 | 【待填】 | 3 | 【待填】 | P3008 | ℹ️ 发出日期缺失……(未发出不判超时) |
统计汇总(截取前几行):登记场景=常规报告跟踪|台账日期=2026-11-01|登记行数=6|异常行数(红)=3|【待填】单元格=3|时限(天)=3。
退出码表(脚本 scripts/make_pathology_report_track.py,v1.0.0)
| 退出码 | 含义 | 处理 |
|---|---|---|
| 0 | 台账生成成功 | — |
| 10 | 输入文件不存在(沿用现有体系约定) | 核对 --input 路径 |
| 11 | 输入缺失:缺 items / items 非数组 / --save 未指定 --preset |
按 {"items": [ … ]} 结构补齐 |
| 12 | 格式错误:JSON 无法解析 / items 项非对象 / --date 或 --limit-days/--limit-hours 无法识别 |
核对 JSON 语法、日期与时限格式 |
| 13 | 隐私拦截:输入检测到姓名明文(「患者张三」「张某某」「张三」式)、身份证号、手机号 | 去除敏感个人信息后重试;标识仅可用病理号/工号(错误提示不回显敏感值) |
| 14 | 校验失败:预设名不存在 | 见 --presets 菜单(回序号/场景名均可) |
| 15 | 运行超时(60 秒看门狗) | 重跑同一条命令 |
| 20 | 解析失败 / 输出失败等未预期异常(兜底) | 把输入 JSON 与提示发给助手排查 |
| 21 | 缺依赖 | pip install openpyxl 后重跑 |
单行日期/时间/数量格式错误不中断整份台账:该格转【待填】红字并在备注注明原因,汇总页计入清点;文件级错误才整体退出。
字段与判定口径
- ① 常规报告跟踪(8 列):序号 / 病理号 / 收到日期 / 发出日期 / 规定时限(天) / 实际用时(天) / 报告人(工号) / 备注
- ② 冰冻报告跟踪(8 列):序号 / 病理号 / 收到时间 / 发出时间 / 规定时限(小时) / 实际用时(小时) / 报告人(工号) / 备注
- ③ 会诊免疫组化跟踪(9 列):序号 / 病理号 / 报告类型 / 收到日期 / 发出日期 / 规定时限(天) / 实际用时(天) / 报告人(工号) / 备注
- ④ 月度按时率统计(9 列):序号 / 月份 / 报告类型 / 报告例数 / 按时例数 / 超时例数 / 按时率(%) / 统计人(工号) / 备注
异常行整行标红(写入备注 ⚠️ 提示,人工核对):
- ①②③ 通用:超时——实际用时 > 规定时限(时限由 --limit-days/--limit-hours 参数给定,脚本不硬编任何时限数值;具体以本院病理管理制度为准)|病理号缺失|发出时间早于收到时间(方向有误)|报告类型缺失(场景③)
- ④ 月度按时率统计:按时例数+超时例数 ≠ 报告例数(勾稽不平)|超时例数 > 0|报告类型缺失|例数为负
时限参数化铁则:
- --limit-days(天,场景①③)与 --limit-hours(小时,场景②)必须参数给定,脚本内没有任何硬编时限;未给参数时「规定时限」列【待填】、备注提示「请用参数给定,以本院病理管理制度为准」,且不做超时判定(无法判定就不判定)
- --limit-days/--limit-hours 须为正数,否则退出码 12
- 骨架 JSON 顶层的 limit_days / limit_hours 随 --input 回读生效;命令行参数优先级更高,同时给出时覆盖骨架值
软提示(备注 ℹ️ 提示,不标红):日期/时间格式无法识别、数值无法识别(该格转【待填】);冰冻场景只填了日期没填时分(时限按小时计,须补到时分);发出日期缺失(未发出,不判超时)。
- 【待填】单元格红字标红,汇总页清点数量并提示「未补齐视为登记未完成」
- 实际用时、按时率为纯算术推导(源自已填数据),输入不全则为【待填】,绝不代填
- 日期支持
2026-03-15/2026.3.15/2026/3/15/2026年3月15日/20260315,月份可直接填2026-10/2026年10月;冰冻时间须精确到时分(如2026-11-01 09:30) - 标识只能填病理号/工号;工具默认场景为①常规报告跟踪,
--input的 JSON 里也可写"preset": "场景名"自动选路;骨架顶层的date/dept回读时同样生效(命令行--date/--dept优先级更高)
铁律(医疗合规四关)
- 不写报告内容、不判诊断:只做报告环节时限跟踪台账;报告写了什么、诊断结论如何、超时原因定性,一律不属于本工具——原因说明由科室按本院病理管理制度留痕
- 隐私硬拦截:脚本检测到姓名明文(含「患者张三」「张某某」「张三」式结构)、身份证号、手机号 → 退出码 13 直接拒绝处理(错误提示不回显敏感值);标识仅可用病理号/工号;「标本」「蜡块」「切片」「报告」等专业名词在白名单内不误拦
- 数据不出机:台账本地生成,无网络请求;报告时限数据按院内数据管理规定流转
- 不编造不代填:时限数值不硬编(一律参数给定)、日期时间与关键字段缺失一律【待填】标红,汇总页清点;实际用时/按时率只做算术推导,绝不代填结论
能力边界量化表
| 能做 | 不做(明确边界) |
|---|---|
| 四场景时限跟踪台账生成(xlsx 双表,可打印归档) | 不写报告内容:报告正文、诊断结论、病变描述一律不属于本工具 |
| 超时标红(实际用时自动计算,超过参数给定时限即红) | 不判超时原因:补做免疫组化、会诊延后等原因定性由科室按本院制度留痕 |
| 时限参数化(--limit-days / --limit-hours,不硬编) | 不内置任何时限数值;具体时限以本院病理管理制度为准 |
| 月度按时率自动计算与勾稽 | 不替代 LIS/病理管理系统:无报告流转状态、无自动提醒推送、无监管报送接口 |
| 隐私拦截(退出码 13,白名单防误拦) | 不识别或处理报告扫描件/影像;输入仅支持 JSON 文本 |
| 本地生成、数据不出机 | 不引用法规或规范具体条款号 |
岗位场景例子
- 病理科技工:「常规报告拖没拖心里没数」→ 选 ① +
--limit-days→ 超时行直接红 - 冰冻值班技师:「术中冰冻必须盯分钟」→ 选 ② +
--limit-hours→ 收发时间到时分,超时自动算 - 质控员:「月度要交各类报告按时率」→ 选 ④ → 按时率自动算,超时例数>0 标红
- 科室主任:「督查问超时原因」→ 台账只提示超时事实,原因说明按本院病理管理制度留痕,工具不代写
边界提醒
- 本工具不替代 LIS/病理管理系统;纸质/电子登记本按院内要求归档
- 与 consultation-log 的分工:院内会诊的申请/流转/接诊环节用 consultation-log;本技能只管病理报告环节的时限跟踪,不碰会诊流转
- 时限数值一律参数给定:不同医院/不同标本类型的时限要求不同,脚本不硬编——「以本院病理管理制度为准」
- 病理号列只填病理号,不得填写姓名明文——脚本对姓名明文/身份证/手机号是硬拦截(退出码 13)
文件索引
| 文件 | 用途 |
|---|---|
| scripts/make_pathology_report_track.py | 核心:CLI 成稿 + 四场景判定 + 超时标红 + 时限参数化 + 隐私拦截 + 错误码兜底 |
| references/report-track-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。