diff OrthancServer/Sources/Search/DatabaseLookup.cpp @ 4977:dad71e6da406 more-tags

pre-filtering studies without ModalitiesInStudies first
author Alain Mazy <am@osimis.io>
date Wed, 20 Apr 2022 11:32:31 +0200
parents b7ce2bb6b881
children d0c34145320c
line wrap: on
line diff
--- a/OrthancServer/Sources/Search/DatabaseLookup.cpp	Wed Apr 13 14:58:58 2022 +0200
+++ b/OrthancServer/Sources/Search/DatabaseLookup.cpp	Wed Apr 20 11:32:31 2022 +0200
@@ -326,4 +326,45 @@
 
     return false;
   }
+
+  bool DatabaseLookup::GetConstraint(const DicomTagConstraint*& constraint, const DicomTag& tag) const
+  {
+    for (size_t i = 0; i < constraints_.size(); i++)
+    {
+      assert(constraints_[i] != NULL);
+      if (constraints_[i]->GetTag() == tag)
+      {
+        constraint = constraints_.at(i);
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+
+  void DatabaseLookup::RemoveConstraint(const DicomTag& tag)
+  {
+    for (size_t i = 0; i < constraints_.size(); i++)
+    {
+      assert(constraints_[i] != NULL);
+      if (constraints_[i]->GetTag() == tag)
+      {
+        delete constraints_[i];
+        constraints_.erase(constraints_.begin() + i);
+      }
+    }
+  }
+
+  DatabaseLookup* DatabaseLookup::Clone() const
+  {
+    std::unique_ptr<DatabaseLookup> clone(new DatabaseLookup());
+
+    for (size_t i = 0; i < constraints_.size(); i++)
+    {
+      clone->AddConstraint(*(new DicomTagConstraint(*constraints_[i])));
+    }
+
+    return clone.release();
+  }
 }