diff OrthancServer/Sources/Database/FindResponse.cpp @ 5672:e300f22a46f0 find-refactoring

implemented computed tags
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 06 Jul 2024 14:24:45 +0200
parents b4c97c51f9db
children ebcbb448bea8
line wrap: on
line diff
--- a/OrthancServer/Sources/Database/FindResponse.cpp	Sat Jul 06 13:57:14 2024 +0200
+++ b/OrthancServer/Sources/Database/FindResponse.cpp	Sat Jul 06 14:24:45 2024 +0200
@@ -155,6 +155,74 @@
   }
 
 
+  void FindResponse::ChildrenInformation::AddMetadataValue(MetadataType metadata,
+                                                           const std::string& value)
+  {
+    MetadataValues::iterator found = metadataValues_.find(metadata);
+
+    if (found == metadataValues_.end())
+    {
+      std::set<std::string> s;
+      s.insert(value);
+      metadataValues_[metadata] = s;
+    }
+    else
+    {
+      found->second.insert(value);
+    }
+  }
+
+
+  void FindResponse::ChildrenInformation::GetMetadataValues(std::set<std::string>& values,
+                                                            MetadataType metadata) const
+  {
+    MetadataValues::const_iterator found = metadataValues_.find(metadata);
+
+    if (found == metadataValues_.end())
+    {
+      values.clear();
+    }
+    else
+    {
+      values = found->second;
+    }
+  }
+
+
+  void FindResponse::ChildrenInformation::AddMainDicomTagValue(const DicomTag& tag,
+                                                               const std::string& value)
+  {
+    MainDicomTagValues::iterator found = mainDicomTagValues_.find(tag);
+
+    if (found == mainDicomTagValues_.end())
+    {
+      std::set<std::string> s;
+      s.insert(value);
+      mainDicomTagValues_[tag] = s;
+    }
+    else
+    {
+      found->second.insert(value);
+    }
+  }
+
+
+  void FindResponse::ChildrenInformation::GetMainDicomTagValues(std::set<std::string>& values,
+                                                                const DicomTag& tag) const
+  {
+    MainDicomTagValues::const_iterator found = mainDicomTagValues_.find(tag);
+
+    if (found == mainDicomTagValues_.end())
+    {
+      values.clear();
+    }
+    else
+    {
+      values = found->second;
+    }
+  }
+
+
   FindResponse::ChildrenInformation& FindResponse::Resource::GetChildrenInformation(ResourceType level)
   {
     switch (level)