返回 Skill 列表
extension
分类: 效率与办公无需 API Key

罕见病辅助诊断

基于本地疾病知识库,通过**关键词加权匹配 + 否定检测 + 年龄感知 + 同义词扩展**进行罕见病辅助诊断。收录 **22 种** 在中国人群中有代表性的罕见病,覆盖溶酶体贮积症、运动神经元病、神经肌肉接头疾病、遗传性肌病、凝血障碍、遗传性肾脏疾病、结缔组织病、铜代谢障碍、神经皮肤综合征、遗传性肿瘤、内分泌疾病等多个类别。

person作者: xiaopchhubModelScope

罕见病辅助诊断技能 (rare-disease-diagnosis) v3.0

概述

基于本地 JSON 疾病知识库(data/diseases.json),通过关键词加权匹配 + 否定检测 + 年龄感知 + 同义词扩展进行罕见病辅助诊断。收录 22 种 在中国人群中有代表性的罕见病,覆盖溶酶体贮积症、运动神经元病、神经肌肉接头疾病、遗传性肌病、凝血障碍、遗传性肾脏疾病、结缔组织病、铜代谢障碍、神经皮肤综合征、遗传性肿瘤、内分泌疾病等多个类别。

v3.0 核心优化

| 优化项 | 说明 | | ------ | ---- | | 模块级数据缓存 | 首次加载后缓存疾病数据库,后续匹配零文件 I/O | | 中文否定词检测 | 识别 "没有少汗 / 无发热 / 否认头痛" 等否定表述,避免误匹配 | | 医学术语同义词扩展 | 内置 120+ 组中文医学术语同义词映射,提升召回率 | | 特异性加权 | 长度≥3 的关键词/症状精确命中时,额外加权 +0.2(关键词)/ +0.3(核心症状) | | 年龄感知匹配 | 自动从症状中提取患者年龄,与疾病好发年龄范围比对,匹配则加权 +15% | | 置信度精细化 | 结合原始得分与归一化得分的多维度置信度分级 |

数据源

data/diseases.json v2.0.0 — 每条疾病记录包含:

| 字段 | 类型 | 说明 | | --------------------- | ------ | ------------------ | | id | string | 疾病唯一标识符(如 fabry) | | name | string | 中文疾病名 | | name_en | string | 英文疾病名 | | icd10 | string | ICD-10 编码 | | category | string | 疾病分类 | | prevalence | string | 患病率 | | onset_age | string | 好发年龄 | | core_symptoms | array | 核心症状列表(匹配权重 1.5) | | keywords | array | 搜索关键词列表(匹配权重 1.0) | | key_features | string | 核心临床特征描述 | | diagnostic_criteria | string | 诊断标准(基于指南/共识) | | lab_markers | array | 实验室检查标志物列表 | | genetic_test | string | 基因检测方案和常见突变 | | treatment_summary | string | 标准治疗方案概要 | | cases | array | 详细临床案例列表 |

clinical cases 每条包含:title, patient, chief_complaint, history, findings, diagnosis, treatment, key_takeaway

收录疾病一览:

| 分类 | 疾病 | | -------- | -------------------------- | | 溶酶体贮积症 | 法布雷病、戈谢病、尼曼-匹克病、黏多糖贮积症 | | 糖原贮积症 | 庞贝病 | | 运动神经元病 | ALS(肌萎缩侧索硬化症)、SMA(脊髓性肌萎缩症) | | 神经肌肉接头疾病 | 重症肌无力 | | 遗传性肌病 | 杜氏肌营养不良(DMD) | | 凝血障碍 | 血友病A型 | | 遗传性肾脏疾病 | 多囊肾(ADPKD)、Alport综合征 | | 结缔组织病 | 马凡综合征、Ehlers-Danlos综合征 | | 铜代谢障碍 | 肝豆状核变性(Wilson病) | | 遗传印记障碍 | Prader-Willi综合征 | | 神经皮肤综合征 | 结节性硬化症(TSC)、神经纤维瘤病I型(NF1) | | 遗传性肿瘤 | 视网膜母细胞瘤 | | 离子通道病 | 囊性纤维化(CF) | | 神经内分泌肿瘤 | 嗜铬细胞瘤 | | 内分泌疾病 | 艾迪生病(原发性肾上腺皮质功能不全) |

