- // If the user requests, additional information can be appended
- // to the SeriesUID to further differentiate volumes in the DICOM
- // objects being processed.
-
- // 0020 0011 Series Number
- // A scout scan prior to a CT volume scan can share the same
- // SeriesUID, but they will sometimes have a different Series Number
- std::string sNum = inFile->GetEntryString(0x0020, 0x0011);
- if( sNum == gdcm::GDCM_UNFOUND )
- {
- sNum = "";
- }
- // 0018 0024 Sequence Name
- // For T1-map and phase-contrast MRA, the different flip angles and
- // directions are only distinguished by the Sequence Name
- std::string sName = inFile->GetEntryString(0x0018, 0x0024);
- if( sName == gdcm::GDCM_UNFOUND )
- {
- sName = "";
- }
-
- // You can think on checking Image Orientation (0020,0037), as well.
-
-
- // 0018 0050 Slice Thickness
- // On some CT systems, scout scans and subsequence volume scans will
- // have the same SeriesUID and Series Number - YET the slice
- // thickness will differ from the scout slice and the volume slices.
- std::string sThick = inFile->GetEntryString (0x0018, 0x0050);
- if( sThick == gdcm::GDCM_UNFOUND )
- {
- sThick = "";
- }
- // 0028 0010 Rows
- // If the 2D images in a sequence don't have the same number of rows,
- // then it is difficult to reconstruct them into a 3D volume.
- std::string sRows = inFile->GetEntryString (0x0028, 0x0010);
- if( sRows == gdcm::GDCM_UNFOUND )
- {
- sRows = "";
- }
- // 0028 0011 Columns
- // If the 2D images in a sequence don't have the same number of columns,
- // then it is difficult to reconstruct them into a 3D volume.
- std::string sColumns = inFile->GetEntryString (0x0028, 0x0011);
- if( sColumns == gdcm::GDCM_UNFOUND )
- {
- sColumns = "";
- }
-
- // Concat the new info
- std::string num = sNum.c_str();
- num += sName.c_str();
- num += sThick.c_str();
- num += sRows.c_str();
- num += sColumns.c_str();
-
- // Add a loop, here, to deal with any extra user supplied tag.
- // We allow user to add his own critierions
- // (he knows more than we do about his images!)
- // ex : in tagging series, the only pertinent tag is
- // 0018|1312 [In-plane Phase Encoding Direction] values : ROW/COLUMN
-
- std::string s;
- for(SeriesExDetails::iterator it2 = ExDetails.begin();
- it2 != ExDetails.end();
- ++it2)