Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/Compatibility/GenericFind.cpp @ 5668:bd1352bd9d82 find-refactoring
configuring requests for ModalitiesInStudy and SOPClassesInStudy
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 04 Jul 2024 21:57:39 +0200 |
parents | 93dff1fccf36 |
children | e300f22a46f0 |
comparison
equal
deleted
inserted
replaced
5667:93dff1fccf36 | 5668:bd1352bd9d82 |
---|---|
472 { | 472 { |
473 ResourceType childrenLevel = GetChildResourceType(currentLevel); | 473 ResourceType childrenLevel = GetChildResourceType(currentLevel); |
474 | 474 |
475 if (request.GetChildrenRetrieveSpecification(childrenLevel).IsRetrieveIdentifiers()) | 475 if (request.GetChildrenRetrieveSpecification(childrenLevel).IsRetrieveIdentifiers()) |
476 { | 476 { |
477 for (std::list<int64_t>::const_iterator it = currentIds.begin(); | 477 for (std::list<int64_t>::const_iterator it = currentIds.begin(); it != currentIds.end(); ++it) |
478 it != currentIds.end(); ++it) | |
479 { | 478 { |
480 std::list<std::string> ids; | 479 std::list<std::string> ids; |
481 transaction_.GetChildrenPublicId(ids, *it); | 480 transaction_.GetChildrenPublicId(ids, *it); |
482 | 481 |
483 for (std::list<std::string>::const_iterator it2 = ids.begin(); it2 != ids.end(); ++it2) | 482 for (std::list<std::string>::const_iterator it2 = ids.begin(); it2 != ids.end(); ++it2) |
485 resource->AddChildIdentifier(childrenLevel, *it2); | 484 resource->AddChildIdentifier(childrenLevel, *it2); |
486 } | 485 } |
487 } | 486 } |
488 } | 487 } |
489 | 488 |
490 if (childrenLevel != bottomLevel) | 489 const std::set<MetadataType>& metadata = request.GetChildrenRetrieveSpecification(childrenLevel).GetMetadata(); |
490 | |
491 for (std::set<MetadataType>::const_iterator it = metadata.begin(); it != metadata.end(); ++it) | |
492 { | |
493 for (std::list<int64_t>::const_iterator it2 = currentIds.begin(); it2 != currentIds.end(); ++it2) | |
494 { | |
495 std::list<std::string> values; | |
496 transaction_.GetChildrenMetadata(values, *it2, *it); | |
497 | |
498 for (std::list<std::string>::const_iterator it3 = values.begin(); it3 != values.end(); ++it3) | |
499 { | |
500 // TODO-FIND - Inject this value in the response | |
501 printf("[%s]\n", it3->c_str()); | |
502 } | |
503 } | |
504 } | |
505 | |
506 const std::set<DicomTag>& mainDicomTags = request.GetChildrenRetrieveSpecification(childrenLevel).GetMainDicomTags(); | |
507 | |
508 if (childrenLevel != bottomLevel || | |
509 !mainDicomTags.empty()) | |
491 { | 510 { |
492 std::list<int64_t> childrenIds; | 511 std::list<int64_t> childrenIds; |
493 | 512 |
494 for (std::list<int64_t>::const_iterator it = currentIds.begin(); it != currentIds.end(); ++it) | 513 for (std::list<int64_t>::const_iterator it = currentIds.begin(); it != currentIds.end(); ++it) |
495 { | 514 { |
497 transaction_.GetChildrenInternalId(tmp, *it); | 516 transaction_.GetChildrenInternalId(tmp, *it); |
498 | 517 |
499 childrenIds.splice(childrenIds.end(), tmp); | 518 childrenIds.splice(childrenIds.end(), tmp); |
500 } | 519 } |
501 | 520 |
521 if (!mainDicomTags.empty()) | |
522 { | |
523 for (std::list<int64_t>::const_iterator it = childrenIds.begin(); it != childrenIds.end(); ++it) | |
524 { | |
525 DicomMap m; | |
526 transaction_.GetMainDicomTags(m, *it); | |
527 | |
528 for (std::set<DicomTag>::const_iterator it2 = mainDicomTags.begin(); it2 != mainDicomTags.end(); ++it2) | |
529 { | |
530 std::string value; | |
531 if (m.LookupStringValue(value, *it2, false /* no binary allowed */)) | |
532 { | |
533 // TODO-FIND - Inject this value in the response | |
534 printf("<%s>\n", value.c_str()); | |
535 } | |
536 } | |
537 } | |
538 } | |
539 | |
502 currentIds = childrenIds; | 540 currentIds = childrenIds; |
503 } | 541 } |
504 else | 542 else |
505 { | 543 { |
506 currentIds.clear(); | 544 currentIds.clear(); |