X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkWriteDicomSeriesGenericFilter.txx;fp=tools%2FclitkWriteDicomSeriesGenericFilter.txx;h=d14347412f4bee7af1f0e6c204cca70160921b9c;hb=3acd1100ef8164c3b7b9d783c065e0b333ab1eb4;hp=32c52e8255a87a812644575c263ed0b4fbb95600;hpb=8f2913259ad3f434058ed0360f66f04820051b82;p=clitk.git diff --git a/tools/clitkWriteDicomSeriesGenericFilter.txx b/tools/clitkWriteDicomSeriesGenericFilter.txx index 32c52e8..d143474 100644 --- a/tools/clitkWriteDicomSeriesGenericFilter.txx +++ b/tools/clitkWriteDicomSeriesGenericFilter.txx @@ -139,7 +139,7 @@ WriteDicomSeriesGenericFilter::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::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::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) {