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