Program: gdcm
Module: $RCSfile: ToInTag.cxx,v $
Language: C++
- Date: $Date: 2006/06/07 12:23:25 $
- Version: $Revision: 1.4 $
+ Date: $Date: 2006/06/30 09:58:08 $
+ Version: $Revision: 1.6 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
std::cout << "------------List of found files ------------" << std::endl;
dirList.Print();
+ std::cout << std::endl;
}
gdcm::DirListType fileNames;
// storing in a map ensures automatic sorting !
sf[userFileIdentifier] = f;
}
+
+ if (verbose)
+ std::cout << " " << std::endl;
std::string fullFilename, lastFilename;
std::string previousPatientName, currentPatientName;
std::string previousImagePosition, currentImagePosition;
std::string previousPhaseEncodingDirection, currentPhaseEncodingDirection;
std::string previousTriggerTime, currentTriggerTime;
+
+ std::string currentStudyUID;
std::string writeDir, currentWriteDir;
std::string currentPatientWriteDir, currentSerieWriteDir,
previousTriggerTime = "";
int sliceIndex = 0; // Is incremented *at the beginning* of processing
- int frameIndex = 1;
+ int frameIndex;
+ if (taggrid)
+ frameIndex = 0;
+ else
+ frameIndex = 1;
+
int flag = 0;
gdcm::File *currentFile;
+
+ std::string defaultStudyUID = gdcm::Util::CreateUniqueUID();
+ std::string defaultSerieUID;
for (it2 = sf.begin() ; it2 != sf.end(); ++it2)
{
fullFilename = currentFile->GetFileName();
lastFilename = gdcm::Util::GetName( fullFilename );
- std::cout << "Rewrite [" <<lastFilename << "]" << std::endl;
+ std::cout << " --------------------------------------------------"
+ << " Rewrite [" <<lastFilename << "]" << std::endl;
tokens.clear();
gdcm::Util::Tokenize (it2->first, tokens, token);
currentImagePosition[0] = 'P';
if (previousPatientName != currentPatientName)
- {
+ {
+ if ( currentFile->GetEntryString(0x0020,0x000d) == gdcm::GDCM_UNFOUND)
+ {
+ if (verbose)
+ std::cout << "--- new Study UID created" << std::endl;
+ defaultStudyUID = gdcm::Util::CreateUniqueUID();
+ currentFile->InsertEntryString(defaultStudyUID, 0x0020, 0x000d, "UI" );
+ }
+
previousPatientName = currentPatientName;
if (verbose)
std::cout << "==== new Patient [" << currentPatientName << "]" << std::endl;
if (verbose)
std::cout << "==== === new Serie [" << currentSerieInstanceUID << "]"
<< std::endl;
+
+ if ( currentFile->GetEntryString(0x0020,0x000e) == gdcm::GDCM_UNFOUND)
+ {
+ if (verbose)
+ std::cout << "--- --- new Serie UID created" << std::endl;
+ defaultSerieUID = gdcm::Util::CreateUniqueUID();
+ currentFile->InsertEntryString(defaultSerieUID, 0x0020, 0x000e, "UI" );
+ }
+
if (split)
{
currentSerieWriteDir = currentPatientWriteDir + gdcm::GDCM_FILESEPARATOR
sliceIndex = 1; // only *one* slice in a given directory
else
sliceIndex += 1;
- }
+ }
+ if (verbose)
+ std::cout << "Slice Index : " << sliceIndex << std::endl;
// We don't split on Row/Column!
/*
chSessionIndex = "1";
}
}
- if (currentFile->IsVRCoherent(0x0020) == 1 )
+ if (currentFile->IsVRCoherent(0x0020) == 1 )
currentFile->InsertEntryString(chSessionIndex, 0x0020, 0x0012, " ");
- else
+ else
currentFile->InsertEntryString(chSessionIndex, 0x0020, 0x0012, "IS");
// Deal with 0x0021, 0x1020 : 'SLICE INDEX'
std::string strImagePositionPatient = currentFile->GetEntryString(0x0020, 0x0032 );
if (strImagePositionPatient == gdcm::GDCM_UNFOUND)
- currentFile->InsertEntryString(currentFile->GetEntryString(0x0020, 0x0030), 0x0020, 0x0032, "DS" );
+ {
+ if (verbose)
+ std::cout << "Duplicate ImagePosition into ImagePositionPatient" << std::endl;
+ currentFile->InsertEntryString(currentFile->GetEntryString(0x0020, 0x0030), 0x0020, 0x0032, "DS" );
+ }
std::string strImageOrientationPatient = f->GetEntryString(0x0020, 0x0037 );
if (strImageOrientationPatient == gdcm::GDCM_UNFOUND)
+ {
+ if (verbose)
+ std::cout << "Duplicate ImageOrientation into ImageOrientationPatient" << std::endl;
currentFile->InsertEntryString(currentFile->GetEntryString(0x0020, 0x0035), 0x0020, 0x0037, "DS" );
+ }
if (taggrid)
frameIndex++;
flag = 0;
}
}
+ if (verbose)
+ std::cout << "Frame Index : " << frameIndex << std::endl;
if (split)