using namespace std;
-
-void aff(ListTag::iterator deb, ListTag::iterator fin, int nbFFFE)
-{
- int count =0;
- for (ListTag::iterator i= deb; i!= fin; i++)
- {
- if( (*i)->GetGroup() == 0xfffe)
- {
- count ++;
- if (count == nbFFFE) break;
- }
- (*i)->SetPrintLevel(0);
- (*i)->Print();
- }
-}
-
-
int main(int argc, char* argv[])
{
gdcmDicomDir *e1;
return(1);
}
-// Exemples exploitation de la structure
-// PATIENT
-/* cout << std::endl << std::endl
- << " = Liste des PATIENT =========================================="
- << std::endl<< std::endl;
-
-
- itPatient = e1->GetPatients().begin();
- while ( itPatient != e1->GetPatients().end() ) { // on degouline la liste de PATIENT
- std::cout << (*itPatient)->GetEntryByNumber(0x0010, 0x0010) << std::endl; // Patient's Name
- itPatient ++;
- }
-
-// STUDY
- cout << std::endl << std::endl
- << " = Liste des PATIENT/STUDY =========================================="
- << std::endl<< std::endl;
-
- itPatient = e1->GetPatients().begin();
- while ( itPatient != e1->GetPatients().end() ) { // on degouline la liste de PATIENT
- std::cout << (*itPatient)->GetEntryByNumber(0x0010, 0x0010) << std::endl; // Patient's Name
- itStudy = ((*itPatient)->GetStudies()).begin();
- while (itStudy != (*itPatient)->GetStudies().end() ) { // on degouline les STUDY de ce patient
- std::cout << "--- "<< (*itStudy)->GetEntryByNumber(0x0008, 0x1030) << std::endl; // Stdy Description
- ++itStudy;
- }
- itPatient ++;
- }
-
-// SERIE
- cout << std::endl << std::endl
- << " = Liste des PATIENT/STUDY/SERIE =========================================="
- << std::endl<< std::endl;
-
- itPatient = e1->GetPatients().begin();
- while ( itPatient != e1->GetPatients().end() ) { // on degouline la liste de PATIENT
- std::cout << (*itPatient)->GetEntryByNumber(0x0010, 0x0010) << std::endl; // Patient's Name
- itStudy = ((*itPatient)->GetStudies()).begin();
- while (itStudy != (*itPatient)->GetStudies().end() ) { // on degouline les STUDY de ce patient
- std::cout << "--- "<< (*itStudy)->GetEntryByNumber(0x0008, 0x1030) << std::endl; // Study Description
- itSerie = ((*itStudy)->GetSeries()).begin();
- while (itSerie != (*itStudy)->GetSeries().end() ) { // on degouline les SERIES de cette study
- std::cout << "--- --- "<< (*itSerie)->GetEntryByNumber(0x0008, 0x103e) << std::endl; // Serie Description
- ++itSerie;
- }
- ++itStudy;
- }
- itPatient ++;
- }
-
-// IMAGE
- cout << std::endl << std::endl
- << " = Liste des PATIENT/STUDY/SERIE/IMAGE ==================================="
- << std::endl<< std::endl;
-
- itPatient = e1->GetPatients().begin();
- while ( itPatient != e1->GetPatients().end() ) { // on degouline la liste de PATIENT
- std::cout << (*itPatient)->GetEntryByNumber(0x0010, 0x0010) << std::endl; // Patient's Name
- itStudy = ((*itPatient)->GetStudies()).begin();
- while (itStudy != (*itPatient)->GetStudies().end() ) { // on degouline les STUDY de ce patient
- std::cout << "--- "<< (*itStudy)->GetEntryByNumber(0x0008, 0x1030) << std::endl; // Study Description
- itSerie = ((*itStudy)->GetSeries()).begin();
- while (itSerie != (*itStudy)->GetSeries().end() ) { // on degouline les SERIES de cette study
- std::cout << "--- --- "<< (*itSerie)->GetEntryByNumber(0x0008, 0x103e) << std::endl; // Serie Description
- itImage = ((*itSerie)->GetImages()).begin();
- while (itImage != (*itSerie)->GetImages().end() ) { // on degouline les SERIES de cette study
- std::cout << "--- --- --- "<< (*itImage)->GetEntryByNumber(0x0004, 0x1500) << std::endl; // File name
- ++itImage;
- }
- ++itSerie;
- }
- ++itStudy;
- }
- itPatient ++;
- }*/
-
// DICOM DIR
cout << std::endl << std::endl
<< " = Contenu Complet du DICOMDIR =========================================="
<< std::endl<< std::endl;
e1->Print();
-
-/* itPatient = e1->GetPatients().begin();
- while ( itPatient != e1->GetPatients().end() ) { // on degouline la liste de PATIENT
- cout << " = PATIENT ==========================================" << std::endl;
- deb = (*itPatient)->beginObj;
- fin = (*((*itPatient)->GetStudies()).begin())->beginObj;
- e1->SetPrintLevel(2);
- aff(deb,fin,1);
-
- itStudy = ((*itPatient)->GetStudies()).begin();
- while (itStudy != (*itPatient)->GetStudies().end() ) { // on degouline les STUDY de ce patient
- std::cout << " ==== STUDY ==========================================" <<std::endl;
- deb = (*itStudy)->beginObj;
- fin = (*((*itStudy)->GetSeries()).begin())->beginObj;
- //e1->SetPrintLevel(2);
- aff(deb,fin,1);
-
- itSerie = ((*itStudy)->GetSeries()).begin();
- while (itSerie != (*itStudy)->GetSeries().end() ) { // on degouline les SERIES de cette study
- cout << " ======= SERIES ==========================================" << std::endl;
- deb = (*itSerie)->beginObj;
- fin = (*((*itSerie)->GetImages()).begin())->beginObj;
- //e1->SetPrintLevel(2);
- aff(deb,fin,1);
-
- itImage = ((*itSerie)->GetImages()).begin();
- while (itImage != (*itSerie)->GetImages().end() ) { // on degouline les IMAGE de cette serie
- cout << " ========== IMAGE ==========================================" << std::endl;
- std::cout << "--- --- --- File Name: "<< (*itImage)->GetEntryByNumber(0x0004, 0x1500) << std::endl; // Referenced File
-
- ++itImage;
- }
- ++itSerie;
- }
- ++itStudy;
- }
- itPatient ++;
- }*/
-
std::cout<<std::flush;
delete e1;
--- /dev/null
+from gdcmPython import *
+import sys
+
+### Get filename from command line or default it
+try:
+ FileName = sys.argv[1]
+except IndexError:
+ FileName = os.path.join(GDCM_DATA_PATH, "DICOMDIR")
+
+try:
+ printLevel = int(sys.argv[2])
+except IndexError:
+ printLevel = 1
+
+### Build the header element list
+toRead = gdcmDicomDir(FileName)
+if not toRead.IsReadable():
+ print "The ", FileName, " DicomDir is not readable with gdcm. Sorry."
+ sys.exit()
+
+print "##############################################################"
+print "### Display all the elements and their respective values"
+print "## found in the ", FileName, " file."
+print "##############################################################"
+toRead.SetPrintLevel(-1)
+toRead.Print()
+
+# ValDict = toRead.GetEntry()
+# for key in ValDict.keys():
+# print "[%s] = [%s]" %(key, ValDict[key])
+
* @param Filename
* @param exception_on_error
*/
-gdcmDicomDir::gdcmDicomDir(const char *FileName,
+gdcmDicomDir::gdcmDicomDir(const char *FileName, bool parseDir,
bool exception_on_error):
gdcmParser(FileName,exception_on_error,true)
{
if( GetListEntry().begin()==GetListEntry().end() )
{
dbg.Verbose(0, "gdcmDicomDir::gdcmDicomDir : entry list empty");
- dbg.Verbose(0, "gdcmDicomDir::gdcmDicomDir : Parse directory and create the DicomDir");
- std::string path=FileName;
- std::string file;
-
- int pos1=path.rfind("/");
- int pos2=path.rfind("\\");
- if(pos1>pos2)
- path.resize(pos1);
- else
- path.resize(pos2);
- NewDicomDir(path);
+ if(parseDir)
+ {
+ dbg.Verbose(0, "gdcmDicomDir::gdcmDicomDir : Parse directory and create the DicomDir");
+ ParseDirectory();
+ }
}
-
- CreateDicomDir();
+ else
+ CreateDicomDir();
}
/*
* \brief
* @param exception_on_error
*/
-gdcmDicomDir::gdcmDicomDir(ListTag *l,
+/*gdcmDicomDir::gdcmDicomDir(ListTag *l,
bool exception_on_error):
gdcmParser(exception_on_error )
{
listEntries=*l;
CreateDicomDir();
-}
+}*/
/*
* \ingroup gdcmDicomDir
return true;
}
+void gdcmDicomDir::ParseDirectory(void)
+{
+ NewDicomDir(GetPath());
+ CreateDicomDir();
+}
+
//-----------------------------------------------------------------------------
// Protected
/*
gdcmHeader *header;
listEntries.clear();
+ patients.clear();
for(gdcmDirList::iterator it=fileList.begin();
it!=fileList.end(); ++it)
SetElements(path,list);
}
+/*
+ * \ingroup gdcmDicomDir
+ * \brief Get the dicom dir path
+ * @param
+ */
+std::string gdcmDicomDir::GetPath(void)
+{
+ std::string path=GetFileName();
+
+ int pos1=path.rfind("/");
+ int pos2=path.rfind("\\");
+ if(pos1>pos2)
+ path.resize(pos1);
+ else
+ path.resize(pos2);
+
+ return(path);
+}
+
//-----------------------------------------------------------------------------
// Private
/*
class GDCM_EXPORT gdcmDicomDir: public gdcmParser
{
public:
- gdcmDicomDir(ListTag *l, bool exception_on_error = false);
- gdcmDicomDir(const char *FileName,bool exception_on_error = false);
+// gdcmDicomDir(ListTag *l, bool exception_on_error = false);
+ gdcmDicomDir(const char *FileName, bool parseDir = false,
+ bool exception_on_error = false);
~gdcmDicomDir(void);
virtual void Print(std::ostream &os = std::cout);
inline ListPatient &GetPatients() {return patients;};
- bool Write(std::string fileName);
+// Write
+ bool Write(std::string fileName);
+ void ParseDirectory(void);
+
+// Types
typedef enum
{
GDCM_NONE,
protected:
void NewDicomDir(std::string path);
+ std::string GetPath(void);
private:
void CreateDicomDir(void);