Orthanc Plugin SDK  1.5.8
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  _OrthancPluginDatabaseAnswerType_Metadata = 19, /* New in Orthanc 1.5.4 */
80 
81  _OrthancPluginDatabaseAnswerType_INTERNAL = 0x7fffffff
82  } _OrthancPluginDatabaseAnswerType;
83 
84 
85  typedef struct
86  {
87  const char* uuid;
88  int32_t contentType;
89  uint64_t uncompressedSize;
90  const char* uncompressedHash;
91  int32_t compressionType;
92  uint64_t compressedSize;
93  const char* compressedHash;
94  } OrthancPluginAttachment;
95 
96  typedef struct
97  {
98  uint16_t group;
99  uint16_t element;
100  const char* value;
101  } OrthancPluginDicomTag;
102 
103  typedef struct
104  {
105  int64_t seq;
106  int32_t changeType;
107  OrthancPluginResourceType resourceType;
108  const char* publicId;
109  const char* date;
110  } OrthancPluginChange;
111 
112  typedef struct
113  {
114  int64_t seq;
115  OrthancPluginResourceType resourceType;
116  const char* publicId;
117  const char* modality;
118  const char* date;
119  const char* patientId;
120  const char* studyInstanceUid;
121  const char* seriesInstanceUid;
122  const char* sopInstanceUid;
123  } OrthancPluginExportedResource;
124 
125  typedef struct /* New in Orthanc 1.5.2 */
126  {
128  uint16_t tagGroup;
129  uint16_t tagElement;
130  uint8_t isIdentifierTag;
131  uint8_t isCaseSensitive;
132  uint8_t isMandatory;
134  uint32_t valuesCount;
135  const char* const* values;
136  } OrthancPluginDatabaseConstraint;
137 
138  typedef struct /* New in Orthanc 1.5.2 */
139  {
140  const char* resourceId;
141  const char* someInstanceId; /* Can be NULL if not requested */
142  } OrthancPluginMatchingResource;
143 
144  typedef struct /* New in Orthanc 1.5.2 */
145  {
146  /* Mandatory field */
147  uint8_t isNewInstance;
148  int64_t instanceId;
149 
150  /* The following fields must only be set if "isNewInstance" is "true" */
151  uint8_t isNewPatient;
152  uint8_t isNewStudy;
153  uint8_t isNewSeries;
154  int64_t patientId;
155  int64_t studyId;
156  int64_t seriesId;
157  } OrthancPluginCreateInstanceResult;
158 
159  typedef struct /* New in Orthanc 1.5.2 */
160  {
161  int64_t resource;
162  uint16_t group;
163  uint16_t element;
164  const char* value;
165  } OrthancPluginResourcesContentTags;
166 
167  typedef struct /* New in Orthanc 1.5.2 */
168  {
169  int64_t resource;
170  int32_t metadata;
171  const char* value;
172  } OrthancPluginResourcesContentMetadata;
173 
174 
175  typedef struct
176  {
178  _OrthancPluginDatabaseAnswerType type;
179  int32_t valueInt32;
180  uint32_t valueUint32;
181  int64_t valueInt64;
182  const char *valueString;
183  const void *valueGeneric;
184  } _OrthancPluginDatabaseAnswer;
185 
186  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerString(
187  OrthancPluginContext* context,
189  const char* value)
190  {
191  _OrthancPluginDatabaseAnswer params;
192  memset(&params, 0, sizeof(params));
193  params.database = database;
194  params.type = _OrthancPluginDatabaseAnswerType_String;
195  params.valueString = value;
196  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
197  }
198 
199  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChange(
200  OrthancPluginContext* context,
202  const OrthancPluginChange* change)
203  {
204  _OrthancPluginDatabaseAnswer params;
205  memset(&params, 0, sizeof(params));
206 
207  params.database = database;
208  params.type = _OrthancPluginDatabaseAnswerType_Change;
209  params.valueUint32 = 0;
210  params.valueGeneric = change;
211 
212  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
213  }
214 
215  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChangesDone(
216  OrthancPluginContext* context,
218  {
219  _OrthancPluginDatabaseAnswer params;
220  memset(&params, 0, sizeof(params));
221 
222  params.database = database;
223  params.type = _OrthancPluginDatabaseAnswerType_Change;
224  params.valueUint32 = 1;
225  params.valueGeneric = NULL;
226 
227  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
228  }
229 
230  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt32(
231  OrthancPluginContext* context,
233  int32_t value)
234  {
235  _OrthancPluginDatabaseAnswer params;
236  memset(&params, 0, sizeof(params));
237  params.database = database;
238  params.type = _OrthancPluginDatabaseAnswerType_Int32;
239  params.valueInt32 = value;
240  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
241  }
242 
243  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt64(
244  OrthancPluginContext* context,
246  int64_t value)
247  {
248  _OrthancPluginDatabaseAnswer params;
249  memset(&params, 0, sizeof(params));
250  params.database = database;
251  params.type = _OrthancPluginDatabaseAnswerType_Int64;
252  params.valueInt64 = value;
253  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
254  }
255 
256  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResource(
257  OrthancPluginContext* context,
259  const OrthancPluginExportedResource* exported)
260  {
261  _OrthancPluginDatabaseAnswer params;
262  memset(&params, 0, sizeof(params));
263 
264  params.database = database;
265  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
266  params.valueUint32 = 0;
267  params.valueGeneric = exported;
268  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
269  }
270 
271  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResourcesDone(
272  OrthancPluginContext* context,
274  {
275  _OrthancPluginDatabaseAnswer params;
276  memset(&params, 0, sizeof(params));
277 
278  params.database = database;
279  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
280  params.valueUint32 = 1;
281  params.valueGeneric = NULL;
282  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
283  }
284 
285  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerDicomTag(
286  OrthancPluginContext* context,
288  const OrthancPluginDicomTag* tag)
289  {
290  _OrthancPluginDatabaseAnswer params;
291  memset(&params, 0, sizeof(params));
292  params.database = database;
293  params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
294  params.valueGeneric = tag;
295  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
296  }
297 
298  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerAttachment(
299  OrthancPluginContext* context,
301  const OrthancPluginAttachment* attachment)
302  {
303  _OrthancPluginDatabaseAnswer params;
304  memset(&params, 0, sizeof(params));
305  params.database = database;
306  params.type = _OrthancPluginDatabaseAnswerType_Attachment;
307  params.valueGeneric = attachment;
308  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
309  }
310 
311  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerResource(
312  OrthancPluginContext* context,
314  int64_t id,
315  OrthancPluginResourceType resourceType)
316  {
317  _OrthancPluginDatabaseAnswer params;
318  memset(&params, 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, &params);
324  }
325 
326  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerMatchingResource(
327  OrthancPluginContext* context,
329  const OrthancPluginMatchingResource* match)
330  {
331  _OrthancPluginDatabaseAnswer params;
332  memset(&params, 0, sizeof(params));
333  params.database = database;
334  params.type = _OrthancPluginDatabaseAnswerType_MatchingResource;
335  params.valueGeneric = match;
336  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
337  }
338 
339  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerMetadata(
340  OrthancPluginContext* context,
342  int64_t resourceId,
343  int32_t type,
344  const char* value)
345  {
346  OrthancPluginResourcesContentMetadata metadata;
347  _OrthancPluginDatabaseAnswer params;
348  metadata.resource = resourceId;
349  metadata.metadata = type;
350  metadata.value = value;
351  memset(&params, 0, sizeof(params));
352  params.database = database;
353  params.type = _OrthancPluginDatabaseAnswerType_Metadata;
354  params.valueGeneric = &metadata;
355  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
356  }
357 
358  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedAttachment(
359  OrthancPluginContext* context,
361  const OrthancPluginAttachment* attachment)
362  {
363  _OrthancPluginDatabaseAnswer params;
364  memset(&params, 0, sizeof(params));
365  params.database = database;
366  params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
367  params.valueGeneric = attachment;
368  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
369  }
370 
371  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedResource(
372  OrthancPluginContext* context,
374  const char* publicId,
375  OrthancPluginResourceType resourceType)
376  {
377  _OrthancPluginDatabaseAnswer params;
378  memset(&params, 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, &params);
384  }
385 
386  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalRemainingAncestor(
387  OrthancPluginContext* context,
389  const char* ancestorId,
390  OrthancPluginResourceType ancestorType)
391  {
392  _OrthancPluginDatabaseAnswer params;
393  memset(&params, 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, &params);
399  }
400 
401 
402 
403 
404 
405  typedef struct
406  {
407  OrthancPluginErrorCode (*addAttachment) (
408  /* inputs */
409  void* payload,
410  int64_t id,
411  const OrthancPluginAttachment* attachment);
412 
413  OrthancPluginErrorCode (*attachChild) (
414  /* inputs */
415  void* payload,
416  int64_t parent,
417  int64_t child);
418 
419  OrthancPluginErrorCode (*clearChanges) (
420  /* inputs */
421  void* payload);
422 
423  OrthancPluginErrorCode (*clearExportedResources) (
424  /* inputs */
425  void* payload);
426 
427  OrthancPluginErrorCode (*createResource) (
428  /* outputs */
429  int64_t* id,
430  /* inputs */
431  void* payload,
432  const char* publicId,
433  OrthancPluginResourceType resourceType);
434 
435  OrthancPluginErrorCode (*deleteAttachment) (
436  /* inputs */
437  void* payload,
438  int64_t id,
439  int32_t contentType);
440 
441  OrthancPluginErrorCode (*deleteMetadata) (
442  /* inputs */
443  void* payload,
444  int64_t id,
445  int32_t metadataType);
446 
447  OrthancPluginErrorCode (*deleteResource) (
448  /* inputs */
449  void* payload,
450  int64_t id);
451 
452  /* Output: Use OrthancPluginDatabaseAnswerString() */
453  OrthancPluginErrorCode (*getAllPublicIds) (
454  /* outputs */
456  /* inputs */
457  void* payload,
458  OrthancPluginResourceType resourceType);
459 
460  /* Output: Use OrthancPluginDatabaseAnswerChange() and
461  * OrthancPluginDatabaseAnswerChangesDone() */
462  OrthancPluginErrorCode (*getChanges) (
463  /* outputs */
465  /* inputs */
466  void* payload,
467  int64_t since,
468  uint32_t maxResult);
469 
470  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
471  OrthancPluginErrorCode (*getChildrenInternalId) (
472  /* outputs */
474  /* inputs */
475  void* payload,
476  int64_t id);
477 
478  /* Output: Use OrthancPluginDatabaseAnswerString() */
479  OrthancPluginErrorCode (*getChildrenPublicId) (
480  /* outputs */
482  /* inputs */
483  void* payload,
484  int64_t id);
485 
486  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() and
487  * OrthancPluginDatabaseAnswerExportedResourcesDone() */
488  OrthancPluginErrorCode (*getExportedResources) (
489  /* outputs */
491  /* inputs */
492  void* payload,
493  int64_t since,
494  uint32_t maxResult);
495 
496  /* Output: Use OrthancPluginDatabaseAnswerChange() */
497  OrthancPluginErrorCode (*getLastChange) (
498  /* outputs */
500  /* inputs */
501  void* payload);
502 
503  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() */
504  OrthancPluginErrorCode (*getLastExportedResource) (
505  /* outputs */
507  /* inputs */
508  void* payload);
509 
510  /* Output: Use OrthancPluginDatabaseAnswerDicomTag() */
511  OrthancPluginErrorCode (*getMainDicomTags) (
512  /* outputs */
514  /* inputs */
515  void* payload,
516  int64_t id);
517 
518  /* Output: Use OrthancPluginDatabaseAnswerString() */
519  OrthancPluginErrorCode (*getPublicId) (
520  /* outputs */
522  /* inputs */
523  void* payload,
524  int64_t id);
525 
526  OrthancPluginErrorCode (*getResourceCount) (
527  /* outputs */
528  uint64_t* target,
529  /* inputs */
530  void* payload,
531  OrthancPluginResourceType resourceType);
532 
533  OrthancPluginErrorCode (*getResourceType) (
534  /* outputs */
535  OrthancPluginResourceType* resourceType,
536  /* inputs */
537  void* payload,
538  int64_t id);
539 
540  OrthancPluginErrorCode (*getTotalCompressedSize) (
541  /* outputs */
542  uint64_t* target,
543  /* inputs */
544  void* payload);
545 
546  OrthancPluginErrorCode (*getTotalUncompressedSize) (
547  /* outputs */
548  uint64_t* target,
549  /* inputs */
550  void* payload);
551 
552  OrthancPluginErrorCode (*isExistingResource) (
553  /* outputs */
554  int32_t* existing,
555  /* inputs */
556  void* payload,
557  int64_t id);
558 
559  OrthancPluginErrorCode (*isProtectedPatient) (
560  /* outputs */
561  int32_t* isProtected,
562  /* inputs */
563  void* payload,
564  int64_t id);
565 
566  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
567  OrthancPluginErrorCode (*listAvailableMetadata) (
568  /* outputs */
570  /* inputs */
571  void* payload,
572  int64_t id);
573 
574  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
575  OrthancPluginErrorCode (*listAvailableAttachments) (
576  /* outputs */
578  /* inputs */
579  void* payload,
580  int64_t id);
581 
582  OrthancPluginErrorCode (*logChange) (
583  /* inputs */
584  void* payload,
585  const OrthancPluginChange* change);
586 
587  OrthancPluginErrorCode (*logExportedResource) (
588  /* inputs */
589  void* payload,
590  const OrthancPluginExportedResource* exported);
591 
592  /* Output: Use OrthancPluginDatabaseAnswerAttachment() */
593  OrthancPluginErrorCode (*lookupAttachment) (
594  /* outputs */
596  /* inputs */
597  void* payload,
598  int64_t id,
599  int32_t contentType);
600 
601  /* Output: Use OrthancPluginDatabaseAnswerString() */
602  OrthancPluginErrorCode (*lookupGlobalProperty) (
603  /* outputs */
605  /* inputs */
606  void* payload,
607  int32_t property);
608 
609  /* Use "OrthancPluginDatabaseExtensions::lookupIdentifier3"
610  instead of this function as of Orthanc 0.9.5 (db v6), can be set to NULL.
611  Output: Use OrthancPluginDatabaseAnswerInt64() */
612  OrthancPluginErrorCode (*lookupIdentifier) (
613  /* outputs */
615  /* inputs */
616  void* payload,
617  const OrthancPluginDicomTag* tag);
618 
619  /* Unused starting with Orthanc 0.9.5 (db v6), can be set to NULL.
620  Output: Use OrthancPluginDatabaseAnswerInt64() */
621  OrthancPluginErrorCode (*lookupIdentifier2) (
622  /* outputs */
624  /* inputs */
625  void* payload,
626  const char* value);
627 
628  /* Output: Use OrthancPluginDatabaseAnswerString() */
629  OrthancPluginErrorCode (*lookupMetadata) (
630  /* outputs */
632  /* inputs */
633  void* payload,
634  int64_t id,
635  int32_t metadata);
636 
637  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
638  OrthancPluginErrorCode (*lookupParent) (
639  /* outputs */
641  /* inputs */
642  void* payload,
643  int64_t id);
644 
645  /* Output: Use OrthancPluginDatabaseAnswerResource() */
646  OrthancPluginErrorCode (*lookupResource) (
647  /* outputs */
649  /* inputs */
650  void* payload,
651  const char* publicId);
652 
653  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
654  OrthancPluginErrorCode (*selectPatientToRecycle) (
655  /* outputs */
657  /* inputs */
658  void* payload);
659 
660  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
661  OrthancPluginErrorCode (*selectPatientToRecycle2) (
662  /* outputs */
664  /* inputs */
665  void* payload,
666  int64_t patientIdToAvoid);
667 
668  OrthancPluginErrorCode (*setGlobalProperty) (
669  /* inputs */
670  void* payload,
671  int32_t property,
672  const char* value);
673 
674  OrthancPluginErrorCode (*setMainDicomTag) (
675  /* inputs */
676  void* payload,
677  int64_t id,
678  const OrthancPluginDicomTag* tag);
679 
680  OrthancPluginErrorCode (*setIdentifierTag) (
681  /* inputs */
682  void* payload,
683  int64_t id,
684  const OrthancPluginDicomTag* tag);
685 
686  OrthancPluginErrorCode (*setMetadata) (
687  /* inputs */
688  void* payload,
689  int64_t id,
690  int32_t metadata,
691  const char* value);
692 
693  OrthancPluginErrorCode (*setProtectedPatient) (
694  /* inputs */
695  void* payload,
696  int64_t id,
697  int32_t isProtected);
698 
699  OrthancPluginErrorCode (*startTransaction) (
700  /* inputs */
701  void* payload);
702 
703  OrthancPluginErrorCode (*rollbackTransaction) (
704  /* inputs */
705  void* payload);
706 
707  OrthancPluginErrorCode (*commitTransaction) (
708  /* inputs */
709  void* payload);
710 
711  OrthancPluginErrorCode (*open) (
712  /* inputs */
713  void* payload);
714 
715  OrthancPluginErrorCode (*close) (
716  /* inputs */
717  void* payload);
718 
719  } OrthancPluginDatabaseBackend;
720 
721 
722  typedef struct
723  {
728  /* Output: Use OrthancPluginDatabaseAnswerString() */
729  OrthancPluginErrorCode (*getAllPublicIdsWithLimit) (
730  /* outputs */
732  /* inputs */
733  void* payload,
734  OrthancPluginResourceType resourceType,
735  uint64_t since,
736  uint64_t limit);
737 
738  OrthancPluginErrorCode (*getDatabaseVersion) (
739  /* outputs */
740  uint32_t* version,
741  /* inputs */
742  void* payload);
743 
744  OrthancPluginErrorCode (*upgradeDatabase) (
745  /* inputs */
746  void* payload,
747  uint32_t targetVersion,
748  OrthancPluginStorageArea* storageArea);
749 
750  OrthancPluginErrorCode (*clearMainDicomTags) (
751  /* inputs */
752  void* payload,
753  int64_t id);
754 
755  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
756  OrthancPluginErrorCode (*getAllInternalIds) (
757  /* outputs */
759  /* inputs */
760  void* payload,
761  OrthancPluginResourceType resourceType);
762 
763  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
764  OrthancPluginErrorCode (*lookupIdentifier3) (
765  /* outputs */
767  /* inputs */
768  void* payload,
769  OrthancPluginResourceType resourceType,
770  const OrthancPluginDicomTag* tag,
772 
773 
778  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
779  OrthancPluginErrorCode (*lookupIdentifierRange) (
780  /* outputs */
782  /* inputs */
783  void* payload,
784  OrthancPluginResourceType resourceType,
785  uint16_t group,
786  uint16_t element,
787  const char* start,
788  const char* end);
789 
790 
795  /* Ouput: Use OrthancPluginDatabaseAnswerMatchingResource */
796  OrthancPluginErrorCode (*lookupResources) (
797  /* outputs */
799  /* inputs */
800  void* payload,
801  uint32_t constraintsCount,
802  const OrthancPluginDatabaseConstraint* constraints,
803  OrthancPluginResourceType queryLevel,
804  uint32_t limit,
805  uint8_t requestSomeInstance);
806 
807  OrthancPluginErrorCode (*createInstance) (
808  /* output */
809  OrthancPluginCreateInstanceResult* output,
810  /* inputs */
811  void* payload,
812  const char* hashPatient,
813  const char* hashStudy,
814  const char* hashSeries,
815  const char* hashInstance);
816 
817  OrthancPluginErrorCode (*setResourcesContent) (
818  /* inputs */
819  void* payload,
820  uint32_t countIdentifierTags,
821  const OrthancPluginResourcesContentTags* identifierTags,
822  uint32_t countMainDicomTags,
823  const OrthancPluginResourcesContentTags* mainDicomTags,
824  uint32_t countMetadata,
825  const OrthancPluginResourcesContentMetadata* metadata);
826 
827  /* Ouput: Use OrthancPluginDatabaseAnswerString */
828  OrthancPluginErrorCode (*getChildrenMetadata) (
829  /* outputs */
831  /* inputs */
832  void* payload,
833  int64_t resourceId,
834  int32_t metadata);
835 
836  OrthancPluginErrorCode (*getLastChangeIndex) (
837  /* outputs */
838  int64_t* target,
839  /* inputs */
840  void* payload);
841 
842  OrthancPluginErrorCode (*tagMostRecentPatient) (
843  /* inputs */
844  void* payload,
845  int64_t patientId);
846 
847 
852  /* Ouput: Use OrthancPluginDatabaseAnswerMetadata */
853  OrthancPluginErrorCode (*getAllMetadata) (
854  /* outputs */
856  /* inputs */
857  void* payload,
858  int64_t resourceId);
859 
860  /* Ouput: Use OrthancPluginDatabaseAnswerString to send
861  the public ID of the parent (if the resource is not a patient) */
862  OrthancPluginErrorCode (*lookupResourceAndParent) (
863  /* outputs */
865  uint8_t* isExisting,
866  int64_t* id,
868 
869  /* inputs */
870  void* payload,
871  const char* publicId);
872 
873  } OrthancPluginDatabaseExtensions;
874 
875 /*<! @endcond */
876 
877 
878  typedef struct
879  {
881  const OrthancPluginDatabaseBackend* backend;
882  void* payload;
883  } _OrthancPluginRegisterDatabaseBackend;
884 
897  OrthancPluginContext* context,
898  const OrthancPluginDatabaseBackend* backend,
899  void* payload)
900  {
901  OrthancPluginDatabaseContext* result = NULL;
902  _OrthancPluginRegisterDatabaseBackend params;
903 
904  if (sizeof(int32_t) != sizeof(_OrthancPluginDatabaseAnswerType))
905  {
906  return NULL;
907  }
908 
909  memset(&params, 0, sizeof(params));
910  params.backend = backend;
911  params.result = &result;
912  params.payload = payload;
913 
914  if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, &params) ||
915  result == NULL)
916  {
917  /* Error */
918  return NULL;
919  }
920  else
921  {
922  return result;
923  }
924  }
925 
926 
927  typedef struct
928  {
930  const OrthancPluginDatabaseBackend* backend;
931  void* payload;
932  const OrthancPluginDatabaseExtensions* extensions;
933  uint32_t extensionsSize;
934  } _OrthancPluginRegisterDatabaseBackendV2;
935 
936 
948  OrthancPluginContext* context,
949  const OrthancPluginDatabaseBackend* backend,
950  const OrthancPluginDatabaseExtensions* extensions,
951  void* payload)
952  {
953  OrthancPluginDatabaseContext* result = NULL;
954  _OrthancPluginRegisterDatabaseBackendV2 params;
955 
956  if (sizeof(int32_t) != sizeof(_OrthancPluginDatabaseAnswerType))
957  {
958  return NULL;
959  }
960 
961  memset(&params, 0, sizeof(params));
962  params.backend = backend;
963  params.result = &result;
964  params.payload = payload;
965  params.extensions = extensions;
966  params.extensionsSize = sizeof(OrthancPluginDatabaseExtensions);
967 
968  if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackendV2, &params) ||
969  result == NULL)
970  {
971  /* Error */
972  return NULL;
973  }
974  else
975  {
976  return result;
977  }
978  }
979 
980 
981 #ifdef __cplusplus
982 }
983 #endif
984 
985 
OrthancPluginErrorCode
Definition: OrthancCPlugin.h:203
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:986
OrthancPluginConstraintType
Definition: OrthancCPlugin.h:854
OrthancPluginResourceType
Definition: OrthancCPlugin.h:678
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
OrthancPluginIdentifierConstraint
Definition: OrthancCPlugin.h:839