Skip to content

医学多模态系统 - 错误代码与防护机制

版本: 1.0.0 最后更新: 2026-01-28 目的: 定义医学数据质量问题的错误处理、降级策略和用户反馈


概述

医学数据本质上是不稳定和不完整的。本文档定义了一个全面的错误处理系统,该系统:

  1. 检测 模型推理前的数据质量问题
  2. 优雅降级 当模态缺失时
  3. 提供专业反馈 向临床医生而非系统崩溃
  4. 记录 所有质量问题以供审计和改进

错误代码结构

格式: MED-[类别]-[编号]

  • 类别: DATA(数据), MODEL(模型), SYSTEM(系统), VALIDATION(验证)
  • 编号: 3 位顺序标识符

1. 数据质量错误 (MED-DATA-xxx)

MED-DATA-001: 影像模态缺失

严重程度: 警告 触发条件: 影像文件路径存在但文件缺失或损坏 系统行为: 降级为仅表格数据模式

用户消息:

⚠️ 影像数据缺失警告

检测到患者影像文件缺失或无法读取。系统将基于临床指标进行分析。

建议:
- 请确认影像文件路径是否正确
- 如需完整分析,请上传影像数据后重新提交

当前分析模式:仅临床指标分析
置信度:降低约 15-25%

技术细节:

  • 降级方案: 仅使用 TabularBranch
  • 日志: 记录缺失文件路径和患者 ID
  • 置信度惩罚: -15% 至 -25%

MED-DATA-002: 表格模态缺失

严重程度: 警告 触发条件: 临床特征全部为空或缺失 系统行为: 降级为仅视觉模式

用户消息:

⚠️ 临床数据缺失警告

检测到患者临床指标数据不完整。系统将仅基于影像进行分析。

建议:
- 请补充患者基本信息(年龄、性别等)
- 请补充生化指标数据以提高分析准确性

当前分析模式:仅影像分析
置信度:降低约 10-20%

技术细节:

  • 降级方案: 仅使用 VisionBranch
  • 日志: 记录缺失特征列
  • 置信度惩罚: -10% 至 -20%

MED-DATA-003: 两种模态均缺失

严重程度: 错误 触发条件: 影像和表格数据均不可用 系统行为: 中止推理,返回错误

用户消息:

❌ 数据不足错误

无法进行分析:影像数据和临床数据均缺失。

要求:
- 至少需要提供影像数据或完整的临床指标数据
- 建议同时提供两种数据以获得最佳分析结果

请补充数据后重新提交。

技术细节:

  • 操作: 抛出 InsufficientDataError
  • 日志: 记录患者 ID 和数据源
  • 不执行推理

MED-DATA-004: 影像质量过低

严重程度: 警告 触发条件: 影像分辨率 < 128x128 或检测到严重伪影 系统行为: 继续执行但带警告,标记低置信度

用户消息:

⚠️ 影像质量警告

检测到影像质量较低,可能影响分析准确性。

问题:
- 分辨率过低(当前:{width}x{height},建议:≥224x224)
- 或检测到严重伪影

建议:
- 如可能,请提供更高质量的影像
- 分析结果仅供参考,建议结合临床判断

当前分析:继续进行,但置信度降低

技术细节:

  • 继续推理但带质量标记
  • 日志: 影像尺寸和质量评分
  • 置信度惩罚: -20% 至 -40%

MED-DATA-005: 特征值超出有效范围

严重程度: 警告 触发条件: 临床特征值超出预期生理范围 系统行为: 裁剪至有效范围并继续

用户消息:

⚠️ 数据异常警告

检测到以下临床指标超出正常生理范围:

- {feature_name}: {value} {unit} (正常范围: {min}-{max})

处理:
- 系统已自动将异常值调整至合理范围
- 建议核实数据录入是否正确

分析将继续进行,但请注意数据质量。

