个人医疗影像资料业余科普

  很多人都去过医院拍过片,医院给到的胶片照片通常不易保存,在有需要查看病情发展或有需求做互联网远程问诊的情况下,就非常不方便。我们可以将数字化的影像资料做保存,已备不时之需。这里 Alliot 查阅了一部分资料,大致做一下介绍。Alliot 非医疗行内人士,因此全文仅与影像资料格式处置思路有关,不涉及任何医学相关内容与建议,可以放心阅读。

DICOM是什么

医疗数位影像传输协定(DICOM,Digital Imaging and Communications in Medicine)是一组通用的标准协定,在对于医学影像的处理、储存、打印、传输上。它包含了档案格式的定义及网络通信协定。DICOM是以TCP/IP为基础的应用协定,并以TCP/IP联系各个系统。两个能接受DICOM格式的医疗仪器间,可借由DICOM格式的档案,来接收与交换影像及病人资料。 https://zh.wikipedia.org/wiki/DICOM

  DICOM 格式本身不仅是图像内容,还包括与检查和诊断相关的信息。这些信息以DICOM 元素的形式储存在 DICOM 文件中。因此导出 JPG 等图片格式后再进行存储是不合适的。

如何获取

  一般来说,影像设备(如 CT/MRI 扫描)与医院的PACS(影像归档与通信系统)都是连在局域网内的。设备产生的影像,通过标准 DICOM 接口发送到 PACS 的服务器上,影像科的医生会通过 PACS 来调阅影像资料。
  大部分医院放射影像科是可以提供刻录光盘服务的(收费,一般20元左右的物料费)。影像科会通过 便携医学影像信息发布模式(PDI) 刻录光盘给到患者,光盘内 /DICOM 路径下即我们需要的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
========================================================================================
PDI (Portable Data for Imaging) Contents
========================================================================================

Institution:


This collection was created with Advantage Workstation (AW4.7 ext 16) as a manifestation of the IHE Portable Data for Imaging application profile.
(c) 2010 GE Medical Systems

Contents
----------------

README.TXT - this file.
INDEX.HTM - contains information about the images written on this media.
/DICOM - directory of the DICOM images.
/IHE_PDI - the DICOM Directory content in web viewable format.

如何查看DICOM文件

  从前面了解到的知识可以知道,DICOM 并不是普通的单纯的图片,因此使用操作系统自带的图片浏览器是无法查看的,Photoshop 可以预览,但所得很有限。这里推荐两款读取软件:
horos 这款比较多的医生推荐,不过好像 Alliot 用不到那么多功能,学习成本也稍高,所以没做过多的了解,相关专业的同学可能更清楚。

  Alliot 使用的是,小赛看看 ,国人开发的一款 DICOM 阅片软件,操作比较简单,打开就能用。支持 Windows 与 MacOS,于非专业人员来说,算够用了。

互联网传输脱敏

  前面说到 DICOM 文件会保存患者部分信息,网络存储或传输时为避免患者信息泄漏,尽量考虑做脱敏操作。(源文件可以考虑压缩包加密并离线保存,已备不时之需)。
  Python 下, pydicom 包能够处理 DICOM 文件,其中就包括对 DICOM 文件元数据的修改,我们可以用它来实现脱敏操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import glob
import pydicom as dicom


def clear_dcm(dcm_path):
# /*/* 取决于你传入目录内的目录层数
file_list = glob.glob(dcm_path + "/*/*", recursive=True)

ds_list = [(dicom.dcmread(file), file) for file in file_list]
print(file_list)
for ds in ds_list:
# 存在多个信息,这里只列举比较敏感的部分
ds[0].PatientName = 'zhangsan'
ds[0].PatientID = ''
ds[0].PatientBirthDate = ''
ds[0].InstitutionName = 'none'
ds[0].InstitutionAddress = ''
ds[0].OperatorName = ''
ds[0].ReferrringPhysicianName = ''

ds[0].save_as(ds[1])
print("success")

# dicom 文件路径,
path = "/home/alliot/DICOM_1"
clear_dcm(path)

结语

  就寻医问诊的亲身经历来说,当下平民的医疗环境确实一般,医疗资源的紧缺,求医难是无法避免的。但专业的事情必须交给专业的人干,患者能够做的只能是用相对科学的方法与态度去看待,尽量准确的给到病情资料,减少医生与你的沟通成本,方便医生对病情做出准确且及时的判断,方便诊治。
  这里拜谢 @Dr.Pika 给到的专业、耐心细致的分析与建议,如果有幸您也是一位医者,看到这里,或许可以去到 Dr.Pika 的个人博客逛逛,相信您一定会有不小的收获。

参考资料/拓展阅读

医院里面 CT、MRI 影像文件是什么格式,可以问医生要走吗? - 知乎

处理医疗影像的Python利器:PyDicom

DICOM - 维基百科