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
文件修正說明:源版本 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:輸入資料結構示例
想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。
在核對文件與原始碼、並實際執行指令碼驗證後,發現並修復了以下問題:
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,指令碼會列印錯誤資訊、顯示幫助並以非零狀態碼退出這個轉診信生成器功能較完整,支援多種格式輸出,文件寫得詳細清楚,示例資料豐富。但存在一個明顯的坑:示例檔案的資料結構與工具實際期望的格式不匹配,照著示例改資料可能會出錯。總體質量中等偏上,主要不足是示例和程式碼之間的一致性欠佳,容易造成使用者困惑。