]> Creatis software - creaImageIO.git/blob - src2/creaImageIOTreeDescriptor.cpp
Starting version 2
[creaImageIO.git] / src2 / creaImageIOTreeDescriptor.cpp
1 #include <creaImageIOTreeDescriptor.h>
2
3
4 namespace creaImageIO
5 {
6
7   namespace tree
8   {
9
10     //==================================================================
11     /// The attribute is hidden (not visible to user)
12     const unsigned int AttributeDescriptor::HIDDEN = 1;
13     /// The attribute enters in unique identifier constitution (KEY)
14     const unsigned int AttributeDescriptor::KEY = 2;
15     const unsigned int AttributeDescriptor::LABEL = 4;
16     //==================================================================
17
18     //==================================================================
19     Descriptor::Descriptor()
20     {
21       CreateLevel0Descriptor();
22     }
23     //==================================================================
24
25    //==================================================================
26     Descriptor::~Descriptor()
27     {
28     }
29     //==================================================================
30
31     //==================================================================
32     void Descriptor::CreateLevel0Descriptor()
33     {
34       GetLevelDescriptorList().push_back(LevelDescriptor("Root"));
35     }
36     //==================================================================
37     
38     //==================================================================
39     /// Creates the default descriptor
40     void Descriptor::CreateDefault()
41     {
42       // clears the existing one
43       GetLevelDescriptorList().clear();
44       
45       // Creates the level 0 descriptor 
46       CreateLevel0Descriptor();
47       // Creates the attribute "Name"
48       GetAttributeDescriptorList(0).push_back(AttributeDescriptor("Name"));
49       
50       // Patient level
51       GetLevelDescriptorList().push_back(LevelDescriptor("Patient"));
52       GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0010",   // Patient name
53                                                                    AttributeDescriptor::LABEL));
54       GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0040")); // Patient sex
55       GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0030")); // Patient birthday
56       GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0020",   // Patient ID
57                                                                   AttributeDescriptor::KEY));
58  
59       // Study-series level
60       GetLevelDescriptorList().push_back(LevelDescriptor("Series"));
61       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0060",    // Modality
62                                                                   AttributeDescriptor::LABEL));
63       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1030")); // Study Description
64       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|103E")); // Description
65       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0080")); // Institution Name
66       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0081")); // Institution Adress
67       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1010")); // Station Name
68       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1048")); // Physician of Record
69       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1050")); // Performing Physician's Name
70       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0018|1030")); // Protocol Name
71
72       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|0010")); // Study ID
73       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0020")); // Study Date
74       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0030")); // Study Time
75       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0050")); // Study Accession Number
76       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0005")); // Specific character set
77       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0021")); // Series Date
78       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0031")); // Series time
79
80       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|000D",   // Study Instance UID  
81                                                                   AttributeDescriptor::KEY));
82       GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|000E",   // Series Instance UID  
83                                                                   AttributeDescriptor::KEY | 
84                                                                   AttributeDescriptor::LABEL));
85      
86
87       // Image level
88       GetLevelDescriptorList().push_back(LevelDescriptor("Image"));
89
90       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0013")); // Image Number
91
92       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0010")); // Rows
93       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0011")); // Columns
94       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0012")); // Planes
95       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0002")); // Sample per pixels
96       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0008")); // Number of Frames 
97       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0004")); // Photometric Interpretation
98       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0103")); // Pixel Representation
99
100       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0032")); // Image Position Patient
101       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0037")); // Image Orientation Patient
102       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|1041")); // Slice Location
103       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0006")); // Planar Configuration
104
105       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0030")); // Pixel Spacing
106       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0100")); // AlocatedBits
107       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0101")); // StoredBits
108
109       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0008")); // Image Type
110       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0023")); // Content Date
111       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0033")); // Content Time
112
113       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|4000")); // Image Comments
114
115       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1500",   // File Name
116                                                                   AttributeDescriptor::LABEL));
117       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1052")); // Rescale Intercept
118       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1053")); // Rescale Slope
119
120       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0050|0004")); // Calibration Image
121
122       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0052",   // Frame Reference UID
123                                                                   AttributeDescriptor::KEY));
124       GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0016")); // SOP Class UID
125       
126      
127     }
128     //==================================================================
129
130     //==================================================================
131     /// Builds the key to value map of all the attributes of the tree
132     void Descriptor::BuildAttributeMap( std::map<std::string,std::string>& map ) const
133     {
134       map.clear();
135       LevelDescriptorListType::const_iterator l;
136       for (l = GetLevelDescriptorList().begin();
137            l!= GetLevelDescriptorList().end();
138            ++l)
139         {
140           LevelDescriptor::AttributeDescriptorListType::const_iterator a;
141           for (a = l->GetAttributeDescriptorList().begin();
142                a!= l->GetAttributeDescriptorList().end();
143                ++a)
144             {
145               map[a->GetName()]="";
146             }
147         }
148     }
149     //==================================================================
150  
151   }
152 }