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