[BUG] DICOM Loader should ignore DICOMDIR insance
MMelQin opened this issue · 0 comments
MMelQin commented
Describe the bug
It was observed in one of the field integrations where
- the DICOMDIR instance was exported by Philips Carestream along with DICOM study/series instances, which was unnecessary or wrong in the strict sense because DICOMDIR is only written when DICOM studies are exported to portable media e.g. CD/DVD to describe the file set on the media
- the Informatics Gateway was not configured to ignore the SOP Class of DICOMDIR and the instances
- MD App SDK DICOM loader successfully reads and parses the DICOMDIR, and somehow adds it to the study and series. Since the specific DICOMDIR instance file has not been provided for examination, it can only be speculated that the DICOMDIR instance contains the study instance UID and series instance UID in it file set sequence, and those UID's are picked up while parsing the data set object, and hence added to the series
- the DICOMDIR instance, being part of a series, passed the series filter along with the other instances (with image pixel data) in the series
- the App SDK series to volume operator then had issues and failed as the DICOMDIR does not have the tags of an image instance, e.g. ImagePositionPatient
Steps/Code to reproduce bug
Test with a DICOM data set that's stored on portable media with a DICOMDIR at the root
Expected behavior
The App SDK DICOM loader should be more robust to ignore DIRCOMDIR instance should it be exported or present with legitimate instances of a series
Environment details (please complete the following information)
- OS/Platform: Ubuntu 22.04 LTS
- Python Version: 3.8/3/10
- Method of MONAI Deploy App SDK install: in a MONAI Application Package [pip, Docker]
- SDK Version: 0.5.1
Additional context
It is a field config issue, which can be addressed by not exporting the DICOMDIR from PACS, and/or configuring the MONAI Informatics Gateway to ignore the DICOMDIR instances. The App SDK DICOM loader, however, can be made more resilient if all the other upstream components fails