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