1
|
1 /**
|
|
2 * Orthanc - A Lightweight, RESTful DICOM Store
|
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
|
|
4 * Department, University Hospital of Liege, Belgium
|
|
5 *
|
|
6 * This program is free software: you can redistribute it and/or
|
|
7 * modify it under the terms of the GNU General Public License as
|
|
8 * published by the Free Software Foundation, either version 3 of the
|
|
9 * License, or (at your option) any later version.
|
|
10 *
|
|
11 * In addition, as a special exception, the copyright holders of this
|
|
12 * program give permission to link the code of its release with the
|
|
13 * OpenSSL project's "OpenSSL" library (or with modified versions of it
|
|
14 * that use the same license as the "OpenSSL" library), and distribute
|
|
15 * the linked executables. You must obey the GNU General Public License
|
|
16 * in all respects for all of the code used other than "OpenSSL". If you
|
|
17 * modify file(s) with this exception, you may extend this exception to
|
|
18 * your version of the file(s), but you are not obligated to do so. If
|
|
19 * you do not wish to do so, delete this exception statement from your
|
|
20 * version. If you delete this exception statement from all source files
|
|
21 * in the program, then also delete it here.
|
|
22 *
|
|
23 * This program is distributed in the hope that it will be useful, but
|
|
24 * WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
26 * General Public License for more details.
|
|
27 *
|
|
28 * You should have received a copy of the GNU General Public License
|
|
29 * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
30 **/
|
|
31
|
|
32 #pragma once
|
|
33
|
|
34 #include <string>
|
|
35 #include <map>
|
|
36
|
|
37 #include "../Core/Enumerations.h"
|
|
38 #include "../Core/DicomFormat/DicomTag.h"
|
|
39
|
|
40 namespace Orthanc
|
|
41 {
|
|
42 enum SeriesStatus
|
|
43 {
|
|
44 SeriesStatus_Complete,
|
|
45 SeriesStatus_Missing,
|
|
46 SeriesStatus_Inconsistent,
|
|
47 SeriesStatus_Unknown
|
|
48 };
|
|
49
|
|
50 enum StoreStatus
|
|
51 {
|
|
52 StoreStatus_Success,
|
|
53 StoreStatus_AlreadyStored,
|
|
54 StoreStatus_Failure,
|
|
55 StoreStatus_FilteredOut // Removed by NewInstanceFilter
|
|
56 };
|
|
57
|
|
58 enum ModalityManufacturer
|
|
59 {
|
|
60 ModalityManufacturer_Generic,
|
|
61 ModalityManufacturer_StoreScp,
|
|
62 ModalityManufacturer_ClearCanvas,
|
|
63 ModalityManufacturer_MedInria,
|
|
64 ModalityManufacturer_Dcm4Chee,
|
|
65 ModalityManufacturer_SyngoVia,
|
|
66 ModalityManufacturer_AgfaImpax,
|
|
67 ModalityManufacturer_EFilm2,
|
|
68 ModalityManufacturer_Vitrea
|
|
69 };
|
|
70
|
|
71 enum DicomRequestType
|
|
72 {
|
|
73 DicomRequestType_Echo,
|
|
74 DicomRequestType_Find,
|
|
75 DicomRequestType_Get,
|
|
76 DicomRequestType_Move,
|
|
77 DicomRequestType_Store
|
|
78 };
|
|
79
|
|
80 enum DicomReplaceMode
|
|
81 {
|
|
82 DicomReplaceMode_InsertIfAbsent,
|
|
83 DicomReplaceMode_ThrowIfAbsent,
|
|
84 DicomReplaceMode_IgnoreIfAbsent
|
|
85 };
|
|
86
|
|
87 enum TransferSyntax
|
|
88 {
|
|
89 TransferSyntax_Deflated,
|
|
90 TransferSyntax_Jpeg,
|
|
91 TransferSyntax_Jpeg2000,
|
|
92 TransferSyntax_JpegLossless,
|
|
93 TransferSyntax_Jpip,
|
|
94 TransferSyntax_Mpeg2,
|
|
95 TransferSyntax_Rle
|
|
96 };
|
|
97
|
|
98 enum DicomToJsonFormat
|
|
99 {
|
|
100 DicomToJsonFormat_Full,
|
|
101 DicomToJsonFormat_Short,
|
|
102 DicomToJsonFormat_Human
|
|
103 };
|
|
104
|
|
105 enum DicomToJsonFlags
|
|
106 {
|
|
107 DicomToJsonFlags_IncludeBinary = (1 << 0),
|
|
108 DicomToJsonFlags_IncludePrivateTags = (1 << 1),
|
|
109 DicomToJsonFlags_IncludeUnknownTags = (1 << 2),
|
|
110 DicomToJsonFlags_IncludePixelData = (1 << 3),
|
|
111 DicomToJsonFlags_ConvertBinaryToAscii = (1 << 4),
|
|
112 DicomToJsonFlags_ConvertBinaryToNull = (1 << 5),
|
|
113
|
|
114 // Some predefined combinations
|
|
115 DicomToJsonFlags_None = 0,
|
|
116 DicomToJsonFlags_Default = (DicomToJsonFlags_IncludeBinary |
|
|
117 DicomToJsonFlags_IncludePixelData |
|
|
118 DicomToJsonFlags_IncludePrivateTags |
|
|
119 DicomToJsonFlags_IncludeUnknownTags |
|
|
120 DicomToJsonFlags_ConvertBinaryToNull)
|
|
121 };
|
|
122
|
|
123 enum DicomFromJsonFlags
|
|
124 {
|
|
125 DicomFromJsonFlags_DecodeDataUriScheme = (1 << 0),
|
|
126 DicomFromJsonFlags_GenerateIdentifiers = (1 << 1)
|
|
127 };
|
|
128
|
|
129 enum IdentifierConstraintType
|
|
130 {
|
|
131 IdentifierConstraintType_Equal,
|
|
132 IdentifierConstraintType_SmallerOrEqual,
|
|
133 IdentifierConstraintType_GreaterOrEqual,
|
|
134 IdentifierConstraintType_Wildcard /* Case sensitive, "*" or "?" are the only allowed wildcards */
|
|
135 };
|
|
136
|
|
137
|
|
138 /**
|
|
139 * WARNING: Do not change the explicit values in the enumerations
|
|
140 * below this point. This would result in incompatible databases
|
|
141 * between versions of Orthanc!
|
|
142 **/
|
|
143
|
|
144 enum GlobalProperty
|
|
145 {
|
|
146 GlobalProperty_DatabaseSchemaVersion = 1, // Unused in the Orthanc core as of Orthanc 0.9.5
|
|
147 GlobalProperty_FlushSleep = 2,
|
|
148 GlobalProperty_AnonymizationSequence = 3
|
|
149 };
|
|
150
|
|
151 enum MetadataType
|
|
152 {
|
|
153 MetadataType_Instance_IndexInSeries = 1,
|
|
154 MetadataType_Instance_ReceptionDate = 2,
|
|
155 MetadataType_Instance_RemoteAet = 3,
|
|
156 MetadataType_Series_ExpectedNumberOfInstances = 4,
|
|
157 MetadataType_ModifiedFrom = 5,
|
|
158 MetadataType_AnonymizedFrom = 6,
|
|
159 MetadataType_LastUpdate = 7,
|
|
160 MetadataType_Instance_Origin = 8, // New in Orthanc 0.9.5
|
|
161
|
|
162 // Make sure that the value "65535" can be stored into this enumeration
|
|
163 MetadataType_StartUser = 1024,
|
|
164 MetadataType_EndUser = 65535
|
|
165 };
|
|
166
|
|
167 enum ChangeType
|
|
168 {
|
|
169 ChangeType_CompletedSeries = 1,
|
|
170 ChangeType_NewInstance = 2,
|
|
171 ChangeType_NewPatient = 3,
|
|
172 ChangeType_NewSeries = 4,
|
|
173 ChangeType_NewStudy = 5,
|
|
174 ChangeType_AnonymizedStudy = 6,
|
|
175 ChangeType_AnonymizedSeries = 7,
|
|
176 ChangeType_ModifiedStudy = 8,
|
|
177 ChangeType_ModifiedSeries = 9,
|
|
178 ChangeType_AnonymizedPatient = 10,
|
|
179 ChangeType_ModifiedPatient = 11,
|
|
180 ChangeType_StablePatient = 12,
|
|
181 ChangeType_StableStudy = 13,
|
|
182 ChangeType_StableSeries = 14,
|
|
183 ChangeType_UpdatedAttachment = 15,
|
|
184 ChangeType_UpdatedMetadata = 16,
|
|
185
|
|
186 ChangeType_INTERNAL_LastLogged = 4095,
|
|
187
|
|
188 // The changes below this point are not logged into the database
|
|
189 ChangeType_Deleted = 4096,
|
|
190 ChangeType_NewChildInstance = 4097
|
|
191 };
|
|
192
|
|
193
|
|
194
|
|
195 void InitializeServerEnumerations();
|
|
196
|
|
197 void RegisterUserMetadata(int metadata,
|
|
198 const std::string& name);
|
|
199
|
|
200 MetadataType StringToMetadata(const std::string& str);
|
|
201
|
|
202 std::string EnumerationToString(MetadataType type);
|
|
203
|
|
204 void RegisterUserContentType(int contentType,
|
|
205 const std::string& name,
|
|
206 const std::string& mime);
|
|
207
|
|
208 FileContentType StringToContentType(const std::string& str);
|
|
209
|
|
210 std::string EnumerationToString(FileContentType type);
|
|
211
|
|
212 std::string GetFileContentMime(FileContentType type);
|
|
213
|
|
214 std::string GetBasePath(ResourceType type,
|
|
215 const std::string& publicId);
|
|
216
|
|
217 const char* EnumerationToString(SeriesStatus status);
|
|
218
|
|
219 const char* EnumerationToString(StoreStatus status);
|
|
220
|
|
221 const char* EnumerationToString(ChangeType type);
|
|
222
|
|
223 const char* EnumerationToString(ModalityManufacturer manufacturer);
|
|
224
|
|
225 const char* EnumerationToString(DicomRequestType type);
|
|
226
|
|
227 const char* EnumerationToString(TransferSyntax syntax);
|
|
228
|
|
229 ModalityManufacturer StringToModalityManufacturer(const std::string& manufacturer);
|
|
230
|
|
231 bool IsUserMetadata(MetadataType type);
|
|
232 }
|