1 #include <creaImageIOTreeDescriptor.h>
10 //==================================================================
11 /// The attribute is hidden (not visible to user)
12 const unsigned int AttributeDescriptor::PRIVATE = 1;
13 /// The attribute enters in unique identifier constitution
14 const unsigned int AttributeDescriptor::IDENTIFIER = 2;
15 const unsigned int AttributeDescriptor::LABEL = 4;
16 //==================================================================
18 //==================================================================
19 Descriptor::Descriptor()
21 CreateLevel0Descriptor();
23 //==================================================================
25 //==================================================================
26 Descriptor::~Descriptor()
29 //==================================================================
31 //==================================================================
32 void Descriptor::CreateLevel0Descriptor()
34 Add(LevelDescriptor("Root"));
36 //==================================================================
38 //==================================================================
39 /// Creates the default descriptor
40 void Descriptor::CreateDefault()
42 // clears the existing one
45 // Creates the level 0 descriptor
46 CreateLevel0Descriptor();
47 // Creates the attribute "Name"
48 Add(AttributeDescriptor("Name","Name",
49 AttributeDescriptor::LABEL),0);
52 Add(LevelDescriptor("Patient"));
53 Add(AttributeDescriptor(0x1111,0x0011, // Number of Series
54 AttributeDescriptor::LABEL),1);
55 Add(AttributeDescriptor(0x0010,0x0010, // Patient name
56 AttributeDescriptor::LABEL),1);
57 Add(AttributeDescriptor(0x0010,0x0040),1); // Patient sex
58 Add(AttributeDescriptor(0x0010,0x0030),1); // Patient birthday
59 Add(AttributeDescriptor(0x0010,0x0020, // Patient ID
60 AttributeDescriptor::IDENTIFIER),1);
63 Add(LevelDescriptor("Series"));
64 Add(AttributeDescriptor(0x1111,0x0011, // Number of Images
65 AttributeDescriptor::LABEL),2);
66 Add(AttributeDescriptor(0x0008,0x0060, // Modality
67 AttributeDescriptor::LABEL),2);
68 Add(AttributeDescriptor(0x0008,0x1030),2); // Study Description
69 Add(AttributeDescriptor(0x0008,0x103E),2); // Description
70 Add(AttributeDescriptor(0x0008,0x0080),2); // Institution Name
71 Add(AttributeDescriptor(0x0008,0x0081),2); // Institution Adress
72 Add(AttributeDescriptor(0x0008,0x1010),2); // Station Name
73 Add(AttributeDescriptor(0x0008,0x1048),2); // Physician of Record
74 Add(AttributeDescriptor(0x0008,0x1050),2); // Performing Physician's Name
75 Add(AttributeDescriptor(0x0018,0x1030),2); // Protocol Name
77 Add(AttributeDescriptor(0x0020,0x0010),2); // Study ID
78 Add(AttributeDescriptor(0x0008,0x0020),2); // Study Date
79 Add(AttributeDescriptor(0x0008,0x0030),2); // Study Time
80 Add(AttributeDescriptor(0x0008,0x0050),2); // Study Accession Number
81 Add(AttributeDescriptor(0x0008,0x0005),2); // Specific character set
82 Add(AttributeDescriptor(0x0008,0x0021),2); // Series Date
83 Add(AttributeDescriptor(0x0008,0x0031),2); // Series time
85 Add(AttributeDescriptor(0x0020,0x000D // Study Instance UID
86 ),2);//AttributeDescriptor::IDENTIFIER),2);
87 Add(AttributeDescriptor(0x0020,0x000E, // Series Instance UID
88 AttributeDescriptor::IDENTIFIER),2);
90 // AttributeDescriptor::LABEL),2);
94 Add(LevelDescriptor("Image"));
96 Add(AttributeDescriptor(0x0020,0x0013),3); // Image Number
98 Add(AttributeDescriptor(0x0028,0x0010),3); // Rows
99 Add(AttributeDescriptor(0x0028,0x0011),3); // Columns
100 Add(AttributeDescriptor(0x0028,0x0012),3); // Planes
101 Add(AttributeDescriptor(0x0028,0x0002),3); // Sample per pixels
102 Add(AttributeDescriptor(0x0028,0x0008),3); // Number of Frames
103 Add(AttributeDescriptor(0x0028,0x0004),3); // Photometric Interpretation
104 Add(AttributeDescriptor(0x0028,0x0103),3); // Pixel Representation
106 Add(AttributeDescriptor(0x0020,0x0032),3); // Image Position Patient
107 Add(AttributeDescriptor(0x0020,0x0037),3); // Image Orientation Patient
108 Add(AttributeDescriptor(0x0020,0x1041),3); // Slice Location
109 Add(AttributeDescriptor(0x0028,0x0006),3); // Planar Configuration
111 Add(AttributeDescriptor(0x0028,0x0030),3); // Pixel Spacing
112 Add(AttributeDescriptor(0x0028,0x0100),3); // AlocatedBits
113 Add(AttributeDescriptor(0x0028,0x0101),3); // StoredBits
115 Add(AttributeDescriptor(0x0008,0x0008),3); // Image Type
116 Add(AttributeDescriptor(0x0008,0x0023),3); // Content Date
117 Add(AttributeDescriptor(0x0008,0x0033),3); // Content Time
119 Add(AttributeDescriptor(0x0020,0x4000),3); // Image Comments
121 Add(AttributeDescriptor(0x0004,0x1500, // File Name
122 AttributeDescriptor::LABEL),3);
123 Add(AttributeDescriptor(0x0028,0x1052),3); // Rescale Intercept
124 Add(AttributeDescriptor(0x0028,0x1053),3); // Rescale Slope
126 Add(AttributeDescriptor(0x0050,0x0004),3); // Calibration Image
128 Add(AttributeDescriptor(0x0020,0x0052 // Frame Reference UID
130 Add(AttributeDescriptor(0x0008,0x0016),3); // SOP Class UID
131 Add(AttributeDescriptor("FullFileName", // Full file name
133 AttributeDescriptor::IDENTIFIER),3);
137 //==================================================================
139 //==================================================================
140 /// Adds a LevelDescriptor at the end of the list
141 void Descriptor::Add(const LevelDescriptor& d)
143 mLevelDescriptorList.push_back(d);
145 //==================================================================
147 //==================================================================
148 /// Adds an AttributeDescriptor to level l
149 void Descriptor::Add(const AttributeDescriptor& d, int l)
151 mLevelDescriptorList[l].Add(d);
152 // TO DO : update DicomTagToName and NameToDicomTag map
154 //==================================================================
156 //==================================================================
157 /// Clears the Descriptor
158 void Descriptor::Clear()
160 mLevelDescriptorList.clear();
162 //==================================================================
164 //==================================================================
165 /// Builds the key to value map of all the attributes of the tree
166 void Descriptor::BuildAttributeMap( std::map<std::string,std::string>& map ) const
169 LevelDescriptorListType::const_iterator l;
170 for (l = GetLevelDescriptorList().begin();
171 l!= GetLevelDescriptorList().end();
174 LevelDescriptor::AttributeDescriptorListType::const_iterator a;
175 for (a = l->GetAttributeDescriptorList().begin();
176 a!= l->GetAttributeDescriptorList().end();