Mercurial > hg > orthanc
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, ¶ms); | |
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, ¶ms); | 1098 context->InvokeService(context, _OrthancPluginService_SetCookie, ¶ms); |
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(¶ms, 0, sizeof(params)); | |
1120 params.resultString = &result; | |
1121 params.instance = instance; | |
1122 | |
1123 if (context->InvokeService(context, _OrthancPluginService_GetInstanceRemoteAet, ¶ms)) | |
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(¶ms, 0, sizeof(params)); | |
1142 params.resultInt64 = &size; | |
1143 params.instance = instance; | |
1144 | |
1145 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSize, ¶ms)) | |
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(¶ms, 0, sizeof(params)); | |
1164 params.resultString = &result; | |
1165 params.instance = instance; | |
1166 | |
1167 if (context->InvokeService(context, _OrthancPluginService_GetInstanceData, ¶ms)) | |
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(¶ms, 0, sizeof(params)); | |
1186 params.resultStringToFree = &result; | |
1187 params.instance = instance; | |
1188 | |
1189 if (context->InvokeService(context, _OrthancPluginService_GetInstanceJson, ¶ms)) | |
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(¶ms, 0, sizeof(params)); | |
1208 params.resultStringToFree = &result; | |
1209 params.instance = instance; | |
1210 | |
1211 if (context->InvokeService(context, _OrthancPluginService_GetInstanceSimplifiedJson, ¶ms)) | |
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 |