Mercurial > hg > orthanc
diff OrthancServer/Search/LookupResource.h @ 3012:af1530b45290
Optimization: On finds, do not read JSON (disk) if main DICOM tags (DB) are sufficient
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 13 Dec 2018 17:54:06 +0100 |
parents | 8265a6b56100 |
children | 2cbafb5d5a62 |
line wrap: on
line diff
--- a/OrthancServer/Search/LookupResource.h Thu Dec 13 17:16:32 2018 +0100 +++ b/OrthancServer/Search/LookupResource.h Thu Dec 13 17:54:06 2018 +0100 @@ -64,6 +64,8 @@ void Apply(SetOfResources& candidates, IDatabaseWrapper& database) const; + + bool IsMatch(const DicomMap& dicom) const; }; typedef std::map<ResourceType, Level*> Levels; @@ -89,11 +91,14 @@ { } + virtual bool IsDicomAsJsonNeeded() const = 0; + virtual void MarkAsComplete() = 0; virtual void Visit(const std::string& publicId, const std::string& instanceId, - const Json::Value& dicom) = 0; + const DicomMap& mainDicomTags, + const Json::Value* dicomAsJson) = 0; }; LookupResource(ResourceType level); @@ -117,6 +122,11 @@ void FindCandidates(std::list<int64_t>& result, IDatabaseWrapper& database) const; - bool IsMatch(const Json::Value& dicomAsJson) const; + bool HasOnlyMainDicomTags() const + { + return unoptimizedConstraints_.empty(); + } + + bool IsMatch(const DicomMap& dicom) const; }; }