if (subjectFound ) type = 1; // user passed a 'study
else if (acqpFound) type = 2; // user passed a 'serie'
else type = 3; // user passed a 'non study' directory; Hope it's a 'set of studies' directory!
-/* */
+ /* */
// 1 : if subjectFound : user passed a Single Study Directory
// 2 : if NOT subjectFound and acqpFound : user passed a Serie Directory
// 3 : if NOT subjectFound and NOT acqpFound : user passed a 'non Study Directory' (Hope it's a set of Single Study Directories)
- // int type = CheckUserDirectory(InputDirName);
+ //int type = CheckUserDirectory(InputDirName);
switch (type)
{
case 1: {
- bool canOpen;
- canOpen =br_subject.LoadFile(subject);
+ bool canOpen = br_subject.LoadFile(subject);
if (!canOpen)
{
std::cout << "Hopeless! 'subject' found / cannot be open" << std::endl;
// get info for 'Study Description'
- BrukerFieldData b_name=br_subject.GetFieldData("SUBJECT_name_string");
- subject_name = b_name.GetStringValue()[0];
- strPatientName = subject_name;
- cleanString(subject_name);
- DealWithSingleStudyDirectory (fileNames);
- break;
- }
+ BrukerFieldData b_name=br_subject.GetFieldData("SUBJECT_name_string");
+ subject_name = b_name.GetStringValue()[0];
+ strPatientName = subject_name;
+ cleanString(subject_name);
+ DealWithSingleStudyDirectory (fileNames);
+ break;
+ }
- case 2: {
+ case 2: {
subject_name = "defaultPatName";
strPatientName = subject_name;
DealWithSingleStudyDirectory (fileNames);
break;
- }
+ }
- case 3: {
+ case 3: {
std::cout << " user passed a 'non study' directory; Hope it's a 'set of studies' directory!, 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;
+ "." + acqp_scan_name
+ "." + acqp_method.c_str();
- sprintf(outputDirName, "%s%c%s", tempStringStudyDir.c_str(), //OutputDirName.c_str(),
+ sprintf(outputDirName, "%s%c%s", tempStringStudyDir.c_str(), //OutputDirName.c_str(),
GDCM_NAME_SPACE::GDCM_FILESEPARATOR,
strSerieDescr.c_str() );
1, fp);
}
fclose(fp);
+
// std::cout << "end writting[" << output2dseqSliceFileName << "]" << std::endl;
} // end if mhd
GDCM_NAME_SPACE::Util::ReplaceSpecChar(s, repChar);
}
-
-
// ===========================================================================================
-
void Bruker2Dicom::getImhDataType(BrukerFieldData &bDPT, std::string &mhdDataPixelType, int &pixelSize)
{
if(bDPT.GetDataType() == "string")