2

I am editing the meta data of multiple dicom images, divided between dicomdirs. I have successfully loaded the dicomdir, traversed it to find the images, edited their meta data and overwritten the original dicom files.

I then successfully overwrite the dicomdir file itself but when I try to open it (for example with Aeskulap) it gives an error message which says "No study or bad DICOMDIR".

When I try to rerun my code I get the following error messages:

Traceback (most recent call last):
File "dicom_run.py", line 28, in <module>
dicom_dir = read_dicomdir(list_files[0])
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 883, in read_dicomdir
ds = dcmread(filename)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 850, in dcmread
force=force, specific_tags=specific_tags)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 741, in read_partial
is_implicit_VR, is_little_endian)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/dicomdir.py", line 57, in __init__
self.parse_records()
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/dicomdir.py", line 95, in parse_records
child = map_offset_to_record[child_offset]
KeyError: 504

When I access the individual dicom files within the directory they load just fine so the problem is how I'm overwriting the dicomdir.

I do so using the following code

import pydicom
from pydicom.filereader import read_dicomdir

# Load dicomdir
dicom_dir = read_dicomdir(<path_to_dicomdir>)

# Here I just traverse the dicom_dir object 
# as is outlined here: 
# https://pydicom.github.io/pydicom/stable/auto_examples/input_output/plot_read_dicom_directory.html

# Then I (successfully) overwrite the dicomdir with

dicom_dir.save_as(<path_to_dicomdir>)      

I have also tried to use the write_file and write_dataset functions as detailed here: https://pydicom.github.io/pydicom/stable/api_ref.html#module-pydicom.filewriter

again unsuccessfully. I have a backup of the original dicomdir file and when I replace that everything works fine again (and the meta data of each image has been edited). I'm completely lost here.

Edit: https://github.com/pydicom/pydicom/issues/918

I stumbled upon this. Guess I'll have to do it another way.

jommi
  • 21
  • 2
  • I have the exact same error. Anyone has a solution for this? It onyl happens when I modify certain elements, e.g. the PatientName. One could probably use FileSet? – Stiefel Jun 30 '21 at 19:25

1 Answers1

0

I used dcmmkdir and wrote a small bash script that entered all the folders and ran dcmmkdir +r which successfully overwrote the dicomdir files.

jommi
  • 21
  • 2