#include <creaImageIODicomImageReader2.h>
-
+#include "gdcmStringFilter.h"
#include <creaImageIOSystem.h>
reader.SetFileName( filename.c_str() );
if (reader.Read())
{
- std::map<std::string,std::string>::iterator i;
- for (i=attr.begin();i!=attr.end();++i)
- {
- if ( i->first == "D0004_1500" )
- {
- boost::filesystem::path full_path(filename);
- std::string f = full_path.leaf();
- i->second = f;
- }
- else if ( i->first == "FullFileName" )
- {
- i->second = filename;
- }
- else if ( i->first == "FullFileDirectory" )
- {
- std::string::size_type last_pos = filename.find_last_of("//");
- //find first separator
- i->second = filename.substr(0, last_pos);
- }
- else
+ gdcm::StringFilter sf;
+ sf.SetFile(reader.GetFile());
+ std::map<std::string,std::string>::iterator i;
+ for (i=attr.begin();i!=attr.end();++i)
{
- uint16_t el;
- uint16_t gr;
-
- tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el);
- if ( ( gr!=0 ) && ( el!=0 ) )
- {
-
- std::string val = GetStringValueFromTag(reader.GetFile().GetDataSet().GetDataElement(gdcm::Tag(gr,el)));
- i->second = irclean(val);
+ if ( i->first == "D0004_1500" )
+ {
+ boost::filesystem::path full_path(filename);
+ std::string f = full_path.leaf();
+ i->second = f;
+ }
+ else if ( i->first == "FullFileName" )
+ {
+ i->second = filename;
+ }
+ else if ( i->first == "FullFileDirectory" )
+ {
+ std::string::size_type last_pos = filename.find_last_of("//");
+ //find first separator
+ i->second = filename.substr(0, last_pos);
+ }
+ else
+ {
+ uint16_t el;
+ uint16_t gr;
+ tree::AttributeDescriptor::GetDicomGroupElementFromKey(i->first,gr,el);
+ //if ( ( gr!=0 ) && ( el!=0 ) )
+ const gdcm::Tag tag(gr, el);
+ if( reader.GetFile().GetDataSet().FindDataElement( tag ) )
+ {
+ i->second = irclean(sf.ToString(tag));
+ }
+ else
+ {
+ i->second = "";
+ }
+ }
}
- }
}
- }
}
void DicomImageReader::ReadAttributes2(const std::string& filename,