comparison OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp @ 5590:8b32213af23e find-refactoring

replaced FindRequest::ResponseContent by booleans
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 03 May 2024 18:17:53 +0200
parents b51ee994cd6f
children 1e2631b8b9af
comparison
equal deleted inserted replaced
5589:b51ee994cd6f 5590:8b32213af23e
243 FindRequest request(resourceType); 243 FindRequest request(resourceType);
244 244
245 if (expand) 245 if (expand)
246 { 246 {
247 // compatibility with default expand option 247 // compatibility with default expand option
248 FindRequest::ResponseContent responseContent = static_cast<FindRequest::ResponseContent>(FindRequest::ResponseContent_MainDicomTags | 248 request.SetRetrieveTagsAtLevel(resourceType, true);
249 FindRequest::ResponseContent_Metadata | 249 request.SetRetrieveMetadata(true);
250 FindRequest::ResponseContent_Labels); 250 request.SetRetrieveLabels(true);
251 251
252 if (requestedTags.size() > 0 && resourceType != ResourceType_Instance) // if we are requesting specific tags that might be outside of the MainDicomTags, we must get a childInstanceId too
253 {
254 responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_ChildInstanceId);
255 }
256 if (resourceType == ResourceType_Series) 252 if (resourceType == ResourceType_Series)
257 { 253 {
258 responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_ChildrenMetadata); // required for the SeriesStatus 254 request.SetRetrieveChildrenMetadata(true); // required for the SeriesStatus
259 } 255 }
260 if (resourceType != ResourceType_Instance) 256
261 {
262 responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Children);
263 }
264 if (resourceType == ResourceType_Instance) 257 if (resourceType == ResourceType_Instance)
265 { 258 {
266 responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Attachments); // for FileSize & FileUuid 259 request.SetRetrieveAttachments(true); // for FileSize & FileUuid
267 } 260 }
261 else
262 {
263 request.SetRetrieveChildrenIdentifiers(true);
264 }
265
268 if (resourceType != ResourceType_Patient) 266 if (resourceType != ResourceType_Patient)
269 { 267 {
270 responseContent = static_cast<FindRequest::ResponseContent>(responseContent | FindRequest::ResponseContent_Parent); 268 request.SetRetrieveParentIdentifier(true);
271 } 269 }
272
273 request.SetResponseContent(responseContent);
274 request.SetRetrieveTagsAtLevel(resourceType, true);
275 270
276 if (resourceType == ResourceType_Study) 271 if (resourceType == ResourceType_Study)
277 { 272 {
278 request.SetRetrieveTagsAtLevel(ResourceType_Patient, true); 273 request.SetRetrieveTagsAtLevel(ResourceType_Patient, true);
279 } 274 }
280 }
281 else
282 {
283 request.SetResponseContent(FindRequest::ResponseContent_IdentifiersOnly);
284 } 275 }
285 276
286 if (call.HasArgument("limit") || 277 if (call.HasArgument("limit") ||
287 call.HasArgument("since")) 278 call.HasArgument("since"))
288 { 279 {
309 index.ExecuteFind(response, request); 300 index.ExecuteFind(response, request);
310 301
311 // TODO-FIND: put this in an AnswerFindResponse method ! 302 // TODO-FIND: put this in an AnswerFindResponse method !
312 Json::Value answer = Json::arrayValue; 303 Json::Value answer = Json::arrayValue;
313 304
314 if (request.IsResponseIdentifiersOnly()) 305 if (expand)
315 { 306 {
316 for (size_t i = 0; i < response.GetSize(); i++) 307 for (size_t i = 0; i < response.GetSize(); i++)
317 { 308 {
309 context.AppendFindResponse(answer, request, response.GetResource(i), format, requestedTags, true /* allowStorageAccess */);
310 }
311 }
312 else
313 {
314 for (size_t i = 0; i < response.GetSize(); i++)
315 {
318 answer.append(response.GetResource(i).GetIdentifier()); 316 answer.append(response.GetResource(i).GetIdentifier());
319 }
320 }
321 else
322 {
323 for (size_t i = 0; i < response.GetSize(); i++)
324 {
325 context.AppendFindResponse(answer, request, response.GetResource(i), format, requestedTags, true /* allowStorageAccess */);
326 } 317 }
327 } 318 }
328 319
329 call.GetOutput().AnswerJson(answer); 320 call.GetOutput().AnswerJson(answer);
330 } 321 }