宠物就医前自检
带宠物去医院前,主人最容易犯两个错:一是到了诊室说不清病情——症状有哪些、持续多久、吃喝精神怎么样,一问三不知;二是拿不准该不该立刻去——明明已经踩了急诊红线还在家观察,或者反过来把常规小问题当急症。这个技能只干两件机械活:把就医前信息整理成一张逐行列出的信息卡,再拿症状对一张内置红旗症状表做机械匹配,命中就提示"建议立即就医"。
何时使用
| 用户说法 | 是否触发 |
|---|---|
| 宠物吐了一整天要不要马上去医院 | 是 |
| 猫不排尿是不是急诊 | 是 |
| 帮我整理一下要跟兽医说的症状 | 是 |
| 狗误食了巧克力怎么办 | 是 |
| 带猫看病前要准备什么 | 是 |
| 宠物精神差拒食严不严重 | 是 |
| 帮我判断宠物得了什么病 / 开点什么药 | 否(本技能不做诊断、不推荐药物) |
| 帮我分析宠物医院经营数据 / 查证照合规 | 否(属于其他工具的分工范围) |
输入
一份就医前情况描述(JSON 文件,UTF-8):
{
"pet": {"species": "猫", "breed": "英短", "age": "2岁", "weight_kg": 4.2},
"symptoms": ["呕吐", "精神差"],
"duration_hours": 10,
"vitals": {"temp_c": 39.8, "appetite": "拒食", "mental": "萎靡"},
"notes": "昨晚偷吃了巧克力"
}
字段说明:
| 字段 | 含义 | 约束 |
|---|---|---|
pet.species |
宠物种类 | 建议填;缺失 → warn 不阻断 |
pet.breed / pet.age / pet.weight_kg |
品种 / 年龄 / 体重 | 可选;age 缺失 → warn 不阻断 |
symptoms |
症状清单(字符串数组) | 建议填;参与关键词匹配 |
duration_hours |
症状持续小时数 | 数值;参与"持续呕吐 >6 小时"判定 |
vitals.temp_c |
体温(℃) | 数值;与 39.5 / 37.5 阈值单独比较 |
vitals.appetite / vitals.mental |
食欲 / 精神 | 字符串;参与文本匹配 |
notes |
主人备注(误食物、起病经过等) | 字符串;参与文本匹配 |
子命令
card · 生成就医前信息卡
python3 scripts/vet_precheck.py card --input case.json
python3 scripts/vet_precheck.py card --input case.json --json
逐行列出:宠物基础信息(种类/品种/年龄/体重)、症状清单(编号)、持续时间、基础体征(体温/食欲/精神)、主人备注,末尾附提示与 warn(如有)。方便照着向兽医陈述。
triage · 红旗症状匹配与紧急度提示(主功能)
python3 scripts/vet_precheck.py triage --input case.json
python3 scripts/vet_precheck.py triage --input case.json --json
把 symptoms / notes / vitals 文本与内置红旗症状表逐条子串匹配(不区分大小写)。命中 → 输出命中红旗列表与提示语,退出码 1(表示需立即行动);未命中 → "未命中红旗症状,建议常规门诊预约,如持续或加重请尽早就医",退出码 0。
redflags · 红旗症状表全量
python3 scripts/vet_precheck.py redflags
python3 scripts/vet_precheck.py redflags --json
红旗症状表(内置 11 条)
| # | 红旗名 | 判定规则 | 提示语 |
|---|---|---|---|
| 1 | 持续呕吐 | 强关键词(呕吐不止/持续呕吐/一直吐/反复呕吐等)命中;或基础呕吐词(呕吐/吐了/干呕等)出现且 duration_hours > 6 |
持续呕吐超过 6 小时或多次呕吐易致脱水,建议立即就医 |
| 2 | 腹泻带血 | 便血/血便/拉血/大便带血等关键词 | 便血可能提示消化道出血或严重感染,建议立即就医 |
| 3 | 抽搐 | 抽搐/惊厥/口吐白沫/癫痫发作等关键词 | 抽搐属于急症,建议立即就医并记录发作时长 |
| 4 | 呼吸困难或张口呼吸 | 呼吸困难/喘不上气/张口呼吸/呼吸急促等关键词 | 猫张口呼吸或呼吸急促属于急症,建议立即就医 |
| 5 | 疑似中毒 | 巧克力/百合/木糖醇/老鼠药/葡萄/洋葱/误食/人类药物等关键词 | 误食有毒物质建议立即就医,尽量带上包装 |
| 6 | 外伤出血不止 | 出血不止/流血不止/大量出血等关键词 | 出血不止建议立即就医,可先按压止血 |
| 7 | 不排尿或排尿困难 | 不排尿/排尿困难/尿闭/蹲盆无尿等关键词 | 尤其公猫,完全尿闭可在 24 小时内致命,建议立即就医 |
| 8 | 腹部剧烈胀大 | 腹部胀大/肚子鼓胀/胃扭转等关键词 | 腹部急剧胀大伴干呕可能提示胃扭转,建议立即就医 |
| 9 | 体温异常 | vitals.temp_c ≥ 39.5 或 ≤ 37.5(数值单独判定) |
体温异常建议立即就医并复测体温 |
| 10 | 疑似骨折或无法站立 | 骨折/腿断了/无法站立/站不起来等关键词 | 疑似骨折建议立即就医,移动时注意固定 |
| 11 | 难产 | 难产/生不出来/分娩超过/卡在产道等关键词 | 难产危及母子,建议立即联系有急诊手术能力的医院 |
机械规则:匹配 = 关键词子串出现在 symptoms 任一条 / notes / vitals 文本化字符串中(不区分大小写);体温为数值阈值单独判定;species / age 缺失 → warn 提醒但不阻断。
输出与退出码
- 退出码
0:card / redflags 成功;triage 未命中红旗; - 退出码
1:triage 命中红旗(表示需立即行动); - 退出码
2:用法或读取错误(文件不存在、缺子命令、未知子命令、缺--input、JSON 解析失败)。
--json 输出:card → card_lines[] + card{pet,symptoms,duration_hours,vitals,notes} + warns[];triage → urgent/hit_count/hits[]/message/warns[];redflags → count + red_flags[]。
使用示例
# 1. 生成就医前信息卡
python3 scripts/vet_precheck.py card --input test-samples/case_urgent.json
# → 逐行列出宠物信息、症状、持续时间、体征、备注,退出码 0
# 2. 紧急度匹配:呕吐 10 小时 + 误食巧克力 + 体温 39.8
python3 scripts/vet_precheck.py triage --input test-samples/case_urgent.json
# → 命中 3 条红旗(持续呕吐/疑似中毒/体温异常),建议立即就医,退出码 1
# 3. 完全健康的样本
python3 scripts/vet_precheck.py triage --input test-samples/case_healthy.json
# → 未命中红旗症状,建议常规门诊预约,退出码 0
注意事项
- 只做信息整理与机械提示:信息卡是对用户输入的逐行整理,红旗匹配是子串包含与阈值比较,不引入任何外部数据。
- 不做诊断、不推荐用药:本技能不判断宠物得了什么病、不推荐任何药物或剂量、不给治疗建议;如需结论请面诊执业兽医。
- 未命中不等于安全:红旗表为通用示例,不能穷尽所有急症;未命中只表示"未踩中表内红线",病情持续或加重仍应尽早就医。
- 现场判断优先:是否急诊、如何处置,一切以执业兽医现场判断为准;24 小时急诊场景以当地宠物医院为准。
- 与同域工具的分工:宠物医院证照/合规台账由「宠物医院经营助手」类工具负责,医院经营数据分析由「宠物医院经营辅助」负责,本技能只做主人侧就医前准备。
- 不联网、不写文件:默认只向 stdout 打印,不改输入文件、不访问网络。
边界声明
只做宠物就医前的信息整理与红旗症状机械匹配提示;不做诊断、不判断疾病、不推荐任何药物与剂量、不给治疗结论;红旗表为通用示例,不能穷尽所有急症,未命中不等于安全;一切以执业兽医现场判断为准,24 小时急诊场景以当地宠物医院为准;不联网、不写文件、不修改输入。