3. 医学影像数据获取与合规

医学影像预测模型的第一道工程门槛,不是建模,而是“把影像合规地拿到手”。影像数据从设备产生到进入训练集,通常要穿过 DICOM 文件、PACS/RIS 系统、伦理审查、脱敏与多中心协作五道关口。任何一道关口处理不当,都会导致数据不可用、模型不可复现,甚至引发合规风险。本节按数据实际流动的顺序,讲清每一环的关键对象与操作要点。

一、DICOM:影像数据的标准载体

DICOM(医学数字成像与通信标准)既是文件格式,也是网络通信协议。一个 DICOM 文件由文件头(128 字节前导 + “DICM”标识)和数据集组成,数据集由一个个数据元素(Tag)构成,每个元素包含标签、值表示(VR)和值长度。理解 Tag 是理解脱敏的前提。

与建模最相关的 Tag 可分为四类:

  • 像素数据:(7FE0,0010) Pixel Data,存放原始像素;(0028,0010) Rows、(0028,0011) Columns 定义矩阵尺寸;(0028,0100) Bits Allocated、(0028,0103) Pixel Representation 决定位深与有无符号。
  • 灰度映射:(0028,1050) Window Center、(0028,1051) Window Width、(0028,1052) Rescale Intercept、(0028,1053) Rescale Slope。CT 的 HU 值必须用 HU = 像素值 × Rescale Slope + Rescale Intercept 还原,直接读像素值会得到错误特征。
  • 几何信息:(0020,0032) Image Position Patient、(0020,0037) Image Orientation Patient、(0020,003E) Number of Frames、(0018,0050) Slice Thickness、(0020,1041) Slice Location。这些决定体素间距与三维重建方向。
  • 隐私信息:(0010,0010) Patient Name、(0010,0020) Patient ID、(0008,0020) Study Date、(0008,0080) Institution Name 等,是脱敏的主要目标。

需要特别提醒:DICOM 的像素数据可能被压缩(如 JPEG Lossless、JPEG2000),(0002,0010) Transfer Syntax UID 指明压缩方式。若用普通图像库直接读取,可能解出错误像素。工程上建议用 pydicom + SimpleITK 或 GDCM 组合读取,并在读取后校验 Rows/Columns 与数组形状是否一致。

二、PACS/RIS:数据从哪里来

PACS(影像归档与通信系统)负责影像的存储与调阅,RIS(放射信息系统)负责检查申请、预约与报告。二者通过 HL7 与 DICOM 互联:RIS 产生检查信息(患者、检查号、检查部位),PACS 接收并归档影像。对建模团队而言,数据获取通常有三条路径:

  1. DICOM 查询/检索(C-FIND/C-MOVE):向 PACS 的 Query/Retrieve SCP 发起查询,按 Study Date、Modality、Body Part 等条件筛选,再拉取到本地。适合批量导出。
  2. 厂商导出:由 PACS 管理员按检查列表导出为 DICOM 目录或压缩包,附带 CSV 索引。适合一次性科研数据集。
  3. 数据库直连:从 PACS 底层数据库或影像归档接口读取,效率高但风险大,需严格权限控制。

无论哪条路径,都必须先明确“检索条件”和“纳排标准”的对应关系。例如研究“肺结节良恶性预测”,检索条件应包含 Modality=CT、BodyPart=LUNG、StudyDate 区间,并排除增强扫描、层厚>3mm、含金属伪影的检查。这些条件应写成可执行的查询语句或筛选脚本,而不是口头约定。

三、伦理审查与数据脱敏

伦理审查(IRB/EC)是数据使用的合法性前提。申请材料通常需要说明:研究目的、数据范围、是否涉及可识别信息、数据存储与销毁方式、是否豁免知情同意。若使用回顾性数据且不接触患者,多数机构可申请免除知情同意,但必须通过伦理审批并保留批件编号。

