comparison Plugins/OrthancCPlugin/OrthancCPlugin.h @ 1066:bb82e5e818e9

OnStoredInstance callback in plugins
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 25 Jul 2014 18:39:02 +0200
parents 8d1845feb277
children ace99e272203
comparison
equal deleted inserted replaced
1065:921532f67770 1066:bb82e5e818e9
236 _OrthancPluginService_LogWarning = 2, 236 _OrthancPluginService_LogWarning = 2,
237 _OrthancPluginService_LogError = 3, 237 _OrthancPluginService_LogError = 3,
238 238
239 /* Registration of callbacks */ 239 /* Registration of callbacks */
240 _OrthancPluginService_RegisterRestCallback = 1000, 240 _OrthancPluginService_RegisterRestCallback = 1000,
241 _OrthancPluginService_RegisterOnStoredInstanceCallback = 1001,
241 242
242 /* Sending answers to REST calls */ 243 /* Sending answers to REST calls */
243 _OrthancPluginService_AnswerBuffer = 2000, 244 _OrthancPluginService_AnswerBuffer = 2000,
244 _OrthancPluginService_CompressAndAnswerPngImage = 2001, 245 _OrthancPluginService_CompressAndAnswerPngImage = 2001,
245 _OrthancPluginService_Redirect = 2002, 246 _OrthancPluginService_Redirect = 2002,
255 _OrthancPluginService_RestApiDelete = 3003, 256 _OrthancPluginService_RestApiDelete = 3003,
256 _OrthancPluginService_RestApiPut = 3004, 257 _OrthancPluginService_RestApiPut = 3004,
257 _OrthancPluginService_LookupPatient = 3005, 258 _OrthancPluginService_LookupPatient = 3005,
258 _OrthancPluginService_LookupStudy = 3006, 259 _OrthancPluginService_LookupStudy = 3006,
259 _OrthancPluginService_LookupSeries = 3007, 260 _OrthancPluginService_LookupSeries = 3007,
260 _OrthancPluginService_LookupInstance = 3008 261 _OrthancPluginService_LookupInstance = 3008,
262
263 /* Access to DICOM instances */
264 _OrthancPluginService_GetInstanceRemoteAet = 4000,
265 _OrthancPluginService_GetInstanceSize = 4001,
266 _OrthancPluginService_GetInstanceData = 4002,
267 _OrthancPluginService_GetInstanceJson = 4003,
268 _OrthancPluginService_GetInstanceSimplifiedJson = 4004
269
270 /* + METADATA !!! */
261 } _OrthancPluginService; 271 } _OrthancPluginService;
262 272
263 273
264 274
265 /** 275 /**
336 * @brief Opaque structure that represents the HTTP connection to the client application. 346 * @brief Opaque structure that represents the HTTP connection to the client application.
337 **/ 347 **/
338 typedef struct _OrthancPluginRestOutput_t OrthancPluginRestOutput; 348 typedef struct _OrthancPluginRestOutput_t OrthancPluginRestOutput;
339 349
340 350
351
352 /**
353 * @brief Opaque structure that represents a DICOM instance received by Orthanc.
354 **/
355 typedef struct _OrthancPluginDicomInstance_t OrthancPluginDicomInstance;
356
357
358
341 /** 359 /**
342 * @brief Signature of a callback function that answers to a REST request. 360 * @brief Signature of a callback function that answers to a REST request.
343 **/ 361 **/
344 typedef int32_t (*OrthancPluginRestCallback) ( 362 typedef int32_t (*OrthancPluginRestCallback) (
345 OrthancPluginRestOutput* output, 363 OrthancPluginRestOutput* output,
346 const char* url, 364 const char* url,
347 const OrthancPluginHttpRequest* request); 365 const OrthancPluginHttpRequest* request);
366
367
368
369 /**
370 * @brief Signature of a callback function that is triggered when Orthanc receives a DICOM instance.
371 **/
372 typedef int32_t (*OrthancPluginOnStoredInstanceCallback) (
373 OrthancPluginDicomInstance* instance,
374 const char* instanceId);
375
348 376
349 377
350 /** 378 /**
351 * @brief Opaque structure that contains information about the Orthanc core. 379 * @brief Opaque structure that contains information about the Orthanc core.
352 **/ 380 **/
549 577
550 578
551 579
552 typedef struct 580 typedef struct
553 { 581 {
582 OrthancPluginOnStoredInstanceCallback callback;
583 } _OrthancPluginOnStoredInstanceCallback;
584
585 /**
586 * @brief Register a callback for received instances.
587 *
588 * This function registers a callback function that is called
589 * whenever a new DICOM instance is stored into the Orthanc core.
590 *
591 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize().
592 * @param callback The callback function.
593 **/
594 ORTHANC_PLUGIN_INLINE void OrthancPluginRegisterOnStoredInstanceCallback(
595 OrthancPluginContext* context,
596 OrthancPluginOnStoredInstanceCallback callback)
597 {
598 _OrthancPluginOnStoredInstanceCallback params;
599 params.callback = callback;
600
601 context->InvokeService(context, _OrthancPluginService_RegisterOnStoredInstanceCallback, &params);
602 }
603
604
605
606 typedef struct
607 {
554 OrthancPluginRestOutput* output; 608 OrthancPluginRestOutput* output;
555 const char* answer; 609 const char* answer;
556 uint32_t answerSize; 610 uint32_t answerSize;
557 const char* mimeType; 611 const char* mimeType;
558 } _OrthancPluginAnswerBuffer; 612 } _OrthancPluginAnswerBuffer;
1043 params.value = value; 1097 params.value = value;
1044 context->InvokeService(context, _OrthancPluginService_SetCookie, &params); 1098 context->InvokeService(context, _OrthancPluginService_SetCookie, &params);
1045 } 1099 }
1046 1100
1047 1101
1102 typedef struct
1103 {
1104 char** resultStringToFree;
1105 const char** resultString;
1106 int64_t* resultInt64;
1107 const char* key;
1108 OrthancPluginDicomInstance* instance;
1109 } _OrthancPluginAccessDicomInstance;
1110
1111
1112 ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceRemoteAet(
1113 OrthancPluginContext* context,
1114 OrthancPluginDicomInstance* instance)
1115 {
1116 const char* result;
1117
1118 _OrthancPluginAccessDicomInstance params;
1119 memset(&params, 0, sizeof(params));
1120 params.resultString = &result;
1121 params.instance = instance;
1122
1123 if (context->InvokeService(context, _OrthancPluginService_GetInstanceRemoteAet, &params))
1124 {
1125 return NULL;
1126 }
1127 else
1128 {
1129 return result;
1130 }
1131 }
1132
1133
1134 ORTHANC_PLUGIN_INLINE int64_t OrthancPluginGetInstanceSize(
1135 OrthancPluginContext* context,
1136 OrthancPluginDicomInstance* instance)
1137 {
1138 int64_t size;
1139
1140 _OrthancPluginAccessDicomInstance params;
1141 memset(&params, 0, sizeof(params));
1142 params.resultInt64 = &size;
1143 params.instance = instance;
1144
1145 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSize, &params))
1146 {
1147 return -1;
1148 }
1149 else
1150 {
1151 return size;
1152 }
1153 }
1154
1155
1156 ORTHANC_PLUGIN_INLINE const char* OrthancPluginGetInstanceData(
1157 OrthancPluginContext* context,
1158 OrthancPluginDicomInstance* instance)
1159 {
1160 const char* result;
1161
1162 _OrthancPluginAccessDicomInstance params;
1163 memset(&params, 0, sizeof(params));
1164 params.resultString = &result;
1165 params.instance = instance;
1166
1167 if (context->InvokeService(context, _OrthancPluginService_GetInstanceData, &params))
1168 {
1169 return NULL;
1170 }
1171 else
1172 {
1173 return result;
1174 }
1175 }
1176
1177
1178 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceJson(
1179 OrthancPluginContext* context,
1180 OrthancPluginDicomInstance* instance)
1181 {
1182 char* result;
1183
1184 _OrthancPluginAccessDicomInstance params;
1185 memset(&params, 0, sizeof(params));
1186 params.resultStringToFree = &result;
1187 params.instance = instance;
1188
1189 if (context->InvokeService(context, _OrthancPluginService_GetInstanceJson, &params))
1190 {
1191 return NULL;
1192 }
1193 else
1194 {
1195 return result;
1196 }
1197 }
1198
1199
1200 ORTHANC_PLUGIN_INLINE char* OrthancPluginGetInstanceSimplifiedJson(
1201 OrthancPluginContext* context,
1202 OrthancPluginDicomInstance* instance)
1203 {
1204 char* result;
1205
1206 _OrthancPluginAccessDicomInstance params;
1207 memset(&params, 0, sizeof(params));
1208 params.resultStringToFree = &result;
1209 params.instance = instance;
1210
1211 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSimplifiedJson, &params))
1212 {
1213 return NULL;
1214 }
1215 else
1216 {
1217 return result;
1218 }
1219 }
1220
1221
1222
1223
1224 /*
1225 TODO : METADATA !!!
1226 TODO : DOCUMENTATION !!!
1227 */
1228
1229
1048 #ifdef __cplusplus 1230 #ifdef __cplusplus
1049 } 1231 }
1050 #endif 1232 #endif
1051 1233
1052 1234