annotate Orthanc/Sdk-0.9.1/orthanc/OrthancCPlugin.h @ 51:7b4b8b82112e

fix
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 30 Jul 2015 15:56:27 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * \mainpage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 * This C/C++ SDK allows external developers to create plugins that
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 * can be loaded into Orthanc to extend its functionality. Each
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 * Orthanc plugin must expose 4 public functions with the following
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 * signatures:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 * -# <tt>int32_t OrthancPluginInitialize(const OrthancPluginContext* context)</tt>:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * This function is invoked by Orthanc when it loads the plugin on startup.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 * The plugin must:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * - Check its compatibility with the Orthanc version using
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 * ::OrthancPluginCheckVersion().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * - Store the context pointer so that it can use the plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * services of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * - Register all its REST callbacks using ::OrthancPluginRegisterRestCallback().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * - Register all its callbacks for received instances using ::OrthancPluginRegisterOnStoredInstanceCallback().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 * - Possibly register a custom storage area using ::OrthancPluginRegisterStorageArea().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 * - Possibly register a custom database back-end area using ::OrthancPluginRegisterDatabaseBackend().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * -# <tt>void OrthancPluginFinalize()</tt>:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 * This function is invoked by Orthanc during its shutdown. The plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 * must free all its memory.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 * -# <tt>const char* OrthancPluginGetName()</tt>:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 * The plugin must return a short string to identify itself.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 * -# <tt>const char* OrthancPluginGetVersion()</tt>:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 * The plugin must return a string containing its version number.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 * The name and the version of a plugin is only used to prevent it
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 * from being loaded twice.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 * The various callbacks are guaranteed to be executed in mutual
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 * exclusion since Orthanc 0.8.5.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 * @defgroup CInterface C Interface
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 * @brief The C interface to create Orthanc plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 * These functions must be used to create C plugins for Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 * Orthanc - A Lightweight, RESTful DICOM Store
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 * Copyright (C) 2012-2015 Sebastien Jodogne, Medical Physics
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49 * Department, University Hospital of Liege, Belgium
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 * This program is free software: you can redistribute it and/or
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 * modify it under the terms of the GNU General Public License as
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 * published by the Free Software Foundation, either version 3 of the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 * License, or (at your option) any later version.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 * In addition, as a special exception, the copyright holders of this
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 * program give permission to link the code of its release with the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 * OpenSSL project's "OpenSSL" library (or with modified versions of it
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 * that use the same license as the "OpenSSL" library), and distribute
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 * the linked executables. You must obey the GNU General Public License
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 * in all respects for all of the code used other than "OpenSSL". If you
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 * modify file(s) with this exception, you may extend this exception to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 * your version of the file(s), but you are not obligated to do so. If
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 * you do not wish to do so, delete this exception statement from your
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 * version. If you delete this exception statement from all source files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 * in the program, then also delete it here.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 * This program is distributed in the hope that it will be useful, but
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 * WITHOUT ANY WARRANTY; without even the implied warranty of
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 * General Public License for more details.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 * You should have received a copy of the GNU General Public License
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74 * along with this program. If not, see <http://www.gnu.org/licenses/>.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
76
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 #pragma once
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 #include <stdio.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 #include <string.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85 #ifdef WIN32
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86 #define ORTHANC_PLUGINS_API __declspec(dllexport)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 #else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 #define ORTHANC_PLUGINS_API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 #define ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER 0
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 #define ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER 9
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 #define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
96
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97 /********************************************************************
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98 ** Check that function inlining is properly supported. The use of
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 ** inlining is required, to avoid the duplication of object code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 ** between two compilation modules that would use the Orthanc Plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101 ** API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102 ********************************************************************/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104 /* If the auto-detection of the "inline" keyword below does not work
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 automatically and that your compiler is known to properly support
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106 inlining, uncomment the following #define and adapt the definition
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 of "static inline". */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109 /* #define ORTHANC_PLUGIN_INLINE static inline */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111 #ifndef ORTHANC_PLUGIN_INLINE
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112 # if __STDC_VERSION__ >= 199901L
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
113 /* This is C99 or above: http://predef.sourceforge.net/prestd.html */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
114 # define ORTHANC_PLUGIN_INLINE static inline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
115 # elif defined(__cplusplus)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
116 /* This is C++ */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117 # define ORTHANC_PLUGIN_INLINE static inline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
118 # elif defined(__GNUC__)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
119 /* This is GCC running in C89 mode */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
120 # define ORTHANC_PLUGIN_INLINE static __inline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
121 # elif defined(_MSC_VER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
122 /* This is Visual Studio running in C89 mode */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
123 # define ORTHANC_PLUGIN_INLINE static __inline
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 # else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125 # error Your compiler is not known to support the "inline" keyword
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
126 # endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
127 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
128
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
129
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
131 /********************************************************************
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132 ** Inclusion of standard libraries.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 ********************************************************************/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 * For Microsoft Visual Studio, a compatibility "stdint.h" can be
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137 * downloaded at the following URL:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 * https://orthanc.googlecode.com/hg/Resources/ThirdParty/VisualStudio/stdint.h
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 #include <stdint.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 #include <stdlib.h>
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146 /********************************************************************
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147 ** Definition of the Orthanc Plugin API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 ********************************************************************/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150 /** @{ */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152 #ifdef __cplusplus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 extern "C"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 * Forward declaration of one of the mandatory functions for Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 * plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 ORTHANC_PLUGINS_API const char* OrthancPluginGetName();
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 * The various HTTP methods for a REST call.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 OrthancPluginHttpMethod_Get = 1, /*!< GET request */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 OrthancPluginHttpMethod_Post = 2, /*!< POST request */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 OrthancPluginHttpMethod_Put = 3, /*!< PUT request */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 OrthancPluginHttpMethod_Delete = 4 /*!< DELETE request */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 } OrthancPluginHttpMethod;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 * @brief The parameters of a REST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
182 * @brief The HTTP method.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184 OrthancPluginHttpMethod method;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
185
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
186 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 * @brief The number of groups of the regular expression.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189 uint32_t groupsCount;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
190
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
191 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
192 * @brief The matched values for the groups of the regular expression.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
193 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194 const char* const* groups;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 * @brief For a GET request, the number of GET parameters.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199 uint32_t getCount;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202 * @brief For a GET request, the keys of the GET parameters.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
203 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204 const char* const* getKeys;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
205
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
206 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
207 * @brief For a GET request, the values of the GET parameters.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209 const char* const* getValues;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
211 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
212 * @brief For a PUT or POST request, the content of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
213 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
214 const char* body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
215
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
216 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
217 * @brief For a PUT or POST request, the number of bytes of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
218 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
219 uint32_t bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
220
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
221
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
222 /* --------------------------------------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
223 New in version 0.8.1
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
224 -------------------------------------------------- */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
225
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
226 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
227 * @brief The number of HTTP headers.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
228 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
229 uint32_t headersCount;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
230
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
231 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
232 * @brief The keys of the HTTP headers (always converted to low-case).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
233 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
234 const char* const* headersKeys;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
235
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
236 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
237 * @brief The values of the HTTP headers.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
238 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
239 const char* const* headersValues;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
240
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
241 } OrthancPluginHttpRequest;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
242
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
243
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
244 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
245 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
246 /* Generic services */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
247 _OrthancPluginService_LogInfo = 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
248 _OrthancPluginService_LogWarning = 2,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
249 _OrthancPluginService_LogError = 3,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
250 _OrthancPluginService_GetOrthancPath = 4,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
251 _OrthancPluginService_GetOrthancDirectory = 5,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
252 _OrthancPluginService_GetConfigurationPath = 6,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
253 _OrthancPluginService_SetPluginProperty = 7,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
254 _OrthancPluginService_GetGlobalProperty = 8,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
255 _OrthancPluginService_SetGlobalProperty = 9,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
256 _OrthancPluginService_GetCommandLineArgumentsCount = 10,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
257 _OrthancPluginService_GetCommandLineArgument = 11,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
258 _OrthancPluginService_GetExpectedDatabaseVersion = 12,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
259 _OrthancPluginService_GetConfiguration = 13,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
260
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
261 /* Registration of callbacks */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
262 _OrthancPluginService_RegisterRestCallback = 1000,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
263 _OrthancPluginService_RegisterOnStoredInstanceCallback = 1001,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
264 _OrthancPluginService_RegisterStorageArea = 1002,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
265 _OrthancPluginService_RegisterOnChangeCallback = 1003,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
266
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
267 /* Sending answers to REST calls */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
268 _OrthancPluginService_AnswerBuffer = 2000,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
269 _OrthancPluginService_CompressAndAnswerPngImage = 2001,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
270 _OrthancPluginService_Redirect = 2002,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
271 _OrthancPluginService_SendHttpStatusCode = 2003,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
272 _OrthancPluginService_SendUnauthorized = 2004,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
273 _OrthancPluginService_SendMethodNotAllowed = 2005,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
274 _OrthancPluginService_SetCookie = 2006,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
275 _OrthancPluginService_SetHttpHeader = 2007,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
276 _OrthancPluginService_StartMultipartAnswer = 2008,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
277 _OrthancPluginService_SendMultipartItem = 2009,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
278
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
279 /* Access to the Orthanc database and API */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
280 _OrthancPluginService_GetDicomForInstance = 3000,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
281 _OrthancPluginService_RestApiGet = 3001,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
282 _OrthancPluginService_RestApiPost = 3002,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
283 _OrthancPluginService_RestApiDelete = 3003,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
284 _OrthancPluginService_RestApiPut = 3004,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
285 _OrthancPluginService_LookupPatient = 3005,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
286 _OrthancPluginService_LookupStudy = 3006,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
287 _OrthancPluginService_LookupSeries = 3007,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
288 _OrthancPluginService_LookupInstance = 3008,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
289 _OrthancPluginService_LookupStudyWithAccessionNumber = 3009,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
290 _OrthancPluginService_RestApiGetAfterPlugins = 3010,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
291 _OrthancPluginService_RestApiPostAfterPlugins = 3011,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
292 _OrthancPluginService_RestApiDeleteAfterPlugins = 3012,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
293 _OrthancPluginService_RestApiPutAfterPlugins = 3013,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
294
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
295 /* Access to DICOM instances */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
296 _OrthancPluginService_GetInstanceRemoteAet = 4000,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
297 _OrthancPluginService_GetInstanceSize = 4001,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
298 _OrthancPluginService_GetInstanceData = 4002,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
299 _OrthancPluginService_GetInstanceJson = 4003,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
300 _OrthancPluginService_GetInstanceSimplifiedJson = 4004,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
301 _OrthancPluginService_HasInstanceMetadata = 4005,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
302 _OrthancPluginService_GetInstanceMetadata = 4006,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
303
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
304 /* Services for plugins implementing a database back-end */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
305 _OrthancPluginService_RegisterDatabaseBackend = 5000,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
306 _OrthancPluginService_DatabaseAnswer = 5001
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
307
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
308 } _OrthancPluginService;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
309
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
310
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
311 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
312 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
313 _OrthancPluginProperty_Description = 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
314 _OrthancPluginProperty_RootUri = 2,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
315 _OrthancPluginProperty_OrthancExplorer = 3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
316 } _OrthancPluginProperty;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
317
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
318
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
319
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
320 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
321 * The memory layout of the pixels of an image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
322 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
323 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
324 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
325 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
326 * @brief Graylevel 8bpp image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
327 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
328 * The image is graylevel. Each pixel is unsigned and stored in
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
329 * one byte.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
330 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
331 OrthancPluginPixelFormat_Grayscale8 = 1,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
332
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
333 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
334 * @brief Graylevel, unsigned 16bpp image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
335 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
336 * The image is graylevel. Each pixel is unsigned and stored in
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
337 * two bytes.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
338 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
339 OrthancPluginPixelFormat_Grayscale16 = 2,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
340
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
341 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
342 * @brief Graylevel, signed 16bpp image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
343 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
344 * The image is graylevel. Each pixel is signed and stored in two
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
345 * bytes.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
346 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
347 OrthancPluginPixelFormat_SignedGrayscale16 = 3,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
348
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
349 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
350 * @brief Color image in RGB24 format.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
351 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
352 * This format describes a color image. The pixels are stored in 3
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
353 * consecutive bytes. The memory layout is RGB.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
354 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
355 OrthancPluginPixelFormat_RGB24 = 4,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
356
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
357 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
358 * @brief Color image in RGBA32 format.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
359 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
360 * This format describes a color image. The pixels are stored in 4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
361 * consecutive bytes. The memory layout is RGBA.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
362 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
363 OrthancPluginPixelFormat_RGBA32 = 5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
364 } OrthancPluginPixelFormat;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
365
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
366
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
367
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
368 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
369 * The content types that are supported by Orthanc plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
370 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
371 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
372 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
373 OrthancPluginContentType_Unknown = 0, /*!< Unknown content type */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
374 OrthancPluginContentType_Dicom = 1, /*!< DICOM */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
375 OrthancPluginContentType_DicomAsJson = 2 /*!< JSON summary of a DICOM file */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
376 } OrthancPluginContentType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
377
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
378
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
379
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
380 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
381 * The supported type of DICOM resources.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
382 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
383 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
384 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
385 OrthancPluginResourceType_Patient = 0, /*!< Patient */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
386 OrthancPluginResourceType_Study = 1, /*!< Study */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
387 OrthancPluginResourceType_Series = 2, /*!< Series */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
388 OrthancPluginResourceType_Instance = 3 /*!< Instance */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
389 } OrthancPluginResourceType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
390
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
391
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
392
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
393 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
394 * The supported type of changes that can happen to DICOM resources.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
395 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
396 typedef enum
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
397 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
398 OrthancPluginChangeType_CompletedSeries = 0, /*!< Series is now complete */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
399 OrthancPluginChangeType_Deleted = 1, /*!< Deleted resource */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
400 OrthancPluginChangeType_NewChildInstance = 2, /*!< A new instance was added to this resource */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
401 OrthancPluginChangeType_NewInstance = 3, /*!< New instance received */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
402 OrthancPluginChangeType_NewPatient = 4, /*!< New patient created */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
403 OrthancPluginChangeType_NewSeries = 5, /*!< New series created */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
404 OrthancPluginChangeType_NewStudy = 6, /*!< New study created */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
405 OrthancPluginChangeType_StablePatient = 7, /*!< Timeout: No new instance in this patient */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
406 OrthancPluginChangeType_StableSeries = 8, /*!< Timeout: No new instance in this series */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
407 OrthancPluginChangeType_StableStudy = 9 /*!< Timeout: No new instance in this study */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
408 } OrthancPluginChangeType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
409
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
410
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
411
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
412 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
413 * @brief A memory buffer allocated by the core system of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
414 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
415 * A memory buffer allocated by the core system of Orthanc. When the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
416 * content of the buffer is not useful anymore, it must be free by a
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
417 * call to ::OrthancPluginFreeMemoryBuffer().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
418 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
419 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
420 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
421 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
422 * @brief The content of the buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
423 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
424 void* data;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
425
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
426 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
427 * @brief The number of bytes in the buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
428 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
429 uint32_t size;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
430 } OrthancPluginMemoryBuffer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
431
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
432
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
433
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
434
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
435 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
436 * @brief Opaque structure that represents the HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
437 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
438 typedef struct _OrthancPluginRestOutput_t OrthancPluginRestOutput;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
439
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
440
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
441
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
442 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
443 * @brief Opaque structure that represents a DICOM instance received by Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
444 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
445 typedef struct _OrthancPluginDicomInstance_t OrthancPluginDicomInstance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
446
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
447
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
448
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
449 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
450 * @brief Signature of a callback function that answers to a REST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
451 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
452 typedef int32_t (*OrthancPluginRestCallback) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
453 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
454 const char* url,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
455 const OrthancPluginHttpRequest* request);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
456
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
457
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
458
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
459 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
460 * @brief Signature of a callback function that is triggered when Orthanc receives a DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
461 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
462 typedef int32_t (*OrthancPluginOnStoredInstanceCallback) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
463 OrthancPluginDicomInstance* instance,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
464 const char* instanceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
465
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
466
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
467
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
468 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
469 * @brief Signature of a callback function that is triggered when a change happens to some DICOM resource.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
470 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
471 typedef int32_t (*OrthancPluginOnChangeCallback) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
472 OrthancPluginChangeType changeType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
473 OrthancPluginResourceType resourceType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
474 const char* resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
475
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
476
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
477
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
478 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
479 * @brief Signature of a function to free dynamic memory.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
480 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
481 typedef void (*OrthancPluginFree) (void* buffer);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
482
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
483
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
484
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
485 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
486 * @brief Callback for writing to the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
487 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
488 * Signature of a callback function that is triggered when Orthanc writes a file to the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
489 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
490 * @param uuid The UUID of the file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
491 * @param content The content of the file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
492 * @param size The size of the file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
493 * @param type The content type corresponding to this file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
494 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
495 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
496 typedef int32_t (*OrthancPluginStorageCreate) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
497 const char* uuid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
498 const void* content,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
499 int64_t size,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
500 OrthancPluginContentType type);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
501
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
502
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
503
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
504 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
505 * @brief Callback for reading from the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
506 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
507 * Signature of a callback function that is triggered when Orthanc reads a file from the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
508 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
509 * @param content The content of the file (output).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
510 * @param size The size of the file (output).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
511 * @param uuid The UUID of the file of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
512 * @param type The content type corresponding to this file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
513 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
514 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
515 typedef int32_t (*OrthancPluginStorageRead) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
516 void** content,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
517 int64_t* size,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
518 const char* uuid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
519 OrthancPluginContentType type);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
520
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
521
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
522
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
523 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
524 * @brief Callback for removing a file from the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
525 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
526 * Signature of a callback function that is triggered when Orthanc deletes a file from the storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
527 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
528 * @param uuid The UUID of the file to be removed.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
529 * @param type The content type corresponding to this file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
530 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
531 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
532 typedef int32_t (*OrthancPluginStorageRemove) (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
533 const char* uuid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
534 OrthancPluginContentType type);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
535
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
536
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
537
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
538 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
539 * @brief Data structure that contains information about the Orthanc core.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
540 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
541 typedef struct _OrthancPluginContext_t
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
542 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
543 void* pluginsManager;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
544 const char* orthancVersion;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
545 OrthancPluginFree Free;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
546 int32_t (*InvokeService) (struct _OrthancPluginContext_t* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
547 _OrthancPluginService service,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
548 const void* params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
549 } OrthancPluginContext;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
550
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
551
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
552
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
553 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
554 * @brief Free a string.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
555 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
556 * Free a string that was allocated by the core system of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
557 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
558 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
559 * @param str The string to be freed.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
560 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
561 ORTHANC_PLUGIN_INLINE void OrthancPluginFreeString(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
562 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
563 char* str)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
564 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
565 if (str != NULL)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
566 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
567 context->Free(str);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
568 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
569 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
570
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
571
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
572 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
573 * @brief Check the compatibility of the plugin wrt. the version of its hosting Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
574 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
575 * This function checks whether the version of this C header is
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
576 * compatible with the current version of Orthanc. The result of
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
577 * this function should always be checked in the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
578 * OrthancPluginInitialize() entry point of the plugin.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
579 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
580 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
581 * @return 1 if and only if the versions are compatible. If the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
582 * result is 0, the initialization of the plugin should fail.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
583 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
584 ORTHANC_PLUGIN_INLINE int OrthancPluginCheckVersion(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
585 OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
586 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
587 int major, minor, revision;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
588
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
589 /* Assume compatibility with the mainline */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
590 if (!strcmp(context->orthancVersion, "mainline"))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
591 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
592 return 1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
593 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
594
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
595 /* Parse the version of the Orthanc core */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
596 if (
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
597 #ifdef _MSC_VER
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
598 sscanf_s
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
599 #else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
600 sscanf
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
601 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
602 (context->orthancVersion, "%4d.%4d.%4d", &major, &minor, &revision) != 3)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
603 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
604 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
605 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
606
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
607 /* Check the major number of the version */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
608
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
609 if (major > ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
610 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
611 return 1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
612 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
613
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
614 if (major < ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
615 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
616 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
617 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
618
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
619 /* Check the minor number of the version */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
620
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
621 if (minor > ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
622 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
623 return 1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
624 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
625
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
626 if (minor < ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
627 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
628 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
629 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
630
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
631 /* Check the revision number of the version */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
632
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
633 if (revision >= ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
634 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
635 return 1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
636 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
637 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
638 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
639 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
640 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
641 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
642
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
643
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
644 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
645 * @brief Free a memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
646 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
647 * Free a memory buffer that was allocated by the core system of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
648 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
649 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
650 * @param buffer The memory buffer to release.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
651 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
652 ORTHANC_PLUGIN_INLINE void OrthancPluginFreeMemoryBuffer(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
653 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
654 OrthancPluginMemoryBuffer* buffer)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
655 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
656 context->Free(buffer->data);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
657 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
658
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
659
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
660 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
661 * @brief Log an error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
662 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
663 * Log an error message using the Orthanc logging system.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
664 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
665 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
666 * @param message The message to be logged.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
667 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
668 ORTHANC_PLUGIN_INLINE void OrthancPluginLogError(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
669 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
670 const char* message)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
671 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
672 context->InvokeService(context, _OrthancPluginService_LogError, message);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
673 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
674
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
675
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
676 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
677 * @brief Log a warning.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
678 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
679 * Log a warning message using the Orthanc logging system.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
680 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
681 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
682 * @param message The message to be logged.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
683 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
684 ORTHANC_PLUGIN_INLINE void OrthancPluginLogWarning(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
685 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
686 const char* message)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
687 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
688 context->InvokeService(context, _OrthancPluginService_LogWarning, message);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
689 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
690
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
691
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
692 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
693 * @brief Log an information.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
694 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
695 * Log an information message using the Orthanc logging system.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
696 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
697 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
698 * @param message The message to be logged.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
699 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
700 ORTHANC_PLUGIN_INLINE void OrthancPluginLogInfo(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
701 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
702 const char* message)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
703 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
704 context->InvokeService(context, _OrthancPluginService_LogInfo, message);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
705 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
706
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
707
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
708
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
709 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
710 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
711 const char* pathRegularExpression;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
712 OrthancPluginRestCallback callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
713 } _OrthancPluginRestCallback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
714
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
715 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
716 * @brief Register a REST callback.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
717 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
718 * This function registers a REST callback against a regular
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
719 * expression for a URI. This function must be called during the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
720 * initialization of the plugin, i.e. inside the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
721 * OrthancPluginInitialize() public function.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
722 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
723 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
724 * @param pathRegularExpression Regular expression for the URI. May contain groups.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
725 * @param callback The callback function to handle the REST call.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
726 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
727 ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterRestCallback(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
728 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
729 const char* pathRegularExpression,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
730 OrthancPluginRestCallback callback)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
731 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
732 _OrthancPluginRestCallback params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
733 params.pathRegularExpression = pathRegularExpression;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
734 params.callback = callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
735 context->InvokeService(context, _OrthancPluginService_RegisterRestCallback, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
736 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
737
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
738
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
739
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
740 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
741 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
742 OrthancPluginOnStoredInstanceCallback callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
743 } _OrthancPluginOnStoredInstanceCallback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
744
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
745 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
746 * @brief Register a callback for received instances.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
747 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
748 * This function registers a callback function that is called
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
749 * whenever a new DICOM instance is stored into the Orthanc core.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
750 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
751 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
752 * @param callback The callback function.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
753 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
754 ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterOnStoredInstanceCallback(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
755 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
756 OrthancPluginOnStoredInstanceCallback callback)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
757 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
758 _OrthancPluginOnStoredInstanceCallback params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
759 params.callback = callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
760
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
761 context->InvokeService(context, _OrthancPluginService_RegisterOnStoredInstanceCallback, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
762 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
763
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
764
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
765
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
766 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
767 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
768 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
769 const char* answer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
770 uint32_t answerSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
771 const char* mimeType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
772 } _OrthancPluginAnswerBuffer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
773
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
774 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
775 * @brief Answer to a REST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
776 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
777 * This function answers to a REST request with the content of a memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
778 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
779 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
780 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
781 * @param answer Pointer to the memory buffer containing the answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
782 * @param answerSize Number of bytes of the answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
783 * @param mimeType The MIME type of the answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
784 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
785 ORTHANC_PLUGIN_INLINE void OrthancPluginAnswerBuffer(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
786 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
787 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
788 const char* answer,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
789 uint32_t answerSize,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
790 const char* mimeType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
791 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
792 _OrthancPluginAnswerBuffer params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
793 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
794 params.answer = answer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
795 params.answerSize = answerSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
796 params.mimeType = mimeType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
797 context->InvokeService(context, _OrthancPluginService_AnswerBuffer, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
798 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
799
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
800
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
801 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
802 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
803 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
804 OrthancPluginPixelFormat format;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
805 uint32_t width;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
806 uint32_t height;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
807 uint32_t pitch;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
808 const void* buffer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
809 } _OrthancPluginCompressAndAnswerPngImage;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
810
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
811 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
812 * @brief Answer to a REST request with a PNG image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
813 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
814 * This function answers to a REST request with a PNG image. The
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
815 * parameters of this function describe a memory buffer that
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
816 * contains an uncompressed image. The image will be automatically compressed
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
817 * as a PNG image by the core system of Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
818 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
819 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
820 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
821 * @param format The memory layout of the uncompressed image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
822 * @param width The width of the image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
823 * @param height The height of the image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
824 * @param pitch The pitch of the image (i.e. the number of bytes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
825 * between 2 successive lines of the image in the memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
826 * @param buffer The memory buffer containing the uncompressed image.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
827 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
828 ORTHANC_PLUGIN_INLINE void OrthancPluginCompressAndAnswerPngImage(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
829 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
830 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
831 OrthancPluginPixelFormat format,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
832 uint32_t width,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
833 uint32_t height,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
834 uint32_t pitch,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
835 const void* buffer)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
836 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
837 _OrthancPluginCompressAndAnswerPngImage params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
838 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
839 params.format = format;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
840 params.width = width;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
841 params.height = height;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
842 params.pitch = pitch;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
843 params.buffer = buffer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
844 context->InvokeService(context, _OrthancPluginService_CompressAndAnswerPngImage, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
845 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
846
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
847
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
848
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
849 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
850 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
851 OrthancPluginMemoryBuffer* target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
852 const char* instanceId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
853 } _OrthancPluginGetDicomForInstance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
854
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
855 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
856 * @brief Retrieve a DICOM instance using its Orthanc identifier.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
857 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
858 * Retrieve a DICOM instance using its Orthanc identifier. The DICOM
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
859 * file is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
860 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
861 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
862 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
863 * @param instanceId The Orthanc identifier of the DICOM instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
864 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
865 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
866 ORTHANC_PLUGIN_INLINE int OrthancPluginGetDicomForInstance(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
867 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
868 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
869 const char* instanceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
870 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
871 _OrthancPluginGetDicomForInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
872 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
873 params.instanceId = instanceId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
874 return context->InvokeService(context, _OrthancPluginService_GetDicomForInstance, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
875 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
876
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
877
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
878
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
879 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
880 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
881 OrthancPluginMemoryBuffer* target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
882 const char* uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
883 } _OrthancPluginRestApiGet;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
884
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
885 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
886 * @brief Make a GET call to the built-in Orthanc REST API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
887 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
888 * Make a GET call to the built-in Orthanc REST API. The result to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
889 * the query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
890 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
891 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
892 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
893 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
894 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
895 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
896 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiGet(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
897 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
898 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
899 const char* uri)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
900 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
901 _OrthancPluginRestApiGet params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
902 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
903 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
904 return context->InvokeService(context, _OrthancPluginService_RestApiGet, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
905 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
906
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
907
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
908
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
909 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
910 * @brief Make a GET call to the REST API, as tainted by the plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
911 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
912 * Make a GET call to the Orthanc REST API, after all the plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
913 * are applied. In other words, if some plugin overrides or adds the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
914 * called URI to the built-in Orthanc REST API, this call will
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
915 * return the result provided by this plugin. The result to the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
916 * query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
917 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
918 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
919 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
920 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
921 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
922 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
923 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiGetAfterPlugins(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
924 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
925 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
926 const char* uri)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
927 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
928 _OrthancPluginRestApiGet params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
929 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
930 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
931 return context->InvokeService(context, _OrthancPluginService_RestApiGetAfterPlugins, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
932 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
933
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
934
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
935
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
936 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
937 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
938 OrthancPluginMemoryBuffer* target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
939 const char* uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
940 const char* body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
941 uint32_t bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
942 } _OrthancPluginRestApiPostPut;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
943
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
944 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
945 * @brief Make a POST call to the built-in Orthanc REST API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
946 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
947 * Make a POST call to the built-in Orthanc REST API. The result to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
948 * the query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
949 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
950 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
951 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
952 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
953 * @param body The body of the POST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
954 * @param bodySize The size of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
955 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
956 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
957 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPost(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
958 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
959 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
960 const char* uri,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
961 const char* body,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
962 uint32_t bodySize)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
963 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
964 _OrthancPluginRestApiPostPut params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
965 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
966 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
967 params.body = body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
968 params.bodySize = bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
969 return context->InvokeService(context, _OrthancPluginService_RestApiPost, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
970 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
971
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
972
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
973 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
974 * @brief Make a POST call to the REST API, as tainted by the plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
975 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
976 * Make a POST call to the Orthanc REST API, after all the plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
977 * are applied. In other words, if some plugin overrides or adds the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
978 * called URI to the built-in Orthanc REST API, this call will
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
979 * return the result provided by this plugin. The result to the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
980 * query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
981 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
982 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
983 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
984 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
985 * @param body The body of the POST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
986 * @param bodySize The size of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
987 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
988 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
989 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPostAfterPlugins(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
990 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
991 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
992 const char* uri,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
993 const char* body,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
994 uint32_t bodySize)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
995 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
996 _OrthancPluginRestApiPostPut params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
997 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
998 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
999 params.body = body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1000 params.bodySize = bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1001 return context->InvokeService(context, _OrthancPluginService_RestApiPostAfterPlugins, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1002 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1003
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1004
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1005
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1006 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1007 * @brief Make a DELETE call to the built-in Orthanc REST API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1008 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1009 * Make a DELETE call to the built-in Orthanc REST API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1010 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1011 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1012 * @param uri The URI to delete in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1013 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1014 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1015 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiDelete(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1016 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1017 const char* uri)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1018 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1019 return context->InvokeService(context, _OrthancPluginService_RestApiDelete, uri);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1020 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1021
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1023 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1024 * @brief Make a DELETE call to the REST API, as tainted by the plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1025 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1026 * Make a DELETE call to the Orthanc REST API, after all the plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1027 * are applied. In other words, if some plugin overrides or adds the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1028 * called URI to the built-in Orthanc REST API, this call will
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1029 * return the result provided by this plugin.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1030 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1031 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1032 * @param uri The URI to delete in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1033 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1034 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1035 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiDeleteAfterPlugins(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1036 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1037 const char* uri)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1038 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1039 return context->InvokeService(context, _OrthancPluginService_RestApiDeleteAfterPlugins, uri);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1040 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1041
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1042
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1043
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1044 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1045 * @brief Make a PUT call to the built-in Orthanc REST API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1046 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1047 * Make a PUT call to the built-in Orthanc REST API. The result to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1048 * the query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1049 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1050 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1051 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1052 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1053 * @param body The body of the PUT request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1054 * @param bodySize The size of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1055 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1056 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1057 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPut(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1058 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1059 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1060 const char* uri,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1061 const char* body,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1062 uint32_t bodySize)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1063 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1064 _OrthancPluginRestApiPostPut params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1065 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1066 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1067 params.body = body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1068 params.bodySize = bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1069 return context->InvokeService(context, _OrthancPluginService_RestApiPut, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1070 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1071
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1072
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1073
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1074 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1075 * @brief Make a PUT call to the REST API, as tainted by the plugins.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1076 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1077 * Make a PUT call to the Orthanc REST API, after all the plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1078 * are applied. In other words, if some plugin overrides or adds the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1079 * called URI to the built-in Orthanc REST API, this call will
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1080 * return the result provided by this plugin. The result to the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1081 * query is stored into a newly allocated memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1082 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1083 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1084 * @param target The target memory buffer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1085 * @param uri The URI in the built-in Orthanc API.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1086 * @param body The body of the PUT request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1087 * @param bodySize The size of the body.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1088 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1089 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1090 ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPutAfterPlugins(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1091 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1092 OrthancPluginMemoryBuffer* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1093 const char* uri,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1094 const char* body,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1095 uint32_t bodySize)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1096 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1097 _OrthancPluginRestApiPostPut params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1098 params.target = target;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1099 params.uri = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1100 params.body = body;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1101 params.bodySize = bodySize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1102 return context->InvokeService(context, _OrthancPluginService_RestApiPutAfterPlugins, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1103 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1104
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1105
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1106
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1107 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1108 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1109 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1110 const char* argument;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1111 } _OrthancPluginOutputPlusArgument;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1113 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1114 * @brief Redirect a REST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1115 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1116 * This function answers to a REST request by redirecting the user
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1117 * to another URI using HTTP status 301.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1118 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1119 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1120 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1121 * @param redirection Where to redirect.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1122 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1123 ORTHANC_PLUGIN_INLINE void OrthancPluginRedirect(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1124 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1125 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1126 const char* redirection)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1127 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1128 _OrthancPluginOutputPlusArgument params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1129 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1130 params.argument = redirection;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1131 context->InvokeService(context, _OrthancPluginService_Redirect, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1132 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1133
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1134
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1135
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1136 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1137 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1138 char** result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1139 const char* argument;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1140 } _OrthancPluginRetrieveDynamicString;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1141
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1142 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1143 * @brief Look for a patient.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1144 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1145 * Look for a patient stored in Orthanc, using its Patient ID tag (0x0010, 0x0020).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1146 * This function uses the database index to run as fast as possible (it does not loop
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1147 * over all the stored patients).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1148 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1149 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1150 * @param patientID The Patient ID of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1151 * @return The NULL value if the patient is non-existent, or a string containing the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1152 * Orthanc ID of the patient. This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1153 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1154 ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupPatient(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1155 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1156 const char* patientID)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1157 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1158 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1159
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1160 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1161 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1162 params.argument = patientID;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1163
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1164 if (context->InvokeService(context, _OrthancPluginService_LookupPatient, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1165 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1166 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1167 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1168 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1169 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1170 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1171 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1172 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1173 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1174
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1175
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1176 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1177 * @brief Look for a study.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1178 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1179 * Look for a study stored in Orthanc, using its Study Instance UID tag (0x0020, 0x000d).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1180 * This function uses the database index to run as fast as possible (it does not loop
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1181 * over all the stored studies).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1182 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1183 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1184 * @param studyUID The Study Instance UID of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1185 * @return The NULL value if the study is non-existent, or a string containing the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1186 * Orthanc ID of the study. This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1187 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1188 ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupStudy(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1189 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1190 const char* studyUID)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1191 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1192 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1193
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1194 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1195 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1196 params.argument = studyUID;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1197
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1198 if (context->InvokeService(context, _OrthancPluginService_LookupStudy, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1199 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1200 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1201 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1202 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1203 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1204 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1205 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1206 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1207 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1208
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1209
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1210 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1211 * @brief Look for a study, using the accession number.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1212 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1213 * Look for a study stored in Orthanc, using its Accession Number tag (0x0008, 0x0050).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1214 * This function uses the database index to run as fast as possible (it does not loop
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1215 * over all the stored studies).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1216 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1217 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1218 * @param accessionNumber The Accession Number of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1219 * @return The NULL value if the study is non-existent, or a string containing the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1220 * Orthanc ID of the study. This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1221 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1222 ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupStudyWithAccessionNumber(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1223 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1224 const char* accessionNumber)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1225 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1226 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1227
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1228 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1229 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1230 params.argument = accessionNumber;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1231
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1232 if (context->InvokeService(context, _OrthancPluginService_LookupStudyWithAccessionNumber, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1233 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1234 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1235 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1236 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1237 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1238 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1239 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1240 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1241 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1242
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1243
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1244 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1245 * @brief Look for a series.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1246 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1247 * Look for a series stored in Orthanc, using its Series Instance UID tag (0x0020, 0x000e).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1248 * This function uses the database index to run as fast as possible (it does not loop
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1249 * over all the stored series).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1250 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1251 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1252 * @param seriesUID The Series Instance UID of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1253 * @return The NULL value if the series is non-existent, or a string containing the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1254 * Orthanc ID of the series. This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1255 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1256 ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupSeries(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1257 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1258 const char* seriesUID)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1259 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1260 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1261
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1262 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1263 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1264 params.argument = seriesUID;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1265
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1266 if (context->InvokeService(context, _OrthancPluginService_LookupSeries, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1267 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1268 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1269 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1270 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1271 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1272 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1273 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1274 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1275 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1276
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1277
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1278 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1279 * @brief Look for an instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1280 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1281 * Look for an instance stored in Orthanc, using its SOP Instance UID tag (0x0008, 0x0018).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1282 * This function uses the database index to run as fast as possible (it does not loop
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1283 * over all the stored instances).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1284 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1285 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1286 * @param sopInstanceUID The SOP Instance UID of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1287 * @return The NULL value if the instance is non-existent, or a string containing the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1288 * Orthanc ID of the instance. This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1289 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1290 ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupInstance(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1291 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1292 const char* sopInstanceUID)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1293 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1294 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1295
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1296 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1297 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1298 params.argument = sopInstanceUID;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1299
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1300 if (context->InvokeService(context, _OrthancPluginService_LookupInstance, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1301 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1302 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1303 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1304 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1305 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1306 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1307 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1308 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1309 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1310
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1311
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1312
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1313 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1314 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1315 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1316 uint16_t status;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1317 } _OrthancPluginSendHttpStatusCode;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1318
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1319 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1320 * @brief Send a HTTP status code.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1321 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1322 * This function answers to a REST request by sending a HTTP status
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1323 * code (such as "400 - Bad Request"). Note that:
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1324 * - Successful requests (status 200) must use ::OrthancPluginAnswerBuffer().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1325 * - Redirections (status 301) must use ::OrthancPluginRedirect().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1326 * - Unauthorized access (status 401) must use ::OrthancPluginSendUnauthorized().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1327 * - Methods not allowed (status 405) must use ::OrthancPluginSendMethodNotAllowed().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1328 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1329 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1330 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1331 * @param status The HTTP status code to be sent.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1332 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1333 ORTHANC_PLUGIN_INLINE void OrthancPluginSendHttpStatusCode(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1334 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1335 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1336 uint16_t status)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1337 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1338 _OrthancPluginSendHttpStatusCode params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1339 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1340 params.status = status;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1341 context->InvokeService(context, _OrthancPluginService_SendHttpStatusCode, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1342 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1343
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1344
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1345 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1346 * @brief Signal that a REST request is not authorized.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1347 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1348 * This function answers to a REST request by signaling that it is
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1349 * not authorized.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1350 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1351 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1352 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1353 * @param realm The realm for the authorization process.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1354 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1355 ORTHANC_PLUGIN_INLINE void OrthancPluginSendUnauthorized(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1356 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1357 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1358 const char* realm)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1359 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1360 _OrthancPluginOutputPlusArgument params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1361 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1362 params.argument = realm;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1363 context->InvokeService(context, _OrthancPluginService_SendUnauthorized, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1364 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1365
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1366
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1367 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1368 * @brief Signal that this URI does not support this HTTP method.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1369 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1370 * This function answers to a REST request by signaling that the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1371 * queried URI does not support this method.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1372 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1373 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1374 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1375 * @param allowedMethods The allowed methods for this URI (e.g. "GET,POST" after a PUT or a POST request).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1376 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1377 ORTHANC_PLUGIN_INLINE void OrthancPluginSendMethodNotAllowed(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1378 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1379 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1380 const char* allowedMethods)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1381 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1382 _OrthancPluginOutputPlusArgument params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1383 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1384 params.argument = allowedMethods;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1385 context->InvokeService(context, _OrthancPluginService_SendMethodNotAllowed, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1386 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1387
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1388
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1389 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1390 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1391 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1392 const char* key;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1393 const char* value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1394 } _OrthancPluginSetHttpHeader;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1395
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1396 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1397 * @brief Set a cookie.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1398 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1399 * This function sets a cookie in the HTTP client.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1400 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1401 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1402 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1403 * @param cookie The cookie to be set.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1404 * @param value The value of the cookie.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1405 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1406 ORTHANC_PLUGIN_INLINE void OrthancPluginSetCookie(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1407 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1408 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1409 const char* cookie,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1410 const char* value)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1411 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1412 _OrthancPluginSetHttpHeader params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1413 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1414 params.key = cookie;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1415 params.value = value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1416 context->InvokeService(context, _OrthancPluginService_SetCookie, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1417 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1418
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1419
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1420 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1421 * @brief Set some HTTP header.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1422 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1423 * This function sets a HTTP header in the HTTP answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1424 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1425 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1426 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1427 * @param key The HTTP header to be set.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1428 * @param value The value of the HTTP header.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1429 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1430 ORTHANC_PLUGIN_INLINE void OrthancPluginSetHttpHeader(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1431 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1432 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1433 const char* key,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1434 const char* value)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1435 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1436 _OrthancPluginSetHttpHeader params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1437 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1438 params.key = key;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1439 params.value = value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1440 context->InvokeService(context, _OrthancPluginService_SetHttpHeader, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1441 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1442
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1443
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1444 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1445 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1446 char** resultStringToFree;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1447 const char** resultString;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1448 int64_t* resultInt64;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1449 const char* key;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1450 OrthancPluginDicomInstance* instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1451 } _OrthancPluginAccessDicomInstance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1452
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1453
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1454 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1455 * @brief Get the AET of a DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1456 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1457 * This function returns the Application Entity Title (AET) of the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1458 * DICOM modality from which a DICOM instance originates.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1459 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1460 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1461 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1462 * @return The AET if success, NULL if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1463 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1464 ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceRemoteAet(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1465 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1466 OrthancPluginDicomInstance* instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1467 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1468 const char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1469
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1470 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1471 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1472 params.resultString = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1473 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1474
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1475 if (context->InvokeService(context, _OrthancPluginService_GetInstanceRemoteAet, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1476 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1477 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1478 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1479 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1480 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1481 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1482 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1483 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1484 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1485
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1486
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1487 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1488 * @brief Get the size of a DICOM file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1489 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1490 * This function returns the number of bytes of the given DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1491 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1492 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1493 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1494 * @return The size of the file, -1 in case of error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1495 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1496 ORTHANC_PLUGIN_INLINE int64_t OrthancPluginGetInstanceSize(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1497 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1498 OrthancPluginDicomInstance* instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1499 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1500 int64_t size;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1501
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1502 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1503 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1504 params.resultInt64 = &size;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1505 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1506
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1507 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSize, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1508 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1509 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1510 return -1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1511 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1512 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1513 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1514 return size;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1515 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1516 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1517
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1518
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1519 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1520 * @brief Get the data of a DICOM file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1521 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1522 * This function returns a pointer to the content of the given DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1523 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1524 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1525 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1526 * @return The pointer to the DICOM data, NULL in case of error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1527 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1528 ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceData(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1529 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1530 OrthancPluginDicomInstance* instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1531 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1532 const char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1533
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1534 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1535 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1536 params.resultString = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1537 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1538
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1539 if (context->InvokeService(context, _OrthancPluginService_GetInstanceData, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1540 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1541 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1542 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1543 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1544 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1545 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1546 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1547 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1548 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1549
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1550
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1551 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1552 * @brief Get the DICOM tag hierarchy as a JSON file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1553 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1554 * This function returns a pointer to a newly created string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1555 * containing a JSON file. This JSON file encodes the tag hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1556 * of the given DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1557 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1558 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1559 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1560 * @return The NULL value in case of error, or a string containing the JSON file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1561 * This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1562 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1563 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceJson(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1564 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1565 OrthancPluginDicomInstance* instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1566 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1567 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1568
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1569 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1570 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1571 params.resultStringToFree = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1572 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1573
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1574 if (context->InvokeService(context, _OrthancPluginService_GetInstanceJson, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1575 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1576 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1577 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1578 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1579 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1580 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1581 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1582 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1583 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1584
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1585
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1586 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1587 * @brief Get the DICOM tag hierarchy as a JSON file (with simplification).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1588 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1589 * This function returns a pointer to a newly created string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1590 * containing a JSON file. This JSON file encodes the tag hierarchy
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1591 * of the given DICOM instance. In contrast with
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1592 * ::OrthancPluginGetInstanceJson(), the returned JSON file is in
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1593 * its simplified version.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1594 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1595 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1596 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1597 * @return The NULL value in case of error, or a string containing the JSON file.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1598 * This string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1599 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1600 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceSimplifiedJson(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1601 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1602 OrthancPluginDicomInstance* instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1603 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1604 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1605
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1606 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1607 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1608 params.resultStringToFree = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1609 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1610
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1611 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSimplifiedJson, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1612 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1613 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1614 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1615 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1616 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1617 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1618 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1619 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1620 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1621
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1622
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1623 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1624 * @brief Check whether a DICOM instance is associated with some metadata.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1625 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1626 * This function checks whether the DICOM instance of interest is
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1627 * associated with some metadata. As of Orthanc 0.8.1, in the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1628 * callbacks registered by
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1629 * ::OrthancPluginRegisterOnStoredInstanceCallback(), the only
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1630 * possibly available metadata are "ReceptionDate", "RemoteAET" and
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1631 * "IndexInSeries".
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1632 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1633 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1634 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1635 * @param metadata The metadata of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1636 * @return 1 if the metadata is present, 0 if it is absent, -1 in case of error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1637 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1638 ORTHANC_PLUGIN_INLINE int OrthancPluginHasInstanceMetadata(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1639 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1640 OrthancPluginDicomInstance* instance,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1641 const char* metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1642 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1643 int64_t result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1644
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1645 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1646 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1647 params.resultInt64 = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1648 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1649 params.key = metadata;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1650
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1651 if (context->InvokeService(context, _OrthancPluginService_HasInstanceMetadata, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1652 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1653 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1654 return -1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1655 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1656 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1657 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1658 return (result != 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1659 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1660 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1661
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1662
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1663 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1664 * @brief Get the value of some metadata associated with a given DICOM instance.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1665 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1666 * This functions returns the value of some metadata that is associated with the DICOM instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1667 * Before calling this function, the existence of the metadata must have been checked with
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1668 * ::OrthancPluginHasInstanceMetadata().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1669 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1670 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1671 * @param instance The instance of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1672 * @param metadata The metadata of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1673 * @return The metadata value if success, NULL if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1674 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1675 ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceMetadata(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1676 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1677 OrthancPluginDicomInstance* instance,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1678 const char* metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1679 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1680 const char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1681
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1682 _OrthancPluginAccessDicomInstance params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1683 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1684 params.resultString = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1685 params.instance = instance;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1686 params.key = metadata;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1687
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1688 if (context->InvokeService(context, _OrthancPluginService_GetInstanceMetadata, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1689 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1690 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1691 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1692 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1693 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1694 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1695 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1696 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1697 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1698
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1699
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1700
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1701 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1702 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1703 OrthancPluginStorageCreate create;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1704 OrthancPluginStorageRead read;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1705 OrthancPluginStorageRemove remove;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1706 OrthancPluginFree free;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1707 } _OrthancPluginRegisterStorageArea;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1708
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1709 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1710 * @brief Register a custom storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1711 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1712 * This function registers a custom storage area, to replace the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1713 * built-in way Orthanc stores its files on the filesystem. This
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1714 * function must be called during the initialization of the plugin,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1715 * i.e. inside the OrthancPluginInitialize() public function.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1716 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1717 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1718 * @param create The callback function to store a file on the custom storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1719 * @param read The callback function to read a file from the custom storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1720 * @param remove The callback function to remove a file from the custom storage area.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1721 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1722 ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterStorageArea(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1723 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1724 OrthancPluginStorageCreate create,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1725 OrthancPluginStorageRead read,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1726 OrthancPluginStorageRemove remove)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1727 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1728 _OrthancPluginRegisterStorageArea params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1729 params.create = create;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1730 params.read = read;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1731 params.remove = remove;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1732
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1733 #ifdef __cplusplus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1734 params.free = ::free;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1735 #else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1736 params.free = free;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1737 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1738
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1739 context->InvokeService(context, _OrthancPluginService_RegisterStorageArea, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1740 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1741
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1742
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1743
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1744 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1745 * @brief Return the path to the Orthanc executable.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1746 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1747 * This function returns the path to the Orthanc executable.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1748 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1749 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1750 * @return NULL in the case of an error, or a newly allocated string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1751 * containing the path. This string must be freed by
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1752 * OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1753 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1754 ORTHANC_PLUGIN_INLINE char *OrthancPluginGetOrthancPath(OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1755 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1756 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1757
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1758 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1759 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1760 params.argument = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1761
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1762 if (context->InvokeService(context, _OrthancPluginService_GetOrthancPath, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1763 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1764 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1765 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1766 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1767 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1768 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1769 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1770 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1771 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1772
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1773
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1774 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1775 * @brief Return the directory containing the Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1776 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1777 * This function returns the path to the directory containing the Orthanc executable.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1778 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1779 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1780 * @return NULL in the case of an error, or a newly allocated string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1781 * containing the path. This string must be freed by
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1782 * OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1783 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1784 ORTHANC_PLUGIN_INLINE char *OrthancPluginGetOrthancDirectory(OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1785 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1786 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1787
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1788 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1789 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1790 params.argument = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1791
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1792 if (context->InvokeService(context, _OrthancPluginService_GetOrthancDirectory, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1793 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1794 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1795 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1796 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1797 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1798 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1799 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1800 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1801 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1802
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1803
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1804 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1805 * @brief Return the path to the configuration file(s).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1806 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1807 * This function returns the path to the configuration file(s) that
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1808 * was specified when starting Orthanc. Since version 0.9.1, this
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1809 * path can refer to a folder that stores a set of configuration
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1810 * files. This function is deprecated in favor of
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1811 * OrthancPluginGetConfiguration().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1812 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1813 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1814 * @return NULL in the case of an error, or a newly allocated string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1815 * containing the path. This string must be freed by
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1816 * OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1817 * @see OrthancPluginGetConfiguration()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1818 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1819 ORTHANC_PLUGIN_INLINE char *OrthancPluginGetConfigurationPath(OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1820 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1821 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1822
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1823 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1824 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1825 params.argument = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1826
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1827 if (context->InvokeService(context, _OrthancPluginService_GetConfigurationPath, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1828 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1829 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1830 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1831 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1832 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1833 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1834 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1835 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1836 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1837
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1838
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1839
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1840 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1841 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1842 OrthancPluginOnChangeCallback callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1843 } _OrthancPluginOnChangeCallback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1844
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1845 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1846 * @brief Register a callback to monitor changes.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1847 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1848 * This function registers a callback function that is called
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1849 * whenever a change happens to some DICOM resource.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1850 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1851 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1852 * @param callback The callback function.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1853 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1854 ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterOnChangeCallback(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1855 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1856 OrthancPluginOnChangeCallback callback)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1857 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1858 _OrthancPluginOnChangeCallback params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1859 params.callback = callback;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1860
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1861 context->InvokeService(context, _OrthancPluginService_RegisterOnChangeCallback, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1862 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1863
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1864
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1865
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1866 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1867 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1868 const char* plugin;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1869 _OrthancPluginProperty property;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1870 const char* value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1871 } _OrthancPluginSetPluginProperty;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1872
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1873
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1874 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1875 * @brief Set the URI where the plugin provides its Web interface.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1876 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1877 * For plugins that come with a Web interface, this function
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1878 * declares the entry path where to find this interface. This
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1879 * information is notably used in the "Plugins" page of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1880 * Explorer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1881 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1882 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1883 * @param uri The root URI for this plugin.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1884 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1885 ORTHANC_PLUGIN_INLINE void OrthancPluginSetRootUri(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1886 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1887 const char* uri)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1888 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1889 _OrthancPluginSetPluginProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1890 params.plugin = OrthancPluginGetName();
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1891 params.property = _OrthancPluginProperty_RootUri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1892 params.value = uri;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1893
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1894 context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1895 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1896
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1897
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1898 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1899 * @brief Set a description for this plugin.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1900 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1901 * Set a description for this plugin. It is displayed in the
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1902 * "Plugins" page of Orthanc Explorer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1903 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1904 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1905 * @param description The description.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1906 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1907 ORTHANC_PLUGIN_INLINE void OrthancPluginSetDescription(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1908 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1909 const char* description)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1910 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1911 _OrthancPluginSetPluginProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1912 params.plugin = OrthancPluginGetName();
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1913 params.property = _OrthancPluginProperty_Description;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1914 params.value = description;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1915
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1916 context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1917 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1918
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1919
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1920 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1921 * @brief Extend the JavaScript code of Orthanc Explorer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1922 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1923 * Add JavaScript code to customize the default behavior of Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1924 * Explorer. This can for instance be used to add new buttons.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1925 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1926 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1927 * @param javascript The custom JavaScript code.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1928 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1929 ORTHANC_PLUGIN_INLINE void OrthancPluginExtendOrthancExplorer(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1930 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1931 const char* javascript)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1932 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1933 _OrthancPluginSetPluginProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1934 params.plugin = OrthancPluginGetName();
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1935 params.property = _OrthancPluginProperty_OrthancExplorer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1936 params.value = javascript;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1937
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1938 context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1939 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1940
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1941
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1942 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1943 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1944 char** result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1945 int32_t property;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1946 const char* value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1947 } _OrthancPluginGlobalProperty;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1948
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1949
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1950 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1951 * @brief Get the value of a global property.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1952 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1953 * Get the value of a global property that is stored in the Orthanc database. Global
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1954 * properties whose index is below 1024 are reserved by Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1955 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1956 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1957 * @param property The global property of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1958 * @param defaultValue The value to return, if the global property is unset.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1959 * @return The value of the global property, or NULL in the case of an error. This
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1960 * string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1961 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1962 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetGlobalProperty(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1963 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1964 int32_t property,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1965 const char* defaultValue)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1966 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1967 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1968
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1969 _OrthancPluginGlobalProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1970 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1971 params.property = property;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1972 params.value = defaultValue;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1973
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1974 if (context->InvokeService(context, _OrthancPluginService_GetGlobalProperty, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1975 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1976 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1977 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1978 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1979 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1980 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1981 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1982 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1983 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1984
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1985
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1986 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1987 * @brief Set the value of a global property.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1988 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1989 * Set the value of a global property into the Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1990 * database. Setting a global property can be used by plugins to
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1991 * save their internal parameters. Plugins are only allowed to set
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1992 * properties whose index are above or equal to 1024 (properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1993 * below 1024 are read-only and reserved by Orthanc).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1994 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1995 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1996 * @param property The global property of interest.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1997 * @param value The value to be set in the global property.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1998 * @return 0 if success, -1 in case of error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1999 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2000 ORTHANC_PLUGIN_INLINE int32_t OrthancPluginSetGlobalProperty(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2001 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2002 int32_t property,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2003 const char* value)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2004 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2005 _OrthancPluginGlobalProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2006 params.result = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2007 params.property = property;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2008 params.value = value;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2009
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2010 if (context->InvokeService(context, _OrthancPluginService_SetGlobalProperty, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2011 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2012 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2013 return -1;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2014 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2015 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2016 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2017 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2018 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2019 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2021
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2023 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2024 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2025 int32_t *resultInt32;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2026 uint32_t *resultUint32;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2027 int64_t *resultInt64;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2028 uint64_t *resultUint64;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2029 } _OrthancPluginReturnSingleValue;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2030
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2031 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2032 * @brief Get the number of command-line arguments.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2033 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2034 * Retrieve the number of command-line arguments that were used to launch Orthanc.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2035 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2036 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2037 * @return The number of arguments.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2038 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2039 ORTHANC_PLUGIN_INLINE uint32_t OrthancPluginGetCommandLineArgumentsCount(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2040 OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2041 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2042 uint32_t count = 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2043
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2044 _OrthancPluginReturnSingleValue params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2045 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2046 params.resultUint32 = &count;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2047
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2048 if (context->InvokeService(context, _OrthancPluginService_GetCommandLineArgumentsCount, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2049 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2050 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2051 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2052 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2053 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2054 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2055 return count;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2056 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2057 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2058
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2059
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2060
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2061 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2062 * @brief Get the value of a command-line argument.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2063 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2064 * Get the value of one of the command-line arguments that were used
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2065 * to launch Orthanc. The number of available arguments can be
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2066 * retrieved by OrthancPluginGetCommandLineArgumentsCount().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2067 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2068 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2069 * @param argument The index of the argument.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2070 * @return The value of the argument, or NULL in the case of an error. This
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2071 * string must be freed by OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2072 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2073 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetCommandLineArgument(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2074 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2075 uint32_t argument)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2076 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2077 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2078
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2079 _OrthancPluginGlobalProperty params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2080 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2081 params.property = (int32_t) argument;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2082 params.value = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2083
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2084 if (context->InvokeService(context, _OrthancPluginService_GetCommandLineArgument, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2085 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2086 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2087 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2088 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2089 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2090 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2091 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2092 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2093 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2094
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2095
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2096 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2097 * @brief Get the expected version of the database schema.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2098 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2099 * Retrieve the expected version of the database schema.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2100 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2101 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2102 * @return The version.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2103 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2104 ORTHANC_PLUGIN_INLINE uint32_t OrthancPluginGetExpectedDatabaseVersion(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2105 OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2106 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2107 uint32_t count = 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2108
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2109 _OrthancPluginReturnSingleValue params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2110 memset(&params, 0, sizeof(params));
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2111 params.resultUint32 = &count;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2112
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2113 if (context->InvokeService(context, _OrthancPluginService_GetExpectedDatabaseVersion, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2114 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2115 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2116 return 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2117 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2118 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2119 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2120 return count;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2121 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2122 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2123
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2124
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2125
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2126 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2127 * @brief Return the content of the configuration file(s).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2128 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2129 * This function returns the content of the configuration that is
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2130 * used by Orthanc, formatted as a JSON string.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2131 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2132 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2133 * @return NULL in the case of an error, or a newly allocated string
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2134 * containing the configuration. This string must be freed by
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2135 * OrthancPluginFreeString().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2136 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2137 ORTHANC_PLUGIN_INLINE char *OrthancPluginGetConfiguration(OrthancPluginContext* context)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2138 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2139 char* result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2140
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2141 _OrthancPluginRetrieveDynamicString params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2142 params.result = &result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2143 params.argument = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2144
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2145 if (context->InvokeService(context, _OrthancPluginService_GetConfiguration, &params))
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2146 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2147 /* Error */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2148 return NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2149 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2150 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2151 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2152 return result;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2153 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2154 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2155
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2156
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2157
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2158 typedef struct
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2159 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2160 OrthancPluginRestOutput* output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2161 const char* subType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2162 const char* contentType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2163 } _OrthancPluginStartMultipartAnswer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2164
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2165 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2166 * @brief Start an HTTP multipart answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2167 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2168 * Initiates a HTTP multipart answer, as the result of a REST request.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2169 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2170 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2171 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2172 * @param subType The sub-type of the multipart answer ("mixed" or "related").
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2173 * @param contentType The MIME type of the items in the multipart answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2174 * @return 0 if success, other value if error.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2175 * @see OrthancPluginSendMultipartItem()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2176 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2177 ORTHANC_PLUGIN_INLINE int32_t OrthancPluginStartMultipartAnswer(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2178 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2179 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2180 const char* subType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2181 const char* contentType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2182 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2183 _OrthancPluginStartMultipartAnswer params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2184 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2185 params.subType = subType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2186 params.contentType = contentType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2187 return context->InvokeService(context, _OrthancPluginService_StartMultipartAnswer, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2188 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2189
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2190
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2191 /**
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2192 * @brief Send an item as a part of some HTTP multipart answer.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2193 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2194 * This function sends an item as a part of some HTTP multipart
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2195 * answer that was initiated by OrthancPluginStartMultipartAnswer().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2196 *
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2197 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2198 * @param output The HTTP connection to the client application.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2199 * @param answer Pointer to the memory buffer containing the item.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2200 * @param answerSize Number of bytes of the item.
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2201 * @return 0 if success, other value if error (this notably happens
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2202 * if the connection is closed by the client).
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2203 **/
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2204 ORTHANC_PLUGIN_INLINE int32_t OrthancPluginSendMultipartItem(
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2205 OrthancPluginContext* context,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2206 OrthancPluginRestOutput* output,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2207 const char* answer,
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2208 uint32_t answerSize)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2209 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2210 _OrthancPluginAnswerBuffer params;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2211 params.output = output;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2212 params.answer = answer;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2213 params.answerSize = answerSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2214 params.mimeType = NULL;
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2215 return context->InvokeService(context, _OrthancPluginService_SendMultipartItem, &params);
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2216 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2217
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2218 #ifdef __cplusplus
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2219 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2220 #endif
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2221
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2222
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2223 /** @} */
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2224