脱敏的核心是去除或替换 18 类 HIPAA 规定的可识别信息。工程上分两步:

  • 直接标识符清除:删除或替换 PatientName、PatientID、BirthDate、InstitutionName、ReferringPhysicianName 等。PatientID 建议替换为研究编号(如 STUDY001_001),并保留映射表在受控环境。
  • 像素级脱敏:超声、X 光、CT 定位像中常烧录有姓名、日期、医院名称。需用 OCR 检测 + 区域遮盖,或直接裁剪边缘区域。仅改 Tag 不改像素,是常见的合规漏洞。
脱敏后必须做“反向验证”:随机抽取若干文件,用 DICOM 查看器检查所有 Tag 与像素,确认无可识别信息残留。建议将验证脚本纳入数据入库流程,每次导入自动执行。

四、隐私保护与多中心协作

多中心协作的难点在于:各中心数据不能直接出域,但模型需要跨中心训练。常见方案有三类:

  • 数据不出域 + 联邦学习:各中心本地训练,只上传模型参数或梯度,由协调方聚合。适合网络条件好、算力均衡的中心。
  • 集中式脱敏汇聚:各中心按统一脱敏规范处理后上传至可信第三方或数据平台,再统一训练。关键是脱敏规范与质量校验必须一致。
  • 模型出域 + 数据留域:训练好的模型到各中心做外部验证,只回传评估指标。适合验证阶段。

无论哪种方案,都需要统一的数据字典:检查类型、序列命名、层厚范围、重建核、标注规范。否则各中心数据在特征层面不可比,模型性能会被中心间差异淹没。

医学影像数据获取与合规链路 影像设备 / 模态 CT · MR · US · X-ray DICOM 3.0 输出 RIS 检查申请 / 预约 HL7 消息 PACS 影像归档 / 调阅 C-FIND / C-MOVE 报告系统 结构化报告 标注来源 伦理审查(IRB / EC) 研究目的 · 数据范围 · 知情同意豁免 · 存储与销毁 · 批件编号 Tag 级脱敏 PatientName / PatientID / BirthDate InstitutionName / ReferringPhysician 替换为研究编号 STUDY001_001 像素级脱敏 OCR 检测烧录文字 区域遮盖 / 边缘裁剪 反向验证:Tag + 像素双检 中心 A 本地脱敏 + 本地训练 仅上传模型参数 中心 B 统一数据字典 统一标注规范 中心 C 联邦聚合 / 外部验证 只回传评估指标 数据不出域 · 参数可流动 · 合规可追溯

五、工程落地要点

把上述环节串成可执行流程,建议至少落实以下四点:

  • 建立数据字典:明确每个字段的含义、来源、脱敏规则和允许值。例如 PatientID 替换规则、StudyDate 是否保留年份、SeriesDescription 是否保留。
  • 脱敏脚本化:用 pydicom 遍历 Tag,对敏感字段执行删除或替换;对像素区域用 OpenCV 做 OCR 检测与遮盖。脚本需版本管理,每次处理记录日志。
  • 质量校验:检查 DICOM 可读性、像素与 Tag 一致性、脱敏完整性、序列完整性(层数、层厚、间距)。建议输出校验报告,异常文件单独隔离。
  • 权限与审计:原始数据与脱敏数据分域存储,访问需审批与日志记录。多中心协作时,数据传输使用加密通道,映射表由专人保管。
一个实用的判断标准:如果拿到一份脱敏后的 DICOM,用查看器打开后既看不到患者姓名,也看不到烧录文字,且像素值经 Rescale 后能正确还原为 HU,那么这份数据基本满足建模与合规的双重要求。

数据获取与合规不是建模前的“杂活”,而是决定模型能否落地、能否通过审查、能否在多中心复现的基础工程。把 DICOM 读对、把 PACS 查准、把伦理走完、把脱敏做净、把协作规则定清,后续的特征提取与模型训练才有可靠的地基。