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 
17 ML_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 
55  static void getPrivateTagInfo(const DCMTree::Const_TagPtr& tag,
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:
75  enum Completeness {
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 _addPrivateTagsSiemensOther(std::vector<PrivateTagDesc>& pTs);
211 
212  // Other:
213  static void _addPrivateTags00(std::vector<PrivateTagDesc>& pTs);
214  static void _addPrivateTags01(std::vector<PrivateTagDesc>& pTs);
215  static void _addPrivateTags02(std::vector<PrivateTagDesc>& pTs);
216  static void _addPrivateTags03(std::vector<PrivateTagDesc>& pTs);
217  static void _addPrivateTags04(std::vector<PrivateTagDesc>& pTs);
218  static void _addPrivateTags05(std::vector<PrivateTagDesc>& pTs);
219  static void _addPrivateTags06(std::vector<PrivateTagDesc>& pTs);
220  static void _addPrivateTags07(std::vector<PrivateTagDesc>& pTs);
221  static void _addPrivateTags08(std::vector<PrivateTagDesc>& pTs);
222  static void _addPrivateTags09(std::vector<PrivateTagDesc>& pTs);
223  static void _addPrivateTags10(std::vector<PrivateTagDesc>& pTs);
224  static void _addPrivateTags11(std::vector<PrivateTagDesc>& pTs);
225  static void _addPrivateTags12(std::vector<PrivateTagDesc>& pTs);
226  static void _addPrivateTags13(std::vector<PrivateTagDesc>& pTs);
227  static void _addPrivateTags14(std::vector<PrivateTagDesc>& pTs);
228  static void _addPrivateTags15(std::vector<PrivateTagDesc>& pTs);
229  static void _addPrivateTags16(std::vector<PrivateTagDesc>& pTs);
230  static void _addPrivateTags17(std::vector<PrivateTagDesc>& pTs);
231  static void _addPrivateTags18(std::vector<PrivateTagDesc>& pTs);
232  static void _addPrivateTags19(std::vector<PrivateTagDesc>& pTs);
233  static void _addPrivateTags20(std::vector<PrivateTagDesc>& pTs);
234  static void _addPrivateTags21(std::vector<PrivateTagDesc>& pTs);
235  static void _addPrivateTags22(std::vector<PrivateTagDesc>& pTs);
236  static void _addPrivateTags23(std::vector<PrivateTagDesc>& pTs);
237  static void _addPrivateTags24(std::vector<PrivateTagDesc>& pTs);
238  static void _addPrivateTags25(std::vector<PrivateTagDesc>& pTs);
239  static void _addPrivateTags26(std::vector<PrivateTagDesc>& pTs);
240  static void _addPrivateTags27(std::vector<PrivateTagDesc>& pTs);
241  static void _addPrivateTags28(std::vector<PrivateTagDesc>& pTs);
242  static void _addPrivateTags29(std::vector<PrivateTagDesc>& pTs);
243  static void _addPrivateTags30(std::vector<PrivateTagDesc>& pTs);
244  static void _addPrivateTags31(std::vector<PrivateTagDesc>& pTs);
245  static void _addPrivateTags32(std::vector<PrivateTagDesc>& pTs);
246  static void _addPrivateTags33(std::vector<PrivateTagDesc>& pTs);
247  static void _addPrivateTags34(std::vector<PrivateTagDesc>& pTs);
248  static void _addPrivateTags35(std::vector<PrivateTagDesc>& pTs);
249  static void _addPrivateTags36(std::vector<PrivateTagDesc>& pTs);
250  static void _addPrivateTags37(std::vector<PrivateTagDesc>& pTs);
251  static void _addPrivateTags38(std::vector<PrivateTagDesc>& pTs);
252  static void _addPrivateTags39(std::vector<PrivateTagDesc>& pTs);
253  static void _addPrivateTags40(std::vector<PrivateTagDesc>& pTs);
254  static void _addPrivateTags41(std::vector<PrivateTagDesc>& pTs);
256 };
257 
260 
261 ML_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.
Definition: DCMTree_TagId.h:40
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 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 const std::vector< PrivateTagDesc > & getPrivateTagTable()
Returns a table of known private tag information.
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 _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 _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 _addPrivateTagsSyngoMR_E11E(std::vector< PrivateTagDesc > &pTs)
static void _addPrivateTags05(std::vector< PrivateTagDesc > &pTs)
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 const std::map< std::string, std::string > & getManufacturerMap()
Returns a map of known manufacturers.
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 _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 _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:148
class to dump a DCMTree dicom message into a human readable file this class could be used as a starte...
boost::shared_ptr< const Tag > Const_TagPtr
Definition: DCMTree_Lib.h:63
Vr
DICOM VR.
Definition: DCMTree_Lib.h:208
boost::shared_ptr< const Tree > Const_TreePtr
Definition: DCMTree_Lib.h:73
PrivateDICOMTags::PrivateCreatorIdMap PrivateDICOMTagCreatorIdMap
Shortcut to internally used map to store private creators.