40 #include "OrthancCPlugin.h"
61 _OrthancPluginDatabaseAnswerType_None = 0,
64 _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
65 _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
66 _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
69 _OrthancPluginDatabaseAnswerType_Attachment = 10,
70 _OrthancPluginDatabaseAnswerType_Change = 11,
71 _OrthancPluginDatabaseAnswerType_DicomTag = 12,
72 _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
73 _OrthancPluginDatabaseAnswerType_Int32 = 14,
74 _OrthancPluginDatabaseAnswerType_Int64 = 15,
75 _OrthancPluginDatabaseAnswerType_Resource = 16,
76 _OrthancPluginDatabaseAnswerType_String = 17,
78 _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
79 } _OrthancPluginDatabaseAnswerType;
86 uint64_t uncompressedSize;
87 const char* uncompressedHash;
88 int32_t compressionType;
89 uint64_t compressedSize;
90 const char* compressedHash;
91 } OrthancPluginAttachment;
98 } OrthancPluginDicomTag;
105 const char* publicId;
107 } OrthancPluginChange;
113 const char* publicId;
114 const char* modality;
116 const char* patientId;
117 const char* studyInstanceUid;
118 const char* seriesInstanceUid;
119 const char* sopInstanceUid;
120 } OrthancPluginExportedResource;
126 _OrthancPluginDatabaseAnswerType type;
128 uint32_t valueUint32;
130 const char *valueString;
131 const void *valueGeneric;
132 } _OrthancPluginDatabaseAnswer;
134 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
139 _OrthancPluginDatabaseAnswer params;
140 memset(¶ms, 0,
sizeof(params));
141 params.database = database;
142 params.type = _OrthancPluginDatabaseAnswerType_String;
143 params.valueString = value;
144 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
147 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
150 const OrthancPluginChange* change)
152 _OrthancPluginDatabaseAnswer params;
153 memset(¶ms, 0,
sizeof(params));
155 params.database = database;
156 params.type = _OrthancPluginDatabaseAnswerType_Change;
157 params.valueUint32 = 0;
158 params.valueGeneric = change;
160 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
163 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
167 _OrthancPluginDatabaseAnswer params;
168 memset(¶ms, 0,
sizeof(params));
170 params.database = database;
171 params.type = _OrthancPluginDatabaseAnswerType_Change;
172 params.valueUint32 = 1;
173 params.valueGeneric = NULL;
175 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
178 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
183 _OrthancPluginDatabaseAnswer params;
184 memset(¶ms, 0,
sizeof(params));
185 params.database = database;
186 params.type = _OrthancPluginDatabaseAnswerType_Int32;
187 params.valueInt32 = value;
188 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
191 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
196 _OrthancPluginDatabaseAnswer params;
197 memset(¶ms, 0,
sizeof(params));
198 params.database = database;
199 params.type = _OrthancPluginDatabaseAnswerType_Int64;
200 params.valueInt64 = value;
201 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
204 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
207 const OrthancPluginExportedResource* exported)
209 _OrthancPluginDatabaseAnswer params;
210 memset(¶ms, 0,
sizeof(params));
212 params.database = database;
213 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
214 params.valueUint32 = 0;
215 params.valueGeneric = exported;
216 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
219 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
223 _OrthancPluginDatabaseAnswer params;
224 memset(¶ms, 0,
sizeof(params));
226 params.database = database;
227 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
228 params.valueUint32 = 1;
229 params.valueGeneric = NULL;
230 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
233 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
236 const OrthancPluginDicomTag* tag)
238 _OrthancPluginDatabaseAnswer params;
239 memset(¶ms, 0,
sizeof(params));
240 params.database = database;
241 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
242 params.valueGeneric = tag;
243 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
246 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
249 const OrthancPluginAttachment* attachment)
251 _OrthancPluginDatabaseAnswer params;
252 memset(¶ms, 0,
sizeof(params));
253 params.database = database;
254 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
255 params.valueGeneric = attachment;
256 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
259 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
265 _OrthancPluginDatabaseAnswer params;
266 memset(¶ms, 0,
sizeof(params));
267 params.database = database;
268 params.type = _OrthancPluginDatabaseAnswerType_Resource;
269 params.valueInt64 = id;
270 params.valueInt32 = (int32_t) resourceType;
271 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
274 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
277 const OrthancPluginAttachment* attachment)
279 _OrthancPluginDatabaseAnswer params;
280 memset(¶ms, 0,
sizeof(params));
281 params.database = database;
282 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
283 params.valueGeneric = attachment;
284 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
287 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
290 const char* publicId,
293 _OrthancPluginDatabaseAnswer params;
294 memset(¶ms, 0,
sizeof(params));
295 params.database = database;
296 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
297 params.valueString = publicId;
298 params.valueInt32 = (int32_t) resourceType;
299 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
302 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
305 const char* ancestorId,
308 _OrthancPluginDatabaseAnswer params;
309 memset(¶ms, 0,
sizeof(params));
310 params.database = database;
311 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
312 params.valueString = ancestorId;
313 params.valueInt32 = (int32_t) ancestorType;
314 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
323 int32_t (*addAttachment) (
327 const OrthancPluginAttachment* attachment);
329 int32_t (*attachChild) (
335 int32_t (*clearChanges) (
339 int32_t (*clearExportedResources) (
343 int32_t (*createResource) (
348 const char* publicId,
351 int32_t (*deleteAttachment) (
355 int32_t contentType);
357 int32_t (*deleteMetadata) (
361 int32_t metadataType);
363 int32_t (*deleteResource) (
369 int32_t (*getAllPublicIds) (
378 int32_t (*getChanges) (
387 int32_t (*getChildrenInternalId) (
395 int32_t (*getChildrenPublicId) (
404 int32_t (*getExportedResources) (
413 int32_t (*getLastChange) (
420 int32_t (*getLastExportedResource) (
427 int32_t (*getMainDicomTags) (
435 int32_t (*getPublicId) (
442 int32_t (*getResourceCount) (
449 int32_t (*getResourceType) (
456 int32_t (*getTotalCompressedSize) (
462 int32_t (*getTotalUncompressedSize) (
468 int32_t (*isExistingResource) (
475 int32_t (*isProtectedPatient) (
477 int32_t* isProtected,
483 int32_t (*listAvailableMetadata) (
491 int32_t (*listAvailableAttachments) (
498 int32_t (*logChange) (
501 const OrthancPluginChange* change);
503 int32_t (*logExportedResource) (
506 const OrthancPluginExportedResource* exported);
509 int32_t (*lookupAttachment) (
515 int32_t contentType);
518 int32_t (*lookupGlobalProperty) (
526 int32_t (*lookupIdentifier) (
531 const OrthancPluginDicomTag* tag);
534 int32_t (*lookupIdentifier2) (
542 int32_t (*lookupMetadata) (
551 int32_t (*lookupParent) (
559 int32_t (*lookupResource) (
564 const char* publicId);
567 int32_t (*selectPatientToRecycle) (
574 int32_t (*selectPatientToRecycle2) (
579 int64_t patientIdToAvoid);
581 int32_t (*setGlobalProperty) (
587 int32_t (*setMainDicomTag) (
591 const OrthancPluginDicomTag* tag);
593 int32_t (*setIdentifierTag) (
597 const OrthancPluginDicomTag* tag);
599 int32_t (*setMetadata) (
606 int32_t (*setProtectedPatient) (
610 int32_t isProtected);
612 int32_t (*startTransaction) (
616 int32_t (*rollbackTransaction) (
620 int32_t (*commitTransaction) (
632 } OrthancPluginDatabaseBackend;
638 int32_t (*getAllPublicIdsWithLimit) (
647 int32_t (*getDatabaseVersion) (
653 int32_t (*upgradeDatabase) (
656 uint32_t targetVersion,
658 } OrthancPluginDatabaseExtensions;
666 const OrthancPluginDatabaseBackend* backend;
668 } _OrthancPluginRegisterDatabaseBackend;
688 const OrthancPluginDatabaseBackend* backend,
692 _OrthancPluginRegisterDatabaseBackend params;
694 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
699 memset(¶ms, 0,
sizeof(params));
700 params.backend = backend;
701 params.result = &result;
702 params.payload = payload;
704 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
720 const OrthancPluginDatabaseBackend* backend;
722 const OrthancPluginDatabaseExtensions* extensions;
723 uint32_t extensionsSize;
724 } _OrthancPluginRegisterDatabaseBackendV2;
744 const OrthancPluginDatabaseBackend* backend,
745 const OrthancPluginDatabaseExtensions* extensions,
749 _OrthancPluginRegisterDatabaseBackendV2 params;
751 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
756 memset(¶ms, 0,
sizeof(params));
757 params.backend = backend;
758 params.result = &result;
759 params.payload = payload;
760 params.extensions = extensions;
761 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
763 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:647
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:686
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:55
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:742