技术细节:

  • 操作: 将值裁剪至数据字典中的 [min, max]
  • 日志: 原始值、裁剪值、特征名称
  • 标记: 标记为数据质量问题

MED-DATA-006: 影像序列不完整

严重程度: 警告 触发条件: CT/MRI 序列切片数 < 预期的 50% 系统行为: 使用可用切片并带警告

用户消息:

⚠️ 影像序列不完整

检测到影像序列缺失部分切片。

当前状态:
- 预期切片数:{expected_slices}
- 实际切片数:{actual_slices}
- 完整度:{completeness}%

建议:
- 如可能,请提供完整的影像序列
- 当前分析基于可用切片,结果可能不完整

分析将继续,但置信度降低。

技术细节:

  • 使用可用切片
  • 日志: 预期与实际切片数对比
  • 置信度惩罚: 与缺失百分比成正比

MED-DATA-007: DICOM 元数据缺失

严重程度: 信息 触发条件: DICOM 文件缺少关键元数据(StudyDate、Modality 等) 系统行为: 使用默认假设继续

用户消息:

ℹ️ 影像元数据缺失

DICOM 文件缺少部分元数据信息。

缺失项:
- {missing_fields}

影响:
- 无法进行时序分析
- 无法验证影像模态

系统将使用默认设置继续分析。

技术细节:

  • 对缺失元数据使用默认值
  • 日志: 缺失元数据字段
  • 无置信度惩罚

2. 模型错误 (MED-MODEL-xxx)

MED-MODEL-001: 模型检查点未找到

严重程度: 错误 触发条件: 模型权重文件缺失或损坏 系统行为: 中止,无法继续

用户消息:

❌ 模型加载失败

系统无法加载分析模型。

错误原因:
- 模型文件缺失或损坏
- 路径:{checkpoint_path}

请联系技术支持团队。

技术细节:

  • 操作: 抛出 ModelLoadError
  • 日志: 检查点路径、错误堆栈
  • 通知: 系统管理员

MED-MODEL-002: 模型推理超时

严重程度: 错误 触发条件: 推理时间 > 60 秒 系统行为: 中止推理,返回超时错误

用户消息:

❌ 分析超时

模型分析时间超过预期,已自动终止。

可能原因:
- 影像数据过大
- 系统负载过高

建议:
- 请稍后重试
- 如问题持续,请联系技术支持

技术细节:

  • 操作: 终止推理进程
  • 日志: 推理时间、数据大小、系统负载
  • 重试: 允许用户延长超时重试

MED-MODEL-003: 低置信度预测

严重程度: 警告 触发条件: 模型置信度 < 60% 系统行为: 返回结果但带强烈警告

用户消息:

⚠️ 低置信度预测

模型分析完成,但置信度较低。

预测结果:{prediction}
置信度:{confidence}%

重要提示:
- 此结果仅供参考,不应作为诊断依据
- 建议结合临床经验和其他检查结果综合判断
- 如有疑问,建议进行进一步检查

请谨慎使用此分析结果。

技术细节:

  • 返回预测但带警告标记
  • 日志: 置信度评分、预测、患者 ID
  • 建议: 人工审核

MED-MODEL-004: 多模态预测冲突

严重程度: 警告 触发条件: 视觉和表格分支预测不同类别 系统行为: 返回融合结果但带冲突警告

用户消息:

⚠️ 多模态预测不一致

检测到影像分析和临床指标分析结果存在差异。

影像分析:{vision_prediction} (置信度: {vision_conf}%)
临床分析:{tabular_prediction} (置信度: {tabular_conf}%)
综合分析:{fusion_prediction} (置信度: {fusion_conf}%)

建议:
- 请仔细核对影像和临床数据的一致性
- 建议进行进一步检查以明确诊断
- 此情况可能提示复杂病例,建议专家会诊

请谨慎解读分析结果。

技术细节:

  • 返回所有三个预测
  • 日志: 视觉、表格、融合预测
  • 标记: 标记为需专家审核

