diff Framework/Toolbox/DicomStructureSet.cpp @ 118:a4d0b6c82b29 wasm

using Orthanc::DicomMap instead of OrthancPlugins::DicomDatasetReader
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 02 Oct 2017 14:31:26 +0200
parents 2eca030792aa
children e66b2c757790
line wrap: on
line diff
--- a/Framework/Toolbox/DicomStructureSet.cpp	Thu Sep 28 16:55:51 2017 +0200
+++ b/Framework/Toolbox/DicomStructureSet.cpp	Mon Oct 02 14:31:26 2017 +0200
@@ -26,6 +26,7 @@
 #include <Core/Logging.h>
 #include <Core/OrthancException.h>
 #include <Plugins/Samples/Common/FullOrthancDataset.h>
+#include <Plugins/Samples/Common/DicomDatasetReader.h>
 
 #include <stdio.h>
 #include <boost/lexical_cast.hpp>
@@ -62,11 +63,21 @@
   }
 
 
-  CoordinateSystem3D DicomStructureSet::ExtractSliceGeometry(double& sliceThickness,
-                                                        OrthancPlugins::IOrthancConnection& orthanc,
-                                                        const OrthancPlugins::IDicomDataset& tags,
-                                                        size_t contourIndex,
-                                                        size_t sliceIndex)
+  static bool ParseVector(Vector& target,
+                          const OrthancPlugins::IDicomDataset& dataset,
+                          const OrthancPlugins::DicomPath& tag)
+  {
+    std::string value;
+    return (dataset.GetStringValue(value, tag) &&
+            GeometryToolbox::ParseVector(target, value));
+  }
+
+  CoordinateSystem3D DicomStructureSet::
+  ExtractSliceGeometry(double& sliceThickness,
+                       OrthancPlugins::IOrthancConnection& orthanc,
+                       const OrthancPlugins::IDicomDataset& tags,
+                       size_t contourIndex,
+                       size_t sliceIndex)
   {
     using namespace OrthancPlugins;
 
@@ -80,10 +91,11 @@
     }
 
     DicomDatasetReader reader(tags);
-    std::string parentUid = reader.GetMandatoryStringValue(DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, contourIndex,
-                                                                     DICOM_TAG_CONTOUR_SEQUENCE, sliceIndex,
-                                                                     DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
-                                                                     DICOM_TAG_REFERENCED_SOP_INSTANCE_UID));
+    std::string parentUid = reader.GetMandatoryStringValue
+      (DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, contourIndex,
+                 DICOM_TAG_CONTOUR_SEQUENCE, sliceIndex,
+                 DICOM_TAG_CONTOUR_IMAGE_SEQUENCE, 0,
+                 DICOM_TAG_REFERENCED_SOP_INSTANCE_UID));
 
     Json::Value parentLookup;
     MessagingToolbox::RestApiPost(parentLookup, orthanc, "/tools/lookup", parentUid);
@@ -126,7 +138,7 @@
     CoordinateSystem3D slice(parentTags);
 
     Vector v;
-    if (GeometryToolbox::ParseVector(v, parentTags, DICOM_TAG_SLICE_THICKNESS) &&
+    if (ParseVector(v, parentTags, DICOM_TAG_SLICE_THICKNESS) &&
         v.size() > 0)
     {
       sliceThickness = v[0];
@@ -201,8 +213,8 @@
                                                    "No interpretation");
 
       Vector color;
-      if (GeometryToolbox::ParseVector(color, tags, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
-                                                              DICOM_TAG_ROI_DISPLAY_COLOR)) &&
+      if (ParseVector(color, tags, DicomPath(DICOM_TAG_ROI_CONTOUR_SEQUENCE, i,
+                                             DICOM_TAG_ROI_DISPLAY_COLOR)) &&
           color.size() == 3)
       {
         structures_[i].red_ = ConvertColor(color[0]);