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;
87 uint64_t uncompressedSize;
88 const char* uncompressedHash;
89 int32_t compressionType;
90 uint64_t compressedSize;
91 const char* compressedHash;
92 } OrthancPluginAttachment;
99 } OrthancPluginDicomTag;
106 const char* publicId;
108 } OrthancPluginChange;
114 const char* publicId;
115 const char* modality;
117 const char* patientId;
118 const char* studyInstanceUid;
119 const char* seriesInstanceUid;
120 const char* sopInstanceUid;
121 } OrthancPluginExportedResource;
128 uint8_t isIdentifierTag;
129 uint8_t isCaseSensitive;
132 uint32_t valuesCount;
133 const char*
const* values;
134 } OrthancPluginDatabaseConstraint;
138 const char* resourceId;
139 const char* someInstanceId;
140 } OrthancPluginMatchingResource;
145 uint8_t isNewInstance;
149 uint8_t isNewPatient;
155 } OrthancPluginCreateInstanceResult;
163 } OrthancPluginResourcesContentTags;
170 } OrthancPluginResourcesContentMetadata;
176 _OrthancPluginDatabaseAnswerType type;
178 uint32_t valueUint32;
180 const char *valueString;
181 const void *valueGeneric;
182 } _OrthancPluginDatabaseAnswer;
184 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
189 _OrthancPluginDatabaseAnswer params;
190 memset(¶ms, 0,
sizeof(params));
191 params.database = database;
192 params.type = _OrthancPluginDatabaseAnswerType_String;
193 params.valueString = value;
194 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
197 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
200 const OrthancPluginChange* change)
202 _OrthancPluginDatabaseAnswer params;
203 memset(¶ms, 0,
sizeof(params));
205 params.database = database;
206 params.type = _OrthancPluginDatabaseAnswerType_Change;
207 params.valueUint32 = 0;
208 params.valueGeneric = change;
210 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
213 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
217 _OrthancPluginDatabaseAnswer params;
218 memset(¶ms, 0,
sizeof(params));
220 params.database = database;
221 params.type = _OrthancPluginDatabaseAnswerType_Change;
222 params.valueUint32 = 1;
223 params.valueGeneric = NULL;
225 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
228 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
233 _OrthancPluginDatabaseAnswer params;
234 memset(¶ms, 0,
sizeof(params));
235 params.database = database;
236 params.type = _OrthancPluginDatabaseAnswerType_Int32;
237 params.valueInt32 = value;
238 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
241 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
246 _OrthancPluginDatabaseAnswer params;
247 memset(¶ms, 0,
sizeof(params));
248 params.database = database;
249 params.type = _OrthancPluginDatabaseAnswerType_Int64;
250 params.valueInt64 = value;
251 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
254 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
257 const OrthancPluginExportedResource* exported)
259 _OrthancPluginDatabaseAnswer params;
260 memset(¶ms, 0,
sizeof(params));
262 params.database = database;
263 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
264 params.valueUint32 = 0;
265 params.valueGeneric = exported;
266 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
269 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
273 _OrthancPluginDatabaseAnswer params;
274 memset(¶ms, 0,
sizeof(params));
276 params.database = database;
277 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
278 params.valueUint32 = 1;
279 params.valueGeneric = NULL;
280 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
283 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
286 const OrthancPluginDicomTag* tag)
288 _OrthancPluginDatabaseAnswer params;
289 memset(¶ms, 0,
sizeof(params));
290 params.database = database;
291 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
292 params.valueGeneric = tag;
293 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
296 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
299 const OrthancPluginAttachment* attachment)
301 _OrthancPluginDatabaseAnswer params;
302 memset(¶ms, 0,
sizeof(params));
303 params.database = database;
304 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
305 params.valueGeneric = attachment;
306 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
309 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
315 _OrthancPluginDatabaseAnswer params;
316 memset(¶ms, 0,
sizeof(params));
317 params.database = database;
318 params.type = _OrthancPluginDatabaseAnswerType_Resource;
319 params.valueInt64 = id;
320 params.valueInt32 = (int32_t) resourceType;
321 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
324 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMatchingResource(
327 const OrthancPluginMatchingResource* match)
329 _OrthancPluginDatabaseAnswer params;
330 memset(¶ms, 0,
sizeof(params));
331 params.database = database;
332 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
333 params.valueGeneric = match;
334 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
337 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMetadata(
344 OrthancPluginResourcesContentMetadata metadata;
345 _OrthancPluginDatabaseAnswer params;
346 metadata.resource = resourceId;
347 metadata.metadata = type;
348 metadata.value = value;
349 memset(¶ms, 0,
sizeof(params));
350 params.database = database;
351 params.type = _OrthancPluginDatabaseAnswerType_Metadata;
352 params.valueGeneric = &metadata;
353 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
356 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
359 const OrthancPluginAttachment* attachment)
361 _OrthancPluginDatabaseAnswer params;
362 memset(¶ms, 0,
sizeof(params));
363 params.database = database;
364 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
365 params.valueGeneric = attachment;
366 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
369 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
372 const char* publicId,
375 _OrthancPluginDatabaseAnswer params;
376 memset(¶ms, 0,
sizeof(params));
377 params.database = database;
378 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
379 params.valueString = publicId;
380 params.valueInt32 = (int32_t) resourceType;
381 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
384 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
387 const char* ancestorId,
390 _OrthancPluginDatabaseAnswer params;
391 memset(¶ms, 0,
sizeof(params));
392 params.database = database;
393 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
394 params.valueString = ancestorId;
395 params.valueInt32 = (int32_t) ancestorType;
396 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
409 const OrthancPluginAttachment* attachment);
430 const char* publicId,
437 int32_t contentType);
443 int32_t metadataType);
559 int32_t* isProtected,
583 const OrthancPluginChange* change);
588 const OrthancPluginExportedResource* exported);
597 int32_t contentType);
615 const OrthancPluginDicomTag* tag);
649 const char* publicId);
664 int64_t patientIdToAvoid);
676 const OrthancPluginDicomTag* tag);
682 const OrthancPluginDicomTag* tag);
695 int32_t isProtected);
717 } OrthancPluginDatabaseBackend;
745 uint32_t targetVersion,
768 const OrthancPluginDicomTag* tag,
799 uint32_t constraintsCount,
800 const OrthancPluginDatabaseConstraint* constraints,
803 uint8_t requestSomeInstance);
807 OrthancPluginCreateInstanceResult* output,
810 const char* hashPatient,
811 const char* hashStudy,
812 const char* hashSeries,
813 const char* hashInstance);
818 uint32_t countIdentifierTags,
819 const OrthancPluginResourcesContentTags* identifierTags,
820 uint32_t countMainDicomTags,
821 const OrthancPluginResourcesContentTags* mainDicomTags,
822 uint32_t countMetadata,
823 const OrthancPluginResourcesContentMetadata* metadata);
869 const char* publicId);
871 } OrthancPluginDatabaseExtensions;
879 const OrthancPluginDatabaseBackend* backend;
881 } _OrthancPluginRegisterDatabaseBackend;
896 const OrthancPluginDatabaseBackend* backend,
900 _OrthancPluginRegisterDatabaseBackend params;
902 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
907 memset(¶ms, 0,
sizeof(params));
908 params.backend = backend;
909 params.result = &result;
910 params.payload = payload;
912 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
928 const OrthancPluginDatabaseBackend* backend;
930 const OrthancPluginDatabaseExtensions* extensions;
931 uint32_t extensionsSize;
932 } _OrthancPluginRegisterDatabaseBackendV2;
947 const OrthancPluginDatabaseBackend* backend,
948 const OrthancPluginDatabaseExtensions* extensions,
952 _OrthancPluginRegisterDatabaseBackendV2 params;
954 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
959 memset(¶ms, 0,
sizeof(params));
960 params.backend = backend;
961 params.result = &result;
962 params.payload = payload;
963 params.extensions = extensions;
964 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
966 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, ¶ms) ||
987 OrthancPluginDatabaseTransactionType_ReadOnly = 1,
988 OrthancPluginDatabaseTransactionType_ReadWrite = 2,
989 OrthancPluginDatabaseTransactionType_INTERNAL = 0x7fffffff
990 } OrthancPluginDatabaseTransactionType;
995 OrthancPluginDatabaseEventType_DeletedAttachment = 1,
996 OrthancPluginDatabaseEventType_DeletedResource = 2,
997 OrthancPluginDatabaseEventType_RemainingAncestor = 3,
998 OrthancPluginDatabaseEventType_INTERNAL = 0x7fffffff
999 } OrthancPluginDatabaseEventType;
1004 OrthancPluginDatabaseEventType type;
1012 const char* publicId;
1016 OrthancPluginAttachment attachment;
1020 } OrthancPluginDatabaseEvent;
1033 OrthancPluginAttachment* target ,
1037 OrthancPluginChange* target ,
1047 OrthancPluginExportedResource* target ,
1059 OrthancPluginMatchingResource* target ,
1064 const char** value ,
1068 const char** target ,
1075 OrthancPluginDatabaseEvent*
event ,
1099 uint32_t targetVersion);
1103 OrthancPluginDatabaseTransactionType type);
1116 int64_t fileSizeDelta);
1121 const OrthancPluginAttachment* attachment,
1129 int64_t resourceId);
1132 OrthancPluginCreateInstanceResult* target ,
1133 const char* hashPatient,
1134 const char* hashStudy,
1135 const char* hashSeries,
1136 const char* hashInstance);
1140 int32_t contentType);
1144 int32_t metadataType);
1165 uint8_t* targetDone ,
1167 uint32_t maxResults);
1184 uint8_t* targetDone ,
1186 uint32_t maxResults);
1203 int64_t internalId);
1211 uint64_t resourceId);
1221 uint64_t threshold);
1225 int64_t resourceId);
1229 int64_t resourceId);
1233 int64_t internalId);
1243 const char* publicId,
1244 const char* modality,
1246 const char* patientId,
1247 const char* studyInstanceUid,
1248 const char* seriesInstanceUid,
1249 const char* sopInstanceUid);
1255 int32_t contentType);
1259 const char* serverIdentifier,
1269 uint8_t* isExisting ,
1274 uint8_t* isExisting ,
1277 const char* publicId);
1281 uint32_t constraintsCount,
1282 const OrthancPluginDatabaseConstraint* constraints,
1285 uint8_t requestSomeInstanceId);
1289 uint8_t* isExisting ,
1292 const char* publicId);
1295 uint8_t* patientAvailable ,
1296 int64_t* patientId );
1299 uint8_t* patientAvailable ,
1300 int64_t* patientId ,
1301 int64_t patientIdToAvoid);
1304 const char* serverIdentifier,
1317 uint8_t isProtected);
1320 uint32_t countIdentifierTags,
1321 const OrthancPluginResourcesContentTags* identifierTags,
1322 uint32_t countMainDicomTags,
1323 const OrthancPluginResourcesContentTags* mainDicomTags,
1324 uint32_t countMetadata,
1325 const OrthancPluginResourcesContentMetadata* metadata);
1328 } OrthancPluginDatabaseBackendV3;
1335 const OrthancPluginDatabaseBackendV3* backend;
1336 uint32_t backendSize;
1337 uint32_t maxDatabaseRetries;
1339 } _OrthancPluginRegisterDatabaseBackendV3;
1344 const OrthancPluginDatabaseBackendV3* backend,
1345 uint32_t backendSize,
1346 uint32_t maxDatabaseRetries,
1349 _OrthancPluginRegisterDatabaseBackendV3 params;
1351 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
1356 memset(¶ms, 0,
sizeof(params));
1357 params.backend = backend;
1358 params.backendSize =
sizeof(OrthancPluginDatabaseBackendV3);
1359 params.maxDatabaseRetries = maxDatabaseRetries;
1360 params.database = database;
1362 return context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV3, ¶ms);
struct _OrthancPluginDatabaseTransaction_t OrthancPluginDatabaseTransaction
Definition: OrthancCDatabasePlugin.h:54
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:894
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:46
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:945
struct _OrthancPluginStorageArea_t OrthancPluginStorageArea
Opaque structure that represents the storage area that is actually used by Orthanc.
Definition: OrthancCPlugin.h:1205