医学多模态系统 - 错误代码与防护机制
版本: 1.0.0 最后更新: 2026-01-28 目的: 定义医学数据质量问题的错误处理、降级策略和用户反馈
概述
医学数据本质上是不稳定和不完整的。本文档定义了一个全面的错误处理系统,该系统:
- 检测 模型推理前的数据质量问题
- 优雅降级 当模态缺失时
- 提供专业反馈 向临床医生而非系统崩溃
- 记录 所有质量问题以供审计和改进
错误代码结构
格式: 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: 单模态降级
触发条件: 一种模态缺失或无效 操作:
- 检测缺失模态
- 加载单模态模型权重
- 调整置信度阈值
- 提供清晰的用户反馈
实现:
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: 基于质量的降级
触发条件: 数据质量低于阈值 操作:
- 计算质量评分 (0-100)
- 应用与质量成正比的置信度惩罚
- 如果质量 < 50 则标记结果需人工审核
质量评分公式:
quality_score = (
image_quality * 0.4 +
tabular_completeness * 0.3 +
metadata_completeness * 0.2 +
consistency_score * 0.1
)策略 3: 集成降级
触发条件: 主模型失败或超时 操作:
- 切换到轻量级备用模型
- 降低输入分辨率
- 使用更快的推理模式
- 明确指示准确性降低
6. 日志和审计
必需的日志字段
对于每个推理请求,记录:
{
"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. 用户反馈指南
语气和语言
- 专业但易懂: 避免技术术语
- 面向行动: 始终提供下一步操作
- 透明: 清楚说明限制
- 令人安心: 强调安全和质量控制
消息结构
[图标] [标题]
[问题描述]
[影响/详情]
[建议]
[行动项]图标
- ❌ 错误(严重,无法继续)
- ⚠️ 警告(可谨慎继续)
- ℹ️ 信息(仅供参考,无需操作)
- ✅ 成功(操作完成)
8. 配置
质量阈值
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: 29. 测试清单
- [ ] 测试影像文件缺失
- [ ] 测试全空表格数据
- [ ] 测试两种模态均缺失
- [ ] 测试低分辨率影像
- [ ] 测试超出范围的临床值
- [ ] 测试不完整的 DICOM 序列
- [ ] 测试冲突预测
- [ ] 测试重复提交
- [ ] 测试 GPU 内存溢出
- [ ] 测试磁盘空间警告
10. 未来增强
- 自适应阈值: 从历史数据学习最优阈值
- 多语言支持: 提供多语言错误消息
- 自动质量改进: 建议数据收集改进
- 预测性警报: 在推理前警告潜在问题
- 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-001 | GPU 内存不足 | 错误 | 使用 CPU |
| MED-SYSTEM-002 | 磁盘空间不足 | 警告 | 禁用日志 |
文档维护者: Medical AI Engineering Team 审核周期: 季度 最后审核: 2026-01-28