diff Plugin/DefaultAuthorizationParser.cpp @ 56:c02f0646297d

added support for /dicom-web/studies?0020000D=1.2.3&...
author Alain Mazy <am@osimis.io>
date Tue, 08 Nov 2022 16:10:22 +0100
parents 9ed19ec11f48
children 55539d564f4f
line wrap: on
line diff
--- a/Plugin/DefaultAuthorizationParser.cpp	Mon Sep 26 15:20:39 2022 +0200
+++ b/Plugin/DefaultAuthorizationParser.cpp	Tue Nov 08 16:10:22 2022 +0100
@@ -19,6 +19,7 @@
 #include "DefaultAuthorizationParser.h"
 
 #include <OrthancException.h>
+#include <HttpServer/HttpToolbox.h>
 
 namespace OrthancPlugins
 {
@@ -47,11 +48,15 @@
       
     dicomWebInstances_ = boost::regex(
       "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$");
+
+    dicomWebQidoRsFindStudies_ = boost::regex(
+      "^" + tmp + "/studies\?(.*)$");
   }
 
 
   bool DefaultAuthorizationParser::Parse(AccessedResources& target,
-                                         const std::string& uri)
+                                         const std::string& uri,
+                                         const std::map<std::string, std::string>& getArguments)
   {
     // The mutex below should not be necessary, but we prefer to
     // ensure thread safety in boost::regex
@@ -127,6 +132,18 @@
       AddOrthancInstance(target, what[2]);
       return true;
     }
+    else if (boost::regex_match(uri, what, dicomWebQidoRsFindStudies_))
+    {
+      std::string studyInstanceUid;
+
+      studyInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000D", "");
+
+      if (!studyInstanceUid.empty())
+      {
+        AddDicomStudy(target, studyInstanceUid);
+      }
+      return true;
+    }
     else
     {
       // Unknown type of resource: Consider it as a system access