slug: referral-letter-generator displayName: 医疗转诊信生成器 version: 1.1.0 description: 根据患者信息、转诊医生和接诊医生信息自动生成专业的医疗转诊信,支持 PDF/DOCX/HTML/TXT 四种格式输出。适用场景示例:"帮我生成一份转诊信"、"把这个患者转诊给心脏科医生,生成 PDF"、"根据这份 JSON 病历数据生成转诊信"、"生成一份紧急转诊信模板"。 license: MIT author: AIPOCH
一个用于生成专业医疗转诊信的工具,帮助医生在转诊患者时快速生成结构规范、信息完整的转诊文书。
重要说明(语言策略):本工具面向英语医疗体系下的医生之间转诊场景——脚本内置的示例数据、字段命名(如 NPI 编号)、文档中提到的 HIPAA 合规要求,均为美国医疗体系的通行惯例。因此,生成的转诊信正文内容(患者姓名、诊断、用药、医生信息等)保留英文,这样生成的信件才能直接在英语医疗环境中使用、被当地医生正确理解。本 SKILL.md 文档本身、脚本中的提示信息、代码注释以及
references/目录下的说明文字均已翻译为中文,方便中文用户理解和使用这个工具;但references/referral_template.md、referral_template_clean.md等文件中的模板正文和占位符同样保留英文,因为它们直接对应最终信件内容。
本工具生成的转诊信包含以下结构化内容: - 患者基本信息 - 转诊原因 - 相关病史 - 当前用药与治疗方案 - 用于后续沟通的联系方式
脚本入口为 scripts/main.py,实际支持的参数如下(已核对源码 argparse 定义):
| 参数 | 简写 | 是否必填 | 说明 |
|---|---|---|---|
--input |
-i |
否(与 --sample 二选一) |
包含患者与转诊数据的输入 JSON 文件路径 |
--output |
-o |
是 | 输出文件路径 |
--format |
-f |
否,默认 pdf |
输出格式,可选 pdf/docx/html/txt |
--sample |
无 | 否 | 生成用于测试的示例转诊信(同时会在输出路径旁保存对应的示例 JSON) |
必须指定 --input 或 --sample 中的一个,否则脚本会报错并退出。
# 根据 JSON 文件生成 PDF 转诊信 python scripts/main.py --input patient_data.json --output referral_letter.pdf # 生成示例转诊信(PDF) python scripts/main.py --sample --output sample.pdf --format pdf # 生成 HTML 版本 python scripts/main.py --input data.json --format html --output letter.html推荐访问7w4.net获取更多AI技能。
文档修正说明:源版本 SKILL.md 中的示例代码调用了一个名为
generate_referral_letter()的函数,但实际脚本中并不存在这个函数。真正的接口是ReferralLetterGenerator类及其generate()方法,需要传入ReferralData(及内部的PatientData、ProviderInfo)数据对象,且格式参数需要是OutputFormat枚举值而非普通字符串。以下示例已根据scripts/main.py的真实实现改写。
from scripts.main import (
ReferralLetterGenerator, ReferralData, PatientData, ProviderInfo, OutputFormat
)
patient = PatientData(
name="John Doe",
date_of_birth="1975-03-15",
patient_id="MRN12345678"
)
referring = ProviderInfo(name="Dr. Smith", title="Internal Medicine")
receiving = ProviderInfo(name="Dr. Jones", title="Cardiology")
data = ReferralData(
patient=patient,
referring_provider=referring,
receiving_provider=receiving,
reason_for_referral="Cardiology evaluation for chest pain",
primary_diagnosis="Suspected coronary artery disease"
)
generator = ReferralLetterGenerator()
generator.generate(data, OutputFormat.PDF, "referral_letter.pdf")
以下字段对应输入 JSON 文件的结构(详见 references/input_template.json):
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| patient.name | str | 是 | 患者姓名 |
| patient.date_of_birth | str | 是 | 出生日期(YYYY-MM-DD) |
| patient.patient_id | str | 是 | 病历号 |
| primary_diagnosis | str | 是 | 主要诊断/转诊原因 |
| reason_for_referral | str | 是 | 转诊原因说明 |
| referring_provider.name | str | 是 | 转诊医生姓名 |
| receiving_provider.name | str | 是 | 接诊医生/科室名称 |
| relevant_history | str | 否 | 相关既往病史 |
| current_medications | list | 否 | 当前用药清单 |
| allergies | list | 否 | 已知过敏史 |
| vital_signs | dict | 否 | 生命体征键值对 |
| lab_results | list | 否 | 相关检验结果 |
| urgency | str | 否 | Routine(常规)/Urgent(紧急)/Emergent(急诊),默认 Routine |
| additional_notes | str | 否 | 其他补充说明 |
上述必填字段已对照
scripts/main.py中validate_input()的实际校验逻辑核实(源版本文档中还列出了patient_name、patient_dob、diagnosis、referring_doctor等扁平化字段名,与真实 JSON 结构的嵌套字段名不一致,此处已修正为脚本实际读取的字段路径)。
reportlabpython-docx{
"patient": {
"name": "John Doe",
"date_of_birth": "1975-03-15",
"patient_id": "MRN12345678"
},
"primary_diagnosis": "Suspected coronary artery disease",
"reason_for_referral": "Cardiology evaluation for chest pain",
"referring_provider": { "name": "Dr. Smith" },
"receiving_provider": { "name": "Dr. Jones" },
"urgency": "Urgent"
}
reportlab(生成 PDF)、python-docx(生成 DOCX)依赖修正说明:源版本
requirements.txt中列出了dataclasses、enum两个包,以及包名错误的docx。dataclasses和enum都是 Python 3.7+ 的标准库模块,并非需要通过 pip 安装的第三方包(在较新 Python 版本上pip install dataclasses甚至会报错或产生冲突);正确的 PDF/DOCX 依赖包名应为reportlab和python-docx(脚本中导入的是from docx import Document,对应的 PyPI 包名是python-docx,而不是docx)。本次已将requirements.txt更正为:reportlab python-docx
详见 references/ 目录:
- referral_standards.md:转诊信撰写标准与最佳实践
- referral_template.md / referral_template_clean.md:转诊信模板(含代码块版本与纯净版本)
- templates.md:转诊信标准结构与常见专科概览
- quick_ref.md:快速参考手册(命令示例、字段说明、Python API 用法)
- input_template.json / sample_input.json:输入数据结构示例
在核对文档与源码、并实际运行脚本验证后,发现并修复了以下问题:
generate_referral_letter() 函数。实际接口是 ReferralLetterGenerator.generate(data, output_format, output_path),且需要传入 ReferralData/PatientData/ProviderInfo 数据类实例和 OutputFormat 枚举值。文档示例已按真实签名重写。requirements.txt 包名错误(已修正):dataclasses、enum 是标准库模块而非 PyPI 包,docx 应为 python-docx(导入语句为 from docx import Document,但 PyPI 上发布的包名是 python-docx)。已更正为 reportlab 与 python-docx。patient_name、diagnosis、referring_doctor)与脚本实际读取的嵌套 JSON 字段(如 patient.name、primary_diagnosis、referring_provider.name)不一致。文档已按脚本 load_from_json() 的实际读取逻辑更正。generate_docx() 中,紧急程度标注的代码写的是 run.font.color.rgb = None # Red handled below,注释声称"下面会处理红色",但实际上从未真正设置红色,导致 DOCX 输出中的紧急提示只是加粗文字、并非红色。已改为使用 RGBColor(0xCC, 0x00, 0x00) 真正设置为红色,与 PDF/HTML 版本的视觉效果保持一致。reportlab/python-docx 未安装时,会通过 os.system(f"{sys.executable} -m pip install ...") 静默尝试自动安装。这种做法在受管理的 Python 环境(例如使用 uv 管理、遵循 PEP 668 "externally-managed-environment" 规范的环境)下会直接报错失败,且未经用户同意就修改系统环境也不是好的实践。已改为在依赖缺失时打印明确的中文错误提示,并以非零状态码退出,引导用户自行执行 pip install -r requirements.txt。pip install -r requirements.txt
reportlab/python-docx)未安装,脚本会给出安装提示并退出,不会静默修改环境--input 也未指定 --sample,脚本会打印错误信息、显示帮助并以非零状态码退出这个转诊信生成器功能较完整,支持多种格式输出,文档写得详细清楚,示例数据丰富。但存在一个明显的坑:示例文件的数据结构与工具实际期望的格式不匹配,照着示例改数据可能会出错。总体质量中等偏上,主要不足是示例和代码之间的一致性欠佳,容易造成用户困惑。