85 #define ORTHANC_PLUGINS_API __declspec(dllexport)
87 #define ORTHANC_PLUGINS_API
90 #define ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER 0
91 #define ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER 8
92 #define ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER 5
110 #ifndef ORTHANC_PLUGIN_INLINE
111 # if __STDC_VERSION__ >= 199901L
113 # define ORTHANC_PLUGIN_INLINE static inline
114 # elif defined(__cplusplus)
116 # define ORTHANC_PLUGIN_INLINE static inline
117 # elif defined(__GNUC__)
119 # define ORTHANC_PLUGIN_INLINE static __inline
120 # elif defined(_MSC_VER)
122 # define ORTHANC_PLUGIN_INLINE static __inline
124 # error Your compiler is not known to support the "inline" keyword
135 #include "../../Resources/ThirdParty/VisualStudio/stdint.h"
238 _OrthancPluginService_LogInfo = 1,
239 _OrthancPluginService_LogWarning = 2,
240 _OrthancPluginService_LogError = 3,
241 _OrthancPluginService_GetOrthancPath = 4,
242 _OrthancPluginService_GetOrthancDirectory = 5,
243 _OrthancPluginService_GetConfigurationPath = 6,
246 _OrthancPluginService_RegisterRestCallback = 1000,
247 _OrthancPluginService_RegisterOnStoredInstanceCallback = 1001,
248 _OrthancPluginService_RegisterStorageArea = 1002,
249 _OrthancPluginService_RegisterOnChangeCallback = 1003,
252 _OrthancPluginService_AnswerBuffer = 2000,
253 _OrthancPluginService_CompressAndAnswerPngImage = 2001,
254 _OrthancPluginService_Redirect = 2002,
255 _OrthancPluginService_SendHttpStatusCode = 2003,
256 _OrthancPluginService_SendUnauthorized = 2004,
257 _OrthancPluginService_SendMethodNotAllowed = 2005,
258 _OrthancPluginService_SetCookie = 2006,
259 _OrthancPluginService_SetHttpHeader = 2007,
262 _OrthancPluginService_GetDicomForInstance = 3000,
263 _OrthancPluginService_RestApiGet = 3001,
264 _OrthancPluginService_RestApiPost = 3002,
265 _OrthancPluginService_RestApiDelete = 3003,
266 _OrthancPluginService_RestApiPut = 3004,
267 _OrthancPluginService_LookupPatient = 3005,
268 _OrthancPluginService_LookupStudy = 3006,
269 _OrthancPluginService_LookupSeries = 3007,
270 _OrthancPluginService_LookupInstance = 3008,
271 _OrthancPluginService_LookupStudyWithAccessionNumber = 3009,
274 _OrthancPluginService_GetInstanceRemoteAet = 4000,
275 _OrthancPluginService_GetInstanceSize = 4001,
276 _OrthancPluginService_GetInstanceData = 4002,
277 _OrthancPluginService_GetInstanceJson = 4003,
278 _OrthancPluginService_GetInstanceSimplifiedJson = 4004,
279 _OrthancPluginService_HasInstanceMetadata = 4005,
280 _OrthancPluginService_GetInstanceMetadata = 4006
281 } _OrthancPluginService;
429 const char* instanceId);
439 const char* resourceId);
506 typedef struct _OrthancPluginContext_t
508 void* pluginsManager;
509 const char* orthancVersion;
511 int32_t (*InvokeService) (
struct _OrthancPluginContext_t* context,
512 _OrthancPluginService service,
552 int major, minor, revision;
555 if (!strcmp(context->orthancVersion,
"mainline"))
567 (context->orthancVersion,
"%d.%d.%d", &major, &minor, &revision) != 3)
574 if (major > ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
579 if (major < ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER)
586 if (minor > ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
591 if (minor < ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER)
598 if (revision >= ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER)
621 context->Free(buffer->
data);
637 context->InvokeService(context, _OrthancPluginService_LogError, message);
653 context->InvokeService(context, _OrthancPluginService_LogWarning, message);
669 context->InvokeService(context, _OrthancPluginService_LogInfo, message);
676 const char* pathRegularExpression;
678 } _OrthancPluginRestCallback;
694 const char* pathRegularExpression,
697 _OrthancPluginRestCallback params;
698 params.pathRegularExpression = pathRegularExpression;
699 params.callback = callback;
700 context->InvokeService(context, _OrthancPluginService_RegisterRestCallback, ¶ms);
708 } _OrthancPluginOnStoredInstanceCallback;
723 _OrthancPluginOnStoredInstanceCallback params;
724 params.callback = callback;
726 context->InvokeService(context, _OrthancPluginService_RegisterOnStoredInstanceCallback, ¶ms);
736 const char* mimeType;
737 } _OrthancPluginAnswerBuffer;
755 const char* mimeType)
757 _OrthancPluginAnswerBuffer params;
758 params.output = output;
759 params.answer = answer;
760 params.answerSize = answerSize;
761 params.mimeType = mimeType;
762 context->InvokeService(context, _OrthancPluginService_AnswerBuffer, ¶ms);
774 } _OrthancPluginCompressAndAnswerPngImage;
802 _OrthancPluginCompressAndAnswerPngImage params;
803 params.output = output;
804 params.format = format;
805 params.width = width;
806 params.height = height;
807 params.pitch = pitch;
808 params.buffer = buffer;
809 context->InvokeService(context, _OrthancPluginService_CompressAndAnswerPngImage, ¶ms);
817 const char* instanceId;
818 } _OrthancPluginGetDicomForInstance;
834 const char* instanceId)
836 _OrthancPluginGetDicomForInstance params;
837 params.target = target;
838 params.instanceId = instanceId;
839 return context->InvokeService(context, _OrthancPluginService_GetDicomForInstance, ¶ms);
848 } _OrthancPluginRestApiGet;
866 _OrthancPluginRestApiGet params;
867 params.target = target;
869 return context->InvokeService(context, _OrthancPluginService_RestApiGet, ¶ms);
880 } _OrthancPluginRestApiPostPut;
902 _OrthancPluginRestApiPostPut params;
903 params.target = target;
906 params.bodySize = bodySize;
907 return context->InvokeService(context, _OrthancPluginService_RestApiPost, ¶ms);
925 return context->InvokeService(context, _OrthancPluginService_RestApiDelete, uri);
950 _OrthancPluginRestApiPostPut params;
951 params.target = target;
954 params.bodySize = bodySize;
955 return context->InvokeService(context, _OrthancPluginService_RestApiPut, ¶ms);
963 const char* argument;
964 } _OrthancPluginOutputPlusArgument;
979 const char* redirection)
981 _OrthancPluginOutputPlusArgument params;
982 params.output = output;
983 params.argument = redirection;
984 context->InvokeService(context, _OrthancPluginService_Redirect, ¶ms);
992 const char* argument;
993 } _OrthancPluginRetrieveDynamicString;
1009 const char* patientID)
1013 _OrthancPluginRetrieveDynamicString params;
1014 params.result = &result;
1015 params.argument = patientID;
1017 if (context->InvokeService(context, _OrthancPluginService_LookupPatient, ¶ms))
1043 const char* studyUID)
1047 _OrthancPluginRetrieveDynamicString params;
1048 params.result = &result;
1049 params.argument = studyUID;
1051 if (context->InvokeService(context, _OrthancPluginService_LookupStudy, ¶ms))
1077 const char* accessionNumber)
1081 _OrthancPluginRetrieveDynamicString params;
1082 params.result = &result;
1083 params.argument = accessionNumber;
1085 if (context->InvokeService(context, _OrthancPluginService_LookupStudyWithAccessionNumber, ¶ms))
1111 const char* seriesUID)
1115 _OrthancPluginRetrieveDynamicString params;
1116 params.result = &result;
1117 params.argument = seriesUID;
1119 if (context->InvokeService(context, _OrthancPluginService_LookupSeries, ¶ms))
1145 const char* sopInstanceUID)
1149 _OrthancPluginRetrieveDynamicString params;
1150 params.result = &result;
1151 params.argument = sopInstanceUID;
1153 if (context->InvokeService(context, _OrthancPluginService_LookupInstance, ¶ms))
1170 } _OrthancPluginSendHttpStatusCode;
1191 _OrthancPluginSendHttpStatusCode params;
1192 params.output = output;
1193 params.status = status;
1194 context->InvokeService(context, _OrthancPluginService_SendHttpStatusCode, ¶ms);
1213 _OrthancPluginOutputPlusArgument params;
1214 params.output = output;
1215 params.argument = realm;
1216 context->InvokeService(context, _OrthancPluginService_SendUnauthorized, ¶ms);
1233 const char* allowedMethods)
1235 _OrthancPluginOutputPlusArgument params;
1236 params.output = output;
1237 params.argument = allowedMethods;
1238 context->InvokeService(context, _OrthancPluginService_SendMethodNotAllowed, ¶ms);
1247 } _OrthancPluginSetHttpHeader;
1265 _OrthancPluginSetHttpHeader params;
1266 params.output = output;
1267 params.key = cookie;
1268 params.value = value;
1269 context->InvokeService(context, _OrthancPluginService_SetCookie, ¶ms);
1289 _OrthancPluginSetHttpHeader params;
1290 params.output = output;
1292 params.value = value;
1293 context->InvokeService(context, _OrthancPluginService_SetHttpHeader, ¶ms);
1299 char** resultStringToFree;
1300 const char** resultString;
1301 int64_t* resultInt64;
1304 } _OrthancPluginAccessDicomInstance;
1323 _OrthancPluginAccessDicomInstance params;
1324 memset(¶ms, 0,
sizeof(params));
1325 params.resultString = &result;
1326 params.instance = instance;
1328 if (context->InvokeService(context, _OrthancPluginService_GetInstanceRemoteAet, ¶ms))
1355 _OrthancPluginAccessDicomInstance params;
1356 memset(¶ms, 0,
sizeof(params));
1357 params.resultInt64 = &size;
1358 params.instance = instance;
1360 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSize, ¶ms))
1387 _OrthancPluginAccessDicomInstance params;
1388 memset(¶ms, 0,
sizeof(params));
1389 params.resultString = &result;
1390 params.instance = instance;
1392 if (context->InvokeService(context, _OrthancPluginService_GetInstanceData, ¶ms))
1422 _OrthancPluginAccessDicomInstance params;
1423 memset(¶ms, 0,
sizeof(params));
1424 params.resultStringToFree = &result;
1425 params.instance = instance;
1427 if (context->InvokeService(context, _OrthancPluginService_GetInstanceJson, ¶ms))
1459 _OrthancPluginAccessDicomInstance params;
1460 memset(¶ms, 0,
sizeof(params));
1461 params.resultStringToFree = &result;
1462 params.instance = instance;
1464 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSimplifiedJson, ¶ms))
1494 const char* metadata)
1498 _OrthancPluginAccessDicomInstance params;
1499 memset(¶ms, 0,
sizeof(params));
1500 params.resultInt64 = &result;
1501 params.instance = instance;
1502 params.key = metadata;
1504 if (context->InvokeService(context, _OrthancPluginService_HasInstanceMetadata, ¶ms))
1511 return (result != 0);
1531 const char* metadata)
1535 _OrthancPluginAccessDicomInstance params;
1536 memset(¶ms, 0,
sizeof(params));
1537 params.resultString = &result;
1538 params.instance = instance;
1539 params.key = metadata;
1541 if (context->InvokeService(context, _OrthancPluginService_GetInstanceMetadata, ¶ms))
1560 } _OrthancPluginRegisterStorageArea;
1581 _OrthancPluginRegisterStorageArea params;
1582 params.create_ = create;
1583 params.read_ = read;
1584 params.remove_ =
remove;
1587 params.free_ = ::free;
1589 params.free_ = free;
1592 context->InvokeService(context, _OrthancPluginService_RegisterStorageArea, ¶ms);
1611 _OrthancPluginRetrieveDynamicString params;
1612 params.result = &result;
1613 params.argument = NULL;
1615 if (context->InvokeService(context, _OrthancPluginService_GetOrthancPath, ¶ms))
1641 _OrthancPluginRetrieveDynamicString params;
1642 params.result = &result;
1643 params.argument = NULL;
1645 if (context->InvokeService(context, _OrthancPluginService_GetOrthancDirectory, ¶ms))
1672 _OrthancPluginRetrieveDynamicString params;
1673 params.result = &result;
1674 params.argument = NULL;
1676 if (context->InvokeService(context, _OrthancPluginService_GetConfigurationPath, ¶ms))
1692 } _OrthancPluginOnChangeCallback;
1707 _OrthancPluginOnChangeCallback params;
1708 params.callback = callback;
1710 context->InvokeService(context, _OrthancPluginService_RegisterOnChangeCallback, ¶ms);