diff OrthancServer/ServerContext.cpp @ 3025:039a9d262d64 db-changes

preparing to speed up find in databases
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 17 Dec 2018 17:05:28 +0100
parents 2cbafb5d5a62
children fd587cf51a89
line wrap: on
line diff
--- a/OrthancServer/ServerContext.cpp	Mon Dec 17 10:26:01 2018 +0100
+++ b/OrthancServer/ServerContext.cpp	Mon Dec 17 17:05:28 2018 +0100
@@ -775,6 +775,7 @@
 
   void ServerContext::Apply(ILookupVisitor& visitor,
                             const ::Orthanc::LookupResource& lookup,
+                            const DatabaseLookup& lookup2,
                             size_t since,
                             size_t limit)
   {
@@ -810,6 +811,34 @@
     std::vector<std::string> resources, instances;
     GetIndex().FindCandidates(resources, instances, lookup);
 
+#if 1
+    {
+      std::vector<std::string> resources2, instances2;
+
+      if (lookup.GetLevel() == ResourceType_Patient)
+      {
+        GetIndex().ApplyLookupPatients(resources2, instances2, lookup2, limit /* TODO */);
+      }
+      else
+      {
+        GetIndex().ApplyLookupResources(resources2, instances2, lookup2, lookup.GetLevel(), limit /* TODO */);
+      }
+
+      std::set<std::string> r;
+      for (size_t i = 0; i < resources2.size(); i++)
+      {
+        r.insert(resources[i]);
+      }
+
+      assert(r.size() == resources.size());
+      
+      for (size_t i = 0; i < resources.size(); i++)
+      {
+        assert(r.find(resources[i]) != r.end());
+      }
+    }
+#endif
+    
     LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size();
 
     assert(resources.size() == instances.size());