Edit this page

NA-MIC Project Weeks

Back to Projects List

Extending DICOM-SR support in dcmjs and adding test cases

Key Investigators

Project Description

Objective

  1. Identify gaps in dcmjs for reading/writing DICOM-SR
  2. Add support for freehand and segmentation
  3. Convert AIM to DICOM-SR and DICOM-SR to AIM and show interoperability between ePAD, OHIF and Slicer 3D

Approach and Plan

  1. Find some test data and generate test cases for Length and Bidirectional
  2. Find some segmentation and/or freehand DICOM-SRs, convert to AIM and back
  3. Complete freehand and segmentation implementations and add test cases

Progress and Next Steps

  1. dcmjs already has full implementation for Length and Bidirectional
  2. aimapi has the draft implementation on for the conversion of AIM to DICOM-SR and back
  3. Got test data from Andrey ([https://www.dropbox.com/s/98rylgt25b2sm9r/planar_annotations.zip?dl=0]).
    • The sample has 1 prostate, one lung.
    • They have SCOORD and SCOORD3D instead of measurements to identify polyline and point respectively. dcmjs support is dependent on the measurement existance
    • for point dcmjs point object expects a CONTAINS:NUM:center => inferred from: SCOOR3D: point structure, whereas the sample point has CONTAINS:SCOORD3D:Image Region
    • for polyline (bounding box), dcmjs has no measurement support implemented for freehand. biridectional implemetation is like CONTAINS:NUM:LongAxis => INFERRED FROM: SCOORD: POLYLINE whereas the sample has CONTAINS:COORD:Image Region=POLYLINE => SELECTED FROM: IMAGE
  4. Put sample datasets to data releases
  5. Added reading tests for each shape
  6. Added adapter test sample for bidirectional
  7. Implemented freehand DICOMSR writing and reading. And tested it by the conversion of AIM to DICOMSR. Freehand AIM Freehand DICOMSR
    • It uses the TID 300 representation and adds the ROI multiple times for each calculation. David Clunie suggested we use TID 1401, put the ROI first and add the measurements as children. The discussion is on github PR. We will fix this as a future work but it needs more discussion about changing the implementation for other shapes and how to support the old DICOM SRs. We will add test cases when the implementation is finalized
  8. Converted length and bidirectional sample DICOMSRs to AIMs. Loaded in ePAD and OHIF
  9. Remaining gaps:
    • Support for planar ROIs with no measurements
    • Saving and reading TID 1401 template
    • Segmentation implementation
    • The unit of pixel values are either SUV for PETs or HU (otherwise). I added pixelUnit support to the tool, but currently cornerstone tools doesn’t support it so it defaults to this behavior
    • Multiple Measurement Groups/ROIs in one DICOMSR
    • Point/Probe shape support

Illustrations

Crowds Cure Cancer 2017 Length in OHIF Crowds Cure Cancer 2017 Length in OHIF

Crowds Cure Cancer 2017 Length in ePAD Crowds Cure Cancer 2017 Length in ePAD

Crowds Cure Cancer 2018 Bidirectional in OHIF Crowds Cure Cancer 2018 Bidirectional in OHIF

Crowds Cure Cancer 2018 Bidirectional in ePAD Crowds Cure Cancer 2018 Bidirectional in ePAD

Freehand DICOMSR in DICOM Image Viewer Freehand DICOMSR in DICOM Image Viewer

Background and References

  1. dcmjs library https://github.com/dcmjs-org/dcmjs
  2. aimapi library https://github.com/RubinLab/aimapi-js
  3. epadlite dicomsr branch https://github.com/RubinLab/epadlite/tree/feature/dicomsr