#include namespace creaImageIO { namespace tree { //================================================================== /// The attribute is hidden (not visible to user) const unsigned int AttributeDescriptor::PRIVATE = 1; /// The attribute enters in unique identifier constitution const unsigned int AttributeDescriptor::IDENTIFIER = 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" GetLevelDescriptor(0).Add(AttributeDescriptor("Name","Name", AttributeDescriptor::LABEL)); // Patient level GetLevelDescriptorList().push_back(LevelDescriptor("Patient")); GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0010, // Patient name AttributeDescriptor::LABEL)); GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0040)); // Patient sex GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0030)); // Patient birthday GetLevelDescriptor(1).Add(AttributeDescriptor(0x0010,0x0020, // Patient ID AttributeDescriptor::IDENTIFIER)); // Study-series level GetLevelDescriptorList().push_back(LevelDescriptor("Series")); GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0060, // Modality AttributeDescriptor::LABEL)); GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1030)); // Study Description GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x103E)); // Description GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0080)); // Institution Name GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0081)); // Institution Adress GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1010)); // Station Name GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1048)); // Physician of Record GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x1050)); // Performing Physician's Name GetLevelDescriptor(2).Add(AttributeDescriptor(0x0018,0x1030)); // Protocol Name GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x0010)); // Study ID GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0020)); // Study Date GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0030)); // Study Time GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0050)); // Study Accession Number GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0005)); // Specific character set GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0021)); // Series Date GetLevelDescriptor(2).Add(AttributeDescriptor(0x0008,0x0031)); // Series time GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000D // Study Instance UID ));//AttributeDescriptor::IDENTIFIER)); GetLevelDescriptor(2).Add(AttributeDescriptor(0x0020,0x000E, // Series Instance UID AttributeDescriptor::IDENTIFIER)); // | // AttributeDescriptor::LABEL)); // Image level GetLevelDescriptorList().push_back(LevelDescriptor("Image")); GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0013)); // Image Number GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0010)); // Rows GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0011)); // Columns GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0012)); // Planes GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0002)); // Sample per pixels GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0008)); // Number of Frames GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0004)); // Photometric Interpretation GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0103)); // Pixel Representation GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0032)); // Image Position Patient GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0037)); // Image Orientation Patient GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x1041)); // Slice Location GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0006)); // Planar Configuration GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0030)); // Pixel Spacing GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0100)); // AlocatedBits GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x0101)); // StoredBits GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0008)); // Image Type GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0023)); // Content Date GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0033)); // Content Time GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x4000)); // Image Comments GetLevelDescriptor(3).Add(AttributeDescriptor(0x0004,0x1500, // File Name AttributeDescriptor::LABEL)); GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1052)); // Rescale Intercept GetLevelDescriptor(3).Add(AttributeDescriptor(0x0028,0x1053)); // Rescale Slope GetLevelDescriptor(3).Add(AttributeDescriptor(0x0050,0x0004)); // Calibration Image GetLevelDescriptor(3).Add(AttributeDescriptor(0x0020,0x0052 // Frame Reference UID )); GetLevelDescriptor(3).Add(AttributeDescriptor(0x0008,0x0016)); // SOP Class UID GetLevelDescriptor(3).Add(AttributeDescriptor("FullFileName", // Full file name "Full file name", AttributeDescriptor::IDENTIFIER)); } //================================================================== //================================================================== /// 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->GetKey()]=""; } } } //================================================================== } }