Orthanc Plugin SDK
Documentation of the plugin interface of Orthanc
OrthancCPlugin.h
1 
80 #pragma once
81 
82 
83 #include <stdio.h>
84 #include <string.h>
85 
86 #ifdef WIN32
87 #define ORTHANC_PLUGINS_API __declspec(dllexport)
88 #else
89 #define ORTHANC_PLUGINS_API
90 #endif
91 
92 #define ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER 0
93 #define ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER 9
94 #define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 1
95 
96 
97 
98 /********************************************************************
99  ** Check that function inlining is properly supported. The use of
100  ** inlining is required, to avoid the duplication of object code
101  ** between two compilation modules that would use the Orthanc Plugin
102  ** API.
103  ********************************************************************/
104 
105 /* If the auto-detection of the "inline" keyword below does not work
106  automatically and that your compiler is known to properly support
107  inlining, uncomment the following #define and adapt the definition
108  of "static inline". */
109 
110 /* #define ORTHANC_PLUGIN_INLINE static inline */
111 
112 #ifndef ORTHANC_PLUGIN_INLINE
113 # if __STDC_VERSION__ >= 199901L
114 /* This is C99 or above: http://predef.sourceforge.net/prestd.html */
115 # define ORTHANC_PLUGIN_INLINE static inline
116 # elif defined(__cplusplus)
117 /* This is C++ */
118 # define ORTHANC_PLUGIN_INLINE static inline
119 # elif defined(__GNUC__)
120 /* This is GCC running in C89 mode */
121 # define ORTHANC_PLUGIN_INLINE static __inline
122 # elif defined(_MSC_VER)
123 /* This is Visual Studio running in C89 mode */
124 # define ORTHANC_PLUGIN_INLINE static __inline
125 # else
126 # error Your compiler is not known to support the "inline" keyword
127 # endif
128 #endif
129 
130 
131 
132 /********************************************************************
133  ** Inclusion of standard libraries.
134  ********************************************************************/
135 
141 #include <stdint.h>
142 
143 #include <stdlib.h>
144 
145 
146 
147 /********************************************************************
148  ** Definition of the Orthanc Plugin API.
149  ********************************************************************/
150 
153 #ifdef __cplusplus
154 extern "C"
155 {
156 #endif
157 
162  ORTHANC_PLUGINS_API const char* OrthancPluginGetName();
163 
164 
168  typedef enum
169  {
175 
176 
180  typedef struct
181  {
186 
190  uint32_t groupsCount;
191 
195  const char* const* groups;
196 
200  uint32_t getCount;
201 
205  const char* const* getKeys;
206 
210  const char* const* getValues;
211 
215  const char* body;
216 
220  uint32_t bodySize;
221 
222 
223  /* --------------------------------------------------
224  New in version 0.8.1
225  -------------------------------------------------- */
226 
230  uint32_t headersCount;
231 
235  const char* const* headersKeys;
236 
240  const char* const* headersValues;
241 
243 
244 
245  typedef enum
246  {
247  /* Generic services */
248  _OrthancPluginService_LogInfo = 1,
249  _OrthancPluginService_LogWarning = 2,
250  _OrthancPluginService_LogError = 3,
251  _OrthancPluginService_GetOrthancPath = 4,
252  _OrthancPluginService_GetOrthancDirectory = 5,
253  _OrthancPluginService_GetConfigurationPath = 6,
254  _OrthancPluginService_SetPluginProperty = 7,
255  _OrthancPluginService_GetGlobalProperty = 8,
256  _OrthancPluginService_SetGlobalProperty = 9,
257  _OrthancPluginService_GetCommandLineArgumentsCount = 10,
258  _OrthancPluginService_GetCommandLineArgument = 11,
259  _OrthancPluginService_GetExpectedDatabaseVersion = 12,
260  _OrthancPluginService_GetConfiguration = 13,
261 
262  /* Registration of callbacks */
263  _OrthancPluginService_RegisterRestCallback = 1000,
264  _OrthancPluginService_RegisterOnStoredInstanceCallback = 1001,
265  _OrthancPluginService_RegisterStorageArea = 1002,
266  _OrthancPluginService_RegisterOnChangeCallback = 1003,
267 
268  /* Sending answers to REST calls */
269  _OrthancPluginService_AnswerBuffer = 2000,
270  _OrthancPluginService_CompressAndAnswerPngImage = 2001,
271  _OrthancPluginService_Redirect = 2002,
272  _OrthancPluginService_SendHttpStatusCode = 2003,
273  _OrthancPluginService_SendUnauthorized = 2004,
274  _OrthancPluginService_SendMethodNotAllowed = 2005,
275  _OrthancPluginService_SetCookie = 2006,
276  _OrthancPluginService_SetHttpHeader = 2007,
277  _OrthancPluginService_StartMultipartAnswer = 2008,
278  _OrthancPluginService_SendMultipartItem = 2009,
279 
280  /* Access to the Orthanc database and API */
281  _OrthancPluginService_GetDicomForInstance = 3000,
282  _OrthancPluginService_RestApiGet = 3001,
283  _OrthancPluginService_RestApiPost = 3002,
284  _OrthancPluginService_RestApiDelete = 3003,
285  _OrthancPluginService_RestApiPut = 3004,
286  _OrthancPluginService_LookupPatient = 3005,
287  _OrthancPluginService_LookupStudy = 3006,
288  _OrthancPluginService_LookupSeries = 3007,
289  _OrthancPluginService_LookupInstance = 3008,
290  _OrthancPluginService_LookupStudyWithAccessionNumber = 3009,
291  _OrthancPluginService_RestApiGetAfterPlugins = 3010,
292  _OrthancPluginService_RestApiPostAfterPlugins = 3011,
293  _OrthancPluginService_RestApiDeleteAfterPlugins = 3012,
294  _OrthancPluginService_RestApiPutAfterPlugins = 3013,
295 
296  /* Access to DICOM instances */
297  _OrthancPluginService_GetInstanceRemoteAet = 4000,
298  _OrthancPluginService_GetInstanceSize = 4001,
299  _OrthancPluginService_GetInstanceData = 4002,
300  _OrthancPluginService_GetInstanceJson = 4003,
301  _OrthancPluginService_GetInstanceSimplifiedJson = 4004,
302  _OrthancPluginService_HasInstanceMetadata = 4005,
303  _OrthancPluginService_GetInstanceMetadata = 4006,
304 
305  /* Services for plugins implementing a database back-end */
306  _OrthancPluginService_RegisterDatabaseBackend = 5000,
307  _OrthancPluginService_DatabaseAnswer = 5001
308 
309  } _OrthancPluginService;
310 
311 
312  typedef enum
313  {
314  _OrthancPluginProperty_Description = 1,
315  _OrthancPluginProperty_RootUri = 2,
316  _OrthancPluginProperty_OrthancExplorer = 3
317  } _OrthancPluginProperty;
318 
319 
320 
324  typedef enum
325  {
333 
341 
349 
357 
366 
367 
368 
372  typedef enum
373  {
378 
379 
380 
384  typedef enum
385  {
391 
392 
393 
397  typedef enum
398  {
410 
411 
412 
420  typedef struct
421  {
425  void* data;
426 
430  uint32_t size;
432 
433 
434 
435 
439  typedef struct _OrthancPluginRestOutput_t OrthancPluginRestOutput;
440 
441 
442 
446  typedef struct _OrthancPluginDicomInstance_t OrthancPluginDicomInstance;
447 
448 
449 
453  typedef int32_t (*OrthancPluginRestCallback) (
454  OrthancPluginRestOutput* output,
455  const char* url,
456  const OrthancPluginHttpRequest* request);
457 
458 
459 
464  OrthancPluginDicomInstance* instance,
465  const char* instanceId);
466 
467 
468 
472  typedef int32_t (*OrthancPluginOnChangeCallback) (
473  OrthancPluginChangeType changeType,
474  OrthancPluginResourceType resourceType,
475  const char* resourceId);
476 
477 
478 
482  typedef void (*OrthancPluginFree) (void* buffer);
483 
484 
485 
497  typedef int32_t (*OrthancPluginStorageCreate) (
498  const char* uuid,
499  const void* content,
500  int64_t size,
502 
503 
504 
516  typedef int32_t (*OrthancPluginStorageRead) (
517  void** content,
518  int64_t* size,
519  const char* uuid,
521 
522 
523 
533  typedef int32_t (*OrthancPluginStorageRemove) (
534  const char* uuid,
536 
537 
538 
542  typedef struct _OrthancPluginContext_t
543  {
544  void* pluginsManager;
545  const char* orthancVersion;
546  OrthancPluginFree Free;
547  int32_t (*InvokeService) (struct _OrthancPluginContext_t* context,
548  _OrthancPluginService service,
549  const void* params);
551 
552 
553 
562  ORTHANC_PLUGIN_INLINE void OrthancPluginFreeString(
563  OrthancPluginContext* context,
564  char* str)
565  {
566  if (str != NULL)
567  {
568  context->Free(str);
569  }
570  }
571 
572 
585  ORTHANC_PLUGIN_INLINE int OrthancPluginCheckVersion(
586  OrthancPluginContext* context)
587  {
588  int major, minor, revision;
589 
590  /* Assume compatibility with the mainline */
591  if (!strcmp(context->orthancVersion, "mainline"))
592  {
593  return 1;
594  }
595 
596  /* Parse the version of the Orthanc core */
597  if (
598 #ifdef _MSC_VER
599  sscanf_s
600 #else
601  sscanf
602 #endif
603  (context->orthancVersion, "%4d.%4d.%4d", &major, &minor, &revision) != 3)
604  {
605  return 0;
606  }
607 
608  /* Check the major number of the version */
609 
610  if (major > ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
611  {
612  return 1;
613  }
614 
615  if (major < ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
616  {
617  return 0;
618  }
619 
620  /* Check the minor number of the version */
621 
622  if (minor > ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
623  {
624  return 1;
625  }
626 
627  if (minor < ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
628  {
629  return 0;
630  }
631 
632  /* Check the revision number of the version */
633 
634  if (revision >= ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER)
635  {
636  return 1;
637  }
638  else
639  {
640  return 0;
641  }
642  }
643 
644 
653  ORTHANC_PLUGIN_INLINE void OrthancPluginFreeMemoryBuffer(
654  OrthancPluginContext* context,
656  {
657  context->Free(buffer->data);
658  }
659 
660 
669  ORTHANC_PLUGIN_INLINE void OrthancPluginLogError(
670  OrthancPluginContext* context,
671  const char* message)
672  {
673  context->InvokeService(context, _OrthancPluginService_LogError, message);
674  }
675 
676 
685  ORTHANC_PLUGIN_INLINE void OrthancPluginLogWarning(
686  OrthancPluginContext* context,
687  const char* message)
688  {
689  context->InvokeService(context, _OrthancPluginService_LogWarning, message);
690  }
691 
692 
701  ORTHANC_PLUGIN_INLINE void OrthancPluginLogInfo(
702  OrthancPluginContext* context,
703  const char* message)
704  {
705  context->InvokeService(context, _OrthancPluginService_LogInfo, message);
706  }
707 
708 
709 
710  typedef struct
711  {
712  const char* pathRegularExpression;
713  OrthancPluginRestCallback callback;
714  } _OrthancPluginRestCallback;
715 
728  ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterRestCallback(
729  OrthancPluginContext* context,
730  const char* pathRegularExpression,
731  OrthancPluginRestCallback callback)
732  {
733  _OrthancPluginRestCallback params;
734  params.pathRegularExpression = pathRegularExpression;
735  params.callback = callback;
736  context->InvokeService(context, _OrthancPluginService_RegisterRestCallback, &params);
737  }
738 
739 
740 
741  typedef struct
742  {
744  } _OrthancPluginOnStoredInstanceCallback;
745 
756  OrthancPluginContext* context,
758  {
759  _OrthancPluginOnStoredInstanceCallback params;
760  params.callback = callback;
761 
762  context->InvokeService(context, _OrthancPluginService_RegisterOnStoredInstanceCallback, &params);
763  }
764 
765 
766 
767  typedef struct
768  {
769  OrthancPluginRestOutput* output;
770  const char* answer;
771  uint32_t answerSize;
772  const char* mimeType;
773  } _OrthancPluginAnswerBuffer;
774 
786  ORTHANC_PLUGIN_INLINE void OrthancPluginAnswerBuffer(
787  OrthancPluginContext* context,
788  OrthancPluginRestOutput* output,
789  const char* answer,
790  uint32_t answerSize,
791  const char* mimeType)
792  {
793  _OrthancPluginAnswerBuffer params;
794  params.output = output;
795  params.answer = answer;
796  params.answerSize = answerSize;
797  params.mimeType = mimeType;
798  context->InvokeService(context, _OrthancPluginService_AnswerBuffer, &params);
799  }
800 
801 
802  typedef struct
803  {
804  OrthancPluginRestOutput* output;
806  uint32_t width;
807  uint32_t height;
808  uint32_t pitch;
809  const void* buffer;
810  } _OrthancPluginCompressAndAnswerPngImage;
811 
829  ORTHANC_PLUGIN_INLINE void OrthancPluginCompressAndAnswerPngImage(
830  OrthancPluginContext* context,
831  OrthancPluginRestOutput* output,
833  uint32_t width,
834  uint32_t height,
835  uint32_t pitch,
836  const void* buffer)
837  {
838  _OrthancPluginCompressAndAnswerPngImage params;
839  params.output = output;
840  params.format = format;
841  params.width = width;
842  params.height = height;
843  params.pitch = pitch;
844  params.buffer = buffer;
845  context->InvokeService(context, _OrthancPluginService_CompressAndAnswerPngImage, &params);
846  }
847 
848 
849 
850  typedef struct
851  {
853  const char* instanceId;
854  } _OrthancPluginGetDicomForInstance;
855 
867  ORTHANC_PLUGIN_INLINE int OrthancPluginGetDicomForInstance(
868  OrthancPluginContext* context,
870  const char* instanceId)
871  {
872  _OrthancPluginGetDicomForInstance params;
873  params.target = target;
874  params.instanceId = instanceId;
875  return context->InvokeService(context, _OrthancPluginService_GetDicomForInstance, &params);
876  }
877 
878 
879 
880  typedef struct
881  {
883  const char* uri;
884  } _OrthancPluginRestApiGet;
885 
897  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiGet(
898  OrthancPluginContext* context,
900  const char* uri)
901  {
902  _OrthancPluginRestApiGet params;
903  params.target = target;
904  params.uri = uri;
905  return context->InvokeService(context, _OrthancPluginService_RestApiGet, &params);
906  }
907 
908 
909 
924  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiGetAfterPlugins(
925  OrthancPluginContext* context,
927  const char* uri)
928  {
929  _OrthancPluginRestApiGet params;
930  params.target = target;
931  params.uri = uri;
932  return context->InvokeService(context, _OrthancPluginService_RestApiGetAfterPlugins, &params);
933  }
934 
935 
936 
937  typedef struct
938  {
940  const char* uri;
941  const char* body;
942  uint32_t bodySize;
943  } _OrthancPluginRestApiPostPut;
944 
958  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPost(
959  OrthancPluginContext* context,
961  const char* uri,
962  const char* body,
963  uint32_t bodySize)
964  {
965  _OrthancPluginRestApiPostPut params;
966  params.target = target;
967  params.uri = uri;
968  params.body = body;
969  params.bodySize = bodySize;
970  return context->InvokeService(context, _OrthancPluginService_RestApiPost, &params);
971  }
972 
973 
990  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPostAfterPlugins(
991  OrthancPluginContext* context,
993  const char* uri,
994  const char* body,
995  uint32_t bodySize)
996  {
997  _OrthancPluginRestApiPostPut params;
998  params.target = target;
999  params.uri = uri;
1000  params.body = body;
1001  params.bodySize = bodySize;
1002  return context->InvokeService(context, _OrthancPluginService_RestApiPostAfterPlugins, &params);
1003  }
1004 
1005 
1006 
1016  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiDelete(
1017  OrthancPluginContext* context,
1018  const char* uri)
1019  {
1020  return context->InvokeService(context, _OrthancPluginService_RestApiDelete, uri);
1021  }
1022 
1023 
1036  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiDeleteAfterPlugins(
1037  OrthancPluginContext* context,
1038  const char* uri)
1039  {
1040  return context->InvokeService(context, _OrthancPluginService_RestApiDeleteAfterPlugins, uri);
1041  }
1042 
1043 
1044 
1058  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPut(
1059  OrthancPluginContext* context,
1060  OrthancPluginMemoryBuffer* target,
1061  const char* uri,
1062  const char* body,
1063  uint32_t bodySize)
1064  {
1065  _OrthancPluginRestApiPostPut params;
1066  params.target = target;
1067  params.uri = uri;
1068  params.body = body;
1069  params.bodySize = bodySize;
1070  return context->InvokeService(context, _OrthancPluginService_RestApiPut, &params);
1071  }
1072 
1073 
1074 
1091  ORTHANC_PLUGIN_INLINE int OrthancPluginRestApiPutAfterPlugins(
1092  OrthancPluginContext* context,
1093  OrthancPluginMemoryBuffer* target,
1094  const char* uri,
1095  const char* body,
1096  uint32_t bodySize)
1097  {
1098  _OrthancPluginRestApiPostPut params;
1099  params.target = target;
1100  params.uri = uri;
1101  params.body = body;
1102  params.bodySize = bodySize;
1103  return context->InvokeService(context, _OrthancPluginService_RestApiPutAfterPlugins, &params);
1104  }
1105 
1106 
1107 
1108  typedef struct
1109  {
1110  OrthancPluginRestOutput* output;
1111  const char* argument;
1112  } _OrthancPluginOutputPlusArgument;
1113 
1124  ORTHANC_PLUGIN_INLINE void OrthancPluginRedirect(
1125  OrthancPluginContext* context,
1126  OrthancPluginRestOutput* output,
1127  const char* redirection)
1128  {
1129  _OrthancPluginOutputPlusArgument params;
1130  params.output = output;
1131  params.argument = redirection;
1132  context->InvokeService(context, _OrthancPluginService_Redirect, &params);
1133  }
1134 
1135 
1136 
1137  typedef struct
1138  {
1139  char** result;
1140  const char* argument;
1141  } _OrthancPluginRetrieveDynamicString;
1142 
1155  ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupPatient(
1156  OrthancPluginContext* context,
1157  const char* patientID)
1158  {
1159  char* result;
1160 
1161  _OrthancPluginRetrieveDynamicString params;
1162  params.result = &result;
1163  params.argument = patientID;
1164 
1165  if (context->InvokeService(context, _OrthancPluginService_LookupPatient, &params))
1166  {
1167  /* Error */
1168  return NULL;
1169  }
1170  else
1171  {
1172  return result;
1173  }
1174  }
1175 
1176 
1189  ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupStudy(
1190  OrthancPluginContext* context,
1191  const char* studyUID)
1192  {
1193  char* result;
1194 
1195  _OrthancPluginRetrieveDynamicString params;
1196  params.result = &result;
1197  params.argument = studyUID;
1198 
1199  if (context->InvokeService(context, _OrthancPluginService_LookupStudy, &params))
1200  {
1201  /* Error */
1202  return NULL;
1203  }
1204  else
1205  {
1206  return result;
1207  }
1208  }
1209 
1210 
1223  ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupStudyWithAccessionNumber(
1224  OrthancPluginContext* context,
1225  const char* accessionNumber)
1226  {
1227  char* result;
1228 
1229  _OrthancPluginRetrieveDynamicString params;
1230  params.result = &result;
1231  params.argument = accessionNumber;
1232 
1233  if (context->InvokeService(context, _OrthancPluginService_LookupStudyWithAccessionNumber, &params))
1234  {
1235  /* Error */
1236  return NULL;
1237  }
1238  else
1239  {
1240  return result;
1241  }
1242  }
1243 
1244 
1257  ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupSeries(
1258  OrthancPluginContext* context,
1259  const char* seriesUID)
1260  {
1261  char* result;
1262 
1263  _OrthancPluginRetrieveDynamicString params;
1264  params.result = &result;
1265  params.argument = seriesUID;
1266 
1267  if (context->InvokeService(context, _OrthancPluginService_LookupSeries, &params))
1268  {
1269  /* Error */
1270  return NULL;
1271  }
1272  else
1273  {
1274  return result;
1275  }
1276  }
1277 
1278 
1291  ORTHANC_PLUGIN_INLINE char* OrthancPluginLookupInstance(
1292  OrthancPluginContext* context,
1293  const char* sopInstanceUID)
1294  {
1295  char* result;
1296 
1297  _OrthancPluginRetrieveDynamicString params;
1298  params.result = &result;
1299  params.argument = sopInstanceUID;
1300 
1301  if (context->InvokeService(context, _OrthancPluginService_LookupInstance, &params))
1302  {
1303  /* Error */
1304  return NULL;
1305  }
1306  else
1307  {
1308  return result;
1309  }
1310  }
1311 
1312 
1313 
1314  typedef struct
1315  {
1316  OrthancPluginRestOutput* output;
1317  uint16_t status;
1318  } _OrthancPluginSendHttpStatusCode;
1319 
1334  ORTHANC_PLUGIN_INLINE void OrthancPluginSendHttpStatusCode(
1335  OrthancPluginContext* context,
1336  OrthancPluginRestOutput* output,
1337  uint16_t status)
1338  {
1339  _OrthancPluginSendHttpStatusCode params;
1340  params.output = output;
1341  params.status = status;
1342  context->InvokeService(context, _OrthancPluginService_SendHttpStatusCode, &params);
1343  }
1344 
1345 
1356  ORTHANC_PLUGIN_INLINE void OrthancPluginSendUnauthorized(
1357  OrthancPluginContext* context,
1358  OrthancPluginRestOutput* output,
1359  const char* realm)
1360  {
1361  _OrthancPluginOutputPlusArgument params;
1362  params.output = output;
1363  params.argument = realm;
1364  context->InvokeService(context, _OrthancPluginService_SendUnauthorized, &params);
1365  }
1366 
1367 
1378  ORTHANC_PLUGIN_INLINE void OrthancPluginSendMethodNotAllowed(
1379  OrthancPluginContext* context,
1380  OrthancPluginRestOutput* output,
1381  const char* allowedMethods)
1382  {
1383  _OrthancPluginOutputPlusArgument params;
1384  params.output = output;
1385  params.argument = allowedMethods;
1386  context->InvokeService(context, _OrthancPluginService_SendMethodNotAllowed, &params);
1387  }
1388 
1389 
1390  typedef struct
1391  {
1392  OrthancPluginRestOutput* output;
1393  const char* key;
1394  const char* value;
1395  } _OrthancPluginSetHttpHeader;
1396 
1407  ORTHANC_PLUGIN_INLINE void OrthancPluginSetCookie(
1408  OrthancPluginContext* context,
1409  OrthancPluginRestOutput* output,
1410  const char* cookie,
1411  const char* value)
1412  {
1413  _OrthancPluginSetHttpHeader params;
1414  params.output = output;
1415  params.key = cookie;
1416  params.value = value;
1417  context->InvokeService(context, _OrthancPluginService_SetCookie, &params);
1418  }
1419 
1420 
1431  ORTHANC_PLUGIN_INLINE void OrthancPluginSetHttpHeader(
1432  OrthancPluginContext* context,
1433  OrthancPluginRestOutput* output,
1434  const char* key,
1435  const char* value)
1436  {
1437  _OrthancPluginSetHttpHeader params;
1438  params.output = output;
1439  params.key = key;
1440  params.value = value;
1441  context->InvokeService(context, _OrthancPluginService_SetHttpHeader, &params);
1442  }
1443 
1444 
1445  typedef struct
1446  {
1447  char** resultStringToFree;
1448  const char** resultString;
1449  int64_t* resultInt64;
1450  const char* key;
1451  OrthancPluginDicomInstance* instance;
1452  } _OrthancPluginAccessDicomInstance;
1453 
1454 
1465  ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceRemoteAet(
1466  OrthancPluginContext* context,
1467  OrthancPluginDicomInstance* instance)
1468  {
1469  const char* result;
1470 
1471  _OrthancPluginAccessDicomInstance params;
1472  memset(&params, 0, sizeof(params));
1473  params.resultString = &result;
1474  params.instance = instance;
1475 
1476  if (context->InvokeService(context, _OrthancPluginService_GetInstanceRemoteAet, &params))
1477  {
1478  /* Error */
1479  return NULL;
1480  }
1481  else
1482  {
1483  return result;
1484  }
1485  }
1486 
1487 
1497  ORTHANC_PLUGIN_INLINE int64_t OrthancPluginGetInstanceSize(
1498  OrthancPluginContext* context,
1499  OrthancPluginDicomInstance* instance)
1500  {
1501  int64_t size;
1502 
1503  _OrthancPluginAccessDicomInstance params;
1504  memset(&params, 0, sizeof(params));
1505  params.resultInt64 = &size;
1506  params.instance = instance;
1507 
1508  if (context->InvokeService(context, _OrthancPluginService_GetInstanceSize, &params))
1509  {
1510  /* Error */
1511  return -1;
1512  }
1513  else
1514  {
1515  return size;
1516  }
1517  }
1518 
1519 
1529  ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceData(
1530  OrthancPluginContext* context,
1531  OrthancPluginDicomInstance* instance)
1532  {
1533  const char* result;
1534 
1535  _OrthancPluginAccessDicomInstance params;
1536  memset(&params, 0, sizeof(params));
1537  params.resultString = &result;
1538  params.instance = instance;
1539 
1540  if (context->InvokeService(context, _OrthancPluginService_GetInstanceData, &params))
1541  {
1542  /* Error */
1543  return NULL;
1544  }
1545  else
1546  {
1547  return result;
1548  }
1549  }
1550 
1551 
1564  ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceJson(
1565  OrthancPluginContext* context,
1566  OrthancPluginDicomInstance* instance)
1567  {
1568  char* result;
1569 
1570  _OrthancPluginAccessDicomInstance params;
1571  memset(&params, 0, sizeof(params));
1572  params.resultStringToFree = &result;
1573  params.instance = instance;
1574 
1575  if (context->InvokeService(context, _OrthancPluginService_GetInstanceJson, &params))
1576  {
1577  /* Error */
1578  return NULL;
1579  }
1580  else
1581  {
1582  return result;
1583  }
1584  }
1585 
1586 
1601  ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceSimplifiedJson(
1602  OrthancPluginContext* context,
1603  OrthancPluginDicomInstance* instance)
1604  {
1605  char* result;
1606 
1607  _OrthancPluginAccessDicomInstance params;
1608  memset(&params, 0, sizeof(params));
1609  params.resultStringToFree = &result;
1610  params.instance = instance;
1611 
1612  if (context->InvokeService(context, _OrthancPluginService_GetInstanceSimplifiedJson, &params))
1613  {
1614  /* Error */
1615  return NULL;
1616  }
1617  else
1618  {
1619  return result;
1620  }
1621  }
1622 
1623 
1639  ORTHANC_PLUGIN_INLINE int OrthancPluginHasInstanceMetadata(
1640  OrthancPluginContext* context,
1641  OrthancPluginDicomInstance* instance,
1642  const char* metadata)
1643  {
1644  int64_t result;
1645 
1646  _OrthancPluginAccessDicomInstance params;
1647  memset(&params, 0, sizeof(params));
1648  params.resultInt64 = &result;
1649  params.instance = instance;
1650  params.key = metadata;
1651 
1652  if (context->InvokeService(context, _OrthancPluginService_HasInstanceMetadata, &params))
1653  {
1654  /* Error */
1655  return -1;
1656  }
1657  else
1658  {
1659  return (result != 0);
1660  }
1661  }
1662 
1663 
1676  ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceMetadata(
1677  OrthancPluginContext* context,
1678  OrthancPluginDicomInstance* instance,
1679  const char* metadata)
1680  {
1681  const char* result;
1682 
1683  _OrthancPluginAccessDicomInstance params;
1684  memset(&params, 0, sizeof(params));
1685  params.resultString = &result;
1686  params.instance = instance;
1687  params.key = metadata;
1688 
1689  if (context->InvokeService(context, _OrthancPluginService_GetInstanceMetadata, &params))
1690  {
1691  /* Error */
1692  return NULL;
1693  }
1694  else
1695  {
1696  return result;
1697  }
1698  }
1699 
1700 
1701 
1702  typedef struct
1703  {
1707  OrthancPluginFree free;
1708  } _OrthancPluginRegisterStorageArea;
1709 
1723  ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterStorageArea(
1724  OrthancPluginContext* context,
1728  {
1729  _OrthancPluginRegisterStorageArea params;
1730  params.create = create;
1731  params.read = read;
1732  params.remove = remove;
1733 
1734 #ifdef __cplusplus
1735  params.free = ::free;
1736 #else
1737  params.free = free;
1738 #endif
1739 
1740  context->InvokeService(context, _OrthancPluginService_RegisterStorageArea, &params);
1741  }
1742 
1743 
1744 
1755  ORTHANC_PLUGIN_INLINE char *OrthancPluginGetOrthancPath(OrthancPluginContext* context)
1756  {
1757  char* result;
1758 
1759  _OrthancPluginRetrieveDynamicString params;
1760  params.result = &result;
1761  params.argument = NULL;
1762 
1763  if (context->InvokeService(context, _OrthancPluginService_GetOrthancPath, &params))
1764  {
1765  /* Error */
1766  return NULL;
1767  }
1768  else
1769  {
1770  return result;
1771  }
1772  }
1773 
1774 
1785  ORTHANC_PLUGIN_INLINE char *OrthancPluginGetOrthancDirectory(OrthancPluginContext* context)
1786  {
1787  char* result;
1788 
1789  _OrthancPluginRetrieveDynamicString params;
1790  params.result = &result;
1791  params.argument = NULL;
1792 
1793  if (context->InvokeService(context, _OrthancPluginService_GetOrthancDirectory, &params))
1794  {
1795  /* Error */
1796  return NULL;
1797  }
1798  else
1799  {
1800  return result;
1801  }
1802  }
1803 
1804 
1820  ORTHANC_PLUGIN_INLINE char *OrthancPluginGetConfigurationPath(OrthancPluginContext* context)
1821  {
1822  char* result;
1823 
1824  _OrthancPluginRetrieveDynamicString params;
1825  params.result = &result;
1826  params.argument = NULL;
1827 
1828  if (context->InvokeService(context, _OrthancPluginService_GetConfigurationPath, &params))
1829  {
1830  /* Error */
1831  return NULL;
1832  }
1833  else
1834  {
1835  return result;
1836  }
1837  }
1838 
1839 
1840 
1841  typedef struct
1842  {
1844  } _OrthancPluginOnChangeCallback;
1845 
1855  ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterOnChangeCallback(
1856  OrthancPluginContext* context,
1858  {
1859  _OrthancPluginOnChangeCallback params;
1860  params.callback = callback;
1861 
1862  context->InvokeService(context, _OrthancPluginService_RegisterOnChangeCallback, &params);
1863  }
1864 
1865 
1866 
1867  typedef struct
1868  {
1869  const char* plugin;
1870  _OrthancPluginProperty property;
1871  const char* value;
1872  } _OrthancPluginSetPluginProperty;
1873 
1874 
1886  ORTHANC_PLUGIN_INLINE void OrthancPluginSetRootUri(
1887  OrthancPluginContext* context,
1888  const char* uri)
1889  {
1890  _OrthancPluginSetPluginProperty params;
1891  params.plugin = OrthancPluginGetName();
1892  params.property = _OrthancPluginProperty_RootUri;
1893  params.value = uri;
1894 
1895  context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
1896  }
1897 
1898 
1908  ORTHANC_PLUGIN_INLINE void OrthancPluginSetDescription(
1909  OrthancPluginContext* context,
1910  const char* description)
1911  {
1912  _OrthancPluginSetPluginProperty params;
1913  params.plugin = OrthancPluginGetName();
1914  params.property = _OrthancPluginProperty_Description;
1915  params.value = description;
1916 
1917  context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
1918  }
1919 
1920 
1930  ORTHANC_PLUGIN_INLINE void OrthancPluginExtendOrthancExplorer(
1931  OrthancPluginContext* context,
1932  const char* javascript)
1933  {
1934  _OrthancPluginSetPluginProperty params;
1935  params.plugin = OrthancPluginGetName();
1936  params.property = _OrthancPluginProperty_OrthancExplorer;
1937  params.value = javascript;
1938 
1939  context->InvokeService(context, _OrthancPluginService_SetPluginProperty, &params);
1940  }
1941 
1942 
1943  typedef struct
1944  {
1945  char** result;
1946  int32_t property;
1947  const char* value;
1948  } _OrthancPluginGlobalProperty;
1949 
1950 
1963  ORTHANC_PLUGIN_INLINE char* OrthancPluginGetGlobalProperty(
1964  OrthancPluginContext* context,
1965  int32_t property,
1966  const char* defaultValue)
1967  {
1968  char* result;
1969 
1970  _OrthancPluginGlobalProperty params;
1971  params.result = &result;
1972  params.property = property;
1973  params.value = defaultValue;
1974 
1975  if (context->InvokeService(context, _OrthancPluginService_GetGlobalProperty, &params))
1976  {
1977  /* Error */
1978  return NULL;
1979  }
1980  else
1981  {
1982  return result;
1983  }
1984  }
1985 
1986 
2001  ORTHANC_PLUGIN_INLINE int32_t OrthancPluginSetGlobalProperty(
2002  OrthancPluginContext* context,
2003  int32_t property,
2004  const char* value)
2005  {
2006  _OrthancPluginGlobalProperty params;
2007  params.result = NULL;
2008  params.property = property;
2009  params.value = value;
2010 
2011  if (context->InvokeService(context, _OrthancPluginService_SetGlobalProperty, &params))
2012  {
2013  /* Error */
2014  return -1;
2015  }
2016  else
2017  {
2018  return 0;
2019  }
2020  }
2021 
2022 
2023 
2024  typedef struct
2025  {
2026  int32_t *resultInt32;
2027  uint32_t *resultUint32;
2028  int64_t *resultInt64;
2029  uint64_t *resultUint64;
2030  } _OrthancPluginReturnSingleValue;
2031 
2040  ORTHANC_PLUGIN_INLINE uint32_t OrthancPluginGetCommandLineArgumentsCount(
2041  OrthancPluginContext* context)
2042  {
2043  uint32_t count = 0;
2044 
2045  _OrthancPluginReturnSingleValue params;
2046  memset(&params, 0, sizeof(params));
2047  params.resultUint32 = &count;
2048 
2049  if (context->InvokeService(context, _OrthancPluginService_GetCommandLineArgumentsCount, &params))
2050  {
2051  /* Error */
2052  return 0;
2053  }
2054  else
2055  {
2056  return count;
2057  }
2058  }
2059 
2060 
2061 
2074  ORTHANC_PLUGIN_INLINE char* OrthancPluginGetCommandLineArgument(
2075  OrthancPluginContext* context,
2076  uint32_t argument)
2077  {
2078  char* result;
2079 
2080  _OrthancPluginGlobalProperty params;
2081  params.result = &result;
2082  params.property = (int32_t) argument;
2083  params.value = NULL;
2084 
2085  if (context->InvokeService(context, _OrthancPluginService_GetCommandLineArgument, &params))
2086  {
2087  /* Error */
2088  return NULL;
2089  }
2090  else
2091  {
2092  return result;
2093  }
2094  }
2095 
2096 
2105  ORTHANC_PLUGIN_INLINE uint32_t OrthancPluginGetExpectedDatabaseVersion(
2106  OrthancPluginContext* context)
2107  {
2108  uint32_t count = 0;
2109 
2110  _OrthancPluginReturnSingleValue params;
2111  memset(&params, 0, sizeof(params));
2112  params.resultUint32 = &count;
2113 
2114  if (context->InvokeService(context, _OrthancPluginService_GetExpectedDatabaseVersion, &params))
2115  {
2116  /* Error */
2117  return 0;
2118  }
2119  else
2120  {
2121  return count;
2122  }
2123  }
2124 
2125 
2126 
2138  ORTHANC_PLUGIN_INLINE char *OrthancPluginGetConfiguration(OrthancPluginContext* context)
2139  {
2140  char* result;
2141 
2142  _OrthancPluginRetrieveDynamicString params;
2143  params.result = &result;
2144  params.argument = NULL;
2145 
2146  if (context->InvokeService(context, _OrthancPluginService_GetConfiguration, &params))
2147  {
2148  /* Error */
2149  return NULL;
2150  }
2151  else
2152  {
2153  return result;
2154  }
2155  }
2156 
2157 
2158 
2159  typedef struct
2160  {
2161  OrthancPluginRestOutput* output;
2162  const char* subType;
2163  const char* contentType;
2164  } _OrthancPluginStartMultipartAnswer;
2165 
2178  ORTHANC_PLUGIN_INLINE int32_t OrthancPluginStartMultipartAnswer(
2179  OrthancPluginContext* context,
2180  OrthancPluginRestOutput* output,
2181  const char* subType,
2182  const char* contentType)
2183  {
2184  _OrthancPluginStartMultipartAnswer params;
2185  params.output = output;
2186  params.subType = subType;
2187  params.contentType = contentType;
2188  return context->InvokeService(context, _OrthancPluginService_StartMultipartAnswer, &params);
2189  }
2190 
2191 
2205  ORTHANC_PLUGIN_INLINE int32_t OrthancPluginSendMultipartItem(
2206  OrthancPluginContext* context,
2207  OrthancPluginRestOutput* output,
2208  const char* answer,
2209  uint32_t answerSize)
2210  {
2211  _OrthancPluginAnswerBuffer params;
2212  params.output = output;
2213  params.answer = answer;
2214  params.answerSize = answerSize;
2215  params.mimeType = NULL;
2216  return context->InvokeService(context, _OrthancPluginService_SendMultipartItem, &params);
2217  }
2218 
2219 #ifdef __cplusplus
2220 }
2221 #endif
2222 
2223 
int32_t(* OrthancPluginStorageRemove)(const char *uuid, OrthancPluginContentType type)
Callback for removing a file from the storage area.
Definition: OrthancCPlugin.h:533
void OrthancPluginSendMethodNotAllowed(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *allowedMethods)
Signal that this URI does not support this HTTP method.
Definition: OrthancCPlugin.h:1378
char * OrthancPluginGetGlobalProperty(OrthancPluginContext *context, int32_t property, const char *defaultValue)
Get the value of a global property.
Definition: OrthancCPlugin.h:1963
The parameters of a REST request.
Definition: OrthancCPlugin.h:180
void OrthancPluginRegisterOnChangeCallback(OrthancPluginContext *context, OrthancPluginOnChangeCallback callback)
Register a callback to monitor changes.
Definition: OrthancCPlugin.h:1855
Definition: OrthancCPlugin.h:375
void OrthancPluginRegisterOnStoredInstanceCallback(OrthancPluginContext *context, OrthancPluginOnStoredInstanceCallback callback)
Register a callback for received instances.
Definition: OrthancCPlugin.h:755
const char *const * headersValues
The values of the HTTP headers.
Definition: OrthancCPlugin.h:240
const char *const * headersKeys
The keys of the HTTP headers (always converted to low-case).
Definition: OrthancCPlugin.h:235
uint32_t getCount
For a GET request, the number of GET parameters.
Definition: OrthancCPlugin.h:200
void OrthancPluginRedirect(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *redirection)
Redirect a REST request.
Definition: OrthancCPlugin.h:1124
int32_t(* OrthancPluginStorageCreate)(const char *uuid, const void *content, int64_t size, OrthancPluginContentType type)
Callback for writing to the storage area.
Definition: OrthancCPlugin.h:497
int OrthancPluginRestApiPost(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri, const char *body, uint32_t bodySize)
Make a POST call to the built-in Orthanc REST API.
Definition: OrthancCPlugin.h:958
void OrthancPluginSendHttpStatusCode(OrthancPluginContext *context, OrthancPluginRestOutput *output, uint16_t status)
Send a HTTP status code.
Definition: OrthancCPlugin.h:1334
Definition: OrthancCPlugin.h:401
const char * OrthancPluginGetInstanceRemoteAet(OrthancPluginContext *context, OrthancPluginDicomInstance *instance)
Get the AET of a DICOM instance.
Definition: OrthancCPlugin.h:1465
void OrthancPluginCompressAndAnswerPngImage(OrthancPluginContext *context, OrthancPluginRestOutput *output, OrthancPluginPixelFormat format, uint32_t width, uint32_t height, uint32_t pitch, const void *buffer)
Answer to a REST request with a PNG image.
Definition: OrthancCPlugin.h:829
OrthancPluginContentType
Definition: OrthancCPlugin.h:372
Definition: OrthancCPlugin.h:404
void OrthancPluginLogInfo(OrthancPluginContext *context, const char *message)
Log an information.
Definition: OrthancCPlugin.h:701
int32_t(* OrthancPluginStorageRead)(void **content, int64_t *size, const char *uuid, OrthancPluginContentType type)
Callback for reading from the storage area.
Definition: OrthancCPlugin.h:516
Definition: OrthancCPlugin.h:170
void OrthancPluginLogError(OrthancPluginContext *context, const char *message)
Log an error.
Definition: OrthancCPlugin.h:669
char * OrthancPluginGetConfiguration(OrthancPluginContext *context)
Return the content of the configuration file(s).
Definition: OrthancCPlugin.h:2138
void OrthancPluginFreeMemoryBuffer(OrthancPluginContext *context, OrthancPluginMemoryBuffer *buffer)
Free a memory buffer.
Definition: OrthancCPlugin.h:653
char * OrthancPluginGetOrthancPath(OrthancPluginContext *context)
Return the path to the Orthanc executable.
Definition: OrthancCPlugin.h:1755
OrthancPluginResourceType
Definition: OrthancCPlugin.h:384
int32_t(* OrthancPluginRestCallback)(OrthancPluginRestOutput *output, const char *url, const OrthancPluginHttpRequest *request)
Signature of a callback function that answers to a REST request.
Definition: OrthancCPlugin.h:453
void OrthancPluginSendUnauthorized(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *realm)
Signal that a REST request is not authorized.
Definition: OrthancCPlugin.h:1356
OrthancPluginChangeType
Definition: OrthancCPlugin.h:397
int OrthancPluginRestApiDelete(OrthancPluginContext *context, const char *uri)
Make a DELETE call to the built-in Orthanc REST API.
Definition: OrthancCPlugin.h:1016
void OrthancPluginSetHttpHeader(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *key, const char *value)
Set some HTTP header.
Definition: OrthancCPlugin.h:1431
int OrthancPluginGetDicomForInstance(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *instanceId)
Retrieve a DICOM instance using its Orthanc identifier.
Definition: OrthancCPlugin.h:867
char * OrthancPluginGetOrthancDirectory(OrthancPluginContext *context)
Return the directory containing the Orthanc.
Definition: OrthancCPlugin.h:1785
Graylevel, unsigned 16bpp image.
Definition: OrthancCPlugin.h:340
int OrthancPluginRestApiDeleteAfterPlugins(OrthancPluginContext *context, const char *uri)
Make a DELETE call to the REST API, as tainted by the plugins.
Definition: OrthancCPlugin.h:1036
char * OrthancPluginLookupStudyWithAccessionNumber(OrthancPluginContext *context, const char *accessionNumber)
Look for a study, using the accession number.
Definition: OrthancCPlugin.h:1223
int32_t OrthancPluginStartMultipartAnswer(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *subType, const char *contentType)
Start an HTTP multipart answer.
Definition: OrthancCPlugin.h:2178
void OrthancPluginSetRootUri(OrthancPluginContext *context, const char *uri)
Set the URI where the plugin provides its Web interface.
Definition: OrthancCPlugin.h:1886
void * data
The content of the buffer.
Definition: OrthancCPlugin.h:425
Definition: OrthancCPlugin.h:402
Color image in RGB24 format.
Definition: OrthancCPlugin.h:356
int OrthancPluginHasInstanceMetadata(OrthancPluginContext *context, OrthancPluginDicomInstance *instance, const char *metadata)
Check whether a DICOM instance is associated with some metadata.
Definition: OrthancCPlugin.h:1639
uint32_t headersCount
The number of HTTP headers.
Definition: OrthancCPlugin.h:230
char * OrthancPluginGetInstanceSimplifiedJson(OrthancPluginContext *context, OrthancPluginDicomInstance *instance)
Get the DICOM tag hierarchy as a JSON file (with simplification).
Definition: OrthancCPlugin.h:1601
void OrthancPluginExtendOrthancExplorer(OrthancPluginContext *context, const char *javascript)
Extend the JavaScript code of Orthanc Explorer.
Definition: OrthancCPlugin.h:1930
OrthancPluginHttpMethod
Definition: OrthancCPlugin.h:168
struct _OrthancPluginDicomInstance_t OrthancPluginDicomInstance
Opaque structure that represents a DICOM instance received by Orthanc.
Definition: OrthancCPlugin.h:446
char * OrthancPluginGetCommandLineArgument(OrthancPluginContext *context, uint32_t argument)
Get the value of a command-line argument.
Definition: OrthancCPlugin.h:2074
Definition: OrthancCPlugin.h:408
struct _OrthancPluginContext_t OrthancPluginContext
Data structure that contains information about the Orthanc core.
Definition: OrthancCPlugin.h:400
Definition: OrthancCPlugin.h:386
struct _OrthancPluginRestOutput_t OrthancPluginRestOutput
Opaque structure that represents the HTTP connection to the client application.
Definition: OrthancCPlugin.h:439
int32_t OrthancPluginSetGlobalProperty(OrthancPluginContext *context, int32_t property, const char *value)
Set the value of a global property.
Definition: OrthancCPlugin.h:2001
int OrthancPluginRestApiPut(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri, const char *body, uint32_t bodySize)
Make a PUT call to the built-in Orthanc REST API.
Definition: OrthancCPlugin.h:1058
int OrthancPluginRestApiPutAfterPlugins(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri, const char *body, uint32_t bodySize)
Make a PUT call to the REST API, as tainted by the plugins.
Definition: OrthancCPlugin.h:1091
const char *const * getValues
For a GET request, the values of the GET parameters.
Definition: OrthancCPlugin.h:210
int OrthancPluginRestApiPostAfterPlugins(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri, const char *body, uint32_t bodySize)
Make a POST call to the REST API, as tainted by the plugins.
Definition: OrthancCPlugin.h:990
Definition: OrthancCPlugin.h:172
char * OrthancPluginGetConfigurationPath(OrthancPluginContext *context)
Return the path to the configuration file(s).
Definition: OrthancCPlugin.h:1820
const char * body
For a PUT or POST request, the content of the body.
Definition: OrthancCPlugin.h:215
Definition: OrthancCPlugin.h:173
char * OrthancPluginLookupPatient(OrthancPluginContext *context, const char *patientID)
Look for a patient.
Definition: OrthancCPlugin.h:1155
Color image in RGBA32 format.
Definition: OrthancCPlugin.h:364
Definition: OrthancCPlugin.h:387
void OrthancPluginSetCookie(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *cookie, const char *value)
Set a cookie.
Definition: OrthancCPlugin.h:1407
const char *const * getKeys
For a GET request, the keys of the GET parameters.
Definition: OrthancCPlugin.h:205
Definition: OrthancCPlugin.h:399
const char *const * groups
The matched values for the groups of the regular expression.
Definition: OrthancCPlugin.h:195
uint32_t OrthancPluginGetCommandLineArgumentsCount(OrthancPluginContext *context)
Get the number of command-line arguments.
Definition: OrthancCPlugin.h:2040
uint32_t size
The number of bytes in the buffer.
Definition: OrthancCPlugin.h:430
int OrthancPluginRestApiGet(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri)
Make a GET call to the built-in Orthanc REST API.
Definition: OrthancCPlugin.h:897
uint32_t groupsCount
The number of groups of the regular expression.
Definition: OrthancCPlugin.h:190
int32_t(* OrthancPluginOnStoredInstanceCallback)(OrthancPluginDicomInstance *instance, const char *instanceId)
Signature of a callback function that is triggered when Orthanc receives a DICOM instance.
Definition: OrthancCPlugin.h:463
Definition: OrthancCPlugin.h:407
OrthancPluginPixelFormat
Definition: OrthancCPlugin.h:324
Definition: OrthancCPlugin.h:388
void OrthancPluginRegisterRestCallback(OrthancPluginContext *context, const char *pathRegularExpression, OrthancPluginRestCallback callback)
Register a REST callback.
Definition: OrthancCPlugin.h:728
int32_t OrthancPluginSendMultipartItem(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *answer, uint32_t answerSize)
Send an item as a part of some HTTP multipart answer.
Definition: OrthancCPlugin.h:2205
Graylevel 8bpp image.
Definition: OrthancCPlugin.h:332
uint32_t bodySize
For a PUT or POST request, the number of bytes of the body.
Definition: OrthancCPlugin.h:220
void OrthancPluginAnswerBuffer(OrthancPluginContext *context, OrthancPluginRestOutput *output, const char *answer, uint32_t answerSize, const char *mimeType)
Answer to a REST request.
Definition: OrthancCPlugin.h:786
const char * OrthancPluginGetInstanceMetadata(OrthancPluginContext *context, OrthancPluginDicomInstance *instance, const char *metadata)
Get the value of some metadata associated with a given DICOM instance.
Definition: OrthancCPlugin.h:1676
uint32_t OrthancPluginGetExpectedDatabaseVersion(OrthancPluginContext *context)
Get the expected version of the database schema.
Definition: OrthancCPlugin.h:2105
Definition: OrthancCPlugin.h:406
void OrthancPluginRegisterStorageArea(OrthancPluginContext *context, OrthancPluginStorageCreate create, OrthancPluginStorageRead read, OrthancPluginStorageRemove remove)
Register a custom storage area.
Definition: OrthancCPlugin.h:1723
void OrthancPluginFreeString(OrthancPluginContext *context, char *str)
Free a string.
Definition: OrthancCPlugin.h:562
void(* OrthancPluginFree)(void *buffer)
Signature of a function to free dynamic memory.
Definition: OrthancCPlugin.h:482
Definition: OrthancCPlugin.h:403
int64_t OrthancPluginGetInstanceSize(OrthancPluginContext *context, OrthancPluginDicomInstance *instance)
Get the size of a DICOM file.
Definition: OrthancCPlugin.h:1497
Definition: OrthancCPlugin.h:389
char * OrthancPluginGetInstanceJson(OrthancPluginContext *context, OrthancPluginDicomInstance *instance)
Get the DICOM tag hierarchy as a JSON file.
Definition: OrthancCPlugin.h:1564
Graylevel, signed 16bpp image.
Definition: OrthancCPlugin.h:348
OrthancPluginHttpMethod method
The HTTP method.
Definition: OrthancCPlugin.h:185
const char * OrthancPluginGetInstanceData(OrthancPluginContext *context, OrthancPluginDicomInstance *instance)
Get the data of a DICOM file.
Definition: OrthancCPlugin.h:1529
A memory buffer allocated by the core system of Orthanc.
Definition: OrthancCPlugin.h:420
void OrthancPluginSetDescription(OrthancPluginContext *context, const char *description)
Set a description for this plugin.
Definition: OrthancCPlugin.h:1908
int OrthancPluginCheckVersion(OrthancPluginContext *context)
Check the compatibility of the plugin wrt. the version of its hosting Orthanc.
Definition: OrthancCPlugin.h:585
void OrthancPluginLogWarning(OrthancPluginContext *context, const char *message)
Log a warning.
Definition: OrthancCPlugin.h:685
Definition: OrthancCPlugin.h:376
Definition: OrthancCPlugin.h:171
char * OrthancPluginLookupStudy(OrthancPluginContext *context, const char *studyUID)
Look for a study.
Definition: OrthancCPlugin.h:1189
char * OrthancPluginLookupSeries(OrthancPluginContext *context, const char *seriesUID)
Look for a series.
Definition: OrthancCPlugin.h:1257
Definition: OrthancCPlugin.h:374
Definition: OrthancCPlugin.h:405
int OrthancPluginRestApiGetAfterPlugins(OrthancPluginContext *context, OrthancPluginMemoryBuffer *target, const char *uri)
Make a GET call to the REST API, as tainted by the plugins.
Definition: OrthancCPlugin.h:924
int32_t(* OrthancPluginOnChangeCallback)(OrthancPluginChangeType changeType, OrthancPluginResourceType resourceType, const char *resourceId)
Signature of a callback function that is triggered when a change happens to some DICOM resource...
Definition: OrthancCPlugin.h:472
char * OrthancPluginLookupInstance(OrthancPluginContext *context, const char *sopInstanceUID)
Look for an instance.
Definition: OrthancCPlugin.h:1291