]> Creatis software - clitk.git/commitdiff
newStudyUID forces newSeriesUID
authorRomulo Pinho <romulo.pinho@lyon.unicancer.fr>
Thu, 27 Sep 2012 14:10:23 +0000 (16:10 +0200)
committerRomulo Pinho <romulo.pinho@lyon.unicancer.fr>
Thu, 27 Sep 2012 14:10:23 +0000 (16:10 +0200)
- also some bug corrections...

tools/clitkWriteDicomSeries.ggo
tools/clitkWriteDicomSeriesGenericFilter.txx

index 80d4334a03fd0ce765f7eb13236fd1d22e50eb69..faa08cb44492dad8574303acf3f5d89bcc40a08f 100644 (file)
@@ -12,5 +12,5 @@ option "outputDir"            o       "Output dicom directory"          string        yes
 option "key"           k       "Keys of tags to modify"          string        no multiple default="0008|103e"
 option "tag"           t       "Tags values"                    string         no multiple default="MIDPOSITION"
 option "newSeriesUID"          e       "Write the series with a new series UID (ignored if given in key/tag option)"   flag    off
-option "newStudyUID"           u       "Write the series with a new study UID (ignored if given in key/tag option)"    flag    off
+option "newStudyUID"           u       "Write the series with a new study UID (ignored if given in key/tag option; forces newSeriesUID = true)"        flag    off
 option "useSizeAsReference"            s       "Use the size of the dicom image as reference for an occasional resampling"     flag    off
index 32c52e8255a87a812644575c263ed0b4fbb95600..d14347412f4bee7af1f0e6c204cca70160921b9c 100644 (file)
@@ -139,7 +139,7 @@ WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
   namesGenerator->SetInputDirectory( m_ArgsInfo.inputDir_arg );
   namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg  );
   typename   ReaderType::FileNamesContainer filenames_in = namesGenerator->GetInputFileNames();
-  typename   ReaderType::FileNamesContainer filenames_out = namesGenerator->GetOutputFileNames();
+  typename   ReaderType::FileNamesContainer filenames_out;
 
   // Output the dicom files
   unsigned int numberOfFilenames =  filenames_in.size();
@@ -241,6 +241,8 @@ WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
 
   // Get keys
   unsigned int numberOfKeysGiven=m_ArgsInfo.key_given;
+    if (m_ArgsInfo.verbose_flag) 
+      DD(numberOfKeysGiven);
 
   std::string seriesUID;
   std::string frameOfReferenceUID;
@@ -254,38 +256,34 @@ WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
   bool studyUIDGiven = false;
   for (unsigned int i = 0; i < numberOfKeysGiven; i++) {
     std::string entryId( m_ArgsInfo.key_arg[i] );
+    if (m_ArgsInfo.verbose_flag) 
+      DD(entryId);
     
     seriesUIDGiven = (entryId ==  seriesUIDkey || entryId ==  frameOfReferenceUIDKey);
-    if (seriesUIDGiven)
-    {
-      if (entryId ==  seriesUIDkey) 
-        seriesUID = m_ArgsInfo.tag_arg[i];
-      else
-        frameOfReferenceUID = m_ArgsInfo.tag_arg[i];
-    }
-    else if (m_ArgsInfo.newSeriesUID_flag) {
+    studyUIDGiven = (entryId == studyUIDKey);
+  }
+
+  // force the creation of a new series if a new study was specified
+  if (!studyUIDGiven && m_ArgsInfo.newStudyUID_flag) {
+    m_ArgsInfo.newSeriesUID_flag = true;
 #if GDCM_MAJOR_VERSION >= 2
-      gdcm::UIDGenerator suid;
-      seriesUID = suid.Generate();
-      gdcm::UIDGenerator fuid;
-      frameOfReferenceUID = fuid.Generate();
+    gdcm::UIDGenerator suid;
+    studyUID = suid.Generate();
 #else
-      seriesUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
-      frameOfReferenceUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+    studyUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
 #endif
-    }
-  
-    studyUIDGiven = (entryId == studyUIDKey);
-    if (studyUIDGiven) 
-      studyUID = m_ArgsInfo.tag_arg[i];
-    else if (m_ArgsInfo.newStudyUID_flag) {
+  }
+    
+  if (!seriesUIDGiven && m_ArgsInfo.newSeriesUID_flag) {
 #if GDCM_MAJOR_VERSION >= 2
-      gdcm::UIDGenerator suid;
-      studyUID = suid.Generate();
+    gdcm::UIDGenerator suid;
+    seriesUID = suid.Generate();
+    gdcm::UIDGenerator fuid;
+    frameOfReferenceUID = fuid.Generate();
 #else
-      studyUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+    seriesUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+    frameOfReferenceUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
 #endif
-    }
   }
 
   if (m_ArgsInfo.verbose_flag) {