匹配算法 v3.0

加权匹配(非机器学习)

  • 关键词(keywords):每条命中 +1.0 分(长度≥3 精确命中额外 +0.2)
  • 核心症状(core_symptoms):每条命中 +1.5 分(长度≥3 精确命中额外 +0.3)
  • 同义词匹配:关键词/症状的同义词命中时计 0.7 分
  • 年龄感知:患者年龄与疾病好发年龄匹配时,总分 × (1 + 0.15);不匹配时 × (1 - 0.15)
  • 原始得分 = 命中关键词总分 + 命中核心症状总分 × 年龄系数
  • 归一化得分 = 原始得分 / 该疾病总可能得分

否定词检测

识别以下否定词(窗口±5字符内):没有、无、未、否认、除外、排除、不曾、从未、不是、非、莫、没有过、无明显、未见、不伴有

  • "没有少汗" → "少汗" 不计入命中
  • "不会翻身" → "翻身" 仍计入命中(描述运动障碍症状,非否定)

置信度分级

| 条件 | 置信度 | | ---- | ------ | | 原始得分 ≥ 5.0,或 (≥ 3.5 且 归一化得分 ≥ 0.4) | 高 | | 原始得分 ≥ 3.0,或 (≥ 2.0 且 归一化得分 ≥ 0.3) | 中 | | 原始得分 ≥ 1.5 | 低 | | < 1.5 | 极低 |

同义词映射

