"""
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)))
python dicom文件脱敏
于 2023-11-13 10:47:13 首次发布