3. 验证错误 (MED-VALIDATION-xxx)

MED-VALIDATION-001: 患者 ID 缺失

严重程度: 错误 触发条件: 未提供患者标识符 系统行为: 中止,无法继续

用户消息:

❌ 患者信息缺失

无法进行分析:缺少患者标识信息。

要求:
- 必须提供患者ID或病历号
- 用于数据追溯和质量控制

请补充患者信息后重新提交。

技术细节:

  • 操作: 抛出 ValidationError
  • 日志: 请求时间戳、数据源
  • 不执行推理

MED-VALIDATION-002: 重复提交

严重程度: 警告 触发条件: 相同患者数据在 5 分钟内重复提交 系统行为: 返回缓存结果或警告用户

用户消息:

ℹ️ 重复提交检测

检测到相同患者数据在短时间内重复提交。

选项:
1. 使用之前的分析结果(推荐)
2. 重新进行分析

上次分析时间:{last_analysis_time}
上次分析结果:{last_result}

是否使用缓存结果?

技术细节:

  • 检查: 患者 ID + 数据哈希
  • 操作: 返回缓存结果或重新运行
  • 日志: 重复提交次数

MED-VALIDATION-003: 年龄-性别不匹配

严重程度: 警告 触发条件: 临床特征与人口统计学信息不一致 系统行为: 继续但带警告

用户消息:

⚠️ 数据一致性警告

检测到患者信息可能存在不一致:

- 年龄:{age} 岁
- 性别:{gender}
- 异常指标:{inconsistent_features}

建议:
- 请核实患者基本信息是否正确
- 请确认临床指标数据是否录入正确

分析将继续,但请注意数据质量。

技术细节:

  • 检查: 年龄特定和性别特定特征范围
  • 日志: 不一致特征
  • 继续但带警告标记

4. 系统错误 (MED-SYSTEM-xxx)

MED-SYSTEM-001: GPU 内存不足

严重程度: 错误 触发条件: 推理期间 CUDA 内存不足 系统行为: 降级到 CPU 或更小批次

用户消息:

⚠️ 系统资源不足

GPU 内存不足,系统将使用 CPU 进行分析。

影响:
- 分析时间可能延长 2-5 倍
- 分析质量不受影响

预计等待时间:{estimated_time} 秒

分析正在进行中,请稍候...

技术细节:

  • 操作: 将模型移至 CPU
  • 日志: GPU 内存使用、批次大小
  • 降级: 减小批次大小或使用 CPU

MED-SYSTEM-002: 磁盘空间不足

严重程度: 警告 触发条件: 可用磁盘空间 < 1GB 系统行为: 继续但禁用日志记录

用户消息:

⚠️ 存储空间不足

系统检测到磁盘空间不足。

当前状态:
- 可用空间:{available_space} GB
- 建议空间:≥ 1 GB

影响:
- 详细日志将被禁用
- 分析功能正常

建议尽快清理磁盘空间。

技术细节:

  • 禁用: 详细日志记录、可视化保存
  • 日志: 仅关键事件
  • 警报: 系统管理员

5. 降级策略

策略 1: 单模态降级

触发条件: 一种模态缺失或无效 操作:

  1. 检测缺失模态
  2. 加载单模态模型权重
  3. 调整置信度阈值
  4. 提供清晰的用户反馈

实现:

python
if image_missing:
    model = load_tabular_only_model()
    confidence_penalty = 0.20
elif tabular_missing:
    model = load_vision_only_model()
    confidence_penalty = 0.15

策略 2: 基于质量的降级

触发条件: 数据质量低于阈值 操作:

  1. 计算质量评分 (0-100)
  2. 应用与质量成正比的置信度惩罚
  3. 如果质量 < 50 则标记结果需人工审核

质量评分公式:

quality_score = (
    image_quality * 0.4 +
    tabular_completeness * 0.3 +
    metadata_completeness * 0.2 +
    consistency_score * 0.1
)

