Orthanc Plugin SDK  1.5.3
Documentation of the plugin interface of Orthanc
OrthancCDatabasePlugin.h
1 
39 #pragma once
40 
41 #include "OrthancCPlugin.h"
42 
43 
46 #ifdef __cplusplus
47 extern "C"
48 {
49 #endif
50 
51 
56  typedef struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext;
57 
58 
59 /*<! @cond Doxygen_Suppress */
60  typedef enum
61  {
62  _OrthancPluginDatabaseAnswerType_None = 0,
63 
64  /* Events */
65  _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
66  _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
67  _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
68 
69  /* Return value */
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, /* New in Orthanc 1.5.2 */
79 
80  _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
81  } _OrthancPluginDatabaseAnswerType;
82 
83 
84  typedef struct
85  {
86  const char* uuid;
87  int32_t contentType;
88  uint64_t uncompressedSize;
89  const char* uncompressedHash;
90  int32_t compressionType;
91  uint64_t compressedSize;
92  const char* compressedHash;
93  } OrthancPluginAttachment;
94 
95  typedef struct
96  {
97  uint16_t group;
98  uint16_t element;
99  const char* value;
100  } OrthancPluginDicomTag;
101 
102  typedef struct
103  {
104  int64_t seq;
105  int32_t changeType;
106  OrthancPluginResourceType resourceType;
107  const char* publicId;
108  const char* date;
109  } OrthancPluginChange;
110 
111  typedef struct
112  {
113  int64_t seq;
114  OrthancPluginResourceType resourceType;
115  const char* publicId;
116  const char* modality;
117  const char* date;
118  const char* patientId;
119  const char* studyInstanceUid;
120  const char* seriesInstanceUid;
121  const char* sopInstanceUid;
122  } OrthancPluginExportedResource;
123 
124  typedef struct /* New in Orthanc 1.5.2 */
125  {
127  uint16_t tagGroup;
128  uint16_t tagElement;
129  uint8_t isIdentifierTag;
130  uint8_t isCaseSensitive;
131  uint8_t isMandatory;
133  uint32_t valuesCount;
134  const char* const* values;
135  } OrthancPluginDatabaseConstraint;
136 
137  typedef struct /* New in Orthanc 1.5.2 */
138  {
139  const char* resourceId;
140  const char* someInstanceId; /* Can be NULL if not requested */
141  } OrthancPluginMatchingResource;
142 
143  typedef struct /* New in Orthanc 1.5.2 */
144  {
145  /* Mandatory field */
146  uint8_t isNewInstance;
147  int64_t instanceId;
148 
149  /* The following fields must only be set if "isNewInstance" is "true" */
150  uint8_t isNewPatient;
151  uint8_t isNewStudy;
152  uint8_t isNewSeries;
153  int64_t patientId;
154  int64_t studyId;
155  int64_t seriesId;
156  } OrthancPluginCreateInstanceResult;
157 
158  typedef struct /* New in Orthanc 1.5.2 */
159  {
160  int64_t resource;
161  uint16_t group;
162  uint16_t element;
163  const char* value;
164  } OrthancPluginResourcesContentTags;
165 
166  typedef struct /* New in Orthanc 1.5.2 */
167  {
168  int64_t resource;
169  int32_t metadata;
170  const char* value;
171  } OrthancPluginResourcesContentMetadata;
172 
173 
174  typedef struct
175  {
177  _OrthancPluginDatabaseAnswerType type;
178  int32_t valueInt32;
179  uint32_t valueUint32;
180  int64_t valueInt64;
181  const char *valueString;
182  const void *valueGeneric;
183  } _OrthancPluginDatabaseAnswer;
184 
185  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerString(
186  OrthancPluginContext* context,
188  const char* value)
189  {
190  _OrthancPluginDatabaseAnswer params;
191  memset(&params, 0, sizeof(params));
192  params.database = database;
193  params.type = _OrthancPluginDatabaseAnswerType_String;
194  params.valueString = value;
195  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
196  }
197 
198  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChange(
199  OrthancPluginContext* context,
201  const OrthancPluginChange* change)
202  {
203  _OrthancPluginDatabaseAnswer params;
204  memset(&params, 0, sizeof(params));
205 
206  params.database = database;
207  params.type = _OrthancPluginDatabaseAnswerType_Change;
208  params.valueUint32 = 0;
209  params.valueGeneric = change;
210 
211  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
212  }
213 
214  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChangesDone(
215  OrthancPluginContext* context,
217  {
218  _OrthancPluginDatabaseAnswer params;
219  memset(&params, 0, sizeof(params));
220 
221  params.database = database;
222  params.type = _OrthancPluginDatabaseAnswerType_Change;
223  params.valueUint32 = 1;
224  params.valueGeneric = NULL;
225 
226  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
227  }
228 
229  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt32(
230  OrthancPluginContext* context,
232  int32_t value)
233  {
234  _OrthancPluginDatabaseAnswer params;
235  memset(&params, 0, sizeof(params));
236  params.database = database;
237  params.type = _OrthancPluginDatabaseAnswerType_Int32;
238  params.valueInt32 = value;
239  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
240  }
241 
242  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt64(
243  OrthancPluginContext* context,
245  int64_t value)
246  {
247  _OrthancPluginDatabaseAnswer params;
248  memset(&params, 0, sizeof(params));
249  params.database = database;
250  params.type = _OrthancPluginDatabaseAnswerType_Int64;
251  params.valueInt64 = value;
252  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
253  }
254 
255  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResource(
256  OrthancPluginContext* context,
258  const OrthancPluginExportedResource* exported)
259  {
260  _OrthancPluginDatabaseAnswer params;
261  memset(&params, 0, sizeof(params));
262 
263  params.database = database;
264  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
265  params.valueUint32 = 0;
266  params.valueGeneric = exported;
267  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
268  }
269 
270  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResourcesDone(
271  OrthancPluginContext* context,
273  {
274  _OrthancPluginDatabaseAnswer params;
275  memset(&params, 0, sizeof(params));
276 
277  params.database = database;
278  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
279  params.valueUint32 = 1;
280  params.valueGeneric = NULL;
281  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
282  }
283 
284  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerDicomTag(
285  OrthancPluginContext* context,
287  const OrthancPluginDicomTag* tag)
288  {
289  _OrthancPluginDatabaseAnswer params;
290  memset(&params, 0, sizeof(params));
291  params.database = database;
292  params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
293  params.valueGeneric = tag;
294  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
295  }
296 
297  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerAttachment(
298  OrthancPluginContext* context,
300  const OrthancPluginAttachment* attachment)
301  {
302  _OrthancPluginDatabaseAnswer params;
303  memset(&params, 0, sizeof(params));
304  params.database = database;
305  params.type = _OrthancPluginDatabaseAnswerType_Attachment;
306  params.valueGeneric = attachment;
307  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
308  }
309 
310  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerResource(
311  OrthancPluginContext* context,
313  int64_t id,
314  OrthancPluginResourceType resourceType)
315  {
316  _OrthancPluginDatabaseAnswer params;
317  memset(&params, 0, sizeof(params));
318  params.database = database;
319  params.type = _OrthancPluginDatabaseAnswerType_Resource;
320  params.valueInt64 = id;
321  params.valueInt32 = (int32_t) resourceType;
322  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
323  }
324 
325  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerMatchingResource(
326  OrthancPluginContext* context,
328  const OrthancPluginMatchingResource* match)
329  {
330  _OrthancPluginDatabaseAnswer params;
331  memset(&params, 0, sizeof(params));
332  params.database = database;
333  params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
334  params.valueGeneric = match;
335  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
336  }
337 
338  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedAttachment(
339  OrthancPluginContext* context,
341  const OrthancPluginAttachment* attachment)
342  {
343  _OrthancPluginDatabaseAnswer params;
344  memset(&params, 0, sizeof(params));
345  params.database = database;
346  params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
347  params.valueGeneric = attachment;
348  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
349  }
350 
351  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedResource(
352  OrthancPluginContext* context,
354  const char* publicId,
355  OrthancPluginResourceType resourceType)
356  {
357  _OrthancPluginDatabaseAnswer params;
358  memset(&params, 0, sizeof(params));
359  params.database = database;
360  params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
361  params.valueString = publicId;
362  params.valueInt32 = (int32_t) resourceType;
363  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
364  }
365 
366  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalRemainingAncestor(
367  OrthancPluginContext* context,
369  const char* ancestorId,
370  OrthancPluginResourceType ancestorType)
371  {
372  _OrthancPluginDatabaseAnswer params;
373  memset(&params, 0, sizeof(params));
374  params.database = database;
375  params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
376  params.valueString = ancestorId;
377  params.valueInt32 = (int32_t) ancestorType;
378  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
379  }
380 
381 
382 
383 
384 
385  typedef struct
386  {
387  OrthancPluginErrorCode (*addAttachment) (
388  /* inputs */
389  void* payload,
390  int64_t id,
391  const OrthancPluginAttachment* attachment);
392 
393  OrthancPluginErrorCode (*attachChild) (
394  /* inputs */
395  void* payload,
396  int64_t parent,
397  int64_t child);
398 
399  OrthancPluginErrorCode (*clearChanges) (
400  /* inputs */
401  void* payload);
402 
403  OrthancPluginErrorCode (*clearExportedResources) (
404  /* inputs */
405  void* payload);
406 
407  OrthancPluginErrorCode (*createResource) (
408  /* outputs */
409  int64_t* id,
410  /* inputs */
411  void* payload,
412  const char* publicId,
413  OrthancPluginResourceType resourceType);
414 
415  OrthancPluginErrorCode (*deleteAttachment) (
416  /* inputs */
417  void* payload,
418  int64_t id,
419  int32_t contentType);
420 
421  OrthancPluginErrorCode (*deleteMetadata) (
422  /* inputs */
423  void* payload,
424  int64_t id,
425  int32_t metadataType);
426 
427  OrthancPluginErrorCode (*deleteResource) (
428  /* inputs */
429  void* payload,
430  int64_t id);
431 
432  /* Output: Use OrthancPluginDatabaseAnswerString() */
433  OrthancPluginErrorCode (*getAllPublicIds) (
434  /* outputs */
436  /* inputs */
437  void* payload,
438  OrthancPluginResourceType resourceType);
439 
440  /* Output: Use OrthancPluginDatabaseAnswerChange() and
441  * OrthancPluginDatabaseAnswerChangesDone() */
442  OrthancPluginErrorCode (*getChanges) (
443  /* outputs */
445  /* inputs */
446  void* payload,
447  int64_t since,
448  uint32_t maxResult);
449 
450  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
451  OrthancPluginErrorCode (*getChildrenInternalId) (
452  /* outputs */
454  /* inputs */
455  void* payload,
456  int64_t id);
457 
458  /* Output: Use OrthancPluginDatabaseAnswerString() */
459  OrthancPluginErrorCode (*getChildrenPublicId) (
460  /* outputs */
462  /* inputs */
463  void* payload,
464  int64_t id);
465 
466  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() and
467  * OrthancPluginDatabaseAnswerExportedResourcesDone() */
468  OrthancPluginErrorCode (*getExportedResources) (
469  /* outputs */
471  /* inputs */
472  void* payload,
473  int64_t since,
474  uint32_t maxResult);
475 
476  /* Output: Use OrthancPluginDatabaseAnswerChange() */
477  OrthancPluginErrorCode (*getLastChange) (
478  /* outputs */
480  /* inputs */
481  void* payload);
482 
483  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() */
484  OrthancPluginErrorCode (*getLastExportedResource) (
485  /* outputs */
487  /* inputs */
488  void* payload);
489 
490  /* Output: Use OrthancPluginDatabaseAnswerDicomTag() */
491  OrthancPluginErrorCode (*getMainDicomTags) (
492  /* outputs */
494  /* inputs */
495  void* payload,
496  int64_t id);
497 
498  /* Output: Use OrthancPluginDatabaseAnswerString() */
499  OrthancPluginErrorCode (*getPublicId) (
500  /* outputs */
502  /* inputs */
503  void* payload,
504  int64_t id);
505 
506  OrthancPluginErrorCode (*getResourceCount) (
507  /* outputs */
508  uint64_t* target,
509  /* inputs */
510  void* payload,
511  OrthancPluginResourceType resourceType);
512 
513  OrthancPluginErrorCode (*getResourceType) (
514  /* outputs */
515  OrthancPluginResourceType* resourceType,
516  /* inputs */
517  void* payload,
518  int64_t id);
519 
520  OrthancPluginErrorCode (*getTotalCompressedSize) (
521  /* outputs */
522  uint64_t* target,
523  /* inputs */
524  void* payload);
525 
526  OrthancPluginErrorCode (*getTotalUncompressedSize) (
527  /* outputs */
528  uint64_t* target,
529  /* inputs */
530  void* payload);
531 
532  OrthancPluginErrorCode (*isExistingResource) (
533  /* outputs */
534  int32_t* existing,
535  /* inputs */
536  void* payload,
537  int64_t id);
538 
539  OrthancPluginErrorCode (*isProtectedPatient) (
540  /* outputs */
541  int32_t* isProtected,
542  /* inputs */
543  void* payload,
544  int64_t id);
545 
546  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
547  OrthancPluginErrorCode (*listAvailableMetadata) (
548  /* outputs */
550  /* inputs */
551  void* payload,
552  int64_t id);
553 
554  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
555  OrthancPluginErrorCode (*listAvailableAttachments) (
556  /* outputs */
558  /* inputs */
559  void* payload,
560  int64_t id);
561 
562  OrthancPluginErrorCode (*logChange) (
563  /* inputs */
564  void* payload,
565  const OrthancPluginChange* change);
566 
567  OrthancPluginErrorCode (*logExportedResource) (
568  /* inputs */
569  void* payload,
570  const OrthancPluginExportedResource* exported);
571 
572  /* Output: Use OrthancPluginDatabaseAnswerAttachment() */
573  OrthancPluginErrorCode (*lookupAttachment) (
574  /* outputs */
576  /* inputs */
577  void* payload,
578  int64_t id,
579  int32_t contentType);
580 
581  /* Output: Use OrthancPluginDatabaseAnswerString() */
582  OrthancPluginErrorCode (*lookupGlobalProperty) (
583  /* outputs */
585  /* inputs */
586  void* payload,
587  int32_t property);
588 
589  /* Use "OrthancPluginDatabaseExtensions::lookupIdentifier3"
590  instead of this function as of Orthanc 0.9.5 (db v6), can be set to NULL.
591  Output: Use OrthancPluginDatabaseAnswerInt64() */
592  OrthancPluginErrorCode (*lookupIdentifier) (
593  /* outputs */
595  /* inputs */
596  void* payload,
597  const OrthancPluginDicomTag* tag);
598 
599  /* Unused starting with Orthanc 0.9.5 (db v6), can be set to NULL.
600  Output: Use OrthancPluginDatabaseAnswerInt64() */
601  OrthancPluginErrorCode (*lookupIdentifier2) (
602  /* outputs */
604  /* inputs */
605  void* payload,
606  const char* value);
607 
608  /* Output: Use OrthancPluginDatabaseAnswerString() */
609  OrthancPluginErrorCode (*lookupMetadata) (
610  /* outputs */
612  /* inputs */
613  void* payload,
614  int64_t id,
615  int32_t metadata);
616 
617  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
618  OrthancPluginErrorCode (*lookupParent) (
619  /* outputs */
621  /* inputs */
622  void* payload,
623  int64_t id);
624 
625  /* Output: Use OrthancPluginDatabaseAnswerResource() */
626  OrthancPluginErrorCode (*lookupResource) (
627  /* outputs */
629  /* inputs */
630  void* payload,
631  const char* publicId);
632 
633  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
634  OrthancPluginErrorCode (*selectPatientToRecycle) (
635  /* outputs */
637  /* inputs */
638  void* payload);
639 
640  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
641  OrthancPluginErrorCode (*selectPatientToRecycle2) (
642  /* outputs */
644  /* inputs */
645  void* payload,
646  int64_t patientIdToAvoid);
647 
648  OrthancPluginErrorCode (*setGlobalProperty) (
649  /* inputs */
650  void* payload,
651  int32_t property,
652  const char* value);
653 
654  OrthancPluginErrorCode (*setMainDicomTag) (
655  /* inputs */
656  void* payload,
657  int64_t id,
658  const OrthancPluginDicomTag* tag);
659 
660  OrthancPluginErrorCode (*setIdentifierTag) (
661  /* inputs */
662  void* payload,
663  int64_t id,
664  const OrthancPluginDicomTag* tag);
665 
666  OrthancPluginErrorCode (*setMetadata) (
667  /* inputs */
668  void* payload,
669  int64_t id,
670  int32_t metadata,
671  const char* value);
672 
673  OrthancPluginErrorCode (*setProtectedPatient) (
674  /* inputs */
675  void* payload,
676  int64_t id,
677  int32_t isProtected);
678 
679  OrthancPluginErrorCode (*startTransaction) (
680  /* inputs */
681  void* payload);
682 
683  OrthancPluginErrorCode (*rollbackTransaction) (
684  /* inputs */
685  void* payload);
686 
687  OrthancPluginErrorCode (*commitTransaction) (
688  /* inputs */
689  void* payload);
690 
691  OrthancPluginErrorCode (*open) (
692  /* inputs */
693  void* payload);
694 
695  OrthancPluginErrorCode (*close) (
696  /* inputs */
697  void* payload);
698 
699  } OrthancPluginDatabaseBackend;
700 
701 
702  typedef struct
703  {
708  /* Output: Use OrthancPluginDatabaseAnswerString() */
709  OrthancPluginErrorCode (*getAllPublicIdsWithLimit) (
710  /* outputs */
712  /* inputs */
713  void* payload,
714  OrthancPluginResourceType resourceType,
715  uint64_t since,
716  uint64_t limit);
717 
718  OrthancPluginErrorCode (*getDatabaseVersion) (
719  /* outputs */
720  uint32_t* version,
721  /* inputs */
722  void* payload);
723 
724  OrthancPluginErrorCode (*upgradeDatabase) (
725  /* inputs */
726  void* payload,
727  uint32_t targetVersion,
728  OrthancPluginStorageArea* storageArea);
729 
730  OrthancPluginErrorCode (*clearMainDicomTags) (
731  /* inputs */
732  void* payload,
733  int64_t id);
734 
735  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
736  OrthancPluginErrorCode (*getAllInternalIds) (
737  /* outputs */
739  /* inputs */
740  void* payload,
741  OrthancPluginResourceType resourceType);
742 
743  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
744  OrthancPluginErrorCode (*lookupIdentifier3) (
745  /* outputs */
747  /* inputs */
748  void* payload,
749  OrthancPluginResourceType resourceType,
750  const OrthancPluginDicomTag* tag,
752 
753 
758  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
759  OrthancPluginErrorCode (*lookupIdentifierRange) (
760  /* outputs */
762  /* inputs */
763  void* payload,
764  OrthancPluginResourceType resourceType,
765  uint16_t group,
766  uint16_t element,
767  const char* start,
768  const char* end);
769 
770 
775  /* Ouput: Use OrthancPluginDatabaseAnswerMatchingResource */
776  OrthancPluginErrorCode (*lookupResources) (
777  /* outputs */
779  /* inputs */
780  void* payload,
781  uint32_t constraintsCount,
782  const OrthancPluginDatabaseConstraint* constraints,
783  OrthancPluginResourceType queryLevel,
784  uint32_t limit,
785  uint8_t requestSomeInstance);
786 
787 
788  OrthancPluginErrorCode (*createInstance) (
789  /* output */
790  OrthancPluginCreateInstanceResult* output,
791  /* inputs */
792  void* payload,
793  const char* hashPatient,
794  const char* hashStudy,
795  const char* hashSeries,
796  const char* hashInstance);
797 
798  OrthancPluginErrorCode (*setResourcesContent) (
799  /* inputs */
800  void* payload,
801  uint32_t countIdentifierTags,
802  const OrthancPluginResourcesContentTags* identifierTags,
803  uint32_t countMainDicomTags,
804  const OrthancPluginResourcesContentTags* mainDicomTags,
805  uint32_t countMetadata,
806  const OrthancPluginResourcesContentMetadata* metadata);
807 
808  /* Ouput: Use OrthancPluginDatabaseAnswerString */
809  OrthancPluginErrorCode (*getChildrenMetadata) (
810  /* outputs */
812  /* inputs */
813  void* payload,
814  int64_t resourceId,
815  int32_t metadata);
816 
817  OrthancPluginErrorCode (*getLastChangeIndex) (
818  /* outputs */
819  int64_t* target,
820  /* inputs */
821  void* payload);
822 
823  OrthancPluginErrorCode (*tagMostRecentPatient) (
824  /* inputs */
825  void* payload,
826  int64_t patientId);
827 
828  } OrthancPluginDatabaseExtensions;
829 
830 /*<! @endcond */
831 
832 
833  typedef struct
834  {
836  const OrthancPluginDatabaseBackend* backend;
837  void* payload;
838  } _OrthancPluginRegisterDatabaseBackend;
839 
852  OrthancPluginContext* context,
853  const OrthancPluginDatabaseBackend* backend,
854  void* payload)
855  {
856  OrthancPluginDatabaseContext* result = NULL;
857  _OrthancPluginRegisterDatabaseBackend params;
858 
859  if (sizeof(int32_t) != sizeof(_OrthancPluginDatabaseAnswerType))
860  {
861  return NULL;
862  }
863 
864  memset(&params, 0, sizeof(params));
865  params.backend = backend;
866  params.result = &result;
867  params.payload = payload;
868 
869  if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, &params) ||
870  result == NULL)
871  {
872  /* Error */
873  return NULL;
874  }
875  else
876  {
877  return result;
878  }
879  }
880 
881 
882  typedef struct
883  {
885  const OrthancPluginDatabaseBackend* backend;
886  void* payload;
887  const OrthancPluginDatabaseExtensions* extensions;
888  uint32_t extensionsSize;
889  } _OrthancPluginRegisterDatabaseBackendV2;
890 
891 
903  OrthancPluginContext* context,
904  const OrthancPluginDatabaseBackend* backend,
905  const OrthancPluginDatabaseExtensions* extensions,
906  void* payload)
907  {
908  OrthancPluginDatabaseContext* result = NULL;
909  _OrthancPluginRegisterDatabaseBackendV2 params;
910 
911  if (sizeof(int32_t) != sizeof(_OrthancPluginDatabaseAnswerType))
912  {
913  return NULL;
914  }
915 
916  memset(&params, 0, sizeof(params));
917  params.backend = backend;
918  params.result = &result;
919  params.payload = payload;
920  params.extensions = extensions;
921  params.extensionsSize = sizeof(OrthancPluginDatabaseExtensions);
922 
923  if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, &params) ||
924  result == NULL)
925  {
926  /* Error */
927  return NULL;
928  }
929  else
930  {
931  return result;
932  }
933  }
934 
935 
936 #ifdef __cplusplus
937 }
938 #endif
939 
940 
OrthancPluginErrorCode
Definition: OrthancCPlugin.h:199
struct _OrthancPluginContext_t OrthancPluginContext
Data structure that contains information about the Orthanc core.
struct _OrthancPluginStorageArea_t OrthancPluginStorageArea
Opaque structure that represents the storage area that is actually used by Orthanc.
Definition: OrthancCPlugin.h:944
OrthancPluginConstraintType
Definition: OrthancCPlugin.h:841
OrthancPluginResourceType
Definition: OrthancCPlugin.h:665
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackend(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, void *payload)
Definition: OrthancCDatabasePlugin.h:851
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:56
OrthancPluginDatabaseContext * OrthancPluginRegisterDatabaseBackendV2(OrthancPluginContext *context, const OrthancPluginDatabaseBackend *backend, const OrthancPluginDatabaseExtensions *extensions, void *payload)
Definition: OrthancCDatabasePlugin.h:902
OrthancPluginIdentifierConstraint
Definition: OrthancCPlugin.h:826