内置 MEDICAL_SYNONYMS 字典,覆盖 120+ 组常用中文医学术语变体:

  • 疼痛类:烧灼痛 → 烧灼感/灼痛/烧灼样疼痛
  • 神经类:肌束震颤 → 肉跳/肌肉跳动/肌束跳动
  • 眼科类:白瞳 → 瞳孔发白/猫眼反射
  • 呼吸类:咳嗽 → 咳/咳嗽不止肺炎 → 肺部感染/肺感染
  • 消化类:腹泻 → 拉肚子/水样便/稀便
  • ...(详见 scripts/diagnose.py 中的 MEDICAL_SYNONYMS

匹配模式

  • 默认:精确子串匹配(标准化后判断是否包含关键词/症状文本)
  • --fuzzy:精确匹配失败时,尝试字符级顺序匹配——检查关键词中每个汉字是否按顺序出现在症状文本中,按跨度计算匹配质量系数(0.1~1.0),提高召回率但可能引入少量噪声

文本预处理

  1. 全角字符 → 半角字符
  2. 去除标点符号(保留中文、字母、数字、空格)
  3. 合并连续空格
  4. 转小写(适用于英文字母)
  5. v3.0:否定词上下文检测(±5字符窗口)
  6. v3.0:同义词扩展匹配
  7. v3.0:年龄信息提取(支持 "X岁"、"X个月"、"婴儿/儿童/青少年" 等)

输出格式

诊断结果按节输出:

该用户可能患有法布雷病(Fabry Disease)

【疾病信息】
  ICD-10: E75.2
  分类: 溶酶体贮积症
  患病率: 1/40,000 ~ 1/60,000
  好发年龄: 儿童期至青少年期
  核心特征: 肢端烧灼痛 + 少汗 + 血管角质瘤三联征
  诊断标准: 血清α-半乳糖苷酶A(GLA)活性检测(男性<4.0 nmol/h/mg确诊)
  基因检测: GLA基因测序(热点突变IVS4+919G>A)

【匹配详情】
  置信度: 高
  命中关键词: 手脚痛, 少汗
  命中核心症状: 手足烧灼痛, 少汗或无汗

【鉴别诊断】
  - 戈谢病,置信度: 低

【实验室检查】
  • α-半乳糖苷酶A活性降低
  • GLA基因突变
  • 蛋白尿/肾功能异常

【治疗概要】
  酶替代治疗(Fabrazyme 1mg/kg/2周);ACEI/ARB控制蛋白尿

【相关临床案例】
  ┌─ 案例 1: 误诊为风湿热的法布雷病
  │ 患者: 男性,12岁
  │ 主诉: 反复发作性手足疼痛伴发热3年
  ├─ 病史: ...
  ├─ 检查发现: ...
  ├─ 诊断: ...
  ├─ 治疗经过: ...
  └─ 【启示】...

[!] 免责声明:本结果仅供学习参考,不构成医疗诊断依据。

CLI 用法

# 基本诊断(返回前3个匹配)
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --top 3

# 显示归一化得分等详细信息
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --detail

# 显示临床案例
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --top 1 --cases

# JSON 格式输出
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --json

# 启用模糊匹配
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --fuzzy

# 保存诊断报告到 output/ 目录
python rare-disease-diagnosis/scripts/diagnose.py "<症状描述>" --output

# 列出所有疾病
python rare-disease-diagnosis/scripts/diagnose.py --list-diseases

CLI 选项

| 选项 | 说明 | | ----------------------- | -------------------- | | <症状> | 症状描述(支持多参数,自动拼接) | | --top, -k | 返回前 K 个匹配(默认 3) | | --json, -j | JSON 格式输出 | | --fuzzy, -f | 开启字符级模糊匹配 | | --output, -o | 保存诊断报告到 output/ 目录 | | --detail | 显示归一化得分等详细信息 | | --cases, -c | 显示匹配疾病的详细临床案例 | | --list-diseases, -l | 列出所有 22 种疾病 | | --data, -d | 指定自定义疾病数据库路径 |

证据整合

本技能整合了 KnowS 证据搜索技能(knows-evidence-search)的循证医学知识:

  • 诊断标准:基于国内外指南/共识的诊断标准(含中国人群热点突变数据)
  • 实验室检查:关键生物标志物和辅助检查列表(如酶活性、基因突变、影像学特征)
  • 基因检测:分子诊断方案和常见突变位点(如 GLA IVS4+919G>A、ATP7B c.2333G>T 等)
  • 治疗概要:国内外指南推荐的标准治疗方案(药物名称、剂量、给药方式)

在 GUI(app.py)中,诊断流程还会自动调用 KnowS API 检索最新论文、指南和临床试验作为实时证据佐证。

GUI 集成

app.py 提供 PyQt6 桌面界面,完整诊断流程:

  1. 用户输入症状描述(或选择临床病例示例)
  2. LLM(step-3.7-flash)进行症状扩展分析和关键症状提取
  3. 调用 diagnose.py 进行关键词匹配诊断
  4. 提取疾病名称后搜索 KnowS 证据 API(论文/指南/临床试验)
  5. LLM 整合诊断结果和证据搜索生成专业解读
  6. 保存诊断报告到 output/ 目录
  7. 用户可提交反馈(正确/错误 + 评分 + 评论)
  8. 反馈数据用于 self-improving 循环持续优化

诊断流程

用户症状描述 → 文本标准化 → 全角转半角、去标点
  → 对每种疾病:
    1. 遍历 keywords(权重 1.0)→ 精确子串匹配 / 模糊匹配
    2. 遍历 core_symptoms(权重 1.5)→ 精确子串匹配 / 模糊匹配
    3. 计算原始得分和归一化得分
    4. 确定置信度(高/中/低)
  → 按原始得分降序排列 → 返回 top K 个结果
  → 格式化输出(疾病信息 + 匹配详情 + 鉴别诊断 + 实验室检查 + 治疗概要 + 临床案例)

自改进循环

  • self-improving/scripts/feedback_collector.py — 收集用户反馈(正确率评分、实际疾病、评论)
  • self-improving/scripts/diagnosis_improver.py — 生成改进报告和行动清单
  • 反馈数据驱动关键词权重调整和新案例添加

性能指标

  • Eva 测试集位于 rare-disease-diagnosis/evals/evals.json(23 个测试用例)
  • 21 个疾病特异性用例 + 2 个非特异性症状用例
  • v3.0: 100% 通过率(23/23)
  • 模块级缓存使重复调用零文件 I/O 开销

免则声明

本技能输出仅供学习和辅助参考,不构成任何医疗诊断依据。如有健康疑虑,请及时前往正规医疗机构就诊。