Приведенный ниже код запросит количество тегов и значений для ввода.Это предполагает, что все теги находятся в словаре DICOM, и в этом случае вам не нужен VR;Pydicom будет искать его.Благодаря последнему коду в репозитории pydicom тегом также может быть ключевое слово DICOM, например, «PatientName», «PatientID».
В соответствии с обычным присвоением pydicom, код будет изменять элемент данных, если он уже существует;в противном случае он будет добавлен.
Все наборы данных изменяются одинаково.Если это не то, что вам нужно, вы можете сначала выполнить цикл по наборам данных и вводить теги и значения только для этого набора данных.
from pydicom import dcmread
from pydicom.tag import Tag
import glob
image_path_list = glob.glob(r"c:\temp\dicom\*.dcm")
datasets = [dcmread(filepath) for filepath in image_path_list]
print("\n\nEnter tag=value, one per line. When done, enter blank and datasets will be written)")
while True:
pair = input("Enter in form tag=value...:")
if pair == "":
break
if "=" not in pair:
print("Entry must contain an = sign")
print()
continue
# Parse line, stripping away extra spaces
tag, value = [x.strip() for x in pair.split("=")]
try:
tag = Tag(tag)
except:
print("Tag not in a valid format")
print()
continue
for ds in datasets:
ds[tag].value = value
# Write all the modifications:
for ds in datasets:
ds.save_as(ds.filename)
Пример использования:
Enter in form tag=value...:0x100010=Lastname^Firstname
Enter in form tag=value...:0x100020=id123
Enter in form tag=value...:SliceLocation=23.5
Enter in form tag=value...: