]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOTreeDescriptor.cpp
Starting version 2
[creaImageIO.git] / src2 / creaImageIOTreeDescriptor.cpp
diff --git a/src2/creaImageIOTreeDescriptor.cpp b/src2/creaImageIOTreeDescriptor.cpp
new file mode 100644 (file)
index 0000000..fc4166f
--- /dev/null
@@ -0,0 +1,152 @@
+#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()]="";
+           }
+       }
+    }
+    //==================================================================
+  }
+}