29 #include "OrthancCPlugin.h"
50 _OrthancPluginDatabaseAnswerType_None = 0,
53 _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
54 _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
55 _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
58 _OrthancPluginDatabaseAnswerType_Attachment = 10,
59 _OrthancPluginDatabaseAnswerType_Change = 11,
60 _OrthancPluginDatabaseAnswerType_DicomTag = 12,
61 _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
62 _OrthancPluginDatabaseAnswerType_Int32 = 14,
63 _OrthancPluginDatabaseAnswerType_Int64 = 15,
64 _OrthancPluginDatabaseAnswerType_Resource = 16,
65 _OrthancPluginDatabaseAnswerType_String = 17,
66 _OrthancPluginDatabaseAnswerType_MatchingResource = 18,
67 _OrthancPluginDatabaseAnswerType_Metadata = 19,
69 _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
70 } _OrthancPluginDatabaseAnswerType;
77 uint64_t uncompressedSize;
78 const char* uncompressedHash;
79 int32_t compressionType;
80 uint64_t compressedSize;
81 const char* compressedHash;
82 } OrthancPluginAttachment;
89 } OrthancPluginDicomTag;
98 } OrthancPluginChange;
104 const char* publicId;
105 const char* modality;
107 const char* patientId;
108 const char* studyInstanceUid;
109 const char* seriesInstanceUid;
110 const char* sopInstanceUid;
111 } OrthancPluginExportedResource;
118 uint8_t isIdentifierTag;
119 uint8_t isCaseSensitive;
122 uint32_t valuesCount;
123 const char*
const* values;
124 } OrthancPluginDatabaseConstraint;
128 const char* resourceId;
129 const char* someInstanceId;
130 } OrthancPluginMatchingResource;
135 uint8_t isNewInstance;
139 uint8_t isNewPatient;
145 } OrthancPluginCreateInstanceResult;
153 } OrthancPluginResourcesContentTags;
160 } OrthancPluginResourcesContentMetadata;
166 _OrthancPluginDatabaseAnswerType type;
168 uint32_t valueUint32;
170 const char *valueString;
171 const void *valueGeneric;
172 } _OrthancPluginDatabaseAnswer;
174 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
179 _OrthancPluginDatabaseAnswer params;
180 memset(¶ms, 0,
sizeof(params));
181 params.database = database;
182 params.type = _OrthancPluginDatabaseAnswerType_String;
183 params.valueString = value;
184 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
187 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
190 const OrthancPluginChange* change)
192 _OrthancPluginDatabaseAnswer params;
193 memset(¶ms, 0,
sizeof(params));
195 params.database = database;
196 params.type = _OrthancPluginDatabaseAnswerType_Change;
197 params.valueUint32 = 0;
198 params.valueGeneric = change;
200 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
203 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
207 _OrthancPluginDatabaseAnswer params;
208 memset(¶ms, 0,
sizeof(params));
210 params.database = database;
211 params.type = _OrthancPluginDatabaseAnswerType_Change;
212 params.valueUint32 = 1;
213 params.valueGeneric = NULL;
215 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
218 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
223 _OrthancPluginDatabaseAnswer params;
224 memset(¶ms, 0,
sizeof(params));
225 params.database = database;
226 params.type = _OrthancPluginDatabaseAnswerType_Int32;
227 params.valueInt32 = value;
228 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
231 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
236 _OrthancPluginDatabaseAnswer params;
237 memset(¶ms, 0,
sizeof(params));
238 params.database = database;
239 params.type = _OrthancPluginDatabaseAnswerType_Int64;
240 params.valueInt64 = value;
241 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
244 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
247 const OrthancPluginExportedResource* exported)
249 _OrthancPluginDatabaseAnswer params;
250 memset(¶ms, 0,
sizeof(params));
252 params.database = database;
253 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
254 params.valueUint32 = 0;
255 params.valueGeneric = exported;
256 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
259 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
263 _OrthancPluginDatabaseAnswer params;
264 memset(¶ms, 0,
sizeof(params));
266 params.database = database;
267 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
268 params.valueUint32 = 1;
269 params.valueGeneric = NULL;
270 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
273 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
276 const OrthancPluginDicomTag* tag)
278 _OrthancPluginDatabaseAnswer params;
279 memset(¶ms, 0,
sizeof(params));
280 params.database = database;
281 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
282 params.valueGeneric = tag;
283 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
286 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
289 const OrthancPluginAttachment* attachment)
291 _OrthancPluginDatabaseAnswer params;
292 memset(¶ms, 0,
sizeof(params));
293 params.database = database;
294 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
295 params.valueGeneric = attachment;
296 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
299 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
305 _OrthancPluginDatabaseAnswer params;
306 memset(¶ms, 0,
sizeof(params));
307 params.database = database;
308 params.type = _OrthancPluginDatabaseAnswerType_Resource;
309 params.valueInt64 = id;
310 params.valueInt32 = (int32_t) resourceType;
311 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
314 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMatchingResource(
317 const OrthancPluginMatchingResource* match)
319 _OrthancPluginDatabaseAnswer params;
320 memset(¶ms, 0,
sizeof(params));
321 params.database = database;
322 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
323 params.valueGeneric = match;
324 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
327 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMetadata(
334 OrthancPluginResourcesContentMetadata metadata;
335 _OrthancPluginDatabaseAnswer params;
336 metadata.resource = resourceId;
337 metadata.metadata = type;
338 metadata.value = value;
339 memset(¶ms, 0,
sizeof(params));
340 params.database = database;
341 params.type = _OrthancPluginDatabaseAnswerType_Metadata;
342 params.valueGeneric = &metadata;
343 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
346 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
349 const OrthancPluginAttachment* attachment)
351 _OrthancPluginDatabaseAnswer params;
352 memset(¶ms, 0,
sizeof(params));
353 params.database = database;
354 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
355 params.valueGeneric = attachment;
356 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
359 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
362 const char* publicId,
365 _OrthancPluginDatabaseAnswer params;
366 memset(¶ms, 0,
sizeof(params));
367 params.database = database;
368 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
369 params.valueString = publicId;
370 params.valueInt32 = (int32_t) resourceType;
371 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
374 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
377 const char* ancestorId,
380 _OrthancPluginDatabaseAnswer params;
381 memset(¶ms, 0,
sizeof(params));
382 params.database = database;
383 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
384 params.valueString = ancestorId;
385 params.valueInt32 = (int32_t) ancestorType;
386 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
399 const OrthancPluginAttachment* attachment);
420 const char* publicId,
427 int32_t contentType);
433 int32_t metadataType);
549 int32_t* isProtected,
573 const OrthancPluginChange* change);
578 const OrthancPluginExportedResource* exported);
587 int32_t contentType);
605 const OrthancPluginDicomTag* tag);
639 const char* publicId);
654 int64_t patientIdToAvoid);
666 const OrthancPluginDicomTag* tag);
672 const OrthancPluginDicomTag* tag);
685 int32_t isProtected);
707 } OrthancPluginDatabaseBackend;
735 uint32_t targetVersion,
758 const OrthancPluginDicomTag* tag,
789 uint32_t constraintsCount,
790 const OrthancPluginDatabaseConstraint* constraints,
793 uint8_t requestSomeInstance);
797 OrthancPluginCreateInstanceResult* output,
800 const char* hashPatient,
801 const char* hashStudy,
802 const char* hashSeries,
803 const char* hashInstance);
808 uint32_t countIdentifierTags,
809 const OrthancPluginResourcesContentTags* identifierTags,
810 uint32_t countMainDicomTags,
811 const OrthancPluginResourcesContentTags* mainDicomTags,
812 uint32_t countMetadata,
813 const OrthancPluginResourcesContentMetadata* metadata);
859 const char* publicId);
861 } OrthancPluginDatabaseExtensions;
869 const OrthancPluginDatabaseBackend* backend;
871 } _OrthancPluginRegisterDatabaseBackend;
886 const OrthancPluginDatabaseBackend* backend,
890 _OrthancPluginRegisterDatabaseBackend params;
892 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
897 memset(¶ms, 0,
sizeof(params));
898 params.backend = backend;
899 params.result = &result;
900 params.payload = payload;
902 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
918 const OrthancPluginDatabaseBackend* backend;
920 const OrthancPluginDatabaseExtensions* extensions;
921 uint32_t extensionsSize;
922 } _OrthancPluginRegisterDatabaseBackendV2;
937 const OrthancPluginDatabaseBackend* backend,
938 const OrthancPluginDatabaseExtensions* extensions,
942 _OrthancPluginRegisterDatabaseBackendV2 params;
944 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
949 memset(¶ms, 0,
sizeof(params));
950 params.backend = backend;
951 params.result = &result;
952 params.payload = payload;
953 params.extensions = extensions;
954 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
956 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, ¶ms) ||
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:884
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:44
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:935
struct _OrthancPluginStorageArea_t OrthancPluginStorageArea
Opaque structure that represents the storage area that is actually used by Orthanc.
Definition: OrthancCPlugin.h:1072