ImagingDataCommons / highdicom

High-level DICOM abstractions for the Python programming language
https://highdicom.readthedocs.io
MIT License
167 stars 35 forks source link

"overlay-plane" module is not listed in "_module.py" file #33

Open afshinmessiah opened 4 years ago

afshinmessiah commented 4 years ago

In the list of iods ( _iod.py), "overlay-plane" is listed as a module for pet-image. In _module.py file though, there is no such module as "overlay-plane" to get the list of its attributes.

afshinmessiah commented 4 years ago

The complete list of missing modules:

  1. module multi-frame-overlay missing from iod: nm-image
  2. module multi-frame-overlay missing from iod: rt-dose
  3. module multi-frame-overlay missing from iod: x-ray-angiographic-image
  4. module multi-frame-overlay missing from iod: xrf-image
  5. module overlay-activation missing from iod: color-softcopy-presentation-state
  6. module overlay-activation missing from iod: grayscale-softcopy-presentation-state
  7. module overlay-activation missing from iod: pseudo-color-softcopy-presentation-state
  8. module overlay-activation missing from iod: xa-xrf-grayscale-softcopy-presentation-state
  9. module overlay-plane missing from iod: cr-image
  10. module overlay-plane missing from iod: ct-image
  11. module overlay-plane missing from iod: digital-intra-oral-x-ray-image
  12. module overlay-plane missing from iod: digital-mammography-x-ray-image
  13. module overlay-plane missing from iod: digital-x-ray-image
  14. module overlay-plane missing from iod: mr-image
  15. module overlay-plane missing from iod: pet-image
  16. module overlay-plane missing from iod: sc-image
  17. module overlay-plane missing from iod: us-image
  18. module overlay-plane missing from iod: vl-endoscopic-image
  19. module overlay-plane missing from iod: vl-microscopic-image
  20. module overlay-plane missing from iod: vl-photographic-image
  21. module overlay-plane missing from iod: vl-slide-coordinates-microscopic-image
hackermd commented 4 years ago

These are all retired attributes containing x in the group or element part of the tag. pydicom stores those attributes not in the pydicom._dicom_dict.DicomDictionary but in a separate pydicom._dicom_dict.RepeatersDictionary and looking up the keyword corresponding to the tag requires a workaround.

Should be fixed with 6fd6e8ef67439cd7fa0f67724210bce10d79175b.

@afshinmessiah could you please confirm? It would also be great if you could add a few unit tests.

afshinmessiah commented 4 years ago

I checked the newly generated _iod and _module files. Some modules are missing:

  1. module real-time-audio-waveform-current-frame-functional-groups missing from iod: real-time-audio-waveform
  2. module real-time-video-endoscopic-image-current-frame-functional-groups missing from iod: real-time-video-endoscopic-image
  3. module real-time-video-photographic-image-current-frame-functional-groups missing from iod: real-time-video-photographic-image

I've not added unit-tests yet but I will soon.

hackermd commented 4 years ago

Yes, the attributes in Current Frame Functional Groups Module with group 0006 are skipped, since they are not part of the DICOM Dictionary.

We could handle that special case separate if needed. Out of curiosity, what do you need these attributes for?

afshinmessiah commented 4 years ago

No, I don't need them. I just ran a test on all iods and modules to see if all modules are included.

hackermd commented 4 years ago

No, I don't need them. I just ran a test on all iods and modules to see if all modules are included.

Ok. Thanks for the effort. I can include them for completeness (by hardcoding 0006 attributes).

If you already have test procedures to evaluate completeness, it would be great if we could include them into the unit tests located in /tests.