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);
       }