Mercurial > hg > orthanc
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 } |