54 lines
3.1 KiB
Swift
54 lines
3.1 KiB
Swift
import Foundation
|
|
|
|
/// 「记录问诊」录音转写 → 结构化问诊小结的 prompt(2026-06-28)。
|
|
///
|
|
/// 与 `DiaryAssistPrompts.organize`(口述日记)同源同魂,但产物不同:
|
|
/// 问诊录音里通常**两个人在说话**(本人 + 医生),要按就诊场景归到固定小节,方便日后翻看/给下一位医生看。
|
|
///
|
|
/// 红线(同 §1 / §10):
|
|
/// - 这是**转写整理**,不是 App 在做诊断或给药建议——只忠实复述录音里医生/本人说过的话,
|
|
/// 【绝对不许】自行新增任何诊断、用药、剂量、频次或「建议就医」。模型没听到的就不写。
|
|
/// - 数值、单位、药名、剂量、时间一字不改(140/90 永远是 140/90)。
|
|
enum ConsultationPrompts {
|
|
|
|
/// 转写稿截断上限(字符)。2B context 保护:超长问诊只取前段整理。
|
|
static let organizeTranscriptLimit = 2000
|
|
|
|
static func organize(transcript: String) -> String {
|
|
let trimmed = String(transcript.prefix(organizeTranscriptLimit))
|
|
return """
|
|
你是健康记录助手。下面是用户在医院/诊所就诊时的录音转写原话,通常包含本人和医生两个人的对话,
|
|
可能口语化、有重复、缺标点、说话人没标注。请把它整理成一份清晰的【问诊小结】,方便本人日后回看。
|
|
|
|
硬性规则:
|
|
- 这只是**转写整理**:只复述录音里【确实说过】的内容,【绝对不许】自己新增诊断、用药、剂量、频次或「建议就医」。
|
|
- 数值、单位、药名、剂量、时间【一字不改】——原话说 140/90 就写 140/90,说一天两次就写一天两次。
|
|
- 录音里没提到的小节就【整节省略】,不要写「无」「未提及」之类占位,也不要硬凑。
|
|
- 区分说话人:本人的主诉用第一人称「我」;医生说的话写成「医生:…」。
|
|
- 不确定/听不清的地方保留原样,不要脑补。
|
|
|
|
按下面这些小节整理(只保留录音里出现过的,用「小节名:内容」分行):
|
|
主诉 —— 本人这次来看什么、哪里不舒服
|
|
现病史 —— 起病时间、过程、变化
|
|
医生判断 —— 医生当场说的判断或解释(原话复述,不替医生下结论)
|
|
医生建议 —— 医生给的检查、复查、生活建议
|
|
用药 —— 医生提到的药名/用法(原样复述,不补剂量)
|
|
复查与注意 —— 下次复查时间、注意事项
|
|
|
|
只输出整理后的小结正文,不要解释、不要 markdown 围栏、不要 <think> 标签。
|
|
|
|
示例(转写:就那个我最近老是胸口闷上楼梯就喘大概有半个月了医生说听着心率有点快先做个心电图和验血下周三来复查这两天别太累):
|
|
主诉:最近胸口闷,上楼梯就喘。
|
|
现病史:已持续约半个月。
|
|
医生判断:医生:听着心率有点快。
|
|
医生建议:先做心电图和验血。
|
|
复查与注意:下周三复查,这两天别太累。
|
|
|
|
【录音转写原话】:
|
|
\(trimmed)
|
|
|
|
Output: /no_think
|
|
"""
|
|
}
|
|
}
|