Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/FindRequest.cpp @ 5592:1e2631b8b9af find-refactoring
GenericFind::Execute() is working for a basic request
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 03 May 2024 21:26:06 +0200 |
parents | 8b32213af23e |
children | a87f2a56257d |
comparison
equal
deleted
inserted
replaced
5591:043c8016ed6a | 5592:1e2631b8b9af |
---|---|
27 | 27 |
28 #include <cassert> | 28 #include <cassert> |
29 | 29 |
30 namespace Orthanc | 30 namespace Orthanc |
31 { | 31 { |
32 bool FindRequest::IsCompatibleLevel(ResourceType levelOfInterest) const | |
33 { | |
34 switch (level_) | |
35 { | |
36 case ResourceType_Patient: | |
37 return (levelOfInterest == ResourceType_Patient); | |
38 | |
39 case ResourceType_Study: | |
40 return (levelOfInterest == ResourceType_Patient || | |
41 levelOfInterest == ResourceType_Study); | |
42 | |
43 case ResourceType_Series: | |
44 return (levelOfInterest == ResourceType_Patient || | |
45 levelOfInterest == ResourceType_Study || | |
46 levelOfInterest == ResourceType_Series); | |
47 | |
48 case ResourceType_Instance: | |
49 return (levelOfInterest == ResourceType_Patient || | |
50 levelOfInterest == ResourceType_Study || | |
51 levelOfInterest == ResourceType_Series || | |
52 levelOfInterest == ResourceType_Instance); | |
53 | |
54 default: | |
55 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
56 } | |
57 } | |
58 | |
59 | |
60 FindRequest::FindRequest(ResourceType level) : | 32 FindRequest::FindRequest(ResourceType level) : |
61 level_(level), | 33 level_(level), |
62 hasLimits_(false), | 34 hasLimits_(false), |
63 limitsSince_(0), | 35 limitsSince_(0), |
64 limitsCount_(0), | 36 limitsCount_(0), |
65 retrievePatientTags_(false), | 37 retrieveMainDicomTags_(false), |
66 retrieveStudyTags_(false), | |
67 retrieveSeriesTags_(false), | |
68 retrieveInstanceTags_(false), | |
69 retrieveMetadata_(false), | 38 retrieveMetadata_(false), |
70 retrieveLabels_(false), | 39 retrieveLabels_(false), |
71 retrieveAttachments_(false), | 40 retrieveAttachments_(false), |
72 retrieveParentIdentifier_(false), | 41 retrieveParentIdentifier_(false), |
73 retrieveChildrenIdentifiers_(false), | 42 retrieveChildrenIdentifiers_(false), |
144 throw OrthancException(ErrorCode_BadSequenceOfCalls); | 113 throw OrthancException(ErrorCode_BadSequenceOfCalls); |
145 } | 114 } |
146 } | 115 } |
147 | 116 |
148 | 117 |
149 void FindRequest::SetRetrieveTagsAtLevel(ResourceType levelOfInterest, | |
150 bool retrieve) | |
151 { | |
152 if (!IsCompatibleLevel(levelOfInterest)) | |
153 { | |
154 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
155 } | |
156 | |
157 switch (levelOfInterest) | |
158 { | |
159 case ResourceType_Patient: | |
160 retrievePatientTags_ = true; | |
161 break; | |
162 | |
163 case ResourceType_Study: | |
164 retrieveStudyTags_ = true; | |
165 break; | |
166 | |
167 case ResourceType_Series: | |
168 retrieveSeriesTags_ = true; | |
169 break; | |
170 | |
171 case ResourceType_Instance: | |
172 retrieveInstanceTags_ = true; | |
173 break; | |
174 | |
175 default: | |
176 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
177 } | |
178 } | |
179 | |
180 | |
181 bool FindRequest::IsRetrieveTagsAtLevel(ResourceType levelOfInterest) const | |
182 { | |
183 switch (levelOfInterest) | |
184 { | |
185 case ResourceType_Patient: | |
186 return retrievePatientTags_; | |
187 | |
188 case ResourceType_Study: | |
189 return retrieveStudyTags_; | |
190 | |
191 case ResourceType_Series: | |
192 return retrieveSeriesTags_; | |
193 | |
194 case ResourceType_Instance: | |
195 return retrieveInstanceTags_; | |
196 | |
197 default: | |
198 throw OrthancException(ErrorCode_ParameterOutOfRange); | |
199 } | |
200 } | |
201 | |
202 | |
203 void FindRequest::AddOrdering(const DicomTag& tag, | 118 void FindRequest::AddOrdering(const DicomTag& tag, |
204 OrderingDirection direction) | 119 OrderingDirection direction) |
205 { | 120 { |
206 ordering_.push_back(new Ordering(Key(tag), direction)); | 121 ordering_.push_back(new Ordering(Key(tag), direction)); |
207 } | 122 } |
123 | |
208 | 124 |
209 void FindRequest::AddOrdering(MetadataType metadataType, | 125 void FindRequest::AddOrdering(MetadataType metadataType, |
210 OrderingDirection direction) | 126 OrderingDirection direction) |
211 { | 127 { |
212 ordering_.push_back(new Ordering(Key(metadataType), direction)); | 128 ordering_.push_back(new Ordering(Key(metadataType), direction)); |