X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOTreeDescriptor.cpp;fp=src2%2FcreaImageIOTreeDescriptor.cpp;h=fc4166f7d0b327046fa1ff8dfd2295e92b968c94;hb=cbf693fa62cd51f4ca5c881838bbb609edc447b0;hp=0000000000000000000000000000000000000000;hpb=7cbaed9c7b7fcc2a5b8ab1d82ba27797c76df455;p=creaImageIO.git diff --git a/src2/creaImageIOTreeDescriptor.cpp b/src2/creaImageIOTreeDescriptor.cpp new file mode 100644 index 0000000..fc4166f --- /dev/null +++ b/src2/creaImageIOTreeDescriptor.cpp @@ -0,0 +1,152 @@ +#include + + +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& 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()]=""; + } + } + } + //================================================================== + + } +}