Mercurial > hg > orthanc
comparison 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 |
comparison
equal
deleted
inserted
replaced
3010:9f859a18cbc2 | 3012:af1530b45290 |
---|---|
62 bool Add(const DicomTag& tag, | 62 bool Add(const DicomTag& tag, |
63 std::auto_ptr<IFindConstraint>& constraint); | 63 std::auto_ptr<IFindConstraint>& constraint); |
64 | 64 |
65 void Apply(SetOfResources& candidates, | 65 void Apply(SetOfResources& candidates, |
66 IDatabaseWrapper& database) const; | 66 IDatabaseWrapper& database) const; |
67 | |
68 bool IsMatch(const DicomMap& dicom) const; | |
67 }; | 69 }; |
68 | 70 |
69 typedef std::map<ResourceType, Level*> Levels; | 71 typedef std::map<ResourceType, Level*> Levels; |
70 | 72 |
71 ResourceType level_; | 73 ResourceType level_; |
87 public: | 89 public: |
88 virtual ~IVisitor() | 90 virtual ~IVisitor() |
89 { | 91 { |
90 } | 92 } |
91 | 93 |
94 virtual bool IsDicomAsJsonNeeded() const = 0; | |
95 | |
92 virtual void MarkAsComplete() = 0; | 96 virtual void MarkAsComplete() = 0; |
93 | 97 |
94 virtual void Visit(const std::string& publicId, | 98 virtual void Visit(const std::string& publicId, |
95 const std::string& instanceId, | 99 const std::string& instanceId, |
96 const Json::Value& dicom) = 0; | 100 const DicomMap& mainDicomTags, |
101 const Json::Value* dicomAsJson) = 0; | |
97 }; | 102 }; |
98 | 103 |
99 LookupResource(ResourceType level); | 104 LookupResource(ResourceType level); |
100 | 105 |
101 ~LookupResource(); | 106 ~LookupResource(); |
115 bool caseSensitive); | 120 bool caseSensitive); |
116 | 121 |
117 void FindCandidates(std::list<int64_t>& result, | 122 void FindCandidates(std::list<int64_t>& result, |
118 IDatabaseWrapper& database) const; | 123 IDatabaseWrapper& database) const; |
119 | 124 |
120 bool IsMatch(const Json::Value& dicomAsJson) const; | 125 bool HasOnlyMainDicomTags() const |
126 { | |
127 return unoptimizedConstraints_.empty(); | |
128 } | |
129 | |
130 bool IsMatch(const DicomMap& dicom) const; | |
121 }; | 131 }; |
122 } | 132 } |