41 #include "OrthancCPlugin.h" 62 _OrthancPluginDatabaseAnswerType_None = 0,
65 _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
66 _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
67 _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
70 _OrthancPluginDatabaseAnswerType_Attachment = 10,
71 _OrthancPluginDatabaseAnswerType_Change = 11,
72 _OrthancPluginDatabaseAnswerType_DicomTag = 12,
73 _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
74 _OrthancPluginDatabaseAnswerType_Int32 = 14,
75 _OrthancPluginDatabaseAnswerType_Int64 = 15,
76 _OrthancPluginDatabaseAnswerType_Resource = 16,
77 _OrthancPluginDatabaseAnswerType_String = 17,
78 _OrthancPluginDatabaseAnswerType_MatchingResource = 18,
79 _OrthancPluginDatabaseAnswerType_Metadata = 19,
81 _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
82 } _OrthancPluginDatabaseAnswerType;
89 uint64_t uncompressedSize;
90 const char* uncompressedHash;
91 int32_t compressionType;
92 uint64_t compressedSize;
93 const char* compressedHash;
94 } OrthancPluginAttachment;
101 } OrthancPluginDicomTag;
108 const char* publicId;
110 } OrthancPluginChange;
116 const char* publicId;
117 const char* modality;
119 const char* patientId;
120 const char* studyInstanceUid;
121 const char* seriesInstanceUid;
122 const char* sopInstanceUid;
123 } OrthancPluginExportedResource;
130 uint8_t isIdentifierTag;
131 uint8_t isCaseSensitive;
134 uint32_t valuesCount;
135 const char*
const* values;
136 } OrthancPluginDatabaseConstraint;
140 const char* resourceId;
141 const char* someInstanceId;
142 } OrthancPluginMatchingResource;
147 uint8_t isNewInstance;
151 uint8_t isNewPatient;
157 } OrthancPluginCreateInstanceResult;
165 } OrthancPluginResourcesContentTags;
172 } OrthancPluginResourcesContentMetadata;
178 _OrthancPluginDatabaseAnswerType type;
180 uint32_t valueUint32;
182 const char *valueString;
183 const void *valueGeneric;
184 } _OrthancPluginDatabaseAnswer;
186 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
191 _OrthancPluginDatabaseAnswer params;
192 memset(¶ms, 0,
sizeof(params));
193 params.database = database;
194 params.type = _OrthancPluginDatabaseAnswerType_String;
195 params.valueString = value;
196 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
199 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
202 const OrthancPluginChange* change)
204 _OrthancPluginDatabaseAnswer params;
205 memset(¶ms, 0,
sizeof(params));
207 params.database = database;
208 params.type = _OrthancPluginDatabaseAnswerType_Change;
209 params.valueUint32 = 0;
210 params.valueGeneric = change;
212 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
215 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
219 _OrthancPluginDatabaseAnswer params;
220 memset(¶ms, 0,
sizeof(params));
222 params.database = database;
223 params.type = _OrthancPluginDatabaseAnswerType_Change;
224 params.valueUint32 = 1;
225 params.valueGeneric = NULL;
227 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
230 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
235 _OrthancPluginDatabaseAnswer params;
236 memset(¶ms, 0,
sizeof(params));
237 params.database = database;
238 params.type = _OrthancPluginDatabaseAnswerType_Int32;
239 params.valueInt32 = value;
240 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
243 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
248 _OrthancPluginDatabaseAnswer params;
249 memset(¶ms, 0,
sizeof(params));
250 params.database = database;
251 params.type = _OrthancPluginDatabaseAnswerType_Int64;
252 params.valueInt64 = value;
253 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
256 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
259 const OrthancPluginExportedResource* exported)
261 _OrthancPluginDatabaseAnswer params;
262 memset(¶ms, 0,
sizeof(params));
264 params.database = database;
265 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
266 params.valueUint32 = 0;
267 params.valueGeneric = exported;
268 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
271 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
275 _OrthancPluginDatabaseAnswer params;
276 memset(¶ms, 0,
sizeof(params));
278 params.database = database;
279 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
280 params.valueUint32 = 1;
281 params.valueGeneric = NULL;
282 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
285 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
288 const OrthancPluginDicomTag* tag)
290 _OrthancPluginDatabaseAnswer params;
291 memset(¶ms, 0,
sizeof(params));
292 params.database = database;
293 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
294 params.valueGeneric = tag;
295 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
298 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
301 const OrthancPluginAttachment* attachment)
303 _OrthancPluginDatabaseAnswer params;
304 memset(¶ms, 0,
sizeof(params));
305 params.database = database;
306 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
307 params.valueGeneric = attachment;
308 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
311 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
317 _OrthancPluginDatabaseAnswer params;
318 memset(¶ms, 0,
sizeof(params));
319 params.database = database;
320 params.type = _OrthancPluginDatabaseAnswerType_Resource;
321 params.valueInt64 = id;
322 params.valueInt32 = (int32_t) resourceType;
323 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
326 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMatchingResource(
329 const OrthancPluginMatchingResource* match)
331 _OrthancPluginDatabaseAnswer params;
332 memset(¶ms, 0,
sizeof(params));
333 params.database = database;
334 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
335 params.valueGeneric = match;
336 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
339 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMetadata(
346 OrthancPluginResourcesContentMetadata metadata;
347 _OrthancPluginDatabaseAnswer params;
348 metadata.resource = resourceId;
349 metadata.metadata = type;
350 metadata.value = value;
351 memset(¶ms, 0,
sizeof(params));
352 params.database = database;
353 params.type = _OrthancPluginDatabaseAnswerType_Metadata;
354 params.valueGeneric = &metadata;
355 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
358 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
361 const OrthancPluginAttachment* attachment)
363 _OrthancPluginDatabaseAnswer params;
364 memset(¶ms, 0,
sizeof(params));
365 params.database = database;
366 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
367 params.valueGeneric = attachment;
368 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
371 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
374 const char* publicId,
377 _OrthancPluginDatabaseAnswer params;
378 memset(¶ms, 0,
sizeof(params));
379 params.database = database;
380 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
381 params.valueString = publicId;
382 params.valueInt32 = (int32_t) resourceType;
383 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
386 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
389 const char* ancestorId,
392 _OrthancPluginDatabaseAnswer params;
393 memset(¶ms, 0,
sizeof(params));
394 params.database = database;
395 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
396 params.valueString = ancestorId;
397 params.valueInt32 = (int32_t) ancestorType;
398 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
411 const OrthancPluginAttachment* attachment);
432 const char* publicId,
439 int32_t contentType);
445 int32_t metadataType);
561 int32_t* isProtected,
585 const OrthancPluginChange* change);
590 const OrthancPluginExportedResource* exported);
599 int32_t contentType);
617 const OrthancPluginDicomTag* tag);
651 const char* publicId);
666 int64_t patientIdToAvoid);
678 const OrthancPluginDicomTag* tag);
684 const OrthancPluginDicomTag* tag);
697 int32_t isProtected);
719 } OrthancPluginDatabaseBackend;
747 uint32_t targetVersion,
770 const OrthancPluginDicomTag* tag,
801 uint32_t constraintsCount,
802 const OrthancPluginDatabaseConstraint* constraints,
805 uint8_t requestSomeInstance);
809 OrthancPluginCreateInstanceResult* output,
812 const char* hashPatient,
813 const char* hashStudy,
814 const char* hashSeries,
815 const char* hashInstance);
820 uint32_t countIdentifierTags,
821 const OrthancPluginResourcesContentTags* identifierTags,
822 uint32_t countMainDicomTags,
823 const OrthancPluginResourcesContentTags* mainDicomTags,
824 uint32_t countMetadata,
825 const OrthancPluginResourcesContentMetadata* metadata);
871 const char* publicId);
873 } OrthancPluginDatabaseExtensions;
881 const OrthancPluginDatabaseBackend* backend;
883 } _OrthancPluginRegisterDatabaseBackend;
898 const OrthancPluginDatabaseBackend* backend,
902 _OrthancPluginRegisterDatabaseBackend params;
904 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
909 memset(¶ms, 0,
sizeof(params));
910 params.backend = backend;
911 params.result = &result;
912 params.payload = payload;
914 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
930 const OrthancPluginDatabaseBackend* backend;
932 const OrthancPluginDatabaseExtensions* extensions;
933 uint32_t extensionsSize;
934 } _OrthancPluginRegisterDatabaseBackendV2;
949 const OrthancPluginDatabaseBackend* backend,
950 const OrthancPluginDatabaseExtensions* extensions,
954 _OrthancPluginRegisterDatabaseBackendV2 params;
956 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
961 memset(¶ms, 0,
sizeof(params));
962 params.backend = backend;
963 params.result = &result;
964 params.payload = payload;
965 params.extensions = extensions;
966 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
968 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, ¶ms) ||
struct _OrthancPluginStorageArea_t OrthancPluginStorageArea
Opaque structure that represents the storage area that is actually used by Orthanc.
Definition: OrthancCPlugin.h:1050
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:896
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:56
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:947