Mercurial > hg > orthanc-databases
comparison Resources/Orthanc/Sdk-1.5.4/orthanc/OrthancCDatabasePlugin.h @ 123:121ab36c87bd
updating to Orthanc SDK 1.5.4
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 08 Feb 2019 17:41:38 +0100 |
parents | |
children | 4cd7e45b671e |
comparison
equal
deleted
inserted
replaced
121:0886da5b4816 | 123:121ab36c87bd |
---|---|
1 /** | |
2 * @ingroup CInterface | |
3 **/ | |
4 | |
5 /** | |
6 * Orthanc - A Lightweight, RESTful DICOM Store | |
7 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
8 * Department, University Hospital of Liege, Belgium | |
9 * Copyright (C) 2017-2019 Osimis S.A., Belgium | |
10 * | |
11 * This program is free software: you can redistribute it and/or | |
12 * modify it under the terms of the GNU General Public License as | |
13 * published by the Free Software Foundation, either version 3 of the | |
14 * License, or (at your option) any later version. | |
15 * | |
16 * In addition, as a special exception, the copyright holders of this | |
17 * program give permission to link the code of its release with the | |
18 * OpenSSL project's "OpenSSL" library (or with modified versions of it | |
19 * that use the same license as the "OpenSSL" library), and distribute | |
20 * the linked executables. You must obey the GNU General Public License | |
21 * in all respects for all of the code used other than "OpenSSL". If you | |
22 * modify file(s) with this exception, you may extend this exception to | |
23 * your version of the file(s), but you are not obligated to do so. If | |
24 * you do not wish to do so, delete this exception statement from your | |
25 * version. If you delete this exception statement from all source files | |
26 * in the program, then also delete it here. | |
27 * | |
28 * This program is distributed in the hope that it will be useful, but | |
29 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
30 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
31 * General Public License for more details. | |
32 * | |
33 * You should have received a copy of the GNU General Public License | |
34 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
35 **/ | |
36 | |
37 | |
38 | |
39 #pragma once | |
40 | |
41 #include "OrthancCPlugin.h" | |
42 | |
43 | |
44 /** @{ */ | |
45 | |
46 #ifdef __cplusplus | |
47 extern "C" | |
48 { | |
49 #endif | |
50 | |
51 | |
52 /** | |
53 * Opaque structure that represents the context of a custom database engine. | |
54 * @ingroup Callbacks | |
55 **/ | |
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 { | |
127 OrthancPluginResourceType level; | |
128 uint16_t tagGroup; | |
129 uint16_t tagElement; | |
130 uint8_t isIdentifierTag; | |
131 uint8_t isCaseSensitive; | |
132 uint8_t isMandatory; | |
133 OrthancPluginConstraintType type; | |
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 { | |
177 OrthancPluginDatabaseContext* database; | |
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, | |
188 OrthancPluginDatabaseContext* database, | |
189 const char* value) | |
190 { | |
191 _OrthancPluginDatabaseAnswer params; | |
192 memset(¶ms, 0, sizeof(params)); | |
193 params.database = database; | |
194 params.type = _OrthancPluginDatabaseAnswerType_String; | |
195 params.valueString = value; | |
196 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
197 } | |
198 | |
199 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChange( | |
200 OrthancPluginContext* context, | |
201 OrthancPluginDatabaseContext* database, | |
202 const OrthancPluginChange* change) | |
203 { | |
204 _OrthancPluginDatabaseAnswer params; | |
205 memset(¶ms, 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, ¶ms); | |
213 } | |
214 | |
215 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerChangesDone( | |
216 OrthancPluginContext* context, | |
217 OrthancPluginDatabaseContext* database) | |
218 { | |
219 _OrthancPluginDatabaseAnswer params; | |
220 memset(¶ms, 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, ¶ms); | |
228 } | |
229 | |
230 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt32( | |
231 OrthancPluginContext* context, | |
232 OrthancPluginDatabaseContext* database, | |
233 int32_t value) | |
234 { | |
235 _OrthancPluginDatabaseAnswer params; | |
236 memset(¶ms, 0, sizeof(params)); | |
237 params.database = database; | |
238 params.type = _OrthancPluginDatabaseAnswerType_Int32; | |
239 params.valueInt32 = value; | |
240 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
241 } | |
242 | |
243 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerInt64( | |
244 OrthancPluginContext* context, | |
245 OrthancPluginDatabaseContext* database, | |
246 int64_t value) | |
247 { | |
248 _OrthancPluginDatabaseAnswer params; | |
249 memset(¶ms, 0, sizeof(params)); | |
250 params.database = database; | |
251 params.type = _OrthancPluginDatabaseAnswerType_Int64; | |
252 params.valueInt64 = value; | |
253 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
254 } | |
255 | |
256 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResource( | |
257 OrthancPluginContext* context, | |
258 OrthancPluginDatabaseContext* database, | |
259 const OrthancPluginExportedResource* exported) | |
260 { | |
261 _OrthancPluginDatabaseAnswer params; | |
262 memset(¶ms, 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, ¶ms); | |
269 } | |
270 | |
271 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerExportedResourcesDone( | |
272 OrthancPluginContext* context, | |
273 OrthancPluginDatabaseContext* database) | |
274 { | |
275 _OrthancPluginDatabaseAnswer params; | |
276 memset(¶ms, 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, ¶ms); | |
283 } | |
284 | |
285 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerDicomTag( | |
286 OrthancPluginContext* context, | |
287 OrthancPluginDatabaseContext* database, | |
288 const OrthancPluginDicomTag* tag) | |
289 { | |
290 _OrthancPluginDatabaseAnswer params; | |
291 memset(¶ms, 0, sizeof(params)); | |
292 params.database = database; | |
293 params.type = _OrthancPluginDatabaseAnswerType_DicomTag; | |
294 params.valueGeneric = tag; | |
295 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
296 } | |
297 | |
298 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerAttachment( | |
299 OrthancPluginContext* context, | |
300 OrthancPluginDatabaseContext* database, | |
301 const OrthancPluginAttachment* attachment) | |
302 { | |
303 _OrthancPluginDatabaseAnswer params; | |
304 memset(¶ms, 0, sizeof(params)); | |
305 params.database = database; | |
306 params.type = _OrthancPluginDatabaseAnswerType_Attachment; | |
307 params.valueGeneric = attachment; | |
308 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
309 } | |
310 | |
311 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerResource( | |
312 OrthancPluginContext* context, | |
313 OrthancPluginDatabaseContext* database, | |
314 int64_t id, | |
315 OrthancPluginResourceType resourceType) | |
316 { | |
317 _OrthancPluginDatabaseAnswer params; | |
318 memset(¶ms, 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, ¶ms); | |
324 } | |
325 | |
326 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerMatchingResource( | |
327 OrthancPluginContext* context, | |
328 OrthancPluginDatabaseContext* database, | |
329 const OrthancPluginMatchingResource* match) | |
330 { | |
331 _OrthancPluginDatabaseAnswer params; | |
332 memset(¶ms, 0, sizeof(params)); | |
333 params.database = database; | |
334 params.type = _OrthancPluginDatabaseAnswerType_MatchingResource; | |
335 params.valueGeneric = match; | |
336 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
337 } | |
338 | |
339 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseAnswerMetadata( | |
340 OrthancPluginContext* context, | |
341 OrthancPluginDatabaseContext* database, | |
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(¶ms, 0, sizeof(params)); | |
352 params.database = database; | |
353 params.type = _OrthancPluginDatabaseAnswerType_Metadata; | |
354 params.valueGeneric = &metadata; | |
355 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
356 } | |
357 | |
358 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedAttachment( | |
359 OrthancPluginContext* context, | |
360 OrthancPluginDatabaseContext* database, | |
361 const OrthancPluginAttachment* attachment) | |
362 { | |
363 _OrthancPluginDatabaseAnswer params; | |
364 memset(¶ms, 0, sizeof(params)); | |
365 params.database = database; | |
366 params.type = _OrthancPluginDatabaseAnswerType_DeletedAttachment; | |
367 params.valueGeneric = attachment; | |
368 context->InvokeService(context, _OrthancPluginService_DatabaseAnswer, ¶ms); | |
369 } | |
370 | |
371 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalDeletedResource( | |
372 OrthancPluginContext* context, | |
373 OrthancPluginDatabaseContext* database, | |
374 const char* publicId, | |
375 OrthancPluginResourceType resourceType) | |
376 { | |
377 _OrthancPluginDatabaseAnswer params; | |
378 memset(¶ms, 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, ¶ms); | |
384 } | |
385 | |
386 ORTHANC_PLUGIN_INLINE void OrthancPluginDatabaseSignalRemainingAncestor( | |
387 OrthancPluginContext* context, | |
388 OrthancPluginDatabaseContext* database, | |
389 const char* ancestorId, | |
390 OrthancPluginResourceType ancestorType) | |
391 { | |
392 _OrthancPluginDatabaseAnswer params; | |
393 memset(¶ms, 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, ¶ms); | |
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 */ | |
455 OrthancPluginDatabaseContext* context, | |
456 /* inputs */ | |
457 void* payload, | |
458 OrthancPluginResourceType resourceType); | |
459 | |
460 /* Output: Use OrthancPluginDatabaseAnswerChange() and | |
461 * OrthancPluginDatabaseAnswerChangesDone() */ | |
462 OrthancPluginErrorCode (*getChanges) ( | |
463 /* outputs */ | |
464 OrthancPluginDatabaseContext* context, | |
465 /* inputs */ | |
466 void* payload, | |
467 int64_t since, | |
468 uint32_t maxResult); | |
469 | |
470 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
471 OrthancPluginErrorCode (*getChildrenInternalId) ( | |
472 /* outputs */ | |
473 OrthancPluginDatabaseContext* context, | |
474 /* inputs */ | |
475 void* payload, | |
476 int64_t id); | |
477 | |
478 /* Output: Use OrthancPluginDatabaseAnswerString() */ | |
479 OrthancPluginErrorCode (*getChildrenPublicId) ( | |
480 /* outputs */ | |
481 OrthancPluginDatabaseContext* context, | |
482 /* inputs */ | |
483 void* payload, | |
484 int64_t id); | |
485 | |
486 /* Output: Use OrthancPluginDatabaseAnswerExportedResource() and | |
487 * OrthancPluginDatabaseAnswerExportedResourcesDone() */ | |
488 OrthancPluginErrorCode (*getExportedResources) ( | |
489 /* outputs */ | |
490 OrthancPluginDatabaseContext* context, | |
491 /* inputs */ | |
492 void* payload, | |
493 int64_t since, | |
494 uint32_t maxResult); | |
495 | |
496 /* Output: Use OrthancPluginDatabaseAnswerChange() */ | |
497 OrthancPluginErrorCode (*getLastChange) ( | |
498 /* outputs */ | |
499 OrthancPluginDatabaseContext* context, | |
500 /* inputs */ | |
501 void* payload); | |
502 | |
503 /* Output: Use OrthancPluginDatabaseAnswerExportedResource() */ | |
504 OrthancPluginErrorCode (*getLastExportedResource) ( | |
505 /* outputs */ | |
506 OrthancPluginDatabaseContext* context, | |
507 /* inputs */ | |
508 void* payload); | |
509 | |
510 /* Output: Use OrthancPluginDatabaseAnswerDicomTag() */ | |
511 OrthancPluginErrorCode (*getMainDicomTags) ( | |
512 /* outputs */ | |
513 OrthancPluginDatabaseContext* context, | |
514 /* inputs */ | |
515 void* payload, | |
516 int64_t id); | |
517 | |
518 /* Output: Use OrthancPluginDatabaseAnswerString() */ | |
519 OrthancPluginErrorCode (*getPublicId) ( | |
520 /* outputs */ | |
521 OrthancPluginDatabaseContext* context, | |
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 */ | |
569 OrthancPluginDatabaseContext* context, | |
570 /* inputs */ | |
571 void* payload, | |
572 int64_t id); | |
573 | |
574 /* Output: Use OrthancPluginDatabaseAnswerInt32() */ | |
575 OrthancPluginErrorCode (*listAvailableAttachments) ( | |
576 /* outputs */ | |
577 OrthancPluginDatabaseContext* context, | |
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 */ | |
595 OrthancPluginDatabaseContext* context, | |
596 /* inputs */ | |
597 void* payload, | |
598 int64_t id, | |
599 int32_t contentType); | |
600 | |
601 /* Output: Use OrthancPluginDatabaseAnswerString() */ | |
602 OrthancPluginErrorCode (*lookupGlobalProperty) ( | |
603 /* outputs */ | |
604 OrthancPluginDatabaseContext* context, | |
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 */ | |
614 OrthancPluginDatabaseContext* context, | |
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 */ | |
623 OrthancPluginDatabaseContext* context, | |
624 /* inputs */ | |
625 void* payload, | |
626 const char* value); | |
627 | |
628 /* Output: Use OrthancPluginDatabaseAnswerString() */ | |
629 OrthancPluginErrorCode (*lookupMetadata) ( | |
630 /* outputs */ | |
631 OrthancPluginDatabaseContext* context, | |
632 /* inputs */ | |
633 void* payload, | |
634 int64_t id, | |
635 int32_t metadata); | |
636 | |
637 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
638 OrthancPluginErrorCode (*lookupParent) ( | |
639 /* outputs */ | |
640 OrthancPluginDatabaseContext* context, | |
641 /* inputs */ | |
642 void* payload, | |
643 int64_t id); | |
644 | |
645 /* Output: Use OrthancPluginDatabaseAnswerResource() */ | |
646 OrthancPluginErrorCode (*lookupResource) ( | |
647 /* outputs */ | |
648 OrthancPluginDatabaseContext* context, | |
649 /* inputs */ | |
650 void* payload, | |
651 const char* publicId); | |
652 | |
653 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
654 OrthancPluginErrorCode (*selectPatientToRecycle) ( | |
655 /* outputs */ | |
656 OrthancPluginDatabaseContext* context, | |
657 /* inputs */ | |
658 void* payload); | |
659 | |
660 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
661 OrthancPluginErrorCode (*selectPatientToRecycle2) ( | |
662 /* outputs */ | |
663 OrthancPluginDatabaseContext* context, | |
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 { | |
724 /** | |
725 * Base extensions since Orthanc 1.0.0 | |
726 **/ | |
727 | |
728 /* Output: Use OrthancPluginDatabaseAnswerString() */ | |
729 OrthancPluginErrorCode (*getAllPublicIdsWithLimit) ( | |
730 /* outputs */ | |
731 OrthancPluginDatabaseContext* context, | |
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 */ | |
758 OrthancPluginDatabaseContext* context, | |
759 /* inputs */ | |
760 void* payload, | |
761 OrthancPluginResourceType resourceType); | |
762 | |
763 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
764 OrthancPluginErrorCode (*lookupIdentifier3) ( | |
765 /* outputs */ | |
766 OrthancPluginDatabaseContext* context, | |
767 /* inputs */ | |
768 void* payload, | |
769 OrthancPluginResourceType resourceType, | |
770 const OrthancPluginDicomTag* tag, | |
771 OrthancPluginIdentifierConstraint constraint); | |
772 | |
773 | |
774 /** | |
775 * Extensions since Orthanc 1.4.0 | |
776 **/ | |
777 | |
778 /* Output: Use OrthancPluginDatabaseAnswerInt64() */ | |
779 OrthancPluginErrorCode (*lookupIdentifierRange) ( | |
780 /* outputs */ | |
781 OrthancPluginDatabaseContext* context, | |
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 | |
791 /** | |
792 * Extensions since Orthanc 1.5.2 | |
793 **/ | |
794 | |
795 /* Ouput: Use OrthancPluginDatabaseAnswerMatchingResource */ | |
796 OrthancPluginErrorCode (*lookupResources) ( | |
797 /* outputs */ | |
798 OrthancPluginDatabaseContext* context, | |
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 */ | |
830 OrthancPluginDatabaseContext* context, | |
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 | |
848 /** | |
849 * Extensions since Orthanc 1.5.4 | |
850 **/ | |
851 | |
852 /* Ouput: Use OrthancPluginDatabaseAnswerMetadata */ | |
853 OrthancPluginErrorCode (*getAllMetadata) ( | |
854 /* outputs */ | |
855 OrthancPluginDatabaseContext* context, | |
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 */ | |
864 OrthancPluginDatabaseContext* context, | |
865 uint8_t* isExisting, | |
866 int64_t* id, | |
867 OrthancPluginResourceType* type, | |
868 | |
869 /* inputs */ | |
870 void* payload, | |
871 const char* publicId); | |
872 | |
873 } OrthancPluginDatabaseExtensions; | |
874 | |
875 /*<! @endcond */ | |
876 | |
877 | |
878 typedef struct | |
879 { | |
880 OrthancPluginDatabaseContext** result; | |
881 const OrthancPluginDatabaseBackend* backend; | |
882 void* payload; | |
883 } _OrthancPluginRegisterDatabaseBackend; | |
884 | |
885 /** | |
886 * Register a custom database back-end (for legacy plugins). | |
887 * | |
888 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize(). | |
889 * @param backend The callbacks of the custom database engine. | |
890 * @param payload Pointer containing private information for the database engine. | |
891 * @return The context of the database engine (it must not be manually freed). | |
892 * @ingroup Callbacks | |
893 * @deprecated | |
894 * @see OrthancPluginRegisterDatabaseBackendV2 | |
895 **/ | |
896 ORTHANC_PLUGIN_INLINE OrthancPluginDatabaseContext* OrthancPluginRegisterDatabaseBackend( | |
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(¶ms, 0, sizeof(params)); | |
910 params.backend = backend; | |
911 params.result = &result; | |
912 params.payload = payload; | |
913 | |
914 if (context->InvokeService(context, _OrthancPluginService_RegisterDatabaseBackend, ¶ms) || | |
915 result == NULL) | |
916 { | |
917 /* Error */ | |
918 return NULL; | |
919 } | |
920 else | |
921 { | |
922 return result; | |
923 } | |
924 } | |
925 | |
926 | |
927 typedef struct | |
928 { | |
929 OrthancPluginDatabaseContext** result; | |
930 const OrthancPluginDatabaseBackend* backend; | |
931 void* payload; | |
932 const OrthancPluginDatabaseExtensions* extensions; | |
933 uint32_t extensionsSize; | |
934 } _OrthancPluginRegisterDatabaseBackendV2; | |
935 | |
936 | |
937 /** | |
938 * Register a custom database back-end. | |
939 * | |
940 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize(). | |
941 * @param backend The callbacks of the custom database engine. | |
942 * @param payload Pointer containing private information for the database engine. | |
943 * @param extensions Extensions to the base database SDK that was shipped until Orthanc 0.9.3. | |
944 * @return The context of the database engine (it must not be manually freed). | |
945 * @ingroup Callbacks | |
946 **/ | |
947 ORTHANC_PLUGIN_INLINE OrthancPluginDatabaseContext* OrthancPluginRegisterDatabaseBackendV2( | |
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(¶ms, 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, ¶ms) || | |
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 | |
986 /** @} */ | |
987 |