diff Plugins/Engine/OrthancPlugins.cpp @ 2210:7bcff7bb7cbf

OrthancPluginFindMatcher
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 09 Dec 2016 18:02:03 +0100
parents 84d1d392a9ab
children 028214a95194
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp	Fri Dec 09 17:20:21 2016 +0100
+++ b/Plugins/Engine/OrthancPlugins.cpp	Fri Dec 09 18:02:03 2016 +0100
@@ -2592,6 +2592,49 @@
         return true;
       }
 
+      case _OrthancPluginService_CreateFindMatcher:
+      {
+        const _OrthancPluginCreateFindMatcher& p =
+          *reinterpret_cast<const _OrthancPluginCreateFindMatcher*>(parameters);
+        ParsedDicomFile query(p.query, p.size);
+        *(p.target) = reinterpret_cast<OrthancPluginFindMatcher*>
+          (new HierarchicalMatcher(query, Configuration::GetGlobalBoolParameter("CaseSensitivePN", false)));
+        return true;
+      }
+
+      case _OrthancPluginService_FreeFindMatcher:
+      {
+        const _OrthancPluginFreeFindMatcher& p =
+          *reinterpret_cast<const _OrthancPluginFreeFindMatcher*>(parameters);
+
+        if (p.matcher == NULL)
+        {
+          throw OrthancException(ErrorCode_ParameterOutOfRange);
+        }
+        else
+        {
+          delete reinterpret_cast<HierarchicalMatcher*>(p.matcher);
+          return true;
+        }
+      }
+
+      case _OrthancPluginService_FindMatcherIsMatch:
+      {
+        const _OrthancPluginFindMatcherIsMatch& p =
+          *reinterpret_cast<const _OrthancPluginFindMatcherIsMatch*>(parameters);
+
+        if (p.matcher == NULL)
+        {
+          throw OrthancException(ErrorCode_ParameterOutOfRange);
+        }
+        else
+        {
+          ParsedDicomFile query(p.dicom, p.size);
+          reinterpret_cast<const HierarchicalMatcher*>(p.matcher)->Match(query);
+          return true;
+        }
+      }
+
       default:
         return false;
     }