python dicom文件脱敏

"""
dicom文件脱敏脚本(python), 设置好脱敏字段后, 会将目标目录下所有的.dcm文件脱敏, 并原路径保存,
若需要保存到指定目录, 需要自己修改保存逻辑
"""
import pydicom
from pathlib import Path
from multiprocessing import Pool
from tqdm import tqdm


def desensitization(file_path):
    dicom_file = pydicom.dcmread(file_path, force=True)

    # print(df.data_element) # 查看 dicom 所有属性名, 值

    all_names = dicom_file.dir()  # 查看 dicom 有哪些可脱敏的属性
    # dicom文件不同, 所具有的属性也不一定都相同, 故此出需要设置你的dicom文件有的, 且需要脱敏的属性名
    filter_names = ['InstitutionName', 'InstitutionAddress', 'ReferringPhysicianName', 'StudyDescription',
                    'SeriesDescription', 'InstitutionalDepartmentName', 'PatientName', 'PatientBirthDate',
                    'OperatorsName']
    # print(all_names)
    for filter_name in filter_names:
        if filter_name not in all_names:
            print(f"\033[31mfile {file_path}\n {filter_name} is not in {all_names}, please check the input\033[0m")
            continue

        setattr(dicom_file, filter_name, '')

    dicom_file.save_as(str(file_path))  # 原路径保存脱敏文件




if __name__ == '__main__':
    file_paths = list(Path(r"待脱敏的文件根目录").glob('**/*.dcm')) # 会将根目录下所有dcm文件脱敏, windows 直接粘贴 windows 文件格式即可, r 会转译
    with Pool(processes=4) as pool:
        result = list(tqdm(pool.imap(desensitization, file_paths), total=len(file_paths)))



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dicom数据脱敏是保护患者隐私的重要措施,需要在数据处理和传输过程中进行。Python作为一种流行的编程语言,在Dicom数据脱敏中也有着广泛的应用。 一般来说,Dicom数据脱敏主要涉及三个方面的信息:个人识别信息、图像特征信息和其他诊断信息。针对这些信息,我们需要进行不同的脱敏处理。 对于个人识别信息,包括姓名、身份证号、电话号码等,可通过将其替换为伪数据或根本删除的方式实现脱敏。例如,我们可以对姓名进行匿名化处理,将其替换为"A001"、"A002"等伪数据;对于身份证号、电话号码等敏感信息,直接将其删除即可。 对于图像特征信息,包括患者病历号、影像号等,可通过进行泛化、加噪或脱敏算法等方式实现脱敏。常见的方法包括加噪算法、一致性哈希算法、数据加盐算法等。 除此之外,还要注意保护其他诊断信息,如检查日期、检查时间、医院名称、部门名称等,以免泄露患者信息。 最后,我们需要通过代码实现对Dicom数据的自动脱敏处理。这里我们以pydicom库为例,利用Python的循环语句进行批量处理,具体代码如下: import pydicom import os def dicom_desensitization(file_path): ds = pydicom.read_file(file_path) ds.PatientName = "A001" ds.PatientID = "00000" ds.AccessionNumber = "00000" ds.StudyID = "00000" ds.save_as(file_path) if __name__ == '__main__': path = "dicom_data/" file_names = os.listdir(path) for file_name in file_names: dicom_desensitization(path + file_name) 通过以上代码,我们可以将指定路径下的所有Dicom文件进行批量脱敏处理,实现对患者隐私信息的保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值