diff OrthancServer/OrthancRestApi/OrthancRestApi.cpp @ 2899:5dd649de253d

POST-ing a DICOM file to "/instances" also answers the patient/study/series ID
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 18 Oct 2018 12:03:51 +0200
parents 251614c2edac
children ae20fccdd867
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestApi.cpp	Thu Oct 18 11:44:17 2018 +0200
+++ b/OrthancServer/OrthancRestApi/OrthancRestApi.cpp	Thu Oct 18 12:03:51 2018 +0200
@@ -40,20 +40,46 @@
 
 namespace Orthanc
 {
-  void OrthancRestApi::AnswerStoredResource(RestApiPostCall& call,
-                                            const std::string& publicId,
-                                            ResourceType resourceType,
-                                            StoreStatus status) const
+  static void SetupResourceAnswer(Json::Value& result,
+                                  const std::string& publicId,
+                                  ResourceType resourceType,
+                                  StoreStatus status)
   {
-    Json::Value result = Json::objectValue;
+    result = Json::objectValue;
 
     if (status != StoreStatus_Failure)
     {
       result["ID"] = publicId;
       result["Path"] = GetBasePath(resourceType, publicId);
     }
+    
+    result["Status"] = EnumerationToString(status);
+  }
 
-    result["Status"] = EnumerationToString(status);
+
+  void OrthancRestApi::AnswerStoredInstance(RestApiPostCall& call,
+                                            DicomInstanceToStore& instance,
+                                            StoreStatus status) const
+  {
+    Json::Value result;
+    SetupResourceAnswer(result, instance.GetHasher().HashInstance(), 
+                        ResourceType_Instance, status);
+
+    result["ParentPatient"] = instance.GetHasher().HashPatient();
+    result["ParentStudy"] = instance.GetHasher().HashStudy();
+    result["ParentSeries"] = instance.GetHasher().HashSeries();
+
+    call.GetOutput().AnswerJson(result);
+  }
+
+
+  void OrthancRestApi::AnswerStoredResource(RestApiPostCall& call,
+                                            const std::string& publicId,
+                                            ResourceType resourceType,
+                                            StoreStatus status) const
+  {
+    Json::Value result;
+    SetupResourceAnswer(result, publicId, resourceType, status);
     call.GetOutput().AnswerJson(result);
   }
 
@@ -100,7 +126,7 @@
     std::string publicId;
     StoreStatus status = context.Store(publicId, toStore);
 
-    OrthancRestApi::GetApi(call).AnswerStoredResource(call, publicId, ResourceType_Instance, status);
+    OrthancRestApi::GetApi(call).AnswerStoredInstance(call, toStore, status);
   }