甲癌术后随访数据跟踪器
概述
本 skill 帮助甲状腺癌术后患者记录每次复查的甲功、TG 等化验指标及 B 超报告内容,并将多次复查数据汇总对比,生成含表格、SVG 趋势图和 AI 解读的自包含 HTML 报告。
触发条件
当用户出现以下意图时激活本 skill:
- "记录今天的复查数据" / "上传化验单" / "上传B超报告"
- "对比最近几次复查" / "看看指标变化趋势"
- "生成随访报告" / "复查数据对比"
- 用户上传了化验单或 B 超报告的图片,并提及甲癌/甲状腺/术后/复查等关键词
数据结构
所有随访数据存储在单个 JSON 文件中(默认命名 thyroid_followup_data.json,存放在用户工作目录)。结构如下:
{
"patient": {
"name": "(可选)患者姓名或代号",
"surgery_date": "手术日期,如 2024-03-15",
"surgery_type": "手术方式,如 甲状腺全切+中央区淋巴结清扫",
"risk_level": "复发风险分层:低危/中危/高危(可选)"
},
"visits": [
{
"date": "复查日期 YYYY-MM-DD",
"hospital": "检查医院(可选)",
"lab_data": {
"TSH": {"value": 0.12, "unit": "mIU/L", "ref_range": "0.55-4.78"},
"FT3": {"value": 5.2, "unit": "pmol/L", "ref_range": "3.5-6.5"},
"FT4": {"value": 18.3, "unit": "pmol/L", "ref_range": "11.5-22.7"},
"TT3": {"value": null, "unit": "nmol/L", "ref_range": "1.01-2.95"},
"TT4": {"value": null, "unit": "nmol/L", "ref_range": "62-164"},
"TG": {"value": 0.5, "unit": "ng/mL", "ref_range": "0-40"},
"antiTG": {"value": 10, "unit": "IU/mL", "ref_range": "0-115"}
},
"medication": {
"levothyroxine_dose": "100μg(左甲状腺素钠每日剂量,可选)"
},
"ultrasound": {
"thyroid_bed": "甲状腺床描述",
"lymph_nodes": "颈部淋巴结描述",
"tirads": "TI-RADS 分级(无则填'无')",
"findings": "B超完整所见/结论"
},
"notes": "本次复查备注(可选)"
}
]
}
字段说明:
- lab_data 中各项指标均为可选,没有检测的项目设为 null 或省略
- medication 和 ultrasound 整体可选,无数据时设为 null 或省略
- medication 支持自定义字段(如其他药物),脚本会动态发现并展示
- lab_data 还支持可选指标:calcium(血钙)、phosphorus(血磷)、PTH(甲状旁腺激素)
工作流程
工作流程一:记录新复查数据
-
确定数据文件位置
- 检查工作目录下是否存在thyroid_followup_data.json
- 若存在,读取现有数据
- 若不存在,准备创建新文件,并询问患者基本信息(手术日期、手术方式等,可选) -
数据采集(两种方式可组合)
方式 A — 图片识别:
- 用户上传化验单或 B 超报告图片
- 使用 Read 工具读取图片内容,识别关键数据
- 从化验单图片中提取:TSH、FT3、FT4、TT3、TT4、TG、anti-TG 等指标值及参考范围
- 从 B 超报告图片中提取:甲状腺床描述、淋巴结描述、TI-RADS 分级、B超所见/结论
方式 B — 手动录入:
- 询问用户各项指标数值
- 至少需要一项化验指标或有 B 超数据即可记录
-
确认数据
- 将识别/录入的数据整理为结构化格式,展示给用户确认
- 询问是否需要修正或补充(如用药剂量、备注等)
- 用户确认后,将本次 visit 追加到visits数组 -
保存数据
- 将更新后的完整 JSON 写回thyroid_followup_data.json
- 告知用户数据已记录,并显示当前已有随访次数
工作流程二:生成对比报告
-
读取数据
- 读取thyroid_followup_data.json
- 若数据不足 2 次随访,告知用户对比报告需至少 2 次数据 -
AI 数据解读生成
- 参考references/indicators_guide.md中各指标的临床意义、参考范围、TSH 抑制目标和 TG 趋势判断规则
- 参考references/bu_patterns.md中 B 超常见描述的解读和对比要点
- 基于全部随访数据,从以下维度撰写解读:- 总体趋势评估:TG 和 anti-TG 的变化趋势(下降/稳定/上升),整体预后判断
- 甲功分析:TSH 是否达标、FT3/FT4/TT3/TT4 是否在合理范围、药量调整是否恰当
- TG 专项分析:抑制状态 TG 的趋势,是否持续下降/上升,结合 anti-TG 判断 TG 可信度
- B 超分析:甲状腺床有无新发占位、淋巴结特征变化、有无需关注的新表现
- 建议:下一步复查时间、需关注的指标、是否需就医评估
- 将解读文本写入临时文件(如
interpretation.txt)
-
调用脚本生成 HTML
bash <python_path> <skill_dir>/scripts/generate_report.py <json_path> --interpretation <interp_txt> --output <html_path>
-<python_path>:使用当前环境的 Python 路径
-<skill_dir>:本 skill 目录路径
-<json_path>:数据文件路径
-<interp_txt>:解读文本文件路径
-<html_path>:输出 HTML 路径(建议命名为随访对比报告_YYYYMMDD.html) -
展示报告
- 使用 present_files 工具展示生成的 HTML 报告
- 简要总结报告核心结论
工作流程三:单次复查快报
当用户只需要记录单次数据并快速生成该次复查的小结(不涉及历史对比)时:
- 录入本次数据(同工作流程一)
- 简要解读本次指标是否在目标范围内(参考
references/indicators_guide.md) - 可选择生成仅包含单次数据的 HTML 报告(脚本同样支持,趋势图会显示单个数据点)
资源文件说明
scripts/generate_report.py
Python 脚本,从 JSON 数据生成自包含 HTML 报告。
命令行用法:
python generate_report.py <json_data> [--interpretation <text_file>] [--output <html_path>]
输出内容:
- 患者信息摘要
- 甲功 & 肿瘤标志物对比表(多次复查横向对比,异常值红色标注)
- 用药信息对比表(左甲状腺素剂量变化等)
- B 超报告对比表(甲状腺床、淋巴结、TI-RADS、B超所见)
- SVG 趋势图(TSH、FT3、FT4、TG、anti-TG,含参考范围阴影区,异常值红点/正常值绿点)
- AI 数据解读区域
- 随访备注区域
特点: 纯 Python 标准库实现,无需安装第三方依赖;HTML 完全自包含,可离线查看和分享。
references/indicators_guide.md
甲癌术后随访指标的医学参考指南,包含:
- 甲功五项(TSH/FT3/FT4/TT3/TT4)的常见参考范围和临床意义
- ATA 风险分层对应的 TSH 抑制目标
- TG 的抑制状态/刺激状态评估标准和趋势判断规则
- anti-TG 的临床意义和对 TG 测量的干扰规则
- 可选指标(钙/磷/PTH)参考范围
在生成 AI 解读时务必参考此文件,确保解读基于准确的医学知识。
references/bu_patterns.md
甲癌术后 B 超常见描述与解读指南,包含:
- 甲状腺床评估常见描述及含义
- 颈部淋巴结分区和需关注的表现
- TI-RADS 分类参考表
- 术后常见描述解读
- 前后对比要点
在分析 B 超数据变化时务必参考此文件,确保解读准确。
注意事项
- 医疗免责:所有解读仅供参考,不构成医疗建议。报告底部包含免责声明。在口头解读时也需提醒用户遵医嘱。
- 参考范围以化验单为准:不同实验室的参考范围可能不同,优先使用化验单上标注的参考范围。
references/indicators_guide.md中的范围仅作为补充参考。 - anti-TG 阳性时 TG 不可靠:若 anti-TG 升高,需提示用户 TG 值可能不可信,应以 anti-TG 自身趋势辅助判断。
- 图片识别可能不完整:化验单格式多样,AI 识别后必须让用户确认数据准确性。
- 数据安全:随访数据含个人健康信息,存储在用户本地,不上传任何外部服务。