+// ----------------------------------------------------------------------------------------------------------
+
+void Bruker2Dicom::DealWithMultiStudyDirectory (GDCM_NAME_SPACE::DirListType &dirNames)
+{
+ GDCM_NAME_SPACE::DirListType::iterator it;
+
+ for (it = dirNames.begin();
+ it != dirNames.end();
+ ++it)
+ {
+ if ( boost::filesystem::is_directory(*it) )
+ {
+ if (verbose)
+ std::cout << "[" << *it << "] is a directory" << std::endl;
+
+ GDCM_NAME_SPACE::DirList dirList(*it, false, true); // DON'T get recursively the list of files
+ GDCM_NAME_SPACE::DirListType fileNames;
+ fileNames = dirList.GetFilenames();
+
+ std::string path = GDCM_NAME_SPACE::Util::GetPath(*(fileNames.begin()));
+ std::string subject = path +
+ GDCM_NAME_SPACE::GDCM_FILESEPARATOR +
+ "subject";
+ if (! boost::filesystem::is_regular(subject) )
+ {
+ std::cout << "no [" << subject << "] file found" << std::endl;
+ continue;
+ }
+
+ bool canOpen = br_subject.LoadFile(subject);
+ if (!canOpen)
+ {
+ std::cout << "Hopeless! 'subject' found / cannot be open" << std::endl;
+ throw ( BrukerHopelessException ("Hopeless! 'subject' found in root input directory / cannot be open"));
+ }
+ else
+ {
+ br_subject.FillMap();
+ }
+
+ BrukerFieldData b_name=br_subject.GetFieldData("SUBJECT_name_string");
+ subject_name = b_name.GetStringValue()[0];
+ strPatientName = subject_name;
+ cleanString(subject_name);
+
+ DealWithSingleStudyDirectory(fileNames);
+ }
+ else
+ {
+ if (verbose)
+ std::cout << "[" << *it << "] is NOT a directory; skipped!" << std::endl;
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------------------------------------
+