#include <vector>
#include <algorithm>
static bool process( std::vector<gdcm::DataElement> & ms, const char * filename)
{
std::set<gdcm::Tag> skiptags;
skiptags.insert( pd );
{
std::cerr << "Failure to read: " << filename << std::endl;
return false;
}
const size_t nitems = sqi1->GetNumberOfItems();
for( size_t item = 1; item < nitems; ++item )
{
Item &item1 = sqi1->GetItem(item);
{
std::vector<DataElement>::iterator vit = std::find(ms.begin(), ms.end(), de);
if( vit == ms.end() )
ms.push_back(de);
}
}
return true;
}
int main(int argc, char *argv[])
{
bool usefastpath = true;
if( argc < 2 ) return 1;
const char *filename = argv[1];
{
std::cerr << "Could not find file: " << filename << std::endl;
return 1;
}
{
unsigned int nfiles = dir.
Load(filename,
false);
if( nfiles == 0 )
{
std::cerr << "Could not find files: " << filename << std::endl;
return 1;
}
}
else
{
filenames.push_back( filename );
}
std::set<gdcm::Tag> skiptags;
skiptags.insert( pd );
{
std::cerr << "Could not read file: " << filename << std::endl;
return 1;
}
if( usefastpath ) {
std::cerr << "Could not find private tag in first file skipping whole directory: " << filename << std::endl;
return 0;
}
}
std::vector<DataElement> ms;
for(gdcm::Directory::FilenamesType::const_iterator cit = filenames.begin(); cit != filenames.end(); ++cit )
{
if( !process(ms, cit->c_str()) ) {
return 1;
}
}
if( !ms.empty() ) {
std::sort(ms.begin(), ms.end());
std::cout << filename << ",\"";
for(std::vector<DataElement>::const_iterator it = ms.begin(); it != ms.end(); ++it )
{
std::string
const & s = sf.
ToString( de );
std::cout << de.
GetTag() <<
" " << s << std::endl;
}
std::cout << "\"" << std::endl;
}
return 0;
}
Class to represent a Data Element either Implicit or Explicit.
Definition gdcmDataElement.h:59
const Tag & GetTag() const
Get Tag.
Definition gdcmDataElement.h:67
SmartPointer< SequenceOfItems > GetValueAsSQ() const
Class to represent a Data Set (which contains Data Elements)
Definition gdcmDataSet.h:56
const DataElement & GetDataElement(const Tag &t) const
Definition gdcmDataSet.h:188
bool FindDataElement(const PrivateTag &t) const
Look up if private tag 't' is present in the dataset:
DataElementSet::const_iterator ConstIterator
Definition gdcmDataSet.h:60
ConstIterator Begin() const
Definition gdcmDataSet.h:64
ConstIterator End() const
Definition gdcmDataSet.h:66
Class for manipulation directories.
Definition gdcmDirectory.h:43
std::vector< FilenameType > FilenamesType
Definition gdcmDirectory.h:49
unsigned int Load(FilenameType const &name, bool recursive=false)
FilenamesType const & GetFilenames() const
Set/Get the file names within the directory.
Definition gdcmDirectory.h:58
a DICOM File
Definition gdcmFile.h:34
const DataSet & GetDataSet() const
Get Data Set.
Definition gdcmFile.h:57
Class to represent an Item.
Definition gdcmItem.h:46
const DataSet & GetNestedDataSet() const
Definition gdcmItem.h:80
Class to represent a Private DICOM Data Element (Attribute) Tag (Group, Element, Owner)
Definition gdcmPrivateTag.h:39
Reader ala DOM (Document Object Model)
Definition gdcmReader.h:54
const File & GetFile() const
Set/Get File.
Definition gdcmReader.h:72
void SetFileName(const char *filename_native)
bool ReadUpToTag(const Tag &tag, std::set< Tag > const &skiptags=std::set< Tag >())
Class for Smart Pointer.
Definition gdcmSmartPointer.h:40
StringFilter.
Definition gdcmStringFilter.h:30
std::string ToString(const DataElement &de) const
void SetFile(const File &f)
Set/Get File.
Definition gdcmStringFilter.h:63
static bool FileExists(const char *filename)
Check whether the specified file exist on the system.
static bool FileIsDirectory(const char *name)
Check whether the file specified is a directory:
Class to represent a DICOM Data Element (Attribute) Tag (Group, Element).
Definition gdcmTag.h:39