Mercurial > hg > orthanc-authorization
diff 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 |
line wrap: on
line diff
--- a/Plugin/DefaultAuthorizationParser.cpp Tue Nov 08 16:10:22 2022 +0100 +++ b/Plugin/DefaultAuthorizationParser.cpp Wed Nov 09 15:40:35 2022 +0100 @@ -49,8 +49,8 @@ dicomWebInstances_ = boost::regex( "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$"); - dicomWebQidoRsFindStudies_ = boost::regex( - "^" + tmp + "/studies\?(.*)$"); + dicomWebQidoRsFind_ = boost::regex( + "^" + tmp + "/(studies|series|instances)\?(.*)$"); } @@ -132,13 +132,23 @@ AddOrthancInstance(target, what[2]); return true; } - else if (boost::regex_match(uri, what, dicomWebQidoRsFindStudies_)) + else if (boost::regex_match(uri, what, dicomWebQidoRsFind_)) { - std::string studyInstanceUid; + std::string studyInstanceUid, seriesInstanceUid, sopInstanceUid; studyInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000D", ""); + seriesInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000E", ""); + sopInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "00080018", ""); - if (!studyInstanceUid.empty()) + if (!sopInstanceUid.empty() && !seriesInstanceUid.empty() && !studyInstanceUid.empty()) + { + AddDicomInstance(target, studyInstanceUid, seriesInstanceUid, sopInstanceUid); + } + else if (!seriesInstanceUid.empty() && !studyInstanceUid.empty()) + { + AddDicomSeries(target, studyInstanceUid, seriesInstanceUid); + } + else if (!studyInstanceUid.empty()) { AddDicomStudy(target, studyInstanceUid); }