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)))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值