怎么隐去 DICOM 图像上的病人信息

讲课、写论文、做会诊截图,通常要先隐去病人信息。但这件事分两个层面,做法完全不同,先分清你要的是哪一种。

显示层脱敏 ≠ 文件层脱敏

做了什么 适用场景 原始文件改了吗
显示层 屏幕上不再显示病人信息 讲课、论文插图、会诊截图 没有
文件层 从文件里删除或改写含隐私的标签 对外分享数据、提交数据集、多中心研究 改了

如果只是要"截个图发出去",显示层就够了。但如果要把数据文件交给别人,必须做文件层脱敏 —— 否则对方拿到文件,用任何阅片软件都能看到完整的病人信息。

显示层:用隐私开关

  1. 打开"组件可见性"按钮的下拉菜单。
  2. 关掉其中的 隐私 一项。

图像四角的病人姓名等信息随即隐藏,此时截图或另存为图像都很稳妥。同一个菜单里还能控制图像说明、刻度尺、覆盖层、交叉参考线的显示。

注意:这个开关只影响屏幕显示,DICOM 文件本身没有任何改动。

分享前先看看文件里到底有什么

建议先查一遍。点击文件信息按钮,VolumeShop 会弹出窗口,列出当前文件的全部 DICOM 数据元,按标签(Tag)、值表示(VR)、值多重性(VM)、值长度、描述、值逐项展示。

DICOM 文件头显示
文件信息窗口:逐项列出 DICOM 标签与取值

常见需要关注的标签:

标签 含义
(0010,0010) 病人姓名
(0010,0020) 病人 ID
(0010,0030) 出生日期
(0010,0040) 性别
(0008,0080) 机构名称
(0008,0090) 检查医生姓名
(0008,0020) 检查日期

文件层脱敏:VolumeShop 现在可以直接做

从 1.7.1 起,VolumeShop 提供匿名化导出:在“保存文件”按钮下拉菜单选择“匿名化”,再选择范围(当前图像、当前序列、当前检查、当前病人、全部打开的序列),即可得到去掉身份信息的副本。

匿名化会清空姓名、病人 ID、出生日期、性别、机构名称、医生姓名等标签,删除厂商私有标签,并重新生成 UID(同一检查内保持一致)。原始文件不会被修改,匿名副本写到单独的目录里,不会覆盖原数据。

如果需要更细的控制(例如只改某几个标签,或接入自己的脱敏流程),仍可以用下面的工具:

pydicom(Python)

import pydicom

ds = pydicom.dcmread("IM-0001-0001.dcm")
ds.PatientName = "Anonymous"
ds.PatientID = "ANON-0001"
ds.PatientBirthDate = ""
ds.InstitutionName = ""
ds.save("IM-0001-0001-anon.dcm")

DCMTK(命令行)

dcmodify -m "(0010,0010)=ANONYMOUS" -m "(0010,0020)=ANON-0001" IM-0001-0001.dcm

脱敏时容易踩的坑

  • 私有标签:厂商私有标签里也可能藏着身份信息,只改标准标签不够。改完建议再用文件信息窗口复查一遍。
  • 烧录文字:有些设备的图像像素本身被叠加了文字(burned-in annotation),这种情况下改标签没有用,必须先在图像上确认没有叠加文字。
  • 整个检查一起处理:一份检查有几十到几千个文件,别只改了几个就发出去。
  • 合规:涉及临床数据,请遵循所在机构的伦理与数据管理规定。

相关


相关指南

免费下载 VolumeShop