X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOTreeDescriptor.cpp;h=602ffabac3ce2b536fc3fafc6b8bf165e5f3a308;hb=71365e2ce56b1ccf93054818d5d5cf64bcbaafb4;hp=6c253ba1286a1f235a7d2e16cc882094a75d9723;hpb=f4bdead5143dc3d816f1c2f2bd9786a21c843760;p=creaImageIO.git diff --git a/src2/creaImageIOTreeDescriptor.cpp b/src2/creaImageIOTreeDescriptor.cpp index 6c253ba..602ffab 100644 --- a/src2/creaImageIOTreeDescriptor.cpp +++ b/src2/creaImageIOTreeDescriptor.cpp @@ -9,9 +9,9 @@ namespace creaImageIO //================================================================== /// 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::PRIVATE = 1; + /// The attribute enters in unique identifier constitution + const unsigned int AttributeDescriptor::IDENTIFIER = 2; const unsigned int AttributeDescriptor::LABEL = 4; //================================================================== @@ -31,7 +31,7 @@ namespace creaImageIO //================================================================== void Descriptor::CreateLevel0Descriptor() { - GetLevelDescriptorList().push_back(LevelDescriptor("Root")); + Add(LevelDescriptor("Root")); } //================================================================== @@ -40,95 +40,125 @@ namespace creaImageIO void Descriptor::CreateDefault() { // clears the existing one - GetLevelDescriptorList().clear(); + Clear(); // Creates the level 0 descriptor CreateLevel0Descriptor(); // Creates the attribute "Name" - GetAttributeDescriptorList(0).push_back(AttributeDescriptor("Name","Name")); + Add(AttributeDescriptor("Name","Name", + AttributeDescriptor::LABEL),0); // Patient level - GetLevelDescriptorList().push_back(LevelDescriptor("Patient")); - GetAttributeDescriptorList(1).push_back(AttributeDescriptor(0x0010,0x0010, // Patient name - AttributeDescriptor::LABEL)); - GetAttributeDescriptorList(1).push_back(AttributeDescriptor(0x0010,0x0040)); // Patient sex - GetAttributeDescriptorList(1).push_back(AttributeDescriptor(0x0010,0x0030)); // Patient birthday - GetAttributeDescriptorList(1).push_back(AttributeDescriptor(0x0010,0x0020, // Patient ID - AttributeDescriptor::KEY)); + Add(LevelDescriptor("Patient")); + Add(AttributeDescriptor("NumberOfChildren","#Series",0),1); // Number of Series + Add(AttributeDescriptor(0x0010,0x0010, // Patient name + AttributeDescriptor::LABEL),1); + Add(AttributeDescriptor(0x0010,0x0040),1); // Patient sex + Add(AttributeDescriptor(0x0010,0x0030),1); // Patient birthday + Add(AttributeDescriptor(0x0010,0x0020, // Patient ID + AttributeDescriptor::IDENTIFIER),1); // Study-series level - GetLevelDescriptorList().push_back(LevelDescriptor("Series")); - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0060, // Modality - AttributeDescriptor::LABEL)); - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x1030)); // Study Description - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x103E)); // Description - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0080)); // Institution Name - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0081)); // Institution Adress - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x1010)); // Station Name - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x1048)); // Physician of Record - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x1050)); // Performing Physician's Name - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0018,0x1030)); // Protocol Name - - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0020,0x0010)); // Study ID - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0020)); // Study Date - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0030)); // Study Time - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0050)); // Study Accession Number - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0005)); // Specific character set - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0021)); // Series Date - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0008,0x0031)); // Series time - - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0020,0x000D, // Study Instance UID - AttributeDescriptor::KEY)); - GetAttributeDescriptorList(2).push_back(AttributeDescriptor(0x0020,0x000E, // Series Instance UID - AttributeDescriptor::KEY | - AttributeDescriptor::LABEL)); + Add(LevelDescriptor("Series")); + Add(AttributeDescriptor("NumberOfChildren","#Images",0),2); // Number of images + Add(AttributeDescriptor(0x0008,0x0060, // Modality + AttributeDescriptor::LABEL),2); + Add(AttributeDescriptor(0x0008,0x1030),2); // Study Description + Add(AttributeDescriptor(0x0008,0x103E),2); // Description + Add(AttributeDescriptor(0x0008,0x0080),2); // Institution Name + Add(AttributeDescriptor(0x0008,0x0081),2); // Institution Adress + Add(AttributeDescriptor(0x0008,0x1010),2); // Station Name + Add(AttributeDescriptor(0x0008,0x1048),2); // Physician of Record + Add(AttributeDescriptor(0x0008,0x1050),2); // Performing Physician's Name + Add(AttributeDescriptor(0x0018,0x1030),2); // Protocol Name + + Add(AttributeDescriptor(0x0020,0x0010),2); // Study ID + Add(AttributeDescriptor(0x0008,0x0020),2); // Study Date + Add(AttributeDescriptor(0x0008,0x0030),2); // Study Time + Add(AttributeDescriptor(0x0008,0x0050),2); // Study Accession Number + Add(AttributeDescriptor(0x0008,0x0005),2); // Specific character set + Add(AttributeDescriptor(0x0008,0x0021),2); // Series Date + Add(AttributeDescriptor(0x0008,0x0031),2); // Series time + + Add(AttributeDescriptor(0x0020,0x000D // Study Instance UID + ),2);//AttributeDescriptor::IDENTIFIER),2); + Add(AttributeDescriptor(0x0020,0x000E, // Series Instance UID + AttributeDescriptor::IDENTIFIER),2); + // | + // AttributeDescriptor::LABEL),2); // Image level - GetLevelDescriptorList().push_back(LevelDescriptor("Image")); - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x0013)); // Image Number - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0010)); // Rows - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0011)); // Columns - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0012)); // Planes - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0002)); // Sample per pixels - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0008)); // Number of Frames - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0004)); // Photometric Interpretation - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0103)); // Pixel Representation - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x0032)); // Image Position Patient - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x0037)); // Image Orientation Patient - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x1041)); // Slice Location - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0006)); // Planar Configuration - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0030)); // Pixel Spacing - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0100)); // AlocatedBits - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x0101)); // StoredBits - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0008,0x0008)); // Image Type - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0008,0x0023)); // Content Date - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0008,0x0033)); // Content Time - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x4000)); // Image Comments - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0004,0x1500, // File Name - AttributeDescriptor::LABEL)); - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x1052)); // Rescale Intercept - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0028,0x1053)); // Rescale Slope - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0050,0x0004)); // Calibration Image - - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0020,0x0052, // Frame Reference UID - AttributeDescriptor::KEY)); - GetAttributeDescriptorList(3).push_back(AttributeDescriptor(0x0008,0x0016)); // SOP Class UID - GetAttributeDescriptorList(3).push_back(AttributeDescriptor("FullFileName", // Full file name - "Full file name")); + Add(LevelDescriptor("Image")); + + Add(AttributeDescriptor(0x0020,0x0013),3); // Image Number + + Add(AttributeDescriptor(0x0028,0x0010),3); // Rows + Add(AttributeDescriptor(0x0028,0x0011),3); // Columns + Add(AttributeDescriptor(0x0028,0x0012),3); // Planes + Add(AttributeDescriptor(0x0028,0x0002),3); // Sample per pixels + Add(AttributeDescriptor(0x0028,0x0008),3); // Number of Frames + Add(AttributeDescriptor(0x0028,0x0004),3); // Photometric Interpretation + Add(AttributeDescriptor(0x0028,0x0103),3); // Pixel Representation + + Add(AttributeDescriptor(0x0020,0x0032),3); // Image Position Patient + Add(AttributeDescriptor(0x0020,0x0037),3); // Image Orientation Patient + Add(AttributeDescriptor(0x0020,0x1041),3); // Slice Location + Add(AttributeDescriptor(0x0028,0x0006),3); // Planar Configuration + + Add(AttributeDescriptor(0x0028,0x0030),3); // Pixel Spacing + Add(AttributeDescriptor(0x0028,0x0100),3); // AlocatedBits + Add(AttributeDescriptor(0x0028,0x0101),3); // StoredBits + + Add(AttributeDescriptor(0x0008,0x0008),3); // Image Type + Add(AttributeDescriptor(0x0008,0x0023),3); // Content Date + Add(AttributeDescriptor(0x0008,0x0033),3); // Content Time + + Add(AttributeDescriptor(0x0020,0x4000),3); // Image Comments + + Add(AttributeDescriptor(0x0004,0x1500, // File Name + AttributeDescriptor::LABEL),3); + Add(AttributeDescriptor(0x0028,0x1052),3); // Rescale Intercept + Add(AttributeDescriptor(0x0028,0x1053),3); // Rescale Slope + + Add(AttributeDescriptor(0x0050,0x0004),3); // Calibration Image + + Add(AttributeDescriptor(0x0020,0x0052 // Frame Reference UID + ),3); + Add(AttributeDescriptor(0x0008,0x0016),3); // SOP Class UID + Add(AttributeDescriptor("FullFileName", // Full file name + "Full file name", + AttributeDescriptor::IDENTIFIER),3); } //================================================================== + //================================================================== + /// Adds a LevelDescriptor at the end of the list + void Descriptor::Add(const LevelDescriptor& d) + { + mLevelDescriptorList.push_back(d); + } + //================================================================== + + //================================================================== + /// Adds an AttributeDescriptor to level l + void Descriptor::Add(const AttributeDescriptor& d, int l) + { + mLevelDescriptorList[l].Add(d); + // TO DO : update DicomTagToName and NameToDicomTag map + } + //================================================================== + + //================================================================== + /// Clears the Descriptor + void Descriptor::Clear() + { + mLevelDescriptorList.clear(); + } + //================================================================== + //================================================================== /// Builds the key to value map of all the attributes of the tree void Descriptor::BuildAttributeMap( std::map& map ) const @@ -144,11 +174,10 @@ namespace creaImageIO a!= l->GetAttributeDescriptorList().end(); ++a) { - map[a->GetName()]=""; + map[a->GetKey()]=""; } } } - //================================================================== } }