comparison OrthancServer/Sources/Database/Compatibility/GenericFind.cpp @ 5565:def06a42e5ef find-refactoring

Updated FindRequest & FindResponse definitions
author Alain Mazy <am@orthanc.team>
date Tue, 23 Apr 2024 13:07:38 +0200
parents 12d8a1a266e9
children f3562c1a150d
comparison
equal deleted inserted replaced
5554:12d8a1a266e9 5565:def06a42e5ef
30 namespace Compatibility 30 namespace Compatibility
31 { 31 {
32 void GenericFind::Execute(FindResponse& response, 32 void GenericFind::Execute(FindResponse& response,
33 const FindRequest& request) 33 const FindRequest& request)
34 { 34 {
35 if (request.GetResponseType() == FindRequest::ResponseType_OrthancIdentifiers && 35 if (request.GetResponseContent() == FindRequest::ResponseContent_IdentifiersOnly &&
36 !request.GetOrthancIdentifiers().HasPatientId() && 36 !request.GetOrthancIdentifiers().HasPatientId() &&
37 !request.GetOrthancIdentifiers().HasStudyId() && 37 !request.GetOrthancIdentifiers().HasStudyId() &&
38 !request.GetOrthancIdentifiers().HasSeriesId() && 38 !request.GetOrthancIdentifiers().HasSeriesId() &&
39 !request.GetOrthancIdentifiers().HasInstanceId() && 39 !request.GetOrthancIdentifiers().HasInstanceId() &&
40 request.GetTagConstraintsCount() == 0 && 40 request.GetTagConstraintsCount() == 0 &&
41 request.GetMetadataMode() == FindRequest::MetadataMode_None &&
42 !request.IsRetrieveTagsAtLevel(ResourceType_Patient) && 41 !request.IsRetrieveTagsAtLevel(ResourceType_Patient) &&
43 !request.IsRetrieveTagsAtLevel(ResourceType_Study) && 42 !request.IsRetrieveTagsAtLevel(ResourceType_Study) &&
44 !request.IsRetrieveTagsAtLevel(ResourceType_Series) && 43 !request.IsRetrieveTagsAtLevel(ResourceType_Series) &&
45 !request.IsRetrieveTagsAtLevel(ResourceType_Instance) && 44 !request.IsRetrieveTagsAtLevel(ResourceType_Instance) &&
46 request.GetTagOrdering().empty() && 45 request.GetTagOrdering().empty() &&
61 for (std::list<std::string>::const_iterator it = ids.begin(); it != ids.end(); ++it) 60 for (std::list<std::string>::const_iterator it = ids.begin(); it != ids.end(); ++it)
62 { 61 {
63 OrthancIdentifiers identifiers; 62 OrthancIdentifiers identifiers;
64 identifiers.SetLevel(request.GetLevel(), *it); 63 identifiers.SetLevel(request.GetLevel(), *it);
65 64
66 response.Add(new FindResponse::Item(request.GetLevel(), identifiers)); 65 response.Add(new FindResponse::Item(request.GetResponseContent(),
66 request.GetLevel(),
67 identifiers));
67 } 68 }
68 } 69 }
69 else 70 else
70 { 71 {
71 throw OrthancException(ErrorCode_NotImplemented); 72 throw OrthancException(ErrorCode_NotImplemented);
83 if (item.GetLevel() != request.GetLevel()) 84 if (item.GetLevel() != request.GetLevel())
84 { 85 {
85 throw OrthancException(ErrorCode_InternalError); 86 throw OrthancException(ErrorCode_InternalError);
86 } 87 }
87 88
88 switch (request.GetResponseType()) 89 if (request.HasResponseContent(FindRequest::ResponseContent_MainDicomTags)
90 && !item.HasDicomMap())
89 { 91 {
90 case FindRequest::ResponseType_OrthancIdentifiers: 92 throw OrthancException(ErrorCode_InternalError);
91 break; 93 }
92 94
93 case FindRequest::ResponseType_DicomMap: 95 // TODO: other sanity checks
94 if (!item.HasDicomMap())
95 {
96 throw OrthancException(ErrorCode_InternalError);
97 }
98 break;
99
100 default:
101 throw OrthancException(ErrorCode_NotImplemented);
102 }
103 } 96 }
104 } 97 }
105 } 98 }
106 } 99 }