diff Framework/Toolbox/OrthancSlicesLoader.cpp @ 421:f87f28624b96 cache-in-radiography

tentative to make SmartLoader and RadiographyScene work together (not really working)
author am@osimis.io
date Tue, 20 Nov 2018 16:35:29 +0100
parents aee3d7941c9b
children
line wrap: on
line diff
--- a/Framework/Toolbox/OrthancSlicesLoader.cpp	Mon Nov 19 12:45:37 2018 +0100
+++ b/Framework/Toolbox/OrthancSlicesLoader.cpp	Tue Nov 20 16:35:29 2018 +0100
@@ -189,7 +189,7 @@
   }
   
   
-  void OrthancSlicesLoader::SortAndFinalizeSlices()
+  void OrthancSlicesLoader::SortAndFinalizeSlices(const OrthancPlugins::FullOrthancDataset& dicomTags)
   {
     bool ok = false;
     
@@ -211,6 +211,7 @@
     {
       LOG(INFO) << "Loaded a series with " << slices_.GetSliceCount() << " slice(s)";
       EmitMessage(SliceGeometryReadyMessage(*this));
+      EmitMessage(SliceTagsReadyMessage(*this, dicomTags));
     }
     else
     {
@@ -236,6 +237,12 @@
     const Json::Value& series = message.GetJson();
     Json::Value::Members instances = series.getMemberNames();
     
+    if (instances.size() < 1)
+    {
+      throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem);
+    }
+    OrthancPlugins::FullOrthancDataset firstInstanceDataSet(series[instances[0]]);
+
     slices_.Reserve(instances.size());
     
     for (size_t i = 0; i < instances.size(); i++)
@@ -264,8 +271,8 @@
         }
       }
     }
-    
-    SortAndFinalizeSlices();
+
+    SortAndFinalizeSlices(firstInstanceDataSet);
   }
   
   void OrthancSlicesLoader::ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message)
@@ -301,7 +308,7 @@
       }
     }
     
-    SortAndFinalizeSlices();
+    SortAndFinalizeSlices(dataset);
   }
   
   
@@ -324,6 +331,7 @@
       LOG(INFO) << "Loaded instance geometry " << instanceId;
       slices_.AddSlice(slice.release());
       EmitMessage(SliceGeometryReadyMessage(*this));
+      EmitMessage(SliceTagsReadyMessage(*this, dataset));
     }
     else
     {