diff OrthancServer/Sources/Database/FindResponse.cpp @ 5619:1864b16bc7b1 find-refactoring

added FindRequest::ParentRetrieveSpecification
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 11 May 2024 12:13:31 +0200
parents d4b570834d3a
children 732ec9feeea8
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/FindResponse.cpp	Sat May 11 11:23:25 2024 +0200
+++ b/OrthancServer/Sources/Database/FindResponse.cpp	Sat May 11 12:13:31 2024 +0200
@@ -477,63 +477,38 @@
       target["ParentID"] = GetParentIdentifier();
     }
 
-    if (request.IsRetrieveMainDicomTags(ResourceType_Patient))
+    if (request.IsRetrieveMainDicomTags())
     {
       DicomMap m;
-      GetMainDicomTags(m, ResourceType_Patient);
-      DebugDicomMap(target["Patient"]["MainDicomTags"], m);
-    }
-
-    if (request.IsRetrieveMetadata(ResourceType_Patient))
-    {
-      DebugMetadata(target["Patient"]["Metadata"], GetMetadata(ResourceType_Patient));
+      GetMainDicomTags(m, request.GetLevel());
+      DebugDicomMap(target[EnumerationToString(GetLevel())]["MainDicomTags"], m);
     }
 
-    if (request.GetLevel() != ResourceType_Patient)
+    if (request.IsRetrieveMetadata())
     {
-      if (request.IsRetrieveMainDicomTags(ResourceType_Study))
-      {
-        DicomMap m;
-        GetMainDicomTags(m, ResourceType_Study);
-        DebugDicomMap(target["Study"]["MainDicomTags"], m);
-      }
-
-      if (request.IsRetrieveMetadata(ResourceType_Study))
-      {
-        DebugMetadata(target["Study"]["Metadata"], GetMetadata(ResourceType_Study));
-      }
+      DebugMetadata(target[EnumerationToString(GetLevel())]["Metadata"], GetMetadata(request.GetLevel()));
     }
 
-    if (request.GetLevel() != ResourceType_Patient &&
-        request.GetLevel() != ResourceType_Study)
+    static const ResourceType levels[4] = { ResourceType_Patient, ResourceType_Study, ResourceType_Series, ResourceType_Instance };
+
+    for (size_t i = 0; i < 4; i++)
     {
-      if (request.IsRetrieveMainDicomTags(ResourceType_Series))
-      {
-        DicomMap m;
-        GetMainDicomTags(m, ResourceType_Series);
-        DebugDicomMap(target["Series"]["MainDicomTags"], m);
-      }
-
-      if (request.IsRetrieveMetadata(ResourceType_Series))
+      if (levels[i] != request.GetLevel() &&
+          IsResourceLevelAboveOrEqual(levels[i], request.GetLevel()))
       {
-        DebugMetadata(target["Series"]["Metadata"], GetMetadata(ResourceType_Series));
-      }
-    }
+        const char* level = EnumerationToString(levels[i]);
 
-    if (request.GetLevel() != ResourceType_Patient &&
-        request.GetLevel() != ResourceType_Study &&
-        request.GetLevel() != ResourceType_Series)
-    {
-      if (request.IsRetrieveMainDicomTags(ResourceType_Instance))
-      {
-        DicomMap m;
-        GetMainDicomTags(m, ResourceType_Instance);
-        DebugDicomMap(target["Instance"]["MainDicomTags"], m);
-      }
+        if (request.GetParentRetrieveSpecification(levels[i]).IsRetrieveMainDicomTags())
+        {
+          DicomMap m;
+          GetMainDicomTags(m, levels[i]);
+          DebugDicomMap(target[level]["MainDicomTags"], m);
+        }
 
-      if (request.IsRetrieveMetadata(ResourceType_Instance))
-      {
-        DebugMetadata(target["Instance"]["Metadata"], GetMetadata(ResourceType_Instance));
+        if (request.GetParentRetrieveSpecification(levels[i]).IsRetrieveMainDicomTags())
+        {
+          DebugMetadata(target[level]["Metadata"], GetMetadata(levels[i]));
+        }
       }
     }