python 醫學影像 pydicom 如何寫入子階層資料?

最近正好遇到這個問題

因為在 dicom 中資料是有階層的

大部分資料是沒有

但是一部分資料是有在階層中

類似於分類

例如 放射相關的資料

 

然後如果要查對應的位置與類型可以在這邊查詢

https://www.dicomlibrary.com/dicom/dicom-tags/

 

baseDcm 是檔案名稱

AS TM DS 是資料類型

所以寫入子階層的重點是

新增一個 Dataset 物件

放在 list 中

再放到 DataElement 就可以

例如以下這樣

 

 

 

from pydicom.dataset import Dataset, DataElement
import pydicom

# 讀取原本影像基本資料 ds = pydicom.dcmread(baseDcm, force=False) ds[0x0010,0x1010] = DataElement(0x00101010, 'AS', PatientAgeStr) # Radiopharmaceutical 資料需要寫在階層裡面 radDs = Dataset() # (0054,0016) Radiopharmaceutical Information Sequence radDs[0x0018,0x1072] = DataElement(0x00181072, 'TM', RadiopharmaceuticalStartTimeStr) # (0018,1072) TM Radiopharmaceutical Start Time radDs[0x0018,0x1073] = DataElement(0x00181073, 'TM', RadiopharmaceuticalStopTimeStr) # (0018,1073) Radiopharmaceutical Stop Time 130900.00 radDs[0x0018,0x1074] = DataElement(0x00181074, 'DS', RadionuclideTotalDoseStr) # (0018,1074) Radionuclide Total Dose 259000000 radDs[0x0018,0x1075] = DataElement(0x00181075, 'DS', RadionuclideHalfLifeStr) # (0018,1075) Radionuclide Half Life 6586.200195 ds[0x0054,0x0016] = DataElement(0x00540016, 'SQ', [radDs])     ds.save_as(nowDcm)

給大家參考囉~