--- /dev/null
+#include <creaImageIOTreeDescriptor.h>
+
+
+namespace creaImageIO
+{
+
+ namespace tree
+ {
+
+ //==================================================================
+ /// The attribute is hidden (not visible to user)
+ const unsigned int AttributeDescriptor::HIDDEN = 1;
+ /// The attribute enters in unique identifier constitution (KEY)
+ const unsigned int AttributeDescriptor::KEY = 2;
+ const unsigned int AttributeDescriptor::LABEL = 4;
+ //==================================================================
+
+ //==================================================================
+ Descriptor::Descriptor()
+ {
+ CreateLevel0Descriptor();
+ }
+ //==================================================================
+
+ //==================================================================
+ Descriptor::~Descriptor()
+ {
+ }
+ //==================================================================
+
+ //==================================================================
+ void Descriptor::CreateLevel0Descriptor()
+ {
+ GetLevelDescriptorList().push_back(LevelDescriptor("Root"));
+ }
+ //==================================================================
+
+ //==================================================================
+ /// Creates the default descriptor
+ void Descriptor::CreateDefault()
+ {
+ // clears the existing one
+ GetLevelDescriptorList().clear();
+
+ // Creates the level 0 descriptor
+ CreateLevel0Descriptor();
+ // Creates the attribute "Name"
+ GetAttributeDescriptorList(0).push_back(AttributeDescriptor("Name"));
+
+ // Patient level
+ GetLevelDescriptorList().push_back(LevelDescriptor("Patient"));
+ GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0010", // Patient name
+ AttributeDescriptor::LABEL));
+ GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0040")); // Patient sex
+ GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0030")); // Patient birthday
+ GetAttributeDescriptorList(1).push_back(AttributeDescriptor("0010|0020", // Patient ID
+ AttributeDescriptor::KEY));
+
+ // Study-series level
+ GetLevelDescriptorList().push_back(LevelDescriptor("Series"));
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0060", // Modality
+ AttributeDescriptor::LABEL));
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1030")); // Study Description
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|103E")); // Description
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0080")); // Institution Name
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0081")); // Institution Adress
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1010")); // Station Name
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1048")); // Physician of Record
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|1050")); // Performing Physician's Name
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0018|1030")); // Protocol Name
+
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|0010")); // Study ID
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0020")); // Study Date
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0030")); // Study Time
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0050")); // Study Accession Number
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0005")); // Specific character set
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0021")); // Series Date
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0008|0031")); // Series time
+
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|000D", // Study Instance UID
+ AttributeDescriptor::KEY));
+ GetAttributeDescriptorList(2).push_back(AttributeDescriptor("0020|000E", // Series Instance UID
+ AttributeDescriptor::KEY |
+ AttributeDescriptor::LABEL));
+
+
+ // Image level
+ GetLevelDescriptorList().push_back(LevelDescriptor("Image"));
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0013")); // Image Number
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0010")); // Rows
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0011")); // Columns
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0012")); // Planes
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0002")); // Sample per pixels
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0008")); // Number of Frames
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0004")); // Photometric Interpretation
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0103")); // Pixel Representation
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0032")); // Image Position Patient
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0037")); // Image Orientation Patient
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|1041")); // Slice Location
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0006")); // Planar Configuration
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0030")); // Pixel Spacing
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0100")); // AlocatedBits
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0028|0101")); // StoredBits
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0008")); // Image Type
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0023")); // Content Date
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0033")); // Content Time
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|4000")); // Image Comments
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1500", // File Name
+ AttributeDescriptor::LABEL));
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1052")); // Rescale Intercept
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0004|1053")); // Rescale Slope
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0050|0004")); // Calibration Image
+
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0020|0052", // Frame Reference UID
+ AttributeDescriptor::KEY));
+ GetAttributeDescriptorList(3).push_back(AttributeDescriptor("0008|0016")); // SOP Class UID
+
+
+ }
+ //==================================================================
+
+ //==================================================================
+ /// Builds the key to value map of all the attributes of the tree
+ void Descriptor::BuildAttributeMap( std::map<std::string,std::string>& map ) const
+ {
+ map.clear();
+ LevelDescriptorListType::const_iterator l;
+ for (l = GetLevelDescriptorList().begin();
+ l!= GetLevelDescriptorList().end();
+ ++l)
+ {
+ LevelDescriptor::AttributeDescriptorListType::const_iterator a;
+ for (a = l->GetAttributeDescriptorList().begin();
+ a!= l->GetAttributeDescriptorList().end();
+ ++a)
+ {
+ map[a->GetName()]="";
+ }
+ }
+ }
+ //==================================================================
+
+ }
+}