质控结果聚合策略.md 6.5 KB

质控结果聚合策略文档

一、背景

在医学影像质控系统中,一次检查(Study)通常包含多张 DICOM 图像。对每张图像分别进行质控分析后,需要将多张图像的结果聚合为该检查的整体质控结果

本文档定义了五项质控维度的聚合策略,确保结果计算逻辑统一、可追溯。


二、质控维度定义

维度编码 维度名称 可选值 说明
CHECK_RANGE 检查范围 large(过大) / normal(正常) / small(过小) 评估图像覆盖范围是否合适
BODY_POSITION 体位 standard(标准) / non_standard(不标准) 评估患者体位是否符合规范
IMAGE_ARTIFACT 图像伪影 none(无) / motion_artifact(运动) / device(设备) / foreign_body(异物) 评估图像是否存在伪影
CENTER_LINE 中心线 normal(正常) / up(偏上) / down(偏下) / left(偏左) / right(偏右) 评估中心线位置是否正确
IMAGE_QUALITY_LEVEL 质控等级 X线: 1(甲)/2(乙)/3(丙)/4(丁);CT/MR: 0/1/2/3级 综合图像质量评级

三、聚合策略

3.1 策略类型说明

策略类型 说明 算法
众数策略 取出现次数最多的值 统计各值出现次数,取最大次数对应的值;若次数相同,优先取"正常"值
最严格策略 只要有一个异常,整体即为异常 按严重程度排序,取最严重的值
最差值策略 取最差的等级 数值比较,取最差(最大或最小)的值

3.2 各维度聚合策略

维度 聚合策略 策略理由
检查范围 众数策略 个别图片范围异常可能是序列边缘图像,应以多数图片为准
体位 众数策略 大部分图片体位标准即可认定检查体位合格
图像伪影 最严格策略 只要有一张图片存在伪影,就应记录并提示,取最严重的伪影类型
中心线 众数策略 少数图片偏移可接受,以多数图片的判定为准
质控等级 最差值策略 整体质量由最差的图片决定,木桶效应

四、详细算法

4.1 众数策略算法

输入: 值列表 [v1, v2, v3, ...]
输出: 出现次数最多的值

算法:
1. 统计每个值的出现次数
2. 找出最大次数
3. 如果有多个值次数相同:
   - 检查范围: 优先返回 "normal"
   - 体位: 优先返回 "standard"
   - 中心线: 优先返回 "normal"
4. 返回众数值

示例:

  • 输入: [normal, normal, large, normal, small]
  • 统计: normal=3, large=1, small=1
  • 输出: normal

4.2 最严格策略算法(伪影)

伪影严重程度排序(从轻到重):
  none(0) < motion_artifact(1) < device(2) < foreign_body(3)

输入: 伪影值列表 [v1, v2, v3, ...]
输出: 最严重的伪影类型

算法:
1. 将每个值映射为严重程度数值
2. 取最大数值对应的伪影类型
3. 返回该类型

示例:

  • 输入: [none, none, foreign_body, none, device]
  • 映射: [0, 0, 3, 0, 2]
  • 最大值: 3
  • 输出: foreign_body

4.3 最差值策略算法(质控等级)

质控等级数值定义:
  - X线: 甲级=1, 乙级=2, 丙级=3, 丁级=4 (数值越大越差)
  - CT/MR: 0级=0, 1级=1, 2级=2, 3级=3 (数值越大越差)

输入: 等级值列表 [v1, v2, v3, ...]
输出: 最差的等级

算法:
1. 将每个等级转为数值
2. 取最大数值
3. 转回等级表示
4. 返回该等级

示例(CT检查):

  • 输入: [1, 2, 1, 3, 2]
  • 最大值: 3
  • 输出: 3级

示例(X线检查):

  • 输入: [甲级, 乙级, 甲级, 丙级, 乙级]
  • 映射: [1, 2, 1, 3, 2]
  • 最大值: 3
  • 输出: 丙级

五、完整示例

输入数据

某CT检查包含5张图像,分析结果如下:

图片序号 检查范围 体位 伪影 中心线 质控等级
0 normal standard none normal 1
1 normal standard foreign_body left 2
2 large standard none normal 1
3 normal non_standard none normal 2
4 normal standard device normal 3

聚合计算

维度 策略 计算过程 结果
检查范围 众数 normal=4, large=1 → 众数为normal normal
体位 众数 standard=4, non_standard=1 → 众数为standard standard
伪影 最严格 none=3, foreign_body=1, device=1 → 最严重为foreign_body foreign_body
中心线 众数 normal=4, left=1 → 众数为normal normal
质控等级 最差值 [1,2,1,2,3] → 最大值3 3级

最终整体结果

{
  "checkRangeResult": "normal",
  "checkRangeLabel": "正常",
  "bodyPositionResult": "standard",
  "bodyPositionLabel": "标准",
  "imageArtifactResult": "foreign_body",
  "imageArtifactLabel": "体外异物伪影",
  "centerLineResult": "normal",
  "centerLineLabel": "正常",
  "qualityLevel": "3",
  "qualityLevelLabel": "3级",
  "imageCount": 5,
  "passCount": 2,
  "failCount": 3
}

六、特殊情况处理

情况 处理方式
无法读取任何图片 五项结果均返回默认值(normal/standard/none/normal/2级),并标记分析状态为"失败"
只有1张图片 直接使用该图片的分析结果,无需聚合
部分图片分析失败 只使用成功分析的图片进行聚合,记录失败图片数量
所有图片分析失败 同"无法读取任何图片"

七、数据存储

7.1 qc_result 表(明细)

存储每张图片的每个维度分析结果:

字段 说明
exam_id 检查ID
image_index 图片序号(0,1,2...)
factor_id 因子ID(对应五个维度)
factor_value 该图片该维度的分析结果
analysis_log 详细分析日志

7.2 qc_result_summary 表(汇总)

存储整体聚合结果(需新增字段):

字段 说明
check_range_result 检查范围聚合结果
body_position_result 体位聚合结果
image_artifact_result 伪影聚合结果
center_line_result 中心线聚合结果
quality_level 质控等级聚合结果
image_count 分析的图片总数
success_image_count 成功分析的图片数

八、版本记录

版本 日期 修改内容 作者
1.0 2025-12-28 初始版本 Claude