31 #include "OrthancCPlugin.h" 60 _OrthancPluginDatabaseAnswerType_None = 0,
63 _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
64 _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
65 _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
68 _OrthancPluginDatabaseAnswerType_Attachment = 10,
69 _OrthancPluginDatabaseAnswerType_Change = 11,
70 _OrthancPluginDatabaseAnswerType_DicomTag = 12,
71 _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
72 _OrthancPluginDatabaseAnswerType_Int32 = 14,
73 _OrthancPluginDatabaseAnswerType_Int64 = 15,
74 _OrthancPluginDatabaseAnswerType_Resource = 16,
75 _OrthancPluginDatabaseAnswerType_String = 17,
76 _OrthancPluginDatabaseAnswerType_MatchingResource = 18,
77 _OrthancPluginDatabaseAnswerType_Metadata = 19,
79 _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
80 } _OrthancPluginDatabaseAnswerType;
85 OrthancPluginDatabaseTransactionType_ReadOnly = 1,
86 OrthancPluginDatabaseTransactionType_ReadWrite = 2,
87 OrthancPluginDatabaseTransactionType_INTERNAL = 0x7fffffff
88 } OrthancPluginDatabaseTransactionType;
93 OrthancPluginDatabaseEventType_DeletedAttachment = 1,
94 OrthancPluginDatabaseEventType_DeletedResource = 2,
95 OrthancPluginDatabaseEventType_RemainingAncestor = 3,
96 OrthancPluginDatabaseEventType_INTERNAL = 0x7fffffff
97 } OrthancPluginDatabaseEventType;
104 uint64_t uncompressedSize;
105 const char* uncompressedHash;
106 int32_t compressionType;
107 uint64_t compressedSize;
108 const char* compressedHash;
109 } OrthancPluginAttachment;
116 } OrthancPluginDicomTag;
123 const char* publicId;
125 } OrthancPluginChange;
131 const char* publicId;
132 const char* modality;
134 const char* patientId;
135 const char* studyInstanceUid;
136 const char* seriesInstanceUid;
137 const char* sopInstanceUid;
138 } OrthancPluginExportedResource;
145 uint8_t isIdentifierTag;
146 uint8_t isCaseSensitive;
149 uint32_t valuesCount;
150 const char*
const* values;
151 } OrthancPluginDatabaseConstraint;
155 const char* resourceId;
156 const char* someInstanceId;
157 } OrthancPluginMatchingResource;
162 uint8_t isNewInstance;
166 uint8_t isNewPatient;
172 } OrthancPluginCreateInstanceResult;
180 } OrthancPluginResourcesContentTags;
187 } OrthancPluginResourcesContentMetadata;
193 _OrthancPluginDatabaseAnswerType type;
195 uint32_t valueUint32;
197 const char *valueString;
198 const void *valueGeneric;
199 } _OrthancPluginDatabaseAnswer;
201 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
206 _OrthancPluginDatabaseAnswer params;
207 memset(¶ms, 0,
sizeof(params));
208 params.database = database;
209 params.type = _OrthancPluginDatabaseAnswerType_String;
210 params.valueString = value;
211 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
214 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
217 const OrthancPluginChange* change)
219 _OrthancPluginDatabaseAnswer params;
220 memset(¶ms, 0,
sizeof(params));
222 params.database = database;
223 params.type = _OrthancPluginDatabaseAnswerType_Change;
224 params.valueUint32 = 0;
225 params.valueGeneric = change;
227 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
230 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
234 _OrthancPluginDatabaseAnswer params;
235 memset(¶ms, 0,
sizeof(params));
237 params.database = database;
238 params.type = _OrthancPluginDatabaseAnswerType_Change;
239 params.valueUint32 = 1;
240 params.valueGeneric = NULL;
242 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
245 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
250 _OrthancPluginDatabaseAnswer params;
251 memset(¶ms, 0,
sizeof(params));
252 params.database = database;
253 params.type = _OrthancPluginDatabaseAnswerType_Int32;
254 params.valueInt32 = value;
255 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
258 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
263 _OrthancPluginDatabaseAnswer params;
264 memset(¶ms, 0,
sizeof(params));
265 params.database = database;
266 params.type = _OrthancPluginDatabaseAnswerType_Int64;
267 params.valueInt64 = value;
268 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
271 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
274 const OrthancPluginExportedResource* exported)
276 _OrthancPluginDatabaseAnswer params;
277 memset(¶ms, 0,
sizeof(params));
279 params.database = database;
280 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
281 params.valueUint32 = 0;
282 params.valueGeneric = exported;
283 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
286 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
290 _OrthancPluginDatabaseAnswer params;
291 memset(¶ms, 0,
sizeof(params));
293 params.database = database;
294 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
295 params.valueUint32 = 1;
296 params.valueGeneric = NULL;
297 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
300 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
303 const OrthancPluginDicomTag* tag)
305 _OrthancPluginDatabaseAnswer params;
306 memset(¶ms, 0,
sizeof(params));
307 params.database = database;
308 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
309 params.valueGeneric = tag;
310 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
313 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
316 const OrthancPluginAttachment* attachment)
318 _OrthancPluginDatabaseAnswer params;
319 memset(¶ms, 0,
sizeof(params));
320 params.database = database;
321 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
322 params.valueGeneric = attachment;
323 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
326 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
332 _OrthancPluginDatabaseAnswer params;
333 memset(¶ms, 0,
sizeof(params));
334 params.database = database;
335 params.type = _OrthancPluginDatabaseAnswerType_Resource;
336 params.valueInt64 = id;
337 params.valueInt32 = (int32_t) resourceType;
338 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
341 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMatchingResource(
344 const OrthancPluginMatchingResource* match)
346 _OrthancPluginDatabaseAnswer params;
347 memset(¶ms, 0,
sizeof(params));
348 params.database = database;
349 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
350 params.valueGeneric = match;
351 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
354 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMetadata(
361 OrthancPluginResourcesContentMetadata metadata;
362 _OrthancPluginDatabaseAnswer params;
363 metadata.resource = resourceId;
364 metadata.metadata = type;
365 metadata.value = value;
366 memset(¶ms, 0,
sizeof(params));
367 params.database = database;
368 params.type = _OrthancPluginDatabaseAnswerType_Metadata;
369 params.valueGeneric = &metadata;
370 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
373 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
376 const OrthancPluginAttachment* attachment)
378 _OrthancPluginDatabaseAnswer params;
379 memset(¶ms, 0,
sizeof(params));
380 params.database = database;
381 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
382 params.valueGeneric = attachment;
383 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
386 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
389 const char* publicId,
392 _OrthancPluginDatabaseAnswer params;
393 memset(¶ms, 0,
sizeof(params));
394 params.database = database;
395 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
396 params.valueString = publicId;
397 params.valueInt32 = (int32_t) resourceType;
398 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
401 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
404 const char* ancestorId,
407 _OrthancPluginDatabaseAnswer params;
408 memset(¶ms, 0,
sizeof(params));
409 params.database = database;
410 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
411 params.valueString = ancestorId;
412 params.valueInt32 = (int32_t) ancestorType;
413 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
426 const OrthancPluginAttachment* attachment);
447 const char* publicId,
454 int32_t contentType);
460 int32_t metadataType);
576 int32_t* isProtected,
600 const OrthancPluginChange* change);
605 const OrthancPluginExportedResource* exported);
614 int32_t contentType);
632 const OrthancPluginDicomTag* tag);
666 const char* publicId);
681 int64_t patientIdToAvoid);
693 const OrthancPluginDicomTag* tag);
699 const OrthancPluginDicomTag* tag);
712 int32_t isProtected);
734 } OrthancPluginDatabaseBackend;
762 uint32_t targetVersion,
785 const OrthancPluginDicomTag* tag,
816 uint32_t constraintsCount,
817 const OrthancPluginDatabaseConstraint* constraints,
820 uint8_t requestSomeInstance);
824 OrthancPluginCreateInstanceResult* output,
827 const char* hashPatient,
828 const char* hashStudy,
829 const char* hashSeries,
830 const char* hashInstance);
835 uint32_t countIdentifierTags,
836 const OrthancPluginResourcesContentTags* identifierTags,
837 uint32_t countMainDicomTags,
838 const OrthancPluginResourcesContentTags* mainDicomTags,
839 uint32_t countMetadata,
840 const OrthancPluginResourcesContentMetadata* metadata);
886 const char* publicId);
888 } OrthancPluginDatabaseExtensions;
896 const OrthancPluginDatabaseBackend* backend;
898 } _OrthancPluginRegisterDatabaseBackend;
913 const OrthancPluginDatabaseBackend* backend,
917 _OrthancPluginRegisterDatabaseBackend params;
919 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType) ||
920 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseTransactionType) ||
921 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseEventType))
926 memset(¶ms, 0,
sizeof(params));
927 params.backend = backend;
928 params.result = &result;
929 params.payload = payload;
931 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
947 const OrthancPluginDatabaseBackend* backend;
949 const OrthancPluginDatabaseExtensions* extensions;
950 uint32_t extensionsSize;
951 } _OrthancPluginRegisterDatabaseBackendV2;
966 const OrthancPluginDatabaseBackend* backend,
967 const OrthancPluginDatabaseExtensions* extensions,
971 _OrthancPluginRegisterDatabaseBackendV2 params;
973 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType) ||
974 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseTransactionType) ||
975 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseEventType))
980 memset(¶ms, 0,
sizeof(params));
981 params.backend = backend;
982 params.result = &result;
983 params.payload = payload;
984 params.extensions = extensions;
985 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
987 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, ¶ms) ||
1008 OrthancPluginDatabaseEventType type;
1016 const char* publicId;
1020 OrthancPluginAttachment attachment;
1024 } OrthancPluginDatabaseEvent;
1037 OrthancPluginAttachment* target ,
1041 OrthancPluginChange* target ,
1051 OrthancPluginExportedResource* target ,
1063 OrthancPluginMatchingResource* target ,
1068 const char** value ,
1072 const char** target ,
1079 OrthancPluginDatabaseEvent*
event ,
1103 uint32_t targetVersion);
1107 OrthancPluginDatabaseTransactionType type);
1120 int64_t fileSizeDelta);
1125 const OrthancPluginAttachment* attachment,
1133 int64_t resourceId);
1136 OrthancPluginCreateInstanceResult* target ,
1137 const char* hashPatient,
1138 const char* hashStudy,
1139 const char* hashSeries,
1140 const char* hashInstance);
1144 int32_t contentType);
1148 int32_t metadataType);
1169 uint8_t* targetDone ,
1171 uint32_t maxResults);
1188 uint8_t* targetDone ,
1190 uint32_t maxResults);
1207 int64_t internalId);
1215 uint64_t resourceId);
1225 uint64_t threshold);
1229 int64_t resourceId);
1233 int64_t resourceId);
1237 int64_t internalId);
1247 const char* publicId,
1248 const char* modality,
1250 const char* patientId,
1251 const char* studyInstanceUid,
1252 const char* seriesInstanceUid,
1253 const char* sopInstanceUid);
1259 int32_t contentType);
1263 const char* serverIdentifier,
1273 uint8_t* isExisting ,
1278 uint8_t* isExisting ,
1281 const char* publicId);
1285 uint32_t constraintsCount,
1286 const OrthancPluginDatabaseConstraint* constraints,
1289 uint8_t requestSomeInstanceId);
1293 uint8_t* isExisting ,
1296 const char* publicId);
1299 uint8_t* patientAvailable ,
1300 int64_t* patientId );
1303 uint8_t* patientAvailable ,
1304 int64_t* patientId ,
1305 int64_t patientIdToAvoid);
1308 const char* serverIdentifier,
1321 uint8_t isProtected);
1324 uint32_t countIdentifierTags,
1325 const OrthancPluginResourcesContentTags* identifierTags,
1326 uint32_t countMainDicomTags,
1327 const OrthancPluginResourcesContentTags* mainDicomTags,
1328 uint32_t countMetadata,
1329 const OrthancPluginResourcesContentMetadata* metadata);
1332 } OrthancPluginDatabaseBackendV3;
1337 const OrthancPluginDatabaseBackendV3* backend;
1338 uint32_t backendSize;
1339 uint32_t maxDatabaseRetries;
1341 } _OrthancPluginRegisterDatabaseBackendV3;
1346 const OrthancPluginDatabaseBackendV3* backend,
1347 uint32_t backendSize,
1348 uint32_t maxDatabaseRetries,
1351 _OrthancPluginRegisterDatabaseBackendV3 params;
1353 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType) ||
1354 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseTransactionType) ||
1355 sizeof(int32_t) !=
sizeof(OrthancPluginDatabaseEventType))
1360 memset(¶ms, 0,
sizeof(params));
1361 params.backend = backend;
1362 params.backendSize =
sizeof(OrthancPluginDatabaseBackendV3);
1363 params.maxDatabaseRetries = maxDatabaseRetries;
1364 params.database = database;
1366 return context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV3, ¶ms);
struct _OrthancPluginStorageArea_t OrthancPluginStorageArea
Opaque structure that represents the storage area that is actually used by Orthanc.
Definition: OrthancCPlugin.h:1247
struct _OrthancPluginDatabaseTransaction_t OrthancPluginDatabaseTransaction
Definition: OrthancCDatabasePlugin.h:54
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:911
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:46
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:964