Orthanc Plugin SDK
Documentation of the plugin interface of Orthanc
OrthancCDatabasePlugin.h
1 
38 #pragma once
39 
40 #include "OrthancCPlugin.h"
41 
42 
45 #ifdef __cplusplus
46 extern "C"
47 {
48 #endif
49 
50  typedef struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext;
51 
52 
53  typedef enum
54  {
55  _OrthancPluginDatabaseAnswerType_None = 0,
56 
57  /* Events */
58  _OrthancPluginDatabaseAnswerType_DeletedAttachment = 1,
59  _OrthancPluginDatabaseAnswerType_DeletedResource = 2,
60  _OrthancPluginDatabaseAnswerType_RemainingAncestor = 3,
61 
62  /* Return value */
63  _OrthancPluginDatabaseAnswerType_Attachment = 10,
64  _OrthancPluginDatabaseAnswerType_Change = 11,
65  _OrthancPluginDatabaseAnswerType_DicomTag = 12,
66  _OrthancPluginDatabaseAnswerType_ExportedResource = 13,
67  _OrthancPluginDatabaseAnswerType_Int32 = 14,
68  _OrthancPluginDatabaseAnswerType_Int64 = 15,
69  _OrthancPluginDatabaseAnswerType_Resource = 16,
70  _OrthancPluginDatabaseAnswerType_String = 17
71  } _OrthancPluginDatabaseAnswerType;
72 
73 
74  typedef struct
75  {
76  const char* uuid;
77  int32_t contentType;
78  uint64_t uncompressedSize;
79  const char* uncompressedHash;
80  int32_t compressionType;
81  uint64_t compressedSize;
82  const char* compressedHash;
84 
85  typedef struct
86  {
87  uint16_t group;
88  uint16_t element;
89  const char* value;
91 
92  typedef struct
93  {
94  int64_t seq;
95  int32_t changeType;
96  OrthancPluginResourceType resourceType;
97  const char* publicId;
98  const char* date;
100 
101  typedef struct
102  {
103  int64_t seq;
104  OrthancPluginResourceType resourceType;
105  const char* publicId;
106  const char* modality;
107  const char* date;
108  const char* patientId;
109  const char* studyInstanceUid;
110  const char* seriesInstanceUid;
111  const char* sopInstanceUid;
113 
114 
115  typedef struct
116  {
118  _OrthancPluginDatabaseAnswerType type;
119  int32_t valueInt32;
120  uint32_t valueUint32;
121  int64_t valueInt64;
122  const char *valueString;
123  const void *valueGeneric;
124  } _OrthancPluginDatabaseAnswer;
125 
126  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerString(
127  OrthancPluginContext* context,
129  const char* value)
130  {
131  _OrthancPluginDatabaseAnswer params;
132  memset(&params, 0, sizeof(params));
133  params.database = database;
134  params.type = _OrthancPluginDatabaseAnswerType_String;
135  params.valueString = value;
136  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
137  }
138 
139  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChange(
140  OrthancPluginContext* context,
142  const OrthancPluginChange* change)
143  {
144  _OrthancPluginDatabaseAnswer params;
145  memset(&params, 0, sizeof(params));
146 
147  params.database = database;
148  params.type = _OrthancPluginDatabaseAnswerType_Change;
149  params.valueUint32 = 0;
150  params.valueGeneric = change;
151 
152  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
153  }
154 
155  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChangesDone(
156  OrthancPluginContext* context,
158  {
159  _OrthancPluginDatabaseAnswer params;
160  memset(&params, 0, sizeof(params));
161 
162  params.database = database;
163  params.type = _OrthancPluginDatabaseAnswerType_Change;
164  params.valueUint32 = 1;
165  params.valueGeneric = NULL;
166 
167  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
168  }
169 
170  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt32(
171  OrthancPluginContext* context,
173  int32_t value)
174  {
175  _OrthancPluginDatabaseAnswer params;
176  memset(&params, 0, sizeof(params));
177  params.database = database;
178  params.type = _OrthancPluginDatabaseAnswerType_Int32;
179  params.valueInt32 = value;
180  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
181  }
182 
183  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt64(
184  OrthancPluginContext* context,
186  int64_t value)
187  {
188  _OrthancPluginDatabaseAnswer params;
189  memset(&params, 0, sizeof(params));
190  params.database = database;
191  params.type = _OrthancPluginDatabaseAnswerType_Int64;
192  params.valueInt64 = value;
193  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
194  }
195 
196  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResource(
197  OrthancPluginContext* context,
199  const OrthancPluginExportedResource* exported)
200  {
201  _OrthancPluginDatabaseAnswer params;
202  memset(&params, 0, sizeof(params));
203 
204  params.database = database;
205  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
206  params.valueUint32 = 0;
207  params.valueGeneric = exported;
208  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
209  }
210 
211  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResourcesDone(
212  OrthancPluginContext* context,
214  {
215  _OrthancPluginDatabaseAnswer params;
216  memset(&params, 0, sizeof(params));
217 
218  params.database = database;
219  params.type = _OrthancPluginDatabaseAnswerType_ExportedResource;
220  params.valueUint32 = 1;
221  params.valueGeneric = NULL;
222  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
223  }
224 
225  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerDicomTag(
226  OrthancPluginContext* context,
228  const OrthancPluginDicomTag* tag)
229  {
230  _OrthancPluginDatabaseAnswer params;
231  memset(&params, 0, sizeof(params));
232  params.database = database;
233  params.type = _OrthancPluginDatabaseAnswerType_DicomTag;
234  params.valueGeneric = tag;
235  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
236  }
237 
238  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerAttachment(
239  OrthancPluginContext* context,
241  const OrthancPluginAttachment* attachment)
242  {
243  _OrthancPluginDatabaseAnswer params;
244  memset(&params, 0, sizeof(params));
245  params.database = database;
246  params.type = _OrthancPluginDatabaseAnswerType_Attachment;
247  params.valueGeneric = attachment;
248  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
249  }
250 
251  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerResource(
252  OrthancPluginContext* context,
254  int64_t id,
255  OrthancPluginResourceType resourceType)
256  {
257  _OrthancPluginDatabaseAnswer params;
258  memset(&params, 0, sizeof(params));
259  params.database = database;
260  params.type = _OrthancPluginDatabaseAnswerType_Resource;
261  params.valueInt64 = id;
262  params.valueInt32 = (int32_t) resourceType;
263  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
264  }
265 
266  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedAttachment(
267  OrthancPluginContext* context,
269  const OrthancPluginAttachment* attachment)
270  {
271  _OrthancPluginDatabaseAnswer params;
272  memset(&params, 0, sizeof(params));
273  params.database = database;
274  params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment;
275  params.valueGeneric = attachment;
276  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
277  }
278 
279  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedResource(
280  OrthancPluginContext* context,
282  const char* publicId,
283  OrthancPluginResourceType resourceType)
284  {
285  _OrthancPluginDatabaseAnswer params;
286  memset(&params, 0, sizeof(params));
287  params.database = database;
288  params.type = _OrthancPluginDatabaseAnswerType_DeletedResource;
289  params.valueString = publicId;
290  params.valueInt32 = (int32_t) resourceType;
291  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
292  }
293 
294  ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalRemainingAncestor(
295  OrthancPluginContext* context,
297  const char* ancestorId,
298  OrthancPluginResourceType ancestorType)
299  {
300  _OrthancPluginDatabaseAnswer params;
301  memset(&params, 0, sizeof(params));
302  params.database = database;
303  params.type = _OrthancPluginDatabaseAnswerType_RemainingAncestor;
304  params.valueString = ancestorId;
305  params.valueInt32 = (int32_t) ancestorType;
306  context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, &params);
307  }
308 
309 
310 
311 
312 
313  typedef struct
314  {
315  int32_t (*addAttachment) (
316  /* inputs */
317  void* payload,
318  int64_t id,
319  const OrthancPluginAttachment* attachment);
320 
321  int32_t (*attachChild) (
322  /* inputs */
323  void* payload,
324  int64_t parent,
325  int64_t child);
326 
327  int32_t (*clearChanges) (
328  /* inputs */
329  void* payload);
330 
331  int32_t (*clearExportedResources) (
332  /* inputs */
333  void* payload);
334 
335  int32_t (*createResource) (
336  /* outputs */
337  int64_t* id,
338  /* inputs */
339  void* payload,
340  const char* publicId,
341  OrthancPluginResourceType resourceType);
342 
343  int32_t (*deleteAttachment) (
344  /* inputs */
345  void* payload,
346  int64_t id,
347  int32_t contentType);
348 
349  int32_t (*deleteMetadata) (
350  /* inputs */
351  void* payload,
352  int64_t id,
353  int32_t metadataType);
354 
355  int32_t (*deleteResource) (
356  /* inputs */
357  void* payload,
358  int64_t id);
359 
360  /* Output: Use OrthancPluginDatabaseAnswerString() */
361  int32_t (*getAllPublicIds) (
362  /* outputs */
364  /* inputs */
365  void* payload,
366  OrthancPluginResourceType resourceType);
367 
368  /* Output: Use OrthancPluginDatabaseAnswerChange() and
369  * OrthancPluginDatabaseAnswerChangesDone() */
370  int32_t (*getChanges) (
371  /* outputs */
373  /* inputs */
374  void* payload,
375  int64_t since,
376  uint32_t maxResult);
377 
378  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
379  int32_t (*getChildrenInternalId) (
380  /* outputs */
382  /* inputs */
383  void* payload,
384  int64_t id);
385 
386  /* Output: Use OrthancPluginDatabaseAnswerString() */
387  int32_t (*getChildrenPublicId) (
388  /* outputs */
390  /* inputs */
391  void* payload,
392  int64_t id);
393 
394  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() and
395  * OrthancPluginDatabaseAnswerExportedResourcesDone() */
396  int32_t (*getExportedResources) (
397  /* outputs */
399  /* inputs */
400  void* payload,
401  int64_t since,
402  uint32_t maxResult);
403 
404  /* Output: Use OrthancPluginDatabaseAnswerChange() */
405  int32_t (*getLastChange) (
406  /* outputs */
408  /* inputs */
409  void* payload);
410 
411  /* Output: Use OrthancPluginDatabaseAnswerExportedResource() */
412  int32_t (*getLastExportedResource) (
413  /* outputs */
415  /* inputs */
416  void* payload);
417 
418  /* Output: Use OrthancPluginDatabaseAnswerDicomTag() */
419  int32_t (*getMainDicomTags) (
420  /* outputs */
422  /* inputs */
423  void* payload,
424  int64_t id);
425 
426  /* Output: Use OrthancPluginDatabaseAnswerString() */
427  int32_t (*getPublicId) (
428  /* outputs */
430  /* inputs */
431  void* payload,
432  int64_t id);
433 
434  int32_t (*getResourceCount) (
435  /* outputs */
436  uint64_t* target,
437  /* inputs */
438  void* payload,
439  OrthancPluginResourceType resourceType);
440 
441  int32_t (*getResourceType) (
442  /* outputs */
443  OrthancPluginResourceType* resourceType,
444  /* inputs */
445  void* payload,
446  int64_t id);
447 
448  int32_t (*getTotalCompressedSize) (
449  /* outputs */
450  uint64_t* target,
451  /* inputs */
452  void* payload);
453 
454  int32_t (*getTotalUncompressedSize) (
455  /* outputs */
456  uint64_t* target,
457  /* inputs */
458  void* payload);
459 
460  int32_t (*isExistingResource) (
461  /* outputs */
462  int32_t* existing,
463  /* inputs */
464  void* payload,
465  int64_t id);
466 
467  int32_t (*isProtectedPatient) (
468  /* outputs */
469  int32_t* isProtected,
470  /* inputs */
471  void* payload,
472  int64_t id);
473 
474  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
475  int32_t (*listAvailableMetadata) (
476  /* outputs */
478  /* inputs */
479  void* payload,
480  int64_t id);
481 
482  /* Output: Use OrthancPluginDatabaseAnswerInt32() */
483  int32_t (*listAvailableAttachments) (
484  /* outputs */
486  /* inputs */
487  void* payload,
488  int64_t id);
489 
490  int32_t (*logChange) (
491  /* inputs */
492  void* payload,
493  const OrthancPluginChange* change);
494 
495  int32_t (*logExportedResource) (
496  /* inputs */
497  void* payload,
498  const OrthancPluginExportedResource* exported);
499 
500  /* Output: Use OrthancPluginDatabaseAnswerAttachment() */
501  int32_t (*lookupAttachment) (
502  /* outputs */
504  /* inputs */
505  void* payload,
506  int64_t id,
507  int32_t contentType);
508 
509  /* Output: Use OrthancPluginDatabaseAnswerString() */
510  int32_t (*lookupGlobalProperty) (
511  /* outputs */
513  /* inputs */
514  void* payload,
515  int32_t property);
516 
517  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
518  int32_t (*lookupIdentifier) (
519  /* outputs */
521  /* inputs */
522  void* payload,
523  const OrthancPluginDicomTag* tag);
524 
525  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
526  int32_t (*lookupIdentifier2) (
527  /* outputs */
529  /* inputs */
530  void* payload,
531  const char* value);
532 
533  /* Output: Use OrthancPluginDatabaseAnswerString() */
534  int32_t (*lookupMetadata) (
535  /* outputs */
537  /* inputs */
538  void* payload,
539  int64_t id,
540  int32_t metadata);
541 
542  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
543  int32_t (*lookupParent) (
544  /* outputs */
546  /* inputs */
547  void* payload,
548  int64_t id);
549 
550  /* Output: Use OrthancPluginDatabaseAnswerResource() */
551  int32_t (*lookupResource) (
552  /* outputs */
554  /* inputs */
555  void* payload,
556  const char* publicId);
557 
558  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
559  int32_t (*selectPatientToRecycle) (
560  /* outputs */
562  /* inputs */
563  void* payload);
564 
565  /* Output: Use OrthancPluginDatabaseAnswerInt64() */
566  int32_t (*selectPatientToRecycle2) (
567  /* outputs */
569  /* inputs */
570  void* payload,
571  int64_t patientIdToAvoid);
572 
573  int32_t (*setGlobalProperty) (
574  /* inputs */
575  void* payload,
576  int32_t property,
577  const char* value);
578 
579  int32_t (*setMainDicomTag) (
580  /* inputs */
581  void* payload,
582  int64_t id,
583  const OrthancPluginDicomTag* tag);
584 
585  int32_t (*setIdentifierTag) (
586  /* inputs */
587  void* payload,
588  int64_t id,
589  const OrthancPluginDicomTag* tag);
590 
591  int32_t (*setMetadata) (
592  /* inputs */
593  void* payload,
594  int64_t id,
595  int32_t metadata,
596  const char* value);
597 
598  int32_t (*setProtectedPatient) (
599  /* inputs */
600  void* payload,
601  int64_t id,
602  int32_t isProtected);
603 
604  int32_t (*startTransaction) (
605  /* inputs */
606  void* payload);
607 
608  int32_t (*rollbackTransaction) (
609  /* inputs */
610  void* payload);
611 
612  int32_t (*commitTransaction) (
613  /* inputs */
614  void* payload);
615 
616  int32_t (*open) (
617  /* inputs */
618  void* payload);
619 
620  int32_t (*close) (
621  /* inputs */
622  void* payload);
623 
625 
626 
627 
628  typedef struct
629  {
631  const OrthancPluginDatabaseBackend* backend;
632  void* payload;
633  } _OrthancPluginRegisterDatabaseBackend;
634 
635  ORTHANC_PLUGIN_INLINE OrthancPluginDatabaseContext* OrthancPluginRegisterDatabaseBackend(
636  OrthancPluginContext* context,
637  const OrthancPluginDatabaseBackend* backend,
638  void* payload)
639  {
640  OrthancPluginDatabaseContext* result = NULL;
641 
642  _OrthancPluginRegisterDatabaseBackend params;
643  memset(&params, 0, sizeof(params));
644  params.backend = backend;
645  params.result = &result;
646  params.payload = payload;
647 
648  if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, &params) ||
649  result == NULL)
650  {
651  /* Error */
652  return NULL;
653  }
654  else
655  {
656  return result;
657  }
658  }
659 
660 
661 
662 #ifdef __cplusplus
663 }
664 #endif
665 
666 
Definition: OrthancCDatabasePlugin.h:92
OrthancPluginResourceType
Definition: OrthancCPlugin.h:384
Definition: OrthancCDatabasePlugin.h:85
struct _OrthancPluginContext_t OrthancPluginContext
Data structure that contains information about the Orthanc core.
Definition: OrthancCDatabasePlugin.h:101
Definition: OrthancCDatabasePlugin.h:313
Definition: OrthancCDatabasePlugin.h:74
struct _OrthancPluginDatabaseContext_t OrthancPluginDatabaseContext
Definition: OrthancCDatabasePlugin.h:50