comparison OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp @ 5772:093a8693ba16 find-refactoring

replaced SetRetrieveOneInstanceIdentifier() by SetRetrieveOneInstanceMetadataAndAttachments()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 11 Sep 2024 20:49:34 +0200
parents 1b0e67be3c15
children de33982a0bf4
comparison
equal deleted inserted replaced
5771:4db9f897df58 5772:093a8693ba16
1435 dbRequest.mutable_find()->set_retrieve_main_dicom_tags(request.IsRetrieveMainDicomTags()); 1435 dbRequest.mutable_find()->set_retrieve_main_dicom_tags(request.IsRetrieveMainDicomTags());
1436 dbRequest.mutable_find()->set_retrieve_metadata(request.IsRetrieveMetadata()); 1436 dbRequest.mutable_find()->set_retrieve_metadata(request.IsRetrieveMetadata());
1437 dbRequest.mutable_find()->set_retrieve_labels(request.IsRetrieveLabels()); 1437 dbRequest.mutable_find()->set_retrieve_labels(request.IsRetrieveLabels());
1438 dbRequest.mutable_find()->set_retrieve_attachments(request.IsRetrieveAttachments()); 1438 dbRequest.mutable_find()->set_retrieve_attachments(request.IsRetrieveAttachments());
1439 dbRequest.mutable_find()->set_retrieve_parent_identifier(request.IsRetrieveParentIdentifier()); 1439 dbRequest.mutable_find()->set_retrieve_parent_identifier(request.IsRetrieveParentIdentifier());
1440 dbRequest.mutable_find()->set_retrieve_at_least_one_instance(request.IsRetrieveOneInstanceIdentifier()); 1440 dbRequest.mutable_find()->set_retrieve_one_instance_metadata_and_attachments(request.IsRetrieveOneInstanceMetadataAndAttachments());
1441 1441
1442 if (request.GetLevel() == ResourceType_Study || 1442 if (request.GetLevel() == ResourceType_Study ||
1443 request.GetLevel() == ResourceType_Series || 1443 request.GetLevel() == ResourceType_Series ||
1444 request.GetLevel() == ResourceType_Instance) 1444 request.GetLevel() == ResourceType_Instance)
1445 { 1445 {
1537 if (request.GetLevel() == ResourceType_Patient || 1537 if (request.GetLevel() == ResourceType_Patient ||
1538 request.GetLevel() == ResourceType_Study || 1538 request.GetLevel() == ResourceType_Study ||
1539 request.GetLevel() == ResourceType_Series) 1539 request.GetLevel() == ResourceType_Series)
1540 { 1540 {
1541 Convert(*target, ResourceType_Series, source.children_instances_content()); 1541 Convert(*target, ResourceType_Series, source.children_instances_content());
1542 }
1543
1544 if (request.IsRetrieveOneInstanceMetadataAndAttachments())
1545 {
1546 std::map<MetadataType, std::string> metadata;
1547 for (int i = 0; i < source.one_instance_metadata().size(); i++)
1548 {
1549 MetadataType key = static_cast<MetadataType>(source.one_instance_metadata(i).key());
1550 if (metadata.find(key) == metadata.end())
1551 {
1552 metadata[key] = source.one_instance_metadata(i).value();
1553 }
1554 else
1555 {
1556 throw OrthancException(ErrorCode_DatabasePlugin);
1557 }
1558 }
1559
1560 std::map<FileContentType, FileInfo> attachments;
1561
1562 for (int i = 0; i < source.one_instance_attachments().size(); i++)
1563 {
1564 FileInfo info(Convert(source.attachments(i)));
1565 if (attachments.find(info.GetContentType()) == attachments.end())
1566 {
1567 attachments[info.GetContentType()] = info;
1568 }
1569 else
1570 {
1571 throw OrthancException(ErrorCode_DatabasePlugin);
1572 }
1573 }
1574
1575 target->SetOneInstanceMetadataAndAttachments(source.one_instance_public_id(), metadata, attachments);
1542 } 1576 }
1543 1577
1544 response.Add(target.release()); 1578 response.Add(target.release());
1545 } 1579 }
1546 1580