策略 3: 集成降级

触发条件: 主模型失败或超时 操作:

  1. 切换到轻量级备用模型
  2. 降低输入分辨率
  3. 使用更快的推理模式
  4. 明确指示准确性降低

6. 日志和审计

必需的日志字段

对于每个推理请求,记录:

json
{
  "timestamp": "2026-01-28T23:16:17Z",
  "patient_id": "P123456",
  "request_id": "req_abc123",
  "data_quality": {
    "image_available": true,
    "image_quality_score": 85,
    "tabular_completeness": 0.92,
    "overall_quality": 88
  },
  "model_info": {
    "mode": "multimodal",
    "fallback_used": false,
    "confidence": 0.87
  },
  "errors": [],
  "warnings": ["MED-DATA-005"],
  "inference_time_ms": 1234,
  "result": {
    "prediction": "class_1",
    "confidence": 0.87,
    "requires_review": false
  }
}

7. 用户反馈指南

语气和语言

  1. 专业但易懂: 避免技术术语
  2. 面向行动: 始终提供下一步操作
  3. 透明: 清楚说明限制
  4. 令人安心: 强调安全和质量控制

消息结构

[图标] [标题]

[问题描述]

[影响/详情]

[建议]

[行动项]

图标

  • ❌ 错误(严重,无法继续)
  • ⚠️ 警告(可谨慎继续)
  • ℹ️ 信息(仅供参考,无需操作)
  • ✅ 成功(操作完成)

8. 配置

质量阈值

yaml
quality_thresholds:
  image:
    min_resolution: [128, 128]
    min_quality_score: 50
  tabular:
    min_completeness: 0.5
    max_outlier_rate: 0.2
  overall:
    min_quality_for_inference: 40
    min_quality_for_auto_report: 70

confidence_thresholds:
  high_confidence: 0.80
  medium_confidence: 0.60
  low_confidence: 0.40
  reject_threshold: 0.30

fallback_config:
  enable_single_modality: true
  enable_quality_degradation: true
  max_inference_time_seconds: 60
  retry_attempts: 2

9. 测试清单

  • [ ] 测试影像文件缺失
  • [ ] 测试全空表格数据
  • [ ] 测试两种模态均缺失
  • [ ] 测试低分辨率影像
  • [ ] 测试超出范围的临床值
  • [ ] 测试不完整的 DICOM 序列
  • [ ] 测试冲突预测
  • [ ] 测试重复提交
  • [ ] 测试 GPU 内存溢出
  • [ ] 测试磁盘空间警告

10. 未来增强

  1. 自适应阈值: 从历史数据学习最优阈值
  2. 多语言支持: 提供多语言错误消息
  3. 自动质量改进: 建议数据收集改进
  4. 预测性警报: 在推理前警告潜在问题
  5. PACS 集成: 直接对 DICOM 源进行质量检查

附录 A: 错误代码快速参考

代码描述严重程度降级方案
MED-DATA-001影像缺失警告仅表格
MED-DATA-002表格缺失警告仅视觉
MED-DATA-003两者均缺失错误中止
MED-DATA-004影像质量低警告继续
MED-DATA-005特征超出范围警告裁剪并继续
MED-DATA-006序列不完整警告使用可用
MED-DATA-007元数据缺失信息使用默认值
MED-MODEL-001模型加载失败错误中止
MED-MODEL-002推理超时错误中止
MED-MODEL-003低置信度警告标记审核
MED-MODEL-004预测冲突警告返回全部
MED-VALIDATION-001患者 ID 缺失错误中止
MED-VALIDATION-002重复提交警告使用缓存
MED-VALIDATION-003数据不一致警告继续
MED-SYSTEM-001GPU 内存不足错误使用 CPU
MED-SYSTEM-002磁盘空间不足警告禁用日志

文档维护者: Medical AI Engineering Team 审核周期: 季度 最后审核: 2026-01-28

Released under the MIT License.