- BrukerFieldData b_entry=br_subject.GetFieldData("SUBJECT_entry");
- std::string subject_entry = b_entry.GetStringValue()[0];
- //cleanString(subject_entry);
- subject_entry = subject_entry.substr(11, subject_entry.size()-11);
-
- BrukerFieldData b_position=br_subject.GetFieldData("SUBJECT_position");
- std::string subject_position = b_position.GetStringValue()[0];
- //cleanString(subject_position);
- subject_position = subject_position.substr(9, subject_position.size()-9);
+ case 2: {
+ subject_name = "defaultPatName";
+ strPatientName = subject_name;
+ DealWithSingleStudyDirectory (fileNames);
+ break;
+ }
+
+ case 3: {
+ std::cout << " user passed a 'non study' directory; Hope it's a *non recursive* 'set of studies' directory! (recursive not yet dealt with)" << std::endl;
+ DealWithMultiStudyDirectory (fileNames);
+ break;
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------------------------------------
+
+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;
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------------------------------------
+
+void Bruker2Dicom::DealWithSingleStudyDirectory (GDCM_NAME_SPACE::DirListType &fileNames)
+{
+ bool res;
+ // creation directory : 'nom du patient'
+ std::string tempStringPatDir(OutputDirName);
+ tempStringPatDir = tempStringPatDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR + subject_name;
+
+ res=CreateDirectory(tempStringPatDir);
+ if (!res) {
+ std::cout << "[" << tempStringPatDir << "] Directory creation failure " << std::endl;
+ throw ( BrukerHopelessException ("Patient directory creation failure "));
+ }
+
+ if (subjectFound)
+ {
+
+ std::cout << "===================================--===========nom dir [" << tempStringPatDir << "] subjectFound, studyName : " << subject_study_name<< std::endl;
+ BrukerFieldData b_entry=br_subject.GetFieldData("SUBJECT_entry");
+ subject_entry = b_entry.GetStringValue()[0];
+ //cleanString(subject_entry);
+ subject_entry = subject_entry.substr(11, subject_entry.size()-11);
+
+ BrukerFieldData b_position=br_subject.GetFieldData("SUBJECT_position");
+ subject_position = b_position.GetStringValue()[0];
+ //cleanString(subject_position);
+ subject_position = subject_position.substr(9, subject_position.size()-9);