diff OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp @ 5590:8b32213af23e find-refactoring

replaced FindRequest::ResponseContent by booleans
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 03 May 2024 18:17:53 +0200
parents b51ee994cd6f
children 1e2631b8b9af
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp	Fri May 03 17:26:06 2024 +0200
+++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp	Fri May 03 18:17:53 2024 +0200
@@ -245,43 +245,34 @@
       if (expand)
       {
         // compatibility with default expand option
-        FindRequest::ResponseContent responseContent = static_cast<FindRequest::ResponseContent>(FindRequest::ResponseContent_MainDicomTags |
-                                   FindRequest::ResponseContent_Metadata |
-                                   FindRequest::ResponseContent_Labels);
-        
-        if (requestedTags.size() > 0 && resourceType != ResourceType_Instance) // if we are requesting specific tags that might be outside of the MainDicomTags, we must get a childInstanceId too
-        {
-          responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_ChildInstanceId);
-        }
+        request.SetRetrieveTagsAtLevel(resourceType, true);
+        request.SetRetrieveMetadata(true);
+        request.SetRetrieveLabels(true);
+
         if (resourceType == ResourceType_Series)
         {
-          responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_ChildrenMetadata); // required for the SeriesStatus
+          request.SetRetrieveChildrenMetadata(true); // required for the SeriesStatus
         }
-        if (resourceType != ResourceType_Instance)
-        {
-          responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Children);
-        }
+
         if (resourceType == ResourceType_Instance)
         {
-          responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Attachments); // for FileSize & FileUuid
+          request.SetRetrieveAttachments(true); // for FileSize & FileUuid
         }
+        else
+        {
+          request.SetRetrieveChildrenIdentifiers(true);
+        }
+
         if (resourceType != ResourceType_Patient)
         {
-          responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Parent);
+          request.SetRetrieveParentIdentifier(true);
         }
 
-        request.SetResponseContent(responseContent);
-        request.SetRetrieveTagsAtLevel(resourceType, true);
-
         if (resourceType == ResourceType_Study)
         {
           request.SetRetrieveTagsAtLevel(ResourceType_Patient, true);
         }
       }
-      else
-      {
-        request.SetResponseContent(FindRequest::ResponseContent_IdentifiersOnly);
-      }
 
       if (call.HasArgument("limit") ||
           call.HasArgument("since"))
@@ -311,18 +302,18 @@
       // TODO-FIND: put this in an AnswerFindResponse method !
       Json::Value answer = Json::arrayValue;
 
-      if (request.IsResponseIdentifiersOnly())
+      if (expand)
       {
         for (size_t i = 0; i < response.GetSize(); i++)
         {
-          answer.append(response.GetResource(i).GetIdentifier());
+          context.AppendFindResponse(answer, request, response.GetResource(i), format, requestedTags, true /* allowStorageAccess */);
         }
       }
       else
       {
         for (size_t i = 0; i < response.GetSize(); i++)
         {
-          context.AppendFindResponse(answer, request, response.GetResource(i), format, requestedTags, true /* allowStorageAccess */);
+          answer.append(response.GetResource(i).GetIdentifier());
         }
       }