MeVisLab Toolbox Reference
mlPrivateDICOMTags.h
Go to the documentation of this file.
1// Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2// **InsertLicense** code
3//----------------------------------------------------------------------------------
5
10//----------------------------------------------------------------------------------
11#pragma once
12
13#include "MLDICOMTagsSystem.h"
14#include <mlUtilsSystem.h>
15#include <DCMTree_Lib.h>
16
17ML_START_NAMESPACE
18
21
22 public:
23 // Forward.
24 class PrivateTagDesc;
25
27 typedef std::map<DCMTree::RawTagId, std::string> PrivateCreatorIdMap;
28
38 const PrivateCreatorIdMap* privateCreatorMap,
39 bool exact = true);
40
43 const PrivateCreatorIdMap* privateCreatorMap,
44 bool exact,
45 PrivateTagDesc &retEntry);
46
51 const PrivateCreatorIdMap* privateCreatorMap,
52 bool exact = true);
53
56 const PrivateCreatorIdMap* privateCreatorMap,
57 bool exact,
58 PrivateTagDesc &retEntry);
59
62 static const std::map<std::string, std::string>& getManufacturerMap();
63
66 static const std::vector<PrivateTagDesc>& getPrivateTagTable();
67
70
73 public:
76 InValid = 0,
78 Complete
79 };
80
83 manufacturer (""),
84 privateCreator(""),
85 tagName (""),
86 groupId ( 0),
87 elementId ( 0),
88 vr (DCMTree::UN),
89 vm (""),
90 comment (""),
91 completeness (InValid)
92 {
93 }
94
98 PrivateTagDesc(const char *argPrivateCreator,
99 const char *argTagName ,
100 MLuint16 argGroupId ,
101 MLuint16 argElementId ,
102 DCMTree::Vr argVr ,
103 const char *argVM ,
104 const char *argComment ,
105 Completeness argCompleteness=Complete):
106 manufacturer (""),
107 privateCreator(argPrivateCreator ? argPrivateCreator : ""),
108 tagName (argTagName ? argTagName : ""),
109 groupId (argGroupId ),
110 elementId (argElementId ),
111 vr (argVr ),
112 vm (argVM ? argVM : ""),
113 comment (argComment ? argComment : ""),
114 completeness (argCompleteness )
115 {
116 }
117
119 PrivateTagDesc(const char *argPrivateCreator,
120 MLuint16 argGroupId ,
121 MLuint16 argElementId ,
122 DCMTree::Vr argVr ,
123 const char *argVM ,
124 const char *argTagName ):
125 manufacturer (""),
126 privateCreator(argPrivateCreator ? argPrivateCreator : ""),
127 tagName (argTagName ? argTagName : ""),
128 groupId (argGroupId ),
129 elementId (argElementId ),
130 vr (argVr ),
131 vm (argVM ? argVM : ""),
132 comment (),
133 completeness (Complete )
134 {
135 }
136
138 bool operator==(const PrivateTagDesc &other) const;
139
141 std::string manufacturer;
142
144 std::string privateCreator;
145
147 std::string tagName;
148
150 unsigned int groupId;
151
153 unsigned int elementId;
154
158 std::string vm;
159
161 std::string comment;
162
165 };
166
167
168 protected:
170 static void _addPrivateMeVisTags(std::vector<PrivateTagDesc>& pTs);
171
173 static void _appendPTags(std::vector<PrivateDICOMTags::PrivateTagDesc>& pTs,
175 size_t numEntries);
176
178
179 // From Siemens Conformance Statements for MR Systems.
180 static void _addPrivateTagsSyngoMR_XA30A(std::vector<PrivateTagDesc>& pTs);
181 static void _addPrivateTagsSyngoMR_XA20A(std::vector<PrivateTagDesc>& pTs);
182 static void _addPrivateTagsSyngoMR_XA12M(std::vector<PrivateTagDesc>& pTs);
183 static void _addPrivateTagsSyngoMR_XA11B(std::vector<PrivateTagDesc>& pTs);
184 static void _addPrivateTagsSyngoMR_XA11A(std::vector<PrivateTagDesc>& pTs);
185 static void _addPrivateTagsSyngoMR_XA10B_ChinaOnly(std::vector<PrivateTagDesc>& pTs);
186 static void _addPrivateTagsSyngoMR_XA10A(std::vector<PrivateTagDesc>& pTs);
187 static void _addPrivateTagsSyngoMR_E12U(std::vector<PrivateTagDesc>& pTs);
188 static void _addPrivateTagsSyngoMR_E11S(std::vector<PrivateTagDesc>& pTs);
189 static void _addPrivateTagsSyngoMR_E11Q(std::vector<PrivateTagDesc>& pTs);
190 static void _addPrivateTagsSyngoMR_E11P(std::vector<PrivateTagDesc>& pTs);
191 static void _addPrivateTagsSyngoMR_E11N(std::vector<PrivateTagDesc>& pTs);
192 static void _addPrivateTagsSyngoMR_E11M(std::vector<PrivateTagDesc>& pTs);
193 static void _addPrivateTagsSyngoMR_E11K(std::vector<PrivateTagDesc>& pTs);
194 static void _addPrivateTagsSyngoMR_E11E(std::vector<PrivateTagDesc>& pTs);
195 static void _addPrivateTagsSyngoMR_E11D(std::vector<PrivateTagDesc>& pTs);
196 static void _addPrivateTagsSyngoMR_E11C_AP01(std::vector<PrivateTagDesc>& pTs);
197 static void _addPrivateTagsSyngoMR_E11C(std::vector<PrivateTagDesc>& pTs);
198 static void _addPrivateTagsSyngoMR_E11B(std::vector<PrivateTagDesc>& pTs);
199 static void _addPrivateTagsSyngoMR_E11(std::vector<PrivateTagDesc>& pTs);
200 static void _addPrivateTagsSyngoMR_D14(std::vector<PrivateTagDesc>& pTs);
201 static void _addPrivateTagsSyngoMR_D13E(std::vector<PrivateTagDesc>& pTs);
202 static void _addPrivateTagsSyngoMR_D13D(std::vector<PrivateTagDesc>& pTs);
203 static void _addPrivateTagsSyngoMR_D13B(std::vector<PrivateTagDesc>& pTs);
204 static void _addPrivateTagsSyngoMR_D13(std::vector<PrivateTagDesc>& pTs);
205 static void _addPrivateTagsSyngoMR_D12(std::vector<PrivateTagDesc>& pTs);
206 static void _addPrivateTagsSyngoMR_B20P(std::vector<PrivateTagDesc>& pTs);
207 static void _addPrivateTagsSyngoMR_B19B(std::vector<PrivateTagDesc>& pTs);
208 static void _addPrivateTagsSyngoMR_B19(std::vector<PrivateTagDesc>& pTs);
209 static void _addPrivateTagsSyngoMR_A40(std::vector<PrivateTagDesc>& pTs);
210 static void _addPrivateTagsTab86_SIEMENS_FLCOMPACT_VA01A_PROC(std::vector<PrivateTagDesc>& pTs);
211 static void _addPrivateTagsTab87_SIEMENSThorax_Multix_FD_Lab_Settings(std::vector<PrivateTagDesc>& pTs);
212 static void _addPrivateTagsTab88_SIEMENSThorax_Multix_FD_Post_Processing(std::vector<PrivateTagDesc>& pTs);
213 static void _addPrivateTagsTab89_VDM_VA30(std::vector<PrivateTagDesc>& pTs);
214 static void _addPrivateTagsTab91_SIEMENSISOC_3D_NAVIGATIONMATRIX_R_2_0(std::vector<PrivateTagDesc>& pTs);
215 static void _addPrivateTagsSiemensOther(std::vector<PrivateTagDesc>& pTs);
216
217 // Other:
218 static void _addPrivateTags00(std::vector<PrivateTagDesc>& pTs);
219 static void _addPrivateTags01(std::vector<PrivateTagDesc>& pTs);
220 static void _addPrivateTags02(std::vector<PrivateTagDesc>& pTs);
221 static void _addPrivateTags03(std::vector<PrivateTagDesc>& pTs);
222 static void _addPrivateTags04(std::vector<PrivateTagDesc>& pTs);
223 static void _addPrivateTags05(std::vector<PrivateTagDesc>& pTs);
224 static void _addPrivateTags06(std::vector<PrivateTagDesc>& pTs);
225 static void _addPrivateTags07(std::vector<PrivateTagDesc>& pTs);
226 static void _addPrivateTags08(std::vector<PrivateTagDesc>& pTs);
227 static void _addPrivateTags09(std::vector<PrivateTagDesc>& pTs);
228 static void _addPrivateTags10(std::vector<PrivateTagDesc>& pTs);
229 static void _addPrivateTags11(std::vector<PrivateTagDesc>& pTs);
230 static void _addPrivateTags12(std::vector<PrivateTagDesc>& pTs);
231 static void _addPrivateTags13(std::vector<PrivateTagDesc>& pTs);
232 static void _addPrivateTags14(std::vector<PrivateTagDesc>& pTs);
233 static void _addPrivateTags15(std::vector<PrivateTagDesc>& pTs);
234 static void _addPrivateTags16(std::vector<PrivateTagDesc>& pTs);
235 static void _addPrivateTags17(std::vector<PrivateTagDesc>& pTs);
236 static void _addPrivateTags18(std::vector<PrivateTagDesc>& pTs);
237 static void _addPrivateTags19(std::vector<PrivateTagDesc>& pTs);
238 static void _addPrivateTags20(std::vector<PrivateTagDesc>& pTs);
239 static void _addPrivateTags21(std::vector<PrivateTagDesc>& pTs);
240 static void _addPrivateTags22(std::vector<PrivateTagDesc>& pTs);
241 static void _addPrivateTags23(std::vector<PrivateTagDesc>& pTs);
242 static void _addPrivateTags24(std::vector<PrivateTagDesc>& pTs);
243 static void _addPrivateTags25(std::vector<PrivateTagDesc>& pTs);
244 static void _addPrivateTags26(std::vector<PrivateTagDesc>& pTs);
245 static void _addPrivateTags27(std::vector<PrivateTagDesc>& pTs);
246 static void _addPrivateTags28(std::vector<PrivateTagDesc>& pTs);
247 static void _addPrivateTags29(std::vector<PrivateTagDesc>& pTs);
248 static void _addPrivateTags30(std::vector<PrivateTagDesc>& pTs);
249 static void _addPrivateTags31(std::vector<PrivateTagDesc>& pTs);
250 static void _addPrivateTags32(std::vector<PrivateTagDesc>& pTs);
251 static void _addPrivateTags33(std::vector<PrivateTagDesc>& pTs);
252 static void _addPrivateTags34(std::vector<PrivateTagDesc>& pTs);
253 static void _addPrivateTags35(std::vector<PrivateTagDesc>& pTs);
254 static void _addPrivateTags36(std::vector<PrivateTagDesc>& pTs);
255 static void _addPrivateTags37(std::vector<PrivateTagDesc>& pTs);
256 static void _addPrivateTags38(std::vector<PrivateTagDesc>& pTs);
257 static void _addPrivateTags39(std::vector<PrivateTagDesc>& pTs);
258 static void _addPrivateTags40(std::vector<PrivateTagDesc>& pTs);
259 static void _addPrivateTags41(std::vector<PrivateTagDesc>& pTs);
261};
262
265
266ML_END_NAMESPACE
Project global and OS specific declarations.
#define MLDICOMTags_EXPORT
If included by external modules, exported symbols are declared as import symbols.
Class to wrap a tag ID.
Small helper container to manage private tag information.
std::string privateCreator
Name of the private creator or the private tag group the tag belongs to.
PrivateTagDesc(const char *argPrivateCreator, MLuint16 argGroupId, MLuint16 argElementId, DCMTree::Vr argVr, const char *argVM, const char *argTagName)
Alternative version for gdcm tags. The first argument is not used any more.
DCMTree::Vr vr
Tags value representation.
Completeness
Describes the completeness of the information in the current instance.
@ Partial
The container contains valid group and manufacturer information, but tagName is unknown.
PrivateTagDesc(const char *argPrivateCreator, const char *argTagName, MLuint16 argGroupId, MLuint16 argElementId, DCMTree::Vr argVr, const char *argVM, const char *argComment, Completeness argCompleteness=Complete)
Additional convenience constructor for all members which allows better matching for c-string than the...
std::string tagName
Name of tag as it is defined by the manufacturer as a private one.
Completeness completeness
InValid, Partial, or Complete information available.
unsigned int elementId
Element identifier of tag.
bool operator==(const PrivateTagDesc &other) const
Equality.
unsigned int groupId
Identifier of the tag group.
std::string comment
If available some manufacturer's comments or descriptions, otherwise empty.
std::string vm
Value multiplicity.
std::string manufacturer
If available then this contains the company defined this private tag, otherwise empty.
Class collecting some known private DICOM tag information.
static const std::vector< PrivateTagDesc > & getPrivateTagTable()
Returns a table of known private tag information.
static void _addPrivateTags20(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags41(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags09(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11B(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags10(std::vector< PrivateTagDesc > &pTs)
static PrivateTagDesc getPrivateTagInfo(const DCMTree::Const_TagPtr &tag, const PrivateCreatorIdMap *privateCreatorMap, bool exact=true)
Same as getPrivateTagInfoForId(id, privateCreatorMap, directPrivateCreator) but the id is extracted f...
static void _addPrivateTagsSyngoMR_E11(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags15(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags33(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags12(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags36(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags38(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11C_AP01(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags37(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA11B(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA10A(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags04(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsTab91_SIEMENSISOC_3D_NAVIGATIONMATRIX_R_2_0(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags34(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11C(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags28(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11K(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_B20P(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags01(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags18(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D13E(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags16(std::vector< PrivateTagDesc > &pTs)
static PrivateTagDesc getPrivateTagInfo(DCMTree::TagId id, const PrivateCreatorIdMap *privateCreatorMap, bool exact=true)
Tries to find a PrivateDICOMTags::PrivateTagDesc description for a tag given by tagPtr.
static void _addPrivateTags06(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags40(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags31(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA30A(std::vector< PrivateTagDesc > &pTs)
Function creating tables of private tags.
static void _addPrivateTags30(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags19(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D12(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D13D(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11M(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_B19B(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsTab87_SIEMENSThorax_Multix_FD_Lab_Settings(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E12U(std::vector< PrivateTagDesc > &pTs)
static void getPrivateTagInfo(DCMTree::TagId id, const PrivateCreatorIdMap *privateCreatorMap, bool exact, PrivateTagDesc &retEntry)
Same as above, only returning per reference for performance reasons.
static void _addPrivateTags39(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsTab88_SIEMENSThorax_Multix_FD_Post_Processing(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11E(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags05(std::vector< PrivateTagDesc > &pTs)
static const std::map< std::string, std::string > & getManufacturerMap()
Returns a map of known manufacturers.
static void _addPrivateTagsSyngoMR_E11P(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags14(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags29(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA10B_ChinaOnly(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags21(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA11A(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11Q(std::vector< PrivateTagDesc > &pTs)
static void _appendPTags(std::vector< PrivateDICOMTags::PrivateTagDesc > &pTs, PrivateDICOMTags::PrivateTagDesc newPTags[], size_t numEntries)
Append the array newPTags containing numEntries private tags to the vector pTs.
static void _addPrivateMeVisTags(std::vector< PrivateTagDesc > &pTs)
Append private MeVis tags to given vector pTs.
static void _addPrivateTagsTab86_SIEMENS_FLCOMPACT_VA01A_PROC(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D14(std::vector< PrivateTagDesc > &pTs)
std::map< DCMTree::RawTagId, std::string > PrivateCreatorIdMap
A type storing tag group ids for strings found in private tags (tags with odd numbers and id 0x10-0xF...
static void _addPrivateTags32(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags00(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags27(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags25(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags17(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags26(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags11(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_A40(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_XA12M(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D13B(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags22(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsTab89_VDM_VA30(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_D13(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags35(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11S(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_E11N(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags03(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags23(std::vector< PrivateTagDesc > &pTs)
static PrivateCreatorIdMap buildPrivateCreatorMap(DCMTree::Const_TreePtr treePtr)
Traverses entire tree given by treePtr on top level and stores all found private owner definitions in...
static void _addPrivateTagsSyngoMR_XA20A(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags07(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags02(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSyngoMR_B19(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags08(std::vector< PrivateTagDesc > &pTs)
static void getPrivateTagInfo(const DCMTree::Const_TagPtr &tag, const PrivateCreatorIdMap *privateCreatorMap, bool exact, PrivateTagDesc &retEntry)
Same as above, only returning per reference for performance reasons.
static void _addPrivateTagsSyngoMR_E11D(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags24(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTagsSiemensOther(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags13(std::vector< PrivateTagDesc > &pTs)
unsigned short MLuint16
Definition mlTypeDefs.h:141
Class to dump a DCMTree DICOM message into a human-readable file.
boost::shared_ptr< const Tag > Const_TagPtr
Definition DCMTree_Lib.h:57
Vr
DICOM VR.
boost::shared_ptr< const Tree > Const_TreePtr
Definition DCMTree_Lib.h:67
PrivateDICOMTags::PrivateCreatorIdMap PrivateDICOMTagCreatorIdMap
Shortcut to internally used map to store private creators.