Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/FindResponse.cpp @ 5594:a906dc19264c find-refactoring
created FindResponse::Resource::Format()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 04 May 2024 15:25:19 +0200 |
parents | 1e2631b8b9af |
children | a87f2a56257d |
comparison
equal
deleted
inserted
replaced
5593:862b54b4cfe2 | 5594:a906dc19264c |
---|---|
322 return false; | 322 return false; |
323 } | 323 } |
324 } | 324 } |
325 | 325 |
326 | 326 |
327 void FindResponse::Resource::Format(Json::Value& target, | |
328 const FindRequest& request) const | |
329 { | |
330 /** | |
331 | |
332 TODO-FIND: | |
333 | |
334 - Metadata / Series / ExpectedNumberOfInstances | |
335 | |
336 - Metadata / Series / Status | |
337 | |
338 - Metadata / Instance / FileSize | |
339 | |
340 - Metadata / Instance / FileUuid | |
341 | |
342 - Metadata / Instance / IndexInSeries | |
343 | |
344 - Metadata / AnonymizedFrom | |
345 | |
346 - Metadata / ModifiedFrom | |
347 | |
348 **/ | |
349 | |
350 target = Json::objectValue; | |
351 target["ID"] = identifier_; | |
352 target["Type"] = GetResourceTypeText(level_, false, true); | |
353 | |
354 if (request.IsRetrieveMetadata()) | |
355 { | |
356 Json::Value metadata = Json::objectValue; | |
357 | |
358 for (std::map<MetadataType, std::string>::const_iterator | |
359 it = metadata_.begin(); it != metadata_.end(); ++it) | |
360 { | |
361 metadata[EnumerationToString(it->first)] = it->second; | |
362 } | |
363 | |
364 target["Metadata"] = metadata; | |
365 } | |
366 | |
367 if (request.IsRetrieveLabels()) | |
368 { | |
369 Json::Value labels = Json::arrayValue; | |
370 | |
371 for (std::set<std::string>::const_iterator it = labels_.begin(); it != labels_.end(); ++it) | |
372 { | |
373 labels.append(*it); | |
374 } | |
375 | |
376 target["Labels"] = labels; | |
377 } | |
378 | |
379 if (request.IsRetrieveParentIdentifier()) | |
380 { | |
381 switch (level_) | |
382 { | |
383 case ResourceType_Patient: | |
384 break; | |
385 | |
386 case ResourceType_Study: | |
387 target["ParentPatient"] = GetParentIdentifier(); | |
388 break; | |
389 | |
390 case ResourceType_Series: | |
391 target["ParentStudy"] = GetParentIdentifier(); | |
392 break; | |
393 | |
394 case ResourceType_Instance: | |
395 target["ParentSeries"] = GetParentIdentifier(); | |
396 break; | |
397 | |
398 default: | |
399 throw OrthancException(ErrorCode_InternalError); | |
400 } | |
401 } | |
402 | |
403 if (request.IsRetrieveChildrenIdentifiers()) | |
404 { | |
405 Json::Value c = Json::arrayValue; | |
406 | |
407 const std::set<std::string>& children = GetChildrenAtLevel(GetChildResourceType(level_)).GetIdentifiers(); | |
408 | |
409 for (std::set<std::string>::const_iterator | |
410 it = children.begin(); it != children.end(); ++it) | |
411 { | |
412 c.append(*it); | |
413 } | |
414 | |
415 switch (level_) | |
416 { | |
417 case ResourceType_Patient: | |
418 target["Studies"] = c; | |
419 break; | |
420 | |
421 case ResourceType_Study: | |
422 target["Series"] = c; | |
423 break; | |
424 | |
425 case ResourceType_Series: | |
426 target["Instances"] = c; | |
427 break; | |
428 | |
429 default: | |
430 throw OrthancException(ErrorCode_InternalError); | |
431 } | |
432 } | |
433 } | |
434 | |
435 | |
327 FindResponse::~FindResponse() | 436 FindResponse::~FindResponse() |
328 { | 437 { |
329 for (size_t i = 0; i < items_.size(); i++) | 438 for (size_t i = 0; i < items_.size(); i++) |
330 { | 439 { |
331 assert(items_[i] != NULL); | 440 assert(items_[i] != NULL); |