RTSTRUCT (generated externally) loads in OHIF, but exporting from OHIF (with or without edits) generates an RTSTRUCT that doesn't load properly in 3dslicer likely due to invalid ROIContourSequence

Issue #34 resolved
Z-Kate Alpert created an issue

Sample data: https://mdacc-vie-dev-20220228-2048.dev.radiologics.com/app/action/DisplayItemAction/search_element/xnat%3AmrSessionData/search_field/xnat%3AmrSessionData.ID/search_value/XNAT01_E00005/project/RTStruct_export_issue

The original, imported RTSTRUCT: RTstruct  

This RTSTRUCT is generated by QURIT-UTILS and then imported into XNAT.

dciodvfy:

RTStructureSet
Error - </ReferringPhysicianName(0008,0090)> - Missing attribute for Type 2 Required - Module=<GeneralStudy>
Error - </OperatorsName(0008,1070)> - Missing attribute for Type 2 Required - Module=<RTSeries>
Error - </FrameOfReferenceUID(0020,0052)> - Missing attribute for Type 1 Required - Module=<FrameOfReference>
Error - </PositionReferenceIndicator(0020,1040)> - Missing attribute for Type 2 Required - Module=<FrameOfReference>

The RTSTRUCT which I opened in XNAT OHIF and then exported without edits: test 

I imported RTstruct into the OHIF viewer, and then immediately exported out of OHIF renamed as 'test' without any edits being performed.

dciodvfy

RTStructureSet
Error - </PatientSex(0010,0040)> - Missing attribute for Type 2 Required - Module=<Patient>
Error - </ROIContourSequence(3006,0039)[1]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[2]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[3]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[4]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[5]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[6]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame
Error - </ROIContourSequence(3006,0039)[7]/ContourSequence(3006,0040)[1]/ContourImageSequence(3006,0016)[1]/ReferencedFrameNumber(0008,1160)> - Shall not be present for Referenced SOP Class that is not multi-frame

The RTSTRUCT which I opened in XNAT OHIF and then edited and exported: ROIs_RY 

This is RTstruct which was imported into the OHIF viewer and then the ROIs were edited and exported by the OHIF viewer as ‘ROIs_RY’

dciodvfy basically same as above

3DSlicer:

  • The original i.e. RTstruct loads all 3 views (axial, sag and coronal) and projects the ROIs with correct labels and correct color LUTs in all three views when loaded in 3DSlicer.
  • The unedited+exported ‘test’ and the edited+exported ‘ROIs_RY' load in 3D-Slicer but only in one view (axial, in which in was originally rendered, with the other two views highly distorted) AND color LUTs for the ROIs aren’t respected (they show up as grayscale).

Comments (2)

  1. Mo Alsad

    I believe this issue has now been resolved. The color data is stored into the AIM format at the JS part, and then used to populate ROIDisplayColor values during the conversion to RTStruct format at the backend. I was also able to display the exported RTS files in Slicer as expected.

    When building the plugin jar, please make sure to set vEtherJ = '1.1.4-SNAPSHOT' in build.gradle, and pull the most recent dev branch in ohifviewerxnat.

    Please have a go and let me know how it goes.

  2. Log in to comment