29 #include "OrthancCPlugin.h" 58 _OrthancPluginDatabaseAnswerType_None = 0,
61 _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
62 _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
63 _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
66 _OrthancPluginDatabaseAnswerType_Attachment = 10,
67 _OrthancPluginDatabaseAnswerType_Change = 11,
68 _OrthancPluginDatabaseAnswerType_DicomTag = 12,
69 _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
70 _OrthancPluginDatabaseAnswerType_Int32 = 14,
71 _OrthancPluginDatabaseAnswerType_Int64 = 15,
72 _OrthancPluginDatabaseAnswerType_Resource = 16,
73 _OrthancPluginDatabaseAnswerType_String = 17,
74 _OrthancPluginDatabaseAnswerType_MatchingResource = 18,
75 _OrthancPluginDatabaseAnswerType_Metadata = 19,
77 _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
78 } _OrthancPluginDatabaseAnswerType;
85 uint64_t uncompressedSize;
86 const char* uncompressedHash;
87 int32_t compressionType;
88 uint64_t compressedSize;
89 const char* compressedHash;
90 } OrthancPluginAttachment;
97 } OrthancPluginDicomTag;
104 const char* publicId;
106 } OrthancPluginChange;
112 const char* publicId;
113 const char* modality;
115 const char* patientId;
116 const char* studyInstanceUid;
117 const char* seriesInstanceUid;
118 const char* sopInstanceUid;
119 } OrthancPluginExportedResource;
126 uint8_t isIdentifierTag;
127 uint8_t isCaseSensitive;
130 uint32_t valuesCount;
131 const char*
const* values;
132 } OrthancPluginDatabaseConstraint;
136 const char* resourceId;
137 const char* someInstanceId;
138 } OrthancPluginMatchingResource;
143 uint8_t isNewInstance;
147 uint8_t isNewPatient;
153 } OrthancPluginCreateInstanceResult;
161 } OrthancPluginResourcesContentTags;
168 } OrthancPluginResourcesContentMetadata;
174 _OrthancPluginDatabaseAnswerType type;
176 uint32_t valueUint32;
178 const char *valueString;
179 const void *valueGeneric;
180 } _OrthancPluginDatabaseAnswer;
182 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerString(
187 _OrthancPluginDatabaseAnswer params;
188 memset(¶ms, 0,
sizeof(params));
189 params.database = database;
190 params.type = _OrthancPluginDatabaseAnswerType_String;
191 params.valueString = value;
192 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
195 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChange(
198 const OrthancPluginChange* change)
200 _OrthancPluginDatabaseAnswer params;
201 memset(¶ms, 0,
sizeof(params));
203 params.database = database;
204 params.type = _OrthancPluginDatabaseAnswerType_Change;
205 params.valueUint32 = 0;
206 params.valueGeneric = change;
208 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
211 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerChangesDone(
215 _OrthancPluginDatabaseAnswer params;
216 memset(¶ms, 0,
sizeof(params));
218 params.database = database;
219 params.type = _OrthancPluginDatabaseAnswerType_Change;
220 params.valueUint32 = 1;
221 params.valueGeneric = NULL;
223 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
226 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt32(
231 _OrthancPluginDatabaseAnswer params;
232 memset(¶ms, 0,
sizeof(params));
233 params.database = database;
234 params.type = _OrthancPluginDatabaseAnswerType_Int32;
235 params.valueInt32 = value;
236 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
239 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerInt64(
244 _OrthancPluginDatabaseAnswer params;
245 memset(¶ms, 0,
sizeof(params));
246 params.database = database;
247 params.type = _OrthancPluginDatabaseAnswerType_Int64;
248 params.valueInt64 = value;
249 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
252 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResource(
255 const OrthancPluginExportedResource* exported)
257 _OrthancPluginDatabaseAnswer params;
258 memset(¶ms, 0,
sizeof(params));
260 params.database = database;
261 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
262 params.valueUint32 = 0;
263 params.valueGeneric = exported;
264 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
267 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerExportedResourcesDone(
271 _OrthancPluginDatabaseAnswer params;
272 memset(¶ms, 0,
sizeof(params));
274 params.database = database;
275 params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
276 params.valueUint32 = 1;
277 params.valueGeneric = NULL;
278 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
281 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerDicomTag(
284 const OrthancPluginDicomTag* tag)
286 _OrthancPluginDatabaseAnswer params;
287 memset(¶ms, 0,
sizeof(params));
288 params.database = database;
289 params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
290 params.valueGeneric = tag;
291 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
294 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerAttachment(
297 const OrthancPluginAttachment* attachment)
299 _OrthancPluginDatabaseAnswer params;
300 memset(¶ms, 0,
sizeof(params));
301 params.database = database;
302 params.type = _OrthancPluginDatabaseAnswerType_Attachment;
303 params.valueGeneric = attachment;
304 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
307 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerResource(
313 _OrthancPluginDatabaseAnswer params;
314 memset(¶ms, 0,
sizeof(params));
315 params.database = database;
316 params.type = _OrthancPluginDatabaseAnswerType_Resource;
317 params.valueInt64 = id;
318 params.valueInt32 = (int32_t) resourceType;
319 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
322 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMatchingResource(
325 const OrthancPluginMatchingResource* match)
327 _OrthancPluginDatabaseAnswer params;
328 memset(¶ms, 0,
sizeof(params));
329 params.database = database;
330 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
331 params.valueGeneric = match;
332 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
335 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseAnswerMetadata(
342 OrthancPluginResourcesContentMetadata metadata;
343 _OrthancPluginDatabaseAnswer params;
344 metadata.resource = resourceId;
345 metadata.metadata = type;
346 metadata.value = value;
347 memset(¶ms, 0,
sizeof(params));
348 params.database = database;
349 params.type = _OrthancPluginDatabaseAnswerType_Metadata;
350 params.valueGeneric = &metadata;
351 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
354 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedAttachment(
357 const OrthancPluginAttachment* attachment)
359 _OrthancPluginDatabaseAnswer params;
360 memset(¶ms, 0,
sizeof(params));
361 params.database = database;
362 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
363 params.valueGeneric = attachment;
364 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
367 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalDeletedResource(
370 const char* publicId,
373 _OrthancPluginDatabaseAnswer params;
374 memset(¶ms, 0,
sizeof(params));
375 params.database = database;
376 params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
377 params.valueString = publicId;
378 params.valueInt32 = (int32_t) resourceType;
379 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
382 ORTHANC_PLUGIN_INLINE
void OrthancPluginDatabaseSignalRemainingAncestor(
385 const char* ancestorId,
388 _OrthancPluginDatabaseAnswer params;
389 memset(¶ms, 0,
sizeof(params));
390 params.database = database;
391 params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
392 params.valueString = ancestorId;
393 params.valueInt32 = (int32_t) ancestorType;
394 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms);
407 const OrthancPluginAttachment* attachment);
428 const char* publicId,
435 int32_t contentType);
441 int32_t metadataType);
557 int32_t* isProtected,
581 const OrthancPluginChange* change);
586 const OrthancPluginExportedResource* exported);
595 int32_t contentType);
613 const OrthancPluginDicomTag* tag);
647 const char* publicId);
662 int64_t patientIdToAvoid);
674 const OrthancPluginDicomTag* tag);
680 const OrthancPluginDicomTag* tag);
693 int32_t isProtected);
715 } OrthancPluginDatabaseBackend;
743 uint32_t targetVersion,
766 const OrthancPluginDicomTag* tag,
797 uint32_t constraintsCount,
798 const OrthancPluginDatabaseConstraint* constraints,
801 uint8_t requestSomeInstance);
805 OrthancPluginCreateInstanceResult* output,
808 const char* hashPatient,
809 const char* hashStudy,
810 const char* hashSeries,
811 const char* hashInstance);
816 uint32_t countIdentifierTags,
817 const OrthancPluginResourcesContentTags* identifierTags,
818 uint32_t countMainDicomTags,
819 const OrthancPluginResourcesContentTags* mainDicomTags,
820 uint32_t countMetadata,
821 const OrthancPluginResourcesContentMetadata* metadata);
867 const char* publicId);
869 } OrthancPluginDatabaseExtensions;
877 const OrthancPluginDatabaseBackend* backend;
879 } _OrthancPluginRegisterDatabaseBackend;
894 const OrthancPluginDatabaseBackend* backend,
898 _OrthancPluginRegisterDatabaseBackend params;
900 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
905 memset(¶ms, 0,
sizeof(params));
906 params.backend = backend;
907 params.result = &result;
908 params.payload = payload;
910 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) ||
926 const OrthancPluginDatabaseBackend* backend;
928 const OrthancPluginDatabaseExtensions* extensions;
929 uint32_t extensionsSize;
930 } _OrthancPluginRegisterDatabaseBackendV2;
945 const OrthancPluginDatabaseBackend* backend,
946 const OrthancPluginDatabaseExtensions* extensions,
950 _OrthancPluginRegisterDatabaseBackendV2 params;
952 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
957 memset(¶ms, 0,
sizeof(params));
958 params.backend = backend;
959 params.result = &result;
960 params.payload = payload;
961 params.extensions = extensions;
962 params.extensionsSize =
sizeof(OrthancPluginDatabaseExtensions);
964 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, ¶ms) ||
985 OrthancPluginDatabaseTransactionType_ReadOnly = 1,
986 OrthancPluginDatabaseTransactionType_ReadWrite = 2,
987 OrthancPluginDatabaseTransactionType_INTERNAL = 0x7fffffff
988 } OrthancPluginDatabaseTransactionType;
993 OrthancPluginDatabaseEventType_DeletedAttachment = 1,
994 OrthancPluginDatabaseEventType_DeletedResource = 2,
995 OrthancPluginDatabaseEventType_RemainingAncestor = 3,
996 OrthancPluginDatabaseEventType_INTERNAL = 0x7fffffff
997 } OrthancPluginDatabaseEventType;
1002 OrthancPluginDatabaseEventType type;
1010 const char* publicId;
1014 OrthancPluginAttachment attachment;
1018 } OrthancPluginDatabaseEvent;
1031 OrthancPluginAttachment* target ,
1035 OrthancPluginChange* target ,
1045 OrthancPluginExportedResource* target ,
1057 OrthancPluginMatchingResource* target ,
1062 const char** value ,
1066 const char** target ,
1073 OrthancPluginDatabaseEvent*
event ,
1097 uint32_t targetVersion);
1101 OrthancPluginDatabaseTransactionType type);
1114 int64_t fileSizeDelta);
1119 const OrthancPluginAttachment* attachment,
1127 int64_t resourceId);
1130 OrthancPluginCreateInstanceResult* target ,
1131 const char* hashPatient,
1132 const char* hashStudy,
1133 const char* hashSeries,
1134 const char* hashInstance);
1138 int32_t contentType);
1142 int32_t metadataType);
1163 uint8_t* targetDone ,
1165 uint32_t maxResults);
1182 uint8_t* targetDone ,
1184 uint32_t maxResults);
1201 int64_t internalId);
1209 uint64_t resourceId);
1219 uint64_t threshold);
1223 int64_t resourceId);
1227 int64_t resourceId);
1231 int64_t internalId);
1241 const char* publicId,
1242 const char* modality,
1244 const char* patientId,
1245 const char* studyInstanceUid,
1246 const char* seriesInstanceUid,
1247 const char* sopInstanceUid);
1253 int32_t contentType);
1257 const char* serverIdentifier,
1267 uint8_t* isExisting ,
1272 uint8_t* isExisting ,
1275 const char* publicId);
1279 uint32_t constraintsCount,
1280 const OrthancPluginDatabaseConstraint* constraints,
1283 uint8_t requestSomeInstanceId);
1287 uint8_t* isExisting ,
1290 const char* publicId);
1293 uint8_t* patientAvailable ,
1294 int64_t* patientId );
1297 uint8_t* patientAvailable ,
1298 int64_t* patientId ,
1299 int64_t patientIdToAvoid);
1302 const char* serverIdentifier,
1315 uint8_t isProtected);
1318 uint32_t countIdentifierTags,
1319 const OrthancPluginResourcesContentTags* identifierTags,
1320 uint32_t countMainDicomTags,
1321 const OrthancPluginResourcesContentTags* mainDicomTags,
1322 uint32_t countMetadata,
1323 const OrthancPluginResourcesContentMetadata* metadata);
1326 } OrthancPluginDatabaseBackendV3;
1333 const OrthancPluginDatabaseBackendV3* backend;
1334 uint32_t backendSize;
1335 uint32_t maxDatabaseRetries;
1337 } _OrthancPluginRegisterDatabaseBackendV3;
1342 const OrthancPluginDatabaseBackendV3* backend,
1343 uint32_t backendSize,
1344 uint32_t maxDatabaseRetries,
1347 _OrthancPluginRegisterDatabaseBackendV3 params;
1349 if (
sizeof(int32_t) !=
sizeof(_OrthancPluginDatabaseAnswerType))
1354 memset(¶ms, 0,
sizeof(params));
1355 params.backend = backend;
1356 params.backendSize =
sizeof(OrthancPluginDatabaseBackendV3);
1357 params.maxDatabaseRetries = maxDatabaseRetries;
1358 params.database = database;
1360 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:1077
struct _OrthancPluginDatabaseTransaction_t OrthancPluginDatabaseTransaction
Definition: OrthancCDatabasePlugin.h:52
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:892
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:44
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:943