comparison Plugin/DefaultAuthorizationParser.cpp @ 57:55539d564f4f

added support for /dicom-web/series? & /dicom-web/instances?
author Alain Mazy <am@osimis.io>
date Wed, 09 Nov 2022 15:40:35 +0100
parents c02f0646297d
children 1a13c4fbc9a1
comparison
equal deleted inserted replaced
56:c02f0646297d 57:55539d564f4f
47 "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)(|/instances)(|/)$"); 47 "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)(|/instances)(|/)$");
48 48
49 dicomWebInstances_ = boost::regex( 49 dicomWebInstances_ = boost::regex(
50 "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$"); 50 "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$");
51 51
52 dicomWebQidoRsFindStudies_ = boost::regex( 52 dicomWebQidoRsFind_ = boost::regex(
53 "^" + tmp + "/studies\?(.*)$"); 53 "^" + tmp + "/(studies|series|instances)\?(.*)$");
54 } 54 }
55 55
56 56
57 bool DefaultAuthorizationParser::Parse(AccessedResources& target, 57 bool DefaultAuthorizationParser::Parse(AccessedResources& target,
58 const std::string& uri, 58 const std::string& uri,
130 else if (boost::regex_match(uri, what, osimisViewerImages_)) 130 else if (boost::regex_match(uri, what, osimisViewerImages_))
131 { 131 {
132 AddOrthancInstance(target, what[2]); 132 AddOrthancInstance(target, what[2]);
133 return true; 133 return true;
134 } 134 }
135 else if (boost::regex_match(uri, what, dicomWebQidoRsFindStudies_)) 135 else if (boost::regex_match(uri, what, dicomWebQidoRsFind_))
136 { 136 {
137 std::string studyInstanceUid; 137 std::string studyInstanceUid, seriesInstanceUid, sopInstanceUid;
138 138
139 studyInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000D", ""); 139 studyInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000D", "");
140 seriesInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000E", "");
141 sopInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "00080018", "");
140 142
141 if (!studyInstanceUid.empty()) 143 if (!sopInstanceUid.empty() && !seriesInstanceUid.empty() && !studyInstanceUid.empty())
144 {
145 AddDicomInstance(target, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
146 }
147 else if (!seriesInstanceUid.empty() && !studyInstanceUid.empty())
148 {
149 AddDicomSeries(target, studyInstanceUid, seriesInstanceUid);
150 }
151 else if (!studyInstanceUid.empty())
142 { 152 {
143 AddDicomStudy(target, studyInstanceUid); 153 AddDicomStudy(target, studyInstanceUid);
144 } 154 }
145 return true; 155 return true;
146 } 156 }