]> Creatis software - creaImageIO.git/blob - src2/creaImageIOTreeDescriptor.cpp
*** empty log message ***
[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::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     //==================================================================
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       GetLevelDescriptor(0).Add(AttributeDescriptor("Name","Name",
49                                                     AttributeDescriptor::LABEL));
50       
51       // Patient level
52       GetLevelDescriptorList().push_back(LevelDescriptor("Patient"));
53       GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0010,   // Patient name
54                                                                    AttributeDescriptor::LABEL));
55       GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0040)); // Patient sex
56       GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0030)); // Patient birthday
57       GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0020,   // Patient ID
58                                                                   AttributeDescriptor::IDENTIFIER));
59  
60       // Study-series level
61       GetLevelDescriptorList().push_back(LevelDescriptor("Series"));
62       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0060,    // Modality
63                                                     AttributeDescriptor::LABEL));
64       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1030)); // Study Description
65       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x103E)); // Description
66       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0080)); // Institution Name
67       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0081)); // Institution Adress
68       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1010)); // Station Name
69       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1048)); // Physician of Record
70       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1050)); // Performing Physician's Name
71       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0018,0x1030)); // Protocol Name
72
73       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x0010)); // Study ID
74       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0020)); // Study Date
75       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0030)); // Study Time
76       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0050)); // Study Accession Number
77       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0005)); // Specific character set
78       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0021)); // Series Date
79       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0031)); // Series time
80
81       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000D   // Study Instance UID  
82                                                     ));//AttributeDescriptor::IDENTIFIER));
83       GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000E,   // Series Instance UID  
84                                                     AttributeDescriptor::IDENTIFIER));
85       // |
86       //                                                    AttributeDescriptor::LABEL));
87      
88
89       // Image level
90       GetLevelDescriptorList().push_back(LevelDescriptor("Image"));
91
92       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0013)); // Image Number
93
94       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0010)); // Rows
95       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0011)); // Columns
96       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0012)); // Planes
97       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0002)); // Sample per pixels
98       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0008)); // Number of Frames 
99       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0004)); // Photometric Interpretation
100       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0103)); // Pixel Representation
101
102       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0032)); // Image Position Patient
103       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0037)); // Image Orientation Patient
104       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x1041)); // Slice Location
105       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0006)); // Planar Configuration
106
107       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0030)); // Pixel Spacing
108       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0100)); // AlocatedBits
109       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0101)); // StoredBits
110
111       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0008)); // Image Type
112       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0023)); // Content Date
113       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0033)); // Content Time
114
115       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x4000)); // Image Comments
116
117       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0004,0x1500,   // File Name
118                                                     AttributeDescriptor::LABEL));
119       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1052)); // Rescale Intercept
120       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1053)); // Rescale Slope
121
122       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0050,0x0004)); // Calibration Image
123
124       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0052   // Frame Reference UID
125                                                     ));
126       GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0016)); // SOP Class UID
127       GetLevelDescriptor(3).Add(AttributeDescriptor("FullFileName",  // Full file name
128                                                     "Full file name",
129                                                     AttributeDescriptor::IDENTIFIER)); 
130                                                                   
131      
132     }
133     //==================================================================
134
135     //==================================================================
136     /// Builds the key to value map of all the attributes of the tree
137     void Descriptor::BuildAttributeMap( std::map<std::string,std::string>& map ) const
138     {
139       map.clear();
140       LevelDescriptorListType::const_iterator l;
141       for (l = GetLevelDescriptorList().begin();
142            l!= GetLevelDescriptorList().end();
143            ++l)
144         {
145           LevelDescriptor::AttributeDescriptorListType::const_iterator a;
146           for (a = l->GetAttributeDescriptorList().begin();
147                a!= l->GetAttributeDescriptorList().end();
148                ++a)
149             {
150               map[a->GetKey()]="";
151             }
152         }
153     }
154     //==================================================================
155  
156   }
157 }