体检报告发放登记台账生成器(report-distribution-log)
一句话结论:给你一张能直接交体检中心质控的报告发放登记台账——四场景(就绪登记/发放领取/逾期催领/月度汇总)全程留痕,代领缺凭证、超期未领取整行标红,超保存期限红上加急,【待填】红字清点,缺什么一眼看到。
本页导航:菜单式选路 → 对话示例 → 快速上手与退出码表 → 字段与判定口径 → 铁律(医疗合规四关)→ 能力边界量化表 → 岗位场景例子 → 边界提醒 → 文件索引。高频问题(阈值口径/代领凭证/隐私脱敏/邮寄在途/逾期判定等)直接查 assets/faq.md,错误用法对照 assets/anti-patterns.md。
菜单式选路
使用者开口后按场景引导,一次一问补要素:
第一步 · 选场景(回复序号或场景名均可):
- ① 报告就绪登记(体检号/报告完成日期/报告份数/存储位置(前台/单位批量/邮寄)/经手工号;重要异常报告(由总检标记给定)→ 备注列自动标黄提示优先通知,不发医学结论)
- ② 发放领取登记(领取方式(本人/单位代领/邮寄/电子推送)/领取日期/领取人签字状态/代领凭证;发放给非本人(代领)必须登记代领凭证,缺失 → 整行标红+【待填】,隐私红线脚本强制校验)
- ③ 逾期未领取跟踪(报告完成日期→台账日期算未领取天数;催领阈值 --days-limit 用户给定不硬编;超期未领取整行标红,超保存期限(--retain-days)红上加急提示)
- ④ 月度汇总(报告完成份数/发放率(已领取/完成)/逾期清单/邮寄在途清单/领取方式分布)
第二步 · 给数据(任选一种):
1. 粘贴/口述登记记录(按场景逐行给:体检号、日期、份数、领取方式……缺的项不用编)
2. --preset 场景名 --save 骨架.json 生成填写骨架,填好 --input 回来
3. --demo 先看脱敏样例长什么样
4. 直接要空模板(8 行【待填】占位)
第三步 · 出台账:xlsx 双表 = 登记明细(异常行整行标红 + 重要异常备注标黄 + 【待填】红字 + 冻结表头)+ 统计汇总(异常清单/【待填】清点/优先通知清单/发放率/逾期清单/邮寄在途清单/领取方式分布/隐私与合规提示)。
不知道选什么?直接说需求,我给你列选项,回个序号就出表。
对话示例
> 用户:帮我弄个体检报告发放登记表
> 助手:好的,先选场景(回序号或场景名):①报告就绪登记 ②发放领取登记 ③逾期未领取跟踪 ④月度汇总
> 用户:2
> 助手:好的,发放领取登记。请逐条给数据,一次一项,缺的跳过不编:
> 1. 体检号?(示例:TJ2026-5001)
> 用户:TJ2026-5001,报告 10-28 完成,本人领取,10-31 领走已签字,经手 J2077
> 助手:要素齐全(工具只登记流转环节,报告内容问题遵总检医师建议)。生成台账:1 行,无异常,无【待填】。
> 用户:再记一条,TJ2026-5006 是单位代领,还没给凭证
> 助手:代领必须登记代领凭证——这是隐私红线,该行会整行标红、凭证格记【待填】,补上凭证编号/单位介绍信后再生成。
快速上手
# 场景菜单
python scripts/make_report_distribution_log.py --presets
# 脱敏示例(--date 固定台账日期,可复现;场景③④建议同时给 --days-limit,③可加 --retain-days)
python scripts/make_report_distribution_log.py --demo --out 台账.xlsx --date 2026-11-03 --days-limit 7 --retain-days 60
# 指定场景(回序号 1/2/3/4 或场景名均可)
python scripts/make_report_distribution_log.py --preset 逾期未领取跟踪 --days-limit 7 --retain-days 60 --out 催领台账.xlsx
# 从填写好的骨架生成(骨架里的 date/dept/days-limit/retain-days 全局字段自动采用,命令行参数优先级更高)
python scripts/make_report_distribution_log.py --input 骨架.json --out 台账.xlsx --days-limit 7
# 空模板(8 行【待填】占位)
python scripts/make_report_distribution_log.py --preset 发放领取登记 --out 空模板.xlsx
--days-limit:催领阈值天数(正整数),由用户按本院制度给定,工具不硬编默认值;不指定时超期判定记【待填】并提示。--retain-days:报告保存期限天数(正整数),同样用户给定不硬编;不指定时不做超保存期限判定。- 报告保存期限与催领要求以本院制度为准——两个参数只是登记口径,不是制度依据。
- 全局字段回读:
--save骨架里的preset/date/dept/days-limit/retain-days全局字段,--input回读时自动采用,无需重复传命令行;命令行同名参数优先级更高,全局字段缺失或为【待填】时按缺省处理(date=运行当天,阈值不指定不判定)。
输出预览(截取自 --demo --date 2026-11-03 --days-limit 7 --retain-days 60,场景③逾期未领取跟踪)
登记明细表(关键列,异常行整行标红、【待填】红字、🔥加急备注):
| 序号 | 体检号 | 报告完成日期 | 是否已领取 | 未领取天数(自动) | 催领判定(自动) | 备注(节选) |
|---|---|---|---|---|---|---|
| 1 | TJ2026-5001 | 2026-10-28 | 是 | —(已领取) | —(已领取) | |
| 2 | TJ2026-5008 | 2026-10-20 | 否 | 14 | 超期未领取 | ⚠️ 超期未领取(未领取 14 天 > 催领阈值 7 天),请按本院流程催领 |
| 4 | TJ2026-5010 | 2026-09-01 | 否 | 63 | 超期未领取 | 🔥加急;⚠️ 超期未领取…;超保存期限未领取(63 天 > 保存期限 60 天)——加急处理 |
| 5 | TJ2026-5011 | 【待填】 | 否 | 【待填】 | 【待填】 | ℹ️ 报告完成日期缺失/无法识别,无法计算天数 |
统计汇总表(节选):台账日期 2026-11-03|催领阈值 7 天(用户给定;催领要求以本院制度为准)|登记行数 5|异常行数(红)2|【待填】单元格 3|逾期未领取清单:TJ2026-5008(2026-10-20 / 14 天)、TJ2026-5010(2026-09-01 / 63 天)|🔥加急(超保存期限):TJ2026-5010。
退出码表(脚本 scripts/make_report_distribution_log.py,v1.0.2)
| 退出码 | 含义 | 处理 |
|---|---|---|
| 0 | 台账生成成功 | — |
| 10 | 输入文件不存在(沿用现有体系约定) | 核对 --input 路径 |
| 11 | 输入缺失:缺 items / items 非数组 / --save 未指定 --preset |
按 {"items": [ … ]} 结构补齐 |
| 12 | 格式错误:JSON 无法解析 / items 项非对象 / --date、--days-limit、--retain-days 非法 |
核对 JSON 语法、日期格式与天数 |
| 13 | 隐私拦截:输入检测到受检者姓名明文(张三/李某某式)、身份证号、手机号、「患者/病人+姓氏」 | 去除敏感信息后重试;台账标识仅可用体检号/工号/单位名称(脱敏后)(错误提示不回显敏感值) |
| 14 | 校验失败:预设名不存在 | 见 --presets 菜单(回序号/场景名均可) |
| 15 | 运行超时(60 秒看门狗) | 重跑同一条命令 |
| 20 | 解析失败 / 输出失败等未预期异常(兜底) | 把输入 JSON 与提示发给助手排查 |
| 21 | 缺依赖 | pip install openpyxl 后重跑 |
单行日期/取值格式错误不中断整份台账:该格转【待填】红字并在备注注明原因,汇总页计入清点;文件级错误才整体退出。
字段与判定口径
- ① 报告就绪登记(8 列):序号 / 体检号 / 报告完成日期 / 报告份数 / 存储位置 / 经手工号 / 重要异常(总检标记) / 备注
- ② 发放领取登记(9 列):序号 / 体检号 / 报告完成日期 / 领取方式 / 领取日期 / 领取人签字状态 / 代领凭证 / 经手工号 / 备注
- ③ 逾期未领取跟踪(8 列):序号 / 体检号 / 报告完成日期 / 是否已领取 / 未领取天数(自动) / 催领判定(自动) / 经手工号 / 备注
- ④ 月度汇总(9 列):序号 / 月份 / 体检号 / 报告完成日期 / 报告份数 / 领取方式 / 是否已领取 / 是否逾期(自动) / 备注
判定口径速览(完整标红条件、红上加急、备注标黄、软提示与统计口径见 references/report-distribution-guide.md,以该参考与本院制度为准):
- 异常行整行标红:①报告份数为负;②发放给非本人(代领)但代领凭证未登记(隐私红线,凭证格转【待填】)、报告完成日期晚于台账日期(登记矛盾);③④超期未领取(报告完成日期 +
--days-limit催领阈值 < 台账日期且未领取,未领取天数列自动计算)、报告完成日期晚于台账日期(③) - 红上加急:③中超保存期限未领取(未领取天数 >
--retain-days)→ 备注前缀「🔥加急」,汇总页列入加急清单 - 备注标黄(不标红):①重要异常(总检标记)=是 → 提示「请优先通知领取」——只提醒优先通知,不发医学结论,报告内容事项遵总检医师建议
- 统计汇总页:异常清单/【待填】清点四场景通用;①含重要异常优先通知清单;②含领取方式分布、代领缺凭证计数;③④含逾期未领取清单(超期行自动列入)、加急清单;④另含报告完成份数合计、发放率(已领取/完成)、邮寄在途清单、按领取方式分布
- 软提示(备注 ℹ️,不标红):日期/取值格式无法识别(该格转【待填】);未指定
--days-limit/--retain-days无法判定;已登记领取日期但签字状态未填;是否已领取未填 - 【待填】单元格红字,汇总页清点数量并提示「未补齐视为登记未完成」;未领取天数/是否逾期为纯日期算术(报告完成日期 vs 台账日期 + 用户给定阈值),输入不全则为【待填】,绝不代判
- 数值(报告份数)支持整数;日期支持
2026-03-15/2026.3.15/2026/3/15/2026年3月15日/20260315,月份可直接填2026-10/2026年10月;是/否列支持 是/否、已领取/未领取 等开头字面 - 代领口径:领取方式含「代领」(单位代领/他人代领)即视为发放给非本人;邮寄/电子推送默认视为发放给本人,如实际由他人代收也应按代领登记
- 台账标识只能填体检号/工号/单位名称(脱敏后);工具默认场景为①报告就绪登记,
--input的 JSON 里也可写"preset": "场景名"自动选路
铁律(医疗合规四关)
- 只做流转登记不碰内容:只登记报告打印/就绪/发放/领取/催领环节;不解读报告内容、不发医学提示、不判断异常轻重、不碰诊疗决策;报告内容相关事项一律引导「遵总检医师建议」;重要异常只做「优先通知」标黄提醒(是否重要以总检标记为准)
- 隐私硬拦截 + 代领凭证红线:脚本检测到受检者姓名明文(张三/李某某式)、身份证号、手机号、「患者/病人+姓氏」→ 退出码 13 直接拒绝生成(错误提示不回显敏感值);「发放/领取/邮寄」等业务词白名单防误拦;发放给非本人(代领)必须登记代领凭证,缺失整行标红+【待填】;台账标识仅可用体检号/工号/单位名称(脱敏后)
- 数据不出机:台账本地生成,无网络请求;报告发放登记信息按院内数据管理规定流转
- 不编造不代填:数值/日期缺失一律【待填】标红,汇总页清点;催领阈值
--days-limit与保存期限--retain-days由用户给定、不硬编默认值,报告保存期限与催领要求以本院制度为准
能力边界量化表
| 能做 | 不做(明确边界) |
|---|---|
| 四场景发放登记台账生成(xlsx 双表,可打印归档) | 不替代体检系统/HIS:无打印任务管理、无短信/电话通知、无报表报送接口 |
| 异常行整行标红(代领缺凭证、超期未领取、日期矛盾) | 不解读报告内容:不解释指标意义、不发医学提示、不给复查建议 |
| 重要异常备注标黄优先通知(以总检标记为准) | 不发医学结论:异常告知与随访按 checkup-abnormal-track 流程,报告事项遵总检医师建议 |
| 逾期判定(纯日期算术,--days-limit/--retain-days 用户给定) | 不做诊疗决策:报告异常的后续处置以医师意见为准 |
| 发放率/逾期清单/邮寄在途/领取方式分布汇总 | 不校验领取人身份真伪(签字与凭证是否属实须人工核对) |
| 隐私拦截(退出码 13,不回显敏感值) | 不识别或处理影像/扫描件/报告原件;输入仅支持 JSON 文本 |
| 本地生成、数据不出机 | 不引用法规具体条款号;保存期限与催领口径以本院制度为准 |
岗位场景例子
- 体检中心前台:「报告打好了要登记放哪、谁来管」→ 选 ① → 就绪台账一张表,重要异常备注自动标黄提醒优先通知
- 前台/发放岗:「单位来代领,凭证必须留档」→ 选 ② → 代领没登记凭证的行直接红,凭证格【待填】
- 质控护士:「一堆报告压着没人领,要催」→ 选 ③ +
--days-limit 7→ 超期未领取整行红,超保存期限红上加急 - 科室月底:「月报要发放率、邮寄在途、领取方式分布」→ 选 ④ → 份数/发放率/逾期清单/在途清单一张汇总页全出
边界提醒
- 与 checkup-abnormal-track(体检异常结果追踪台账)的分工:那边的范围是异常结果登记、通知随访、复查销号——异常"内容"的追踪;本技能只做报告打印/就绪/发放/领取/催领的"流转"环节记录。报告里有异常要追踪随访 → 用 checkup-abnormal-track;报告打印好了谁管、发给谁、凭证留没留 → 用本技能。两者数据可共用体检号,但台账不混用
- 本工具不替代体检系统/发放系统;台账按院内要求归档
- 发放给非本人必须登记代领凭证,这是隐私红线:脚本只拦「登记里没写凭证」,拦不住现场错发——发放前核对领取人身份(本人身份证/单位介绍信)须人工执行
- 报告保存期限与催领要求以本院制度为准:
--days-limit/--retain-days只是登记口径参数,不是制度依据 - 体检号/工号列只填编号,不得填写受检者姓名——脚本对姓名明文/身份证/手机号/「患者·病人+姓氏」是硬拦截(退出码 13)
文件索引
| 文件 | 用途 |
|---|---|
| scripts/make_report_distribution_log.py | 核心:CLI 成稿 + 四场景判定 + 异常标红/标黄 + 隐私拦截 + 错误码兜底 |
| references/report-distribution-guide.md | 判定口径参考:就绪登记/发放领取/逾期催领/月度汇总的台账口径与标红条件 |
| assets/faq.md | 高频问答:场景选择/参数确定/隐私误拦/输出位置/相邻技能分工 |
| assets/anti-patterns.md | 反模式清单:错误用法 → 会发生什么 → 正确做法 |
| beta-test/run_tests.py | 内测回归脚本(四场景/隐私拦截/退出码/代领凭证/超期标红/待填不编造/全局字段回读等) |