Mercurial > hg > orthanc-databases
annotate Framework/Plugins/OrthancCppDatabasePlugin.h @ 117:ca0ecd412988 OrthancMySQL-2.0
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 04 Feb 2019 16:03:17 +0100 |
parents | eb08ec14fb04 |
children | 260fc55f10cd 3424a54ca2ee |
rev | line source |
---|---|
0 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
67 | 5 * Copyright (C) 2017-2019 Osimis S.A., Belgium |
0 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
8 * modify it under the terms of the GNU Affero General Public License | |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Affero General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Affero General Public License | |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 **/ | |
20 | |
21 | |
22 | |
23 /** | |
24 * NOTE: Until Orthanc 1.4.0, this file was part of the Orthanc source | |
25 * distribution. This file is now part of "orthanc-databases", in | |
26 * order to uncouple its evolution from the Orthanc core. | |
27 **/ | |
28 | |
29 #pragma once | |
30 | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
31 #if HAS_ORTHANC_EXCEPTION != 1 |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
32 # error HAS_ORTHANC_EXCEPTION must be set to 1 |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
33 #endif |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
34 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
35 #if ORTHANC_ENABLE_PLUGINS != 1 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
36 # error ORTHANC_ENABLE_PLUGINS must be set to 1 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
37 #endif |
0 | 38 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
39 |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
40 #include <Core/OrthancException.h> |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
41 #include <OrthancServer/Search/DatabaseConstraint.h> |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
42 |
0 | 43 |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
44 |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
45 #define ORTHANC_PLUGINS_DATABASE_CATCH \ |
0 | 46 catch (::Orthanc::OrthancException& e) \ |
47 { \ | |
48 return static_cast<OrthancPluginErrorCode>(e.GetErrorCode()); \ | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
49 } \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
50 catch (::std::runtime_error& e) \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
51 { \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
52 LogError(backend, e); \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
53 return OrthancPluginErrorCode_DatabasePlugin; \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
54 } \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
55 catch (...) \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
56 { \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
57 backend->GetOutput().LogError("Native exception"); \ |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
58 return OrthancPluginErrorCode_DatabasePlugin; \ |
0 | 59 } |
60 | |
61 | |
62 #include <stdexcept> | |
63 #include <list> | |
64 #include <string> | |
65 | |
66 namespace OrthancPlugins | |
67 { | |
68 /** | |
69 * @ingroup Callbacks | |
70 **/ | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
71 class DatabaseBackendOutput : public boost::noncopyable |
0 | 72 { |
73 friend class DatabaseBackendAdapter; | |
74 | |
75 private: | |
76 enum AllowedAnswers | |
77 { | |
78 AllowedAnswers_All, | |
79 AllowedAnswers_None, | |
80 AllowedAnswers_Attachment, | |
81 AllowedAnswers_Change, | |
82 AllowedAnswers_DicomTag, | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
83 AllowedAnswers_ExportedResource, |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
84 AllowedAnswers_MatchingResource, |
117
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
85 AllowedAnswers_String, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
86 AllowedAnswers_Metadata |
0 | 87 }; |
88 | |
89 OrthancPluginContext* context_; | |
90 OrthancPluginDatabaseContext* database_; | |
91 AllowedAnswers allowedAnswers_; | |
92 | |
93 void SetAllowedAnswers(AllowedAnswers allowed) | |
94 { | |
95 allowedAnswers_ = allowed; | |
96 } | |
97 | |
98 public: | |
99 DatabaseBackendOutput(OrthancPluginContext* context, | |
100 OrthancPluginDatabaseContext* database) : | |
101 context_(context), | |
102 database_(database), | |
103 allowedAnswers_(AllowedAnswers_All /* for unit tests */) | |
104 { | |
105 } | |
106 | |
107 OrthancPluginContext* GetContext() | |
108 { | |
109 return context_; | |
110 } | |
111 | |
112 void LogError(const std::string& message) | |
113 { | |
114 OrthancPluginLogError(context_, message.c_str()); | |
115 } | |
116 | |
117 void LogWarning(const std::string& message) | |
118 { | |
119 OrthancPluginLogWarning(context_, message.c_str()); | |
120 } | |
121 | |
122 void LogInfo(const std::string& message) | |
123 { | |
124 OrthancPluginLogInfo(context_, message.c_str()); | |
125 } | |
126 | |
127 void SignalDeletedAttachment(const std::string& uuid, | |
128 int32_t contentType, | |
129 uint64_t uncompressedSize, | |
130 const std::string& uncompressedHash, | |
131 int32_t compressionType, | |
132 uint64_t compressedSize, | |
133 const std::string& compressedHash) | |
134 { | |
135 OrthancPluginAttachment attachment; | |
136 attachment.uuid = uuid.c_str(); | |
137 attachment.contentType = contentType; | |
138 attachment.uncompressedSize = uncompressedSize; | |
139 attachment.uncompressedHash = uncompressedHash.c_str(); | |
140 attachment.compressionType = compressionType; | |
141 attachment.compressedSize = compressedSize; | |
142 attachment.compressedHash = compressedHash.c_str(); | |
143 | |
144 OrthancPluginDatabaseSignalDeletedAttachment(context_, database_, &attachment); | |
145 } | |
146 | |
147 void SignalDeletedResource(const std::string& publicId, | |
148 OrthancPluginResourceType resourceType) | |
149 { | |
150 OrthancPluginDatabaseSignalDeletedResource(context_, database_, publicId.c_str(), resourceType); | |
151 } | |
152 | |
153 void SignalRemainingAncestor(const std::string& ancestorId, | |
154 OrthancPluginResourceType ancestorType) | |
155 { | |
156 OrthancPluginDatabaseSignalRemainingAncestor(context_, database_, ancestorId.c_str(), ancestorType); | |
157 } | |
158 | |
159 void AnswerAttachment(const std::string& uuid, | |
160 int32_t contentType, | |
161 uint64_t uncompressedSize, | |
162 const std::string& uncompressedHash, | |
163 int32_t compressionType, | |
164 uint64_t compressedSize, | |
165 const std::string& compressedHash) | |
166 { | |
167 if (allowedAnswers_ != AllowedAnswers_All && | |
168 allowedAnswers_ != AllowedAnswers_Attachment) | |
169 { | |
170 throw std::runtime_error("Cannot answer with an attachment in the current state"); | |
171 } | |
172 | |
173 OrthancPluginAttachment attachment; | |
174 attachment.uuid = uuid.c_str(); | |
175 attachment.contentType = contentType; | |
176 attachment.uncompressedSize = uncompressedSize; | |
177 attachment.uncompressedHash = uncompressedHash.c_str(); | |
178 attachment.compressionType = compressionType; | |
179 attachment.compressedSize = compressedSize; | |
180 attachment.compressedHash = compressedHash.c_str(); | |
181 | |
182 OrthancPluginDatabaseAnswerAttachment(context_, database_, &attachment); | |
183 } | |
184 | |
185 void AnswerChange(int64_t seq, | |
186 int32_t changeType, | |
187 OrthancPluginResourceType resourceType, | |
188 const std::string& publicId, | |
189 const std::string& date) | |
190 { | |
191 if (allowedAnswers_ != AllowedAnswers_All && | |
192 allowedAnswers_ != AllowedAnswers_Change) | |
193 { | |
194 throw std::runtime_error("Cannot answer with a change in the current state"); | |
195 } | |
196 | |
197 OrthancPluginChange change; | |
198 change.seq = seq; | |
199 change.changeType = changeType; | |
200 change.resourceType = resourceType; | |
201 change.publicId = publicId.c_str(); | |
202 change.date = date.c_str(); | |
203 | |
204 OrthancPluginDatabaseAnswerChange(context_, database_, &change); | |
205 } | |
206 | |
207 void AnswerDicomTag(uint16_t group, | |
208 uint16_t element, | |
209 const std::string& value) | |
210 { | |
211 if (allowedAnswers_ != AllowedAnswers_All && | |
212 allowedAnswers_ != AllowedAnswers_DicomTag) | |
213 { | |
214 throw std::runtime_error("Cannot answer with a DICOM tag in the current state"); | |
215 } | |
216 | |
217 OrthancPluginDicomTag tag; | |
218 tag.group = group; | |
219 tag.element = element; | |
220 tag.value = value.c_str(); | |
221 | |
222 OrthancPluginDatabaseAnswerDicomTag(context_, database_, &tag); | |
223 } | |
224 | |
225 void AnswerExportedResource(int64_t seq, | |
226 OrthancPluginResourceType resourceType, | |
227 const std::string& publicId, | |
228 const std::string& modality, | |
229 const std::string& date, | |
230 const std::string& patientId, | |
231 const std::string& studyInstanceUid, | |
232 const std::string& seriesInstanceUid, | |
233 const std::string& sopInstanceUid) | |
234 { | |
235 if (allowedAnswers_ != AllowedAnswers_All && | |
236 allowedAnswers_ != AllowedAnswers_ExportedResource) | |
237 { | |
238 throw std::runtime_error("Cannot answer with an exported resource in the current state"); | |
239 } | |
240 | |
241 OrthancPluginExportedResource exported; | |
242 exported.seq = seq; | |
243 exported.resourceType = resourceType; | |
244 exported.publicId = publicId.c_str(); | |
245 exported.modality = modality.c_str(); | |
246 exported.date = date.c_str(); | |
247 exported.patientId = patientId.c_str(); | |
248 exported.studyInstanceUid = studyInstanceUid.c_str(); | |
249 exported.seriesInstanceUid = seriesInstanceUid.c_str(); | |
250 exported.sopInstanceUid = sopInstanceUid.c_str(); | |
251 | |
252 OrthancPluginDatabaseAnswerExportedResource(context_, database_, &exported); | |
253 } | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
254 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
255 |
78 | 256 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
257 void AnswerMatchingResource(const std::string& resourceId) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
258 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
259 if (allowedAnswers_ != AllowedAnswers_All && |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
260 allowedAnswers_ != AllowedAnswers_MatchingResource) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
261 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
262 throw std::runtime_error("Cannot answer with an exported resource in the current state"); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
263 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
264 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
265 OrthancPluginMatchingResource match; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
266 match.resourceId = resourceId.c_str(); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
267 match.someInstanceId = NULL; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
268 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
269 OrthancPluginDatabaseAnswerMatchingResource(context_, database_, &match); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
270 } |
70
e6c13ddd26d9
all integration tests passing with LookupResources extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
69
diff
changeset
|
271 #endif |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
272 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
273 |
78 | 274 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
275 void AnswerMatchingResource(const std::string& resourceId, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
276 const std::string& someInstanceId) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
277 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
278 if (allowedAnswers_ != AllowedAnswers_All && |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
279 allowedAnswers_ != AllowedAnswers_MatchingResource) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
280 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
281 throw std::runtime_error("Cannot answer with an exported resource in the current state"); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
282 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
283 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
284 OrthancPluginMatchingResource match; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
285 match.resourceId = resourceId.c_str(); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
286 match.someInstanceId = someInstanceId.c_str(); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
287 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
288 OrthancPluginDatabaseAnswerMatchingResource(context_, database_, &match); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
289 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
290 #endif |
0 | 291 }; |
292 | |
293 | |
294 /** | |
295 * @ingroup Callbacks | |
296 **/ | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
297 class IDatabaseBackend : public boost::noncopyable |
0 | 298 { |
299 friend class DatabaseBackendAdapter; | |
300 | |
301 private: | |
302 DatabaseBackendOutput* output_; | |
303 | |
304 void Finalize() | |
305 { | |
306 if (output_ != NULL) | |
307 { | |
308 delete output_; | |
309 output_ = NULL; | |
310 } | |
311 } | |
312 | |
313 protected: | |
314 DatabaseBackendOutput& GetOutput() | |
315 { | |
316 return *output_; | |
317 } | |
318 | |
319 public: | |
320 IDatabaseBackend() : output_(NULL) | |
321 { | |
322 } | |
323 | |
324 virtual ~IDatabaseBackend() | |
325 { | |
326 Finalize(); | |
327 } | |
328 | |
329 // This takes the ownership | |
330 void RegisterOutput(DatabaseBackendOutput* output) | |
331 { | |
332 Finalize(); | |
333 output_ = output; | |
334 } | |
335 | |
336 virtual void Open() = 0; | |
337 | |
338 virtual void Close() = 0; | |
339 | |
340 virtual void AddAttachment(int64_t id, | |
341 const OrthancPluginAttachment& attachment) = 0; | |
342 | |
343 virtual void AttachChild(int64_t parent, | |
344 int64_t child) = 0; | |
345 | |
346 virtual void ClearChanges() = 0; | |
347 | |
348 virtual void ClearExportedResources() = 0; | |
349 | |
350 virtual int64_t CreateResource(const char* publicId, | |
351 OrthancPluginResourceType type) = 0; | |
352 | |
353 virtual void DeleteAttachment(int64_t id, | |
354 int32_t attachment) = 0; | |
355 | |
356 virtual void DeleteMetadata(int64_t id, | |
357 int32_t metadataType) = 0; | |
358 | |
359 virtual void DeleteResource(int64_t id) = 0; | |
360 | |
361 virtual void GetAllInternalIds(std::list<int64_t>& target, | |
362 OrthancPluginResourceType resourceType) = 0; | |
363 | |
364 virtual void GetAllPublicIds(std::list<std::string>& target, | |
365 OrthancPluginResourceType resourceType) = 0; | |
366 | |
367 virtual void GetAllPublicIds(std::list<std::string>& target, | |
368 OrthancPluginResourceType resourceType, | |
369 uint64_t since, | |
370 uint64_t limit) = 0; | |
371 | |
372 /* Use GetOutput().AnswerChange() */ | |
373 virtual void GetChanges(bool& done /*out*/, | |
374 int64_t since, | |
375 uint32_t maxResults) = 0; | |
376 | |
377 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, | |
378 int64_t id) = 0; | |
379 | |
380 virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/, | |
381 int64_t id) = 0; | |
382 | |
383 /* Use GetOutput().AnswerExportedResource() */ | |
384 virtual void GetExportedResources(bool& done /*out*/, | |
385 int64_t since, | |
386 uint32_t maxResults) = 0; | |
387 | |
388 /* Use GetOutput().AnswerChange() */ | |
389 virtual void GetLastChange() = 0; | |
390 | |
391 /* Use GetOutput().AnswerExportedResource() */ | |
392 virtual void GetLastExportedResource() = 0; | |
393 | |
394 /* Use GetOutput().AnswerDicomTag() */ | |
395 virtual void GetMainDicomTags(int64_t id) = 0; | |
396 | |
397 virtual std::string GetPublicId(int64_t resourceId) = 0; | |
398 | |
399 virtual uint64_t GetResourceCount(OrthancPluginResourceType resourceType) = 0; | |
400 | |
401 virtual OrthancPluginResourceType GetResourceType(int64_t resourceId) = 0; | |
402 | |
403 virtual uint64_t GetTotalCompressedSize() = 0; | |
404 | |
405 virtual uint64_t GetTotalUncompressedSize() = 0; | |
406 | |
407 virtual bool IsExistingResource(int64_t internalId) = 0; | |
408 | |
409 virtual bool IsProtectedPatient(int64_t internalId) = 0; | |
410 | |
411 virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/, | |
412 int64_t id) = 0; | |
413 | |
414 virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/, | |
415 int64_t id) = 0; | |
416 | |
417 virtual void LogChange(const OrthancPluginChange& change) = 0; | |
418 | |
419 virtual void LogExportedResource(const OrthancPluginExportedResource& resource) = 0; | |
420 | |
421 /* Use GetOutput().AnswerAttachment() */ | |
422 virtual bool LookupAttachment(int64_t id, | |
423 int32_t contentType) = 0; | |
424 | |
425 virtual bool LookupGlobalProperty(std::string& target /*out*/, | |
426 int32_t property) = 0; | |
427 | |
428 virtual void LookupIdentifier(std::list<int64_t>& target /*out*/, | |
429 OrthancPluginResourceType resourceType, | |
430 uint16_t group, | |
431 uint16_t element, | |
432 OrthancPluginIdentifierConstraint constraint, | |
433 const char* value) = 0; | |
434 | |
435 virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/, | |
436 OrthancPluginResourceType resourceType, | |
437 uint16_t group, | |
438 uint16_t element, | |
439 const char* start, | |
440 const char* end) = 0; | |
441 | |
442 virtual bool LookupMetadata(std::string& target /*out*/, | |
443 int64_t id, | |
444 int32_t metadataType) = 0; | |
445 | |
446 virtual bool LookupParent(int64_t& parentId /*out*/, | |
447 int64_t resourceId) = 0; | |
448 | |
449 virtual bool LookupResource(int64_t& id /*out*/, | |
450 OrthancPluginResourceType& type /*out*/, | |
451 const char* publicId) = 0; | |
452 | |
453 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/) = 0; | |
454 | |
455 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/, | |
456 int64_t patientIdToAvoid) = 0; | |
457 | |
458 virtual void SetGlobalProperty(int32_t property, | |
459 const char* value) = 0; | |
460 | |
461 virtual void SetMainDicomTag(int64_t id, | |
462 uint16_t group, | |
463 uint16_t element, | |
464 const char* value) = 0; | |
465 | |
466 virtual void SetIdentifierTag(int64_t id, | |
467 uint16_t group, | |
468 uint16_t element, | |
469 const char* value) = 0; | |
470 | |
471 virtual void SetMetadata(int64_t id, | |
472 int32_t metadataType, | |
473 const char* value) = 0; | |
474 | |
475 virtual void SetProtectedPatient(int64_t internalId, | |
476 bool isProtected) = 0; | |
477 | |
478 virtual void StartTransaction() = 0; | |
479 | |
480 virtual void RollbackTransaction() = 0; | |
481 | |
482 virtual void CommitTransaction() = 0; | |
483 | |
484 virtual uint32_t GetDatabaseVersion() = 0; | |
485 | |
486 /** | |
487 * Upgrade the database to the specified version of the database | |
488 * schema. The upgrade script is allowed to make calls to | |
489 * OrthancPluginReconstructMainDicomTags(). | |
490 **/ | |
491 virtual void UpgradeDatabase(uint32_t targetVersion, | |
492 OrthancPluginStorageArea* storageArea) = 0; | |
493 | |
494 virtual void ClearMainDicomTags(int64_t internalId) = 0; | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
495 |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
496 virtual bool HasCreateInstance() const |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
497 { |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
498 return false; |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
499 } |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
500 |
78 | 501 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
502 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
503 OrthancPluginResourceType queryLevel, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
504 uint32_t limit, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
505 bool requestSomeInstance) = 0; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
506 #endif |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
507 |
78 | 508 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
509 virtual void CreateInstance(OrthancPluginCreateInstanceResult& result, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
510 const char* hashPatient, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
511 const char* hashStudy, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
512 const char* hashSeries, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
513 const char* hashInstance) |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
514 { |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
515 throw std::runtime_error("Not implemented"); |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
516 } |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
517 #endif |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
518 |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
519 |
78 | 520 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
521 virtual void SetResourcesContent( |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
522 uint32_t countIdentifierTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
523 const OrthancPluginResourcesContentTags* identifierTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
524 uint32_t countMainDicomTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
525 const OrthancPluginResourcesContentTags* mainDicomTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
526 uint32_t countMetadata, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
527 const OrthancPluginResourcesContentMetadata* metadata) = 0; |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
528 #endif |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
529 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
530 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
531 virtual void GetChildrenMetadata(std::list<std::string>& target, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
532 int64_t resourceId, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
533 int32_t metadata) = 0; |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
534 |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
535 virtual int64_t GetLastChangeIndex() = 0; |
88
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
536 |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
537 virtual void TagMostRecentPatient(int64_t patientId) = 0; |
117
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
538 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
539 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
540 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
541 // NB: "parentPublicId" must be cleared if the resource has no parent |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
542 virtual bool LookupResourceAndParent(int64_t& id, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
543 OrthancPluginResourceType& type, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
544 std::string& parentPublicId, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
545 const char* publicId) = 0; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
546 # endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
547 #endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
548 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
549 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
550 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
551 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
552 int64_t id) = 0; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
553 # endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
554 #endif |
0 | 555 }; |
556 | |
557 | |
558 | |
559 /** | |
560 * @brief Bridge between C and C++ database engines. | |
561 * | |
562 * Class creating the bridge between the C low-level primitives for | |
563 * custom database engines, and the high-level IDatabaseBackend C++ | |
564 * interface. | |
565 * | |
566 * @ingroup Callbacks | |
567 **/ | |
568 class DatabaseBackendAdapter | |
569 { | |
570 private: | |
571 // This class cannot be instantiated | |
572 DatabaseBackendAdapter() | |
573 { | |
574 } | |
575 | |
576 static void LogError(IDatabaseBackend* backend, | |
577 const std::runtime_error& e) | |
578 { | |
579 backend->GetOutput().LogError("Exception in database back-end: " + std::string(e.what())); | |
580 } | |
581 | |
582 | |
583 static OrthancPluginErrorCode AddAttachment(void* payload, | |
584 int64_t id, | |
585 const OrthancPluginAttachment* attachment) | |
586 { | |
587 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
588 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
589 | |
590 try | |
591 { | |
592 backend->AddAttachment(id, *attachment); | |
593 return OrthancPluginErrorCode_Success; | |
594 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
595 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 596 } |
597 | |
598 | |
599 static OrthancPluginErrorCode AttachChild(void* payload, | |
600 int64_t parent, | |
601 int64_t child) | |
602 { | |
603 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
604 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
605 | |
606 try | |
607 { | |
608 backend->AttachChild(parent, child); | |
609 return OrthancPluginErrorCode_Success; | |
610 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
611 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 612 } |
613 | |
614 | |
615 static OrthancPluginErrorCode ClearChanges(void* payload) | |
616 { | |
617 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
618 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
619 | |
620 try | |
621 { | |
622 backend->ClearChanges(); | |
623 return OrthancPluginErrorCode_Success; | |
624 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
625 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 626 } |
627 | |
628 | |
629 static OrthancPluginErrorCode ClearExportedResources(void* payload) | |
630 { | |
631 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
632 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
633 | |
634 try | |
635 { | |
636 backend->ClearExportedResources(); | |
637 return OrthancPluginErrorCode_Success; | |
638 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
639 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 640 } |
641 | |
642 | |
643 static OrthancPluginErrorCode CreateResource(int64_t* id, | |
644 void* payload, | |
645 const char* publicId, | |
646 OrthancPluginResourceType resourceType) | |
647 { | |
648 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
649 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
650 | |
651 try | |
652 { | |
653 *id = backend->CreateResource(publicId, resourceType); | |
654 return OrthancPluginErrorCode_Success; | |
655 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
656 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 657 } |
658 | |
659 | |
660 static OrthancPluginErrorCode DeleteAttachment(void* payload, | |
661 int64_t id, | |
662 int32_t contentType) | |
663 { | |
664 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
665 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
666 | |
667 try | |
668 { | |
669 backend->DeleteAttachment(id, contentType); | |
670 return OrthancPluginErrorCode_Success; | |
671 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
672 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 673 } |
674 | |
675 | |
676 static OrthancPluginErrorCode DeleteMetadata(void* payload, | |
677 int64_t id, | |
678 int32_t metadataType) | |
679 { | |
680 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
681 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
682 | |
683 try | |
684 { | |
685 backend->DeleteMetadata(id, metadataType); | |
686 return OrthancPluginErrorCode_Success; | |
687 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
688 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 689 } |
690 | |
691 | |
692 static OrthancPluginErrorCode DeleteResource(void* payload, | |
693 int64_t id) | |
694 { | |
695 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
696 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
697 | |
698 try | |
699 { | |
700 backend->DeleteResource(id); | |
701 return OrthancPluginErrorCode_Success; | |
702 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
703 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 704 } |
705 | |
706 | |
707 static OrthancPluginErrorCode GetAllInternalIds(OrthancPluginDatabaseContext* context, | |
708 void* payload, | |
709 OrthancPluginResourceType resourceType) | |
710 { | |
711 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
712 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
713 | |
714 try | |
715 { | |
716 std::list<int64_t> target; | |
717 backend->GetAllInternalIds(target, resourceType); | |
718 | |
719 for (std::list<int64_t>::const_iterator | |
720 it = target.begin(); it != target.end(); ++it) | |
721 { | |
722 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
723 backend->GetOutput().database_, *it); | |
724 } | |
725 | |
726 return OrthancPluginErrorCode_Success; | |
727 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
728 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 729 } |
730 | |
731 | |
732 static OrthancPluginErrorCode GetAllPublicIds(OrthancPluginDatabaseContext* context, | |
733 void* payload, | |
734 OrthancPluginResourceType resourceType) | |
735 { | |
736 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
737 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
738 | |
739 try | |
740 { | |
741 std::list<std::string> ids; | |
742 backend->GetAllPublicIds(ids, resourceType); | |
743 | |
744 for (std::list<std::string>::const_iterator | |
745 it = ids.begin(); it != ids.end(); ++it) | |
746 { | |
747 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
748 backend->GetOutput().database_, | |
749 it->c_str()); | |
750 } | |
751 | |
752 return OrthancPluginErrorCode_Success; | |
753 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
754 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 755 } |
756 | |
757 | |
758 static OrthancPluginErrorCode GetAllPublicIdsWithLimit(OrthancPluginDatabaseContext* context, | |
759 void* payload, | |
760 OrthancPluginResourceType resourceType, | |
761 uint64_t since, | |
762 uint64_t limit) | |
763 { | |
764 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
765 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
766 | |
767 try | |
768 { | |
769 std::list<std::string> ids; | |
770 backend->GetAllPublicIds(ids, resourceType, since, limit); | |
771 | |
772 for (std::list<std::string>::const_iterator | |
773 it = ids.begin(); it != ids.end(); ++it) | |
774 { | |
775 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
776 backend->GetOutput().database_, | |
777 it->c_str()); | |
778 } | |
779 | |
780 return OrthancPluginErrorCode_Success; | |
781 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
782 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 783 } |
784 | |
785 | |
786 static OrthancPluginErrorCode GetChanges(OrthancPluginDatabaseContext* context, | |
787 void* payload, | |
788 int64_t since, | |
789 uint32_t maxResult) | |
790 { | |
791 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
792 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Change); | |
793 | |
794 try | |
795 { | |
796 bool done; | |
797 backend->GetChanges(done, since, maxResult); | |
798 | |
799 if (done) | |
800 { | |
801 OrthancPluginDatabaseAnswerChangesDone(backend->GetOutput().context_, | |
802 backend->GetOutput().database_); | |
803 } | |
804 | |
805 return OrthancPluginErrorCode_Success; | |
806 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
807 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 808 } |
809 | |
810 | |
811 static OrthancPluginErrorCode GetChildrenInternalId(OrthancPluginDatabaseContext* context, | |
812 void* payload, | |
813 int64_t id) | |
814 { | |
815 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
816 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
817 | |
818 try | |
819 { | |
820 std::list<int64_t> target; | |
821 backend->GetChildrenInternalId(target, id); | |
822 | |
823 for (std::list<int64_t>::const_iterator | |
824 it = target.begin(); it != target.end(); ++it) | |
825 { | |
826 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
827 backend->GetOutput().database_, *it); | |
828 } | |
829 | |
830 return OrthancPluginErrorCode_Success; | |
831 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
832 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 833 } |
834 | |
835 | |
836 static OrthancPluginErrorCode GetChildrenPublicId(OrthancPluginDatabaseContext* context, | |
837 void* payload, | |
838 int64_t id) | |
839 { | |
840 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
841 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
842 | |
843 try | |
844 { | |
845 std::list<std::string> ids; | |
846 backend->GetChildrenPublicId(ids, id); | |
847 | |
848 for (std::list<std::string>::const_iterator | |
849 it = ids.begin(); it != ids.end(); ++it) | |
850 { | |
851 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
852 backend->GetOutput().database_, | |
853 it->c_str()); | |
854 } | |
855 | |
856 return OrthancPluginErrorCode_Success; | |
857 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
858 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 859 } |
860 | |
861 | |
862 static OrthancPluginErrorCode GetExportedResources(OrthancPluginDatabaseContext* context, | |
863 void* payload, | |
864 int64_t since, | |
865 uint32_t maxResult) | |
866 { | |
867 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
868 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_ExportedResource); | |
869 | |
870 try | |
871 { | |
872 bool done; | |
873 backend->GetExportedResources(done, since, maxResult); | |
874 | |
875 if (done) | |
876 { | |
877 OrthancPluginDatabaseAnswerExportedResourcesDone(backend->GetOutput().context_, | |
878 backend->GetOutput().database_); | |
879 } | |
880 return OrthancPluginErrorCode_Success; | |
881 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
882 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 883 } |
884 | |
885 | |
886 static OrthancPluginErrorCode GetLastChange(OrthancPluginDatabaseContext* context, | |
887 void* payload) | |
888 { | |
889 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
890 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Change); | |
891 | |
892 try | |
893 { | |
894 backend->GetLastChange(); | |
895 return OrthancPluginErrorCode_Success; | |
896 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
897 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 898 } |
899 | |
900 | |
901 static OrthancPluginErrorCode GetLastExportedResource(OrthancPluginDatabaseContext* context, | |
902 void* payload) | |
903 { | |
904 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
905 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_ExportedResource); | |
906 | |
907 try | |
908 { | |
909 backend->GetLastExportedResource(); | |
910 return OrthancPluginErrorCode_Success; | |
911 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
912 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 913 } |
914 | |
915 | |
916 static OrthancPluginErrorCode GetMainDicomTags(OrthancPluginDatabaseContext* context, | |
917 void* payload, | |
918 int64_t id) | |
919 { | |
920 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
921 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_DicomTag); | |
922 | |
923 try | |
924 { | |
925 backend->GetMainDicomTags(id); | |
926 return OrthancPluginErrorCode_Success; | |
927 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
928 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 929 } |
930 | |
931 | |
932 static OrthancPluginErrorCode GetPublicId(OrthancPluginDatabaseContext* context, | |
933 void* payload, | |
934 int64_t id) | |
935 { | |
936 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
937 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
938 | |
939 try | |
940 { | |
941 std::string s = backend->GetPublicId(id); | |
942 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
943 backend->GetOutput().database_, | |
944 s.c_str()); | |
945 | |
946 return OrthancPluginErrorCode_Success; | |
947 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
948 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 949 } |
950 | |
951 | |
952 static OrthancPluginErrorCode GetResourceCount(uint64_t* target, | |
953 void* payload, | |
954 OrthancPluginResourceType resourceType) | |
955 { | |
956 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
957 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
958 | |
959 try | |
960 { | |
961 *target = backend->GetResourceCount(resourceType); | |
962 return OrthancPluginErrorCode_Success; | |
963 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
964 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 965 } |
966 | |
967 | |
968 static OrthancPluginErrorCode GetResourceType(OrthancPluginResourceType* resourceType, | |
969 void* payload, | |
970 int64_t id) | |
971 { | |
972 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
973 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
974 | |
975 try | |
976 { | |
977 *resourceType = backend->GetResourceType(id); | |
978 return OrthancPluginErrorCode_Success; | |
979 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
980 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 981 } |
982 | |
983 | |
984 static OrthancPluginErrorCode GetTotalCompressedSize(uint64_t* target, | |
985 void* payload) | |
986 { | |
987 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
988 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
989 | |
990 try | |
991 { | |
992 *target = backend->GetTotalCompressedSize(); | |
993 return OrthancPluginErrorCode_Success; | |
994 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
995 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 996 } |
997 | |
998 | |
999 static OrthancPluginErrorCode GetTotalUncompressedSize(uint64_t* target, | |
1000 void* payload) | |
1001 { | |
1002 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1003 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1004 | |
1005 try | |
1006 { | |
1007 *target = backend->GetTotalUncompressedSize(); | |
1008 return OrthancPluginErrorCode_Success; | |
1009 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1010 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1011 } |
1012 | |
1013 | |
1014 static OrthancPluginErrorCode IsExistingResource(int32_t* existing, | |
1015 void* payload, | |
1016 int64_t id) | |
1017 { | |
1018 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1019 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1020 | |
1021 try | |
1022 { | |
1023 *existing = backend->IsExistingResource(id); | |
1024 return OrthancPluginErrorCode_Success; | |
1025 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1026 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1027 } |
1028 | |
1029 | |
1030 static OrthancPluginErrorCode IsProtectedPatient(int32_t* isProtected, | |
1031 void* payload, | |
1032 int64_t id) | |
1033 { | |
1034 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1035 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1036 | |
1037 try | |
1038 { | |
1039 *isProtected = backend->IsProtectedPatient(id); | |
1040 return OrthancPluginErrorCode_Success; | |
1041 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1042 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1043 } |
1044 | |
1045 | |
1046 static OrthancPluginErrorCode ListAvailableMetadata(OrthancPluginDatabaseContext* context, | |
1047 void* payload, | |
1048 int64_t id) | |
1049 { | |
1050 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1051 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1052 | |
1053 try | |
1054 { | |
1055 std::list<int32_t> target; | |
1056 backend->ListAvailableMetadata(target, id); | |
1057 | |
1058 for (std::list<int32_t>::const_iterator | |
1059 it = target.begin(); it != target.end(); ++it) | |
1060 { | |
1061 OrthancPluginDatabaseAnswerInt32(backend->GetOutput().context_, | |
1062 backend->GetOutput().database_, | |
1063 *it); | |
1064 } | |
1065 | |
1066 return OrthancPluginErrorCode_Success; | |
1067 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1068 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1069 } |
1070 | |
1071 | |
1072 static OrthancPluginErrorCode ListAvailableAttachments(OrthancPluginDatabaseContext* context, | |
1073 void* payload, | |
1074 int64_t id) | |
1075 { | |
1076 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1077 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1078 | |
1079 try | |
1080 { | |
1081 std::list<int32_t> target; | |
1082 backend->ListAvailableAttachments(target, id); | |
1083 | |
1084 for (std::list<int32_t>::const_iterator | |
1085 it = target.begin(); it != target.end(); ++it) | |
1086 { | |
1087 OrthancPluginDatabaseAnswerInt32(backend->GetOutput().context_, | |
1088 backend->GetOutput().database_, | |
1089 *it); | |
1090 } | |
1091 | |
1092 return OrthancPluginErrorCode_Success; | |
1093 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1094 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1095 } |
1096 | |
1097 | |
1098 static OrthancPluginErrorCode LogChange(void* payload, | |
1099 const OrthancPluginChange* change) | |
1100 { | |
1101 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1102 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1103 | |
1104 try | |
1105 { | |
1106 backend->LogChange(*change); | |
1107 return OrthancPluginErrorCode_Success; | |
1108 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1109 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1110 } |
1111 | |
1112 | |
1113 static OrthancPluginErrorCode LogExportedResource(void* payload, | |
1114 const OrthancPluginExportedResource* exported) | |
1115 { | |
1116 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1117 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1118 | |
1119 try | |
1120 { | |
1121 backend->LogExportedResource(*exported); | |
1122 return OrthancPluginErrorCode_Success; | |
1123 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1124 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1125 } |
1126 | |
1127 | |
1128 static OrthancPluginErrorCode LookupAttachment(OrthancPluginDatabaseContext* context, | |
1129 void* payload, | |
1130 int64_t id, | |
1131 int32_t contentType) | |
1132 { | |
1133 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1134 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Attachment); | |
1135 | |
1136 try | |
1137 { | |
1138 backend->LookupAttachment(id, contentType); | |
1139 return OrthancPluginErrorCode_Success; | |
1140 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1141 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1142 } |
1143 | |
1144 | |
1145 static OrthancPluginErrorCode LookupGlobalProperty(OrthancPluginDatabaseContext* context, | |
1146 void* payload, | |
1147 int32_t property) | |
1148 { | |
1149 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1150 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1151 | |
1152 try | |
1153 { | |
1154 std::string s; | |
1155 if (backend->LookupGlobalProperty(s, property)) | |
1156 { | |
1157 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
1158 backend->GetOutput().database_, | |
1159 s.c_str()); | |
1160 } | |
1161 | |
1162 return OrthancPluginErrorCode_Success; | |
1163 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1164 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1165 } |
1166 | |
1167 | |
1168 static OrthancPluginErrorCode LookupIdentifier3(OrthancPluginDatabaseContext* context, | |
1169 void* payload, | |
1170 OrthancPluginResourceType resourceType, | |
1171 const OrthancPluginDicomTag* tag, | |
1172 OrthancPluginIdentifierConstraint constraint) | |
1173 { | |
1174 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1175 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1176 | |
1177 try | |
1178 { | |
1179 std::list<int64_t> target; | |
1180 backend->LookupIdentifier(target, resourceType, tag->group, tag->element, constraint, tag->value); | |
1181 | |
1182 for (std::list<int64_t>::const_iterator | |
1183 it = target.begin(); it != target.end(); ++it) | |
1184 { | |
1185 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
1186 backend->GetOutput().database_, *it); | |
1187 } | |
1188 | |
1189 return OrthancPluginErrorCode_Success; | |
1190 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1191 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1192 } |
1193 | |
1194 | |
1195 static OrthancPluginErrorCode LookupIdentifierRange(OrthancPluginDatabaseContext* context, | |
1196 void* payload, | |
1197 OrthancPluginResourceType resourceType, | |
1198 uint16_t group, | |
1199 uint16_t element, | |
1200 const char* start, | |
1201 const char* end) | |
1202 { | |
1203 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1204 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1205 | |
1206 try | |
1207 { | |
1208 std::list<int64_t> target; | |
1209 backend->LookupIdentifierRange(target, resourceType, group, element, start, end); | |
1210 | |
1211 for (std::list<int64_t>::const_iterator | |
1212 it = target.begin(); it != target.end(); ++it) | |
1213 { | |
1214 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
1215 backend->GetOutput().database_, *it); | |
1216 } | |
1217 | |
1218 return OrthancPluginErrorCode_Success; | |
1219 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1220 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1221 } |
1222 | |
1223 | |
1224 static OrthancPluginErrorCode LookupMetadata(OrthancPluginDatabaseContext* context, | |
1225 void* payload, | |
1226 int64_t id, | |
1227 int32_t metadata) | |
1228 { | |
1229 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1230 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1231 | |
1232 try | |
1233 { | |
1234 std::string s; | |
1235 if (backend->LookupMetadata(s, id, metadata)) | |
1236 { | |
1237 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, | |
1238 backend->GetOutput().database_, s.c_str()); | |
1239 } | |
1240 | |
1241 return OrthancPluginErrorCode_Success; | |
1242 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1243 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1244 } |
1245 | |
1246 | |
1247 static OrthancPluginErrorCode LookupParent(OrthancPluginDatabaseContext* context, | |
1248 void* payload, | |
1249 int64_t id) | |
1250 { | |
1251 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1252 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1253 | |
1254 try | |
1255 { | |
1256 int64_t parent; | |
1257 if (backend->LookupParent(parent, id)) | |
1258 { | |
1259 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
1260 backend->GetOutput().database_, parent); | |
1261 } | |
1262 | |
1263 return OrthancPluginErrorCode_Success; | |
1264 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1265 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1266 } |
1267 | |
1268 | |
1269 static OrthancPluginErrorCode LookupResource(OrthancPluginDatabaseContext* context, | |
1270 void* payload, | |
1271 const char* publicId) | |
1272 { | |
1273 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1274 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1275 | |
1276 try | |
1277 { | |
1278 int64_t id; | |
1279 OrthancPluginResourceType type; | |
1280 if (backend->LookupResource(id, type, publicId)) | |
1281 { | |
1282 OrthancPluginDatabaseAnswerResource(backend->GetOutput().context_, | |
1283 backend->GetOutput().database_, | |
1284 id, type); | |
1285 } | |
1286 | |
1287 return OrthancPluginErrorCode_Success; | |
1288 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1289 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1290 } |
1291 | |
1292 | |
1293 static OrthancPluginErrorCode SelectPatientToRecycle(OrthancPluginDatabaseContext* context, | |
1294 void* payload) | |
1295 { | |
1296 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1297 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1298 | |
1299 try | |
1300 { | |
1301 int64_t id; | |
1302 if (backend->SelectPatientToRecycle(id)) | |
1303 { | |
1304 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
1305 backend->GetOutput().database_, id); | |
1306 } | |
1307 | |
1308 return OrthancPluginErrorCode_Success; | |
1309 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1310 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1311 } |
1312 | |
1313 | |
1314 static OrthancPluginErrorCode SelectPatientToRecycle2(OrthancPluginDatabaseContext* context, | |
1315 void* payload, | |
1316 int64_t patientIdToAvoid) | |
1317 { | |
1318 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1319 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1320 | |
1321 try | |
1322 { | |
1323 int64_t id; | |
1324 if (backend->SelectPatientToRecycle(id, patientIdToAvoid)) | |
1325 { | |
1326 OrthancPluginDatabaseAnswerInt64(backend->GetOutput().context_, | |
1327 backend->GetOutput().database_, id); | |
1328 } | |
1329 | |
1330 return OrthancPluginErrorCode_Success; | |
1331 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1332 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1333 } |
1334 | |
1335 | |
1336 static OrthancPluginErrorCode SetGlobalProperty(void* payload, | |
1337 int32_t property, | |
1338 const char* value) | |
1339 { | |
1340 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1341 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1342 | |
1343 try | |
1344 { | |
1345 backend->SetGlobalProperty(property, value); | |
1346 return OrthancPluginErrorCode_Success; | |
1347 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1348 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1349 } |
1350 | |
1351 | |
1352 static OrthancPluginErrorCode SetMainDicomTag(void* payload, | |
1353 int64_t id, | |
1354 const OrthancPluginDicomTag* tag) | |
1355 { | |
1356 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1357 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1358 | |
1359 try | |
1360 { | |
1361 backend->SetMainDicomTag(id, tag->group, tag->element, tag->value); | |
1362 return OrthancPluginErrorCode_Success; | |
1363 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1364 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1365 } |
1366 | |
1367 | |
1368 static OrthancPluginErrorCode SetIdentifierTag(void* payload, | |
1369 int64_t id, | |
1370 const OrthancPluginDicomTag* tag) | |
1371 { | |
1372 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1373 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1374 | |
1375 try | |
1376 { | |
1377 backend->SetIdentifierTag(id, tag->group, tag->element, tag->value); | |
1378 return OrthancPluginErrorCode_Success; | |
1379 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1380 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1381 } |
1382 | |
1383 | |
1384 static OrthancPluginErrorCode SetMetadata(void* payload, | |
1385 int64_t id, | |
1386 int32_t metadata, | |
1387 const char* value) | |
1388 { | |
1389 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1390 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1391 | |
1392 try | |
1393 { | |
1394 backend->SetMetadata(id, metadata, value); | |
1395 return OrthancPluginErrorCode_Success; | |
1396 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1397 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1398 } |
1399 | |
1400 | |
1401 static OrthancPluginErrorCode SetProtectedPatient(void* payload, | |
1402 int64_t id, | |
1403 int32_t isProtected) | |
1404 { | |
1405 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1406 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1407 | |
1408 try | |
1409 { | |
1410 backend->SetProtectedPatient(id, (isProtected != 0)); | |
1411 return OrthancPluginErrorCode_Success; | |
1412 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1413 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1414 } |
1415 | |
1416 | |
1417 static OrthancPluginErrorCode StartTransaction(void* payload) | |
1418 { | |
1419 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1420 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1421 | |
1422 try | |
1423 { | |
1424 backend->StartTransaction(); | |
1425 return OrthancPluginErrorCode_Success; | |
1426 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1427 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1428 } |
1429 | |
1430 | |
1431 static OrthancPluginErrorCode RollbackTransaction(void* payload) | |
1432 { | |
1433 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1434 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1435 | |
1436 try | |
1437 { | |
1438 backend->RollbackTransaction(); | |
1439 return OrthancPluginErrorCode_Success; | |
1440 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1441 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1442 } |
1443 | |
1444 | |
1445 static OrthancPluginErrorCode CommitTransaction(void* payload) | |
1446 { | |
1447 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1448 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1449 | |
1450 try | |
1451 { | |
1452 backend->CommitTransaction(); | |
1453 return OrthancPluginErrorCode_Success; | |
1454 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1455 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1456 } |
1457 | |
1458 | |
1459 static OrthancPluginErrorCode Open(void* payload) | |
1460 { | |
1461 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1462 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1463 | |
1464 try | |
1465 { | |
1466 backend->Open(); | |
1467 return OrthancPluginErrorCode_Success; | |
1468 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1469 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1470 } |
1471 | |
1472 | |
1473 static OrthancPluginErrorCode Close(void* payload) | |
1474 { | |
1475 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
1476 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); | |
1477 | |
1478 try | |
1479 { | |
1480 backend->Close(); | |
1481 return OrthancPluginErrorCode_Success; | |
1482 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1483 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1484 } |
1485 | |
1486 | |
1487 static OrthancPluginErrorCode GetDatabaseVersion(uint32_t* version, | |
1488 void* payload) | |
1489 { | |
1490 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1491 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
0 | 1492 |
1493 try | |
1494 { | |
1495 *version = backend->GetDatabaseVersion(); | |
1496 return OrthancPluginErrorCode_Success; | |
1497 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1498 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1499 } |
1500 | |
1501 | |
1502 static OrthancPluginErrorCode UpgradeDatabase(void* payload, | |
1503 uint32_t targetVersion, | |
1504 OrthancPluginStorageArea* storageArea) | |
1505 { | |
1506 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1507 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
0 | 1508 |
1509 try | |
1510 { | |
1511 backend->UpgradeDatabase(targetVersion, storageArea); | |
1512 return OrthancPluginErrorCode_Success; | |
1513 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1514 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1515 } |
1516 | |
1517 | |
1518 static OrthancPluginErrorCode ClearMainDicomTags(void* payload, | |
1519 int64_t internalId) | |
1520 { | |
1521 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); | |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1522 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
0 | 1523 |
1524 try | |
1525 { | |
1526 backend->ClearMainDicomTags(internalId); | |
1527 return OrthancPluginErrorCode_Success; | |
1528 } | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1529 ORTHANC_PLUGINS_DATABASE_CATCH |
0 | 1530 } |
1531 | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1532 |
78 | 1533 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1534 /* Use GetOutput().AnswerResource() */ |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1535 static OrthancPluginErrorCode LookupResources( |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1536 OrthancPluginDatabaseContext* context, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1537 void* payload, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1538 uint32_t constraintsCount, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1539 const OrthancPluginDatabaseConstraint* constraints, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1540 OrthancPluginResourceType queryLevel, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1541 uint32_t limit, |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1542 uint8_t requestSomeInstance) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1543 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1544 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1545 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_MatchingResource); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1546 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1547 try |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1548 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1549 std::vector<Orthanc::DatabaseConstraint> lookup; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1550 lookup.reserve(constraintsCount); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1551 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1552 for (uint32_t i = 0; i < constraintsCount; i++) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1553 { |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1554 lookup.push_back(Orthanc::DatabaseConstraint(constraints[i])); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1555 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1556 |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1557 backend->LookupResources(lookup, queryLevel, limit, (requestSomeInstance != 0)); |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1558 return OrthancPluginErrorCode_Success; |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1559 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1560 ORTHANC_PLUGINS_DATABASE_CATCH |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1561 } |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1562 #endif |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1563 |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1564 |
78 | 1565 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1566 static OrthancPluginErrorCode CreateInstance(OrthancPluginCreateInstanceResult* output, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1567 void* payload, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1568 const char* hashPatient, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1569 const char* hashStudy, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1570 const char* hashSeries, |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1571 const char* hashInstance) |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1572 { |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1573 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1574 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1575 |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1576 try |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1577 { |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1578 backend->CreateInstance(*output, hashPatient, hashStudy, hashSeries, hashInstance); |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1579 return OrthancPluginErrorCode_Success; |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1580 } |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1581 ORTHANC_PLUGINS_DATABASE_CATCH |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1582 } |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1583 #endif |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1584 |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1585 |
78 | 1586 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1587 static OrthancPluginErrorCode SetResourcesContent( |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1588 void* payload, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1589 uint32_t countIdentifierTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1590 const OrthancPluginResourcesContentTags* identifierTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1591 uint32_t countMainDicomTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1592 const OrthancPluginResourcesContentTags* mainDicomTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1593 uint32_t countMetadata, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1594 const OrthancPluginResourcesContentMetadata* metadata) |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1595 { |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1596 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1597 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1598 |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1599 try |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1600 { |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1601 backend->SetResourcesContent(countIdentifierTags, identifierTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1602 countMainDicomTags, mainDicomTags, |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1603 countMetadata, metadata); |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1604 return OrthancPluginErrorCode_Success; |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1605 } |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1606 ORTHANC_PLUGINS_DATABASE_CATCH |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1607 } |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1608 #endif |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1609 |
0 | 1610 |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1611 // New primitive since Orthanc 1.5.2 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1612 static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseContext* context, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1613 void* payload, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1614 int64_t resourceId, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1615 int32_t metadata) |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1616 { |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1617 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1618 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1619 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1620 try |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1621 { |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1622 std::list<std::string> values; |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1623 backend->GetChildrenMetadata(values, resourceId, metadata); |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1624 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1625 for (std::list<std::string>::const_iterator |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1626 it = values.begin(); it != values.end(); ++it) |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1627 { |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1628 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1629 backend->GetOutput().database_, |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1630 it->c_str()); |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1631 } |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1632 |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1633 return OrthancPluginErrorCode_Success; |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1634 } |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1635 ORTHANC_PLUGINS_DATABASE_CATCH |
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1636 } |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1637 |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1638 |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1639 // New primitive since Orthanc 1.5.2 |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1640 static OrthancPluginErrorCode GetLastChangeIndex(int64_t* result, |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1641 void* payload) |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1642 { |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1643 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1644 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1645 |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1646 try |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1647 { |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1648 *result = backend->GetLastChangeIndex(); |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1649 return OrthancPluginErrorCode_Success; |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1650 } |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1651 ORTHANC_PLUGINS_DATABASE_CATCH |
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1652 } |
88
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1653 |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1654 |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1655 // New primitive since Orthanc 1.5.2 |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1656 static OrthancPluginErrorCode TagMostRecentPatient(void* payload, |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1657 int64_t patientId) |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1658 { |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1659 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1660 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None); |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1661 |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1662 try |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1663 { |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1664 backend->TagMostRecentPatient(patientId); |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1665 return OrthancPluginErrorCode_Success; |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1666 } |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1667 ORTHANC_PLUGINS_DATABASE_CATCH |
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1668 } |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1669 |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1670 |
117
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1671 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1672 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1673 // New primitive since Orthanc 1.5.4 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1674 static OrthancPluginErrorCode GetAllMetadata(OrthancPluginDatabaseContext* context, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1675 void* payload, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1676 int64_t resourceId) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1677 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1678 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1679 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_Metadata); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1680 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1681 try |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1682 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1683 std::map<int32_t, std::string> result; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1684 backend->GetAllMetadata(result, resourceId); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1685 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1686 for (std::map<int32_t, std::string>::const_iterator |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1687 it = result.begin(); it != result.end(); ++it) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1688 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1689 OrthancPluginDatabaseAnswerMetadata(backend->GetOutput().context_, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1690 backend->GetOutput().database_, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1691 resourceId, it->first, it->second.c_str()); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1692 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1693 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1694 return OrthancPluginErrorCode_Success; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1695 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1696 ORTHANC_PLUGINS_DATABASE_CATCH |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1697 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1698 # endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1699 #endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1700 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1701 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1702 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1703 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1704 // New primitive since Orthanc 1.5.4 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1705 static OrthancPluginErrorCode LookupResourceAndParent(OrthancPluginDatabaseContext* context, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1706 uint8_t* isExisting, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1707 int64_t* id, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1708 OrthancPluginResourceType* type, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1709 void* payload, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1710 const char* publicId) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1711 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1712 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1713 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_String); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1714 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1715 try |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1716 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1717 std::string parent; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1718 if (backend->LookupResourceAndParent(*id, *type, parent, publicId)) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1719 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1720 *isExisting = 1; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1721 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1722 if (!parent.empty()) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1723 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1724 OrthancPluginDatabaseAnswerString(backend->GetOutput().context_, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1725 backend->GetOutput().database_, |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1726 parent.c_str()); |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1727 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1728 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1729 else |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1730 { |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1731 *isExisting = 0; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1732 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1733 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1734 return OrthancPluginErrorCode_Success; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1735 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1736 ORTHANC_PLUGINS_DATABASE_CATCH |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1737 } |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1738 # endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1739 #endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1740 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1741 |
0 | 1742 public: |
1743 /** | |
1744 * Register a custom database back-end written in C++. | |
1745 * | |
1746 * @param context The Orthanc plugin context, as received by OrthancPluginInitialize(). | |
1747 * @param backend Your custom database engine. | |
1748 **/ | |
1749 | |
1750 static void Register(OrthancPluginContext* context, | |
1751 IDatabaseBackend& backend) | |
1752 { | |
1753 OrthancPluginDatabaseBackend params; | |
1754 memset(¶ms, 0, sizeof(params)); | |
1755 | |
1756 OrthancPluginDatabaseExtensions extensions; | |
1757 memset(&extensions, 0, sizeof(extensions)); | |
1758 | |
1759 params.addAttachment = AddAttachment; | |
1760 params.attachChild = AttachChild; | |
1761 params.clearChanges = ClearChanges; | |
1762 params.clearExportedResources = ClearExportedResources; | |
1763 params.createResource = CreateResource; | |
1764 params.deleteAttachment = DeleteAttachment; | |
1765 params.deleteMetadata = DeleteMetadata; | |
1766 params.deleteResource = DeleteResource; | |
1767 params.getAllPublicIds = GetAllPublicIds; | |
1768 params.getChanges = GetChanges; | |
1769 params.getChildrenInternalId = GetChildrenInternalId; | |
1770 params.getChildrenPublicId = GetChildrenPublicId; | |
1771 params.getExportedResources = GetExportedResources; | |
1772 params.getLastChange = GetLastChange; | |
1773 params.getLastExportedResource = GetLastExportedResource; | |
1774 params.getMainDicomTags = GetMainDicomTags; | |
1775 params.getPublicId = GetPublicId; | |
1776 params.getResourceCount = GetResourceCount; | |
1777 params.getResourceType = GetResourceType; | |
1778 params.getTotalCompressedSize = GetTotalCompressedSize; | |
1779 params.getTotalUncompressedSize = GetTotalUncompressedSize; | |
1780 params.isExistingResource = IsExistingResource; | |
1781 params.isProtectedPatient = IsProtectedPatient; | |
1782 params.listAvailableMetadata = ListAvailableMetadata; | |
1783 params.listAvailableAttachments = ListAvailableAttachments; | |
1784 params.logChange = LogChange; | |
1785 params.logExportedResource = LogExportedResource; | |
1786 params.lookupAttachment = LookupAttachment; | |
1787 params.lookupGlobalProperty = LookupGlobalProperty; | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1788 params.lookupIdentifier = NULL; // Unused starting with Orthanc 0.9.5 (db v6) |
0 | 1789 params.lookupIdentifier2 = NULL; // Unused starting with Orthanc 0.9.5 (db v6) |
1790 params.lookupMetadata = LookupMetadata; | |
1791 params.lookupParent = LookupParent; | |
1792 params.lookupResource = LookupResource; | |
1793 params.selectPatientToRecycle = SelectPatientToRecycle; | |
1794 params.selectPatientToRecycle2 = SelectPatientToRecycle2; | |
1795 params.setGlobalProperty = SetGlobalProperty; | |
1796 params.setMainDicomTag = SetMainDicomTag; | |
1797 params.setIdentifierTag = SetIdentifierTag; | |
1798 params.setMetadata = SetMetadata; | |
1799 params.setProtectedPatient = SetProtectedPatient; | |
1800 params.startTransaction = StartTransaction; | |
1801 params.rollbackTransaction = RollbackTransaction; | |
1802 params.commitTransaction = CommitTransaction; | |
1803 params.open = Open; | |
1804 params.close = Close; | |
1805 | |
1806 extensions.getAllPublicIdsWithLimit = GetAllPublicIdsWithLimit; | |
1807 extensions.getDatabaseVersion = GetDatabaseVersion; | |
1808 extensions.upgradeDatabase = UpgradeDatabase; | |
1809 extensions.clearMainDicomTags = ClearMainDicomTags; | |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1810 extensions.getAllInternalIds = GetAllInternalIds; // New in Orthanc 0.9.5 (db v6) |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1811 extensions.lookupIdentifier3 = LookupIdentifier3; // New in Orthanc 0.9.5 (db v6) |
0 | 1812 |
1813 bool performanceWarning = true; | |
1814 | |
1815 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in Orthanc 1.3.1 | |
1816 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 4, 0) | |
1817 extensions.lookupIdentifierRange = LookupIdentifierRange; // New in Orthanc 1.4.0 | |
1818 # endif | |
1819 #endif | |
1820 | |
78 | 1821 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1822 // Optimizations brought by Orthanc 1.5.2 |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1823 extensions.lookupResources = LookupResources; // Fast lookup |
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1824 extensions.setResourcesContent = SetResourcesContent; // Fast setting tags/metadata |
76
a1c6238b26f8
new extension implemented for PostgreSQL: GetChildrenMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
75
diff
changeset
|
1825 extensions.getChildrenMetadata = GetChildrenMetadata; |
85
1012fe77241c
new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
78
diff
changeset
|
1826 extensions.getLastChangeIndex = GetLastChangeIndex; |
88
eb08ec14fb04
new extension implemented: TagMostRecentPatient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
85
diff
changeset
|
1827 extensions.tagMostRecentPatient = TagMostRecentPatient; |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1828 |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1829 if (backend.HasCreateInstance()) |
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1830 { |
75
52c70007bb87
new extension implemented for PostgreSQL: SetResourcesContent
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
74
diff
changeset
|
1831 extensions.createInstance = CreateInstance; // Fast creation of resources |
71
d40c5fecd160
new extension implemented for PostgreSQL: CreateInstance
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
70
diff
changeset
|
1832 } |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1833 #endif |
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1834 |
117
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1835 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1836 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1837 // Optimizations brought by Orthanc 1.5.4 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1838 extensions.lookupResourceAndParent = LookupResourceAndParent; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1839 extensions.getAllMetadata = GetAllMetadata; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1840 performanceWarning = false; |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1841 # endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1842 #endif |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1843 |
ca0ecd412988
Implementation of new extensions: LookupResourceAndParent and GetAllMetadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
88
diff
changeset
|
1844 if (performanceWarning) |
0 | 1845 { |
24
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1846 char info[1024]; |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1847 sprintf(info, |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1848 "Performance warning: The database index plugin was compiled " |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1849 "against an old version of the Orthanc SDK (%d.%d.%d): " |
69
19764fc60ade
compatibility with Orthanc SDDK 0.9.5
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
67
diff
changeset
|
1850 "Consider upgrading to version 1.5.2 of the Orthanc SDK", |
24
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1851 ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER, |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1852 ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER, |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1853 ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER); |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1854 |
17f849b2af34
sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
16
diff
changeset
|
1855 OrthancPluginLogWarning(context, info); |
0 | 1856 } |
1857 | |
1
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1858 OrthancPluginDatabaseContext* database = |
d17b2631bb67
starting StorageBackend
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
0
diff
changeset
|
1859 OrthancPluginRegisterDatabaseBackendV2(context, ¶ms, &extensions, &backend); |
0 | 1860 if (!context) |
1861 { | |
1862 throw std::runtime_error("Unable to register the database backend"); | |
1863 } | |
1864 | |
1865 backend.RegisterOutput(new DatabaseBackendOutput(context, database)); | |
1866 } | |
1867 }; | |
1868 } |