#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()]=""; } } } //================================================================== } }