Program: gdcm
Module: $RCSfile: TestBuildUpDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/04/19 10:03:22 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2007/08/20 13:25:32 $
+ Version: $Revision: 1.12 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
if (argc)
{
- std::cerr << "Usage: " << argv[0] << " dummy ";
+ std::cerr << "Usage: " << argv[0] << " dummy " << std::endl;
}
-
- gdcm::DicomDir *dcmdir;
+
+ // gdcm::Debug::DebugOn();
+
+ bool errorFound = false;
+ GDCM_NAME_SPACE::DicomDir *dcmdir;
std::string dirName;
- dcmdir = new gdcm::DicomDir();
+ dcmdir = GDCM_NAME_SPACE::DicomDir::New();
- gdcm::DicomDirPatient *p1;
+ GDCM_NAME_SPACE::DicomDirPatient *p1;
+
// --- Forget these 4 lines :
// just to improve test coverage.
p1=dcmdir->GetFirstPatient();
// Create patient ONE
// ------------------
p1 = dcmdir->NewPatient();
- p1->SetValEntry("patientONE",0x0010, 0x0010);
+ p1->SetEntryString("patientONE",0x0010, 0x0010);
// fill here other patient characteristics
- gdcm::DicomDirStudy *s11;
+ GDCM_NAME_SPACE::DicomDirStudy *s11;
// --- Forget these 4 lines :
// just to improve test coverage.
s11=p1->GetFirstStudy();
// Let's create and add a Study for this Patient
s11 = p1->NewStudy();
- s11->SetValEntry("StudyDescrOne.One_",0x0008, 0x1030);
+ s11->SetEntryString("StudyDescrOne.One_",0x0008, 0x1030);
// we know entry (0008,1060) is not yet created
- s11->InsertValEntry("Dr Mabuse", 0x0008, 0x1060);
+ s11->InsertEntryString("Dr^Mabuse", 0x0008, 0x1060, "PN");
// fill here other Study characteristics
- gdcm::DicomDirStudy *s12 = p1->NewStudy();
- s12->SetValEntry("StudyDescrOne.Two",0x0008, 0x1030);
- s12->InsertValEntry("Dr Zorglub", 0x0008, 0x1060);
+ GDCM_NAME_SPACE::DicomDirStudy *s12 = p1->NewStudy();
+ s12->SetEntryString("StudyDescrOne.Two",0x0008, 0x1030);
+ s12->InsertEntryString("Dr^Zorglub", 0x0008, 0x1060, "PN");
// fill here other Study characteristics
- gdcm::DicomDirStudy *s13 = p1->NewStudy();
- s13->SetValEntry("StudyDescrOne.Tree",0x0008, 0x1030);
- s13->InsertValEntry("Dr Follamour", 0x0008, 0x1060);
+ GDCM_NAME_SPACE::DicomDirStudy *s13 = p1->NewStudy();
+ s13->SetEntryString("StudyDescrOne.Tree",0x0008, 0x1030);
+ s13->InsertEntryString("Dr^Follamour", 0x0008, 0x1060, "PN");
// fill here other Study characteristics
- gdcm::DicomDirSerie *s111;
+ GDCM_NAME_SPACE::DicomDirSerie *s111;
// --- Forget these 4 lines :
// just to improve test coverage.
s111=s11->GetFirstSerie();
// Let's create and add a Serie for this Study
s111 = s11->NewSerie();
- s111->SetValEntry("01-01-111", 0x0008, 0x0021);
+ s111->SetEntryString("01-01-111", 0x0008, 0x0021);
// fill here other Serie characteristics
- gdcm::DicomDirImage *s1111;
+ GDCM_NAME_SPACE::DicomDirImage *s1111;
// --- Forget these 4 lines :
// just to improve test coverage.
// Let's create and add a Image for this Serie
s1111 = s111->NewImage();
- s1111->SetValEntry("imageFileName1111",0x0004,0x1500);
-
- gdcm::DicomDirImage *s1112 = s111->NewImage();
- s1112->SetValEntry("imageFileName1112",0x0004,0x1500);
+ s1111->SetEntryString("imageFileName1111",0x0004,0x1500);
+ GDCM_NAME_SPACE::DicomDirImage *s1112 = s111->NewImage();
+ s1112->SetEntryString("imageFileName1112",0x0004,0x1500);
// Create patient TWO
// ------------------
- gdcm::DicomDirPatient *p2 = dcmdir->NewPatient();
- p2->SetValEntry("patientTWO",0x0010, 0x0010);
+ GDCM_NAME_SPACE::DicomDirPatient *p2 = dcmdir->NewPatient();
+ p2->SetEntryString("patientTWO",0x0010, 0x0010);
// fill here other patient characteristics
- gdcm::DicomDirStudy *s21 = p2->NewStudy();
- s21->SetValEntry("StudyDescrTwo.One",0x0008, 0x1030);
+ GDCM_NAME_SPACE::DicomDirStudy *s21 = p2->NewStudy();
+ s21->SetEntryString("StudyDescrTwo.One",0x0008, 0x1030);
// fill here other Study characteristics
- gdcm::DicomDirSerie *s211 = s21->NewSerie();
- s111->SetValEntry("01-01-211", 0x0008, 0x0021);
+ GDCM_NAME_SPACE::DicomDirSerie *s211 = s21->NewSerie();
+ s111->SetEntryString("01-01-211", 0x0008, 0x0021);
// fill here other Serie characteristics
- gdcm::DicomDirImage *s2111 = s211->NewImage();
- s2111->SetValEntry("imageFileName2111",0x0004,0x1500);
+ GDCM_NAME_SPACE::DicomDirImage *s2111 = s211->NewImage();
+ s2111->SetEntryString("imageFileName2111",0x0004,0x1500);
// fill here other Image characteristics
- gdcm::DicomDirImage *s2112 = s211->NewImage();
- s2112->SetValEntry("imageFileName1122",0x0004,0x1500);
+ GDCM_NAME_SPACE::DicomDirImage *s2112 = s211->NewImage();
+ s2112->SetEntryString("imageFileName1122",0x0004,0x1500);
// fill here other Image characteristics
// Create patient TREE
// -------------------
- gdcm::DicomDirPatient *p3 = dcmdir->NewPatient();
- p3->SetValEntry("patientTHREE",0x0010, 0x0010);
+ GDCM_NAME_SPACE::DicomDirPatient *p3 = dcmdir->NewPatient();
+ p3->SetEntryString("patientTHREE",0x0010, 0x0010);
// fill here other Patient characteristics
// Add a new Serie/Image for a Patient's Study created a long time ago
// -------------------------------------------------------------------
- gdcm::DicomDirSerie *s131 = s13->NewSerie();
- s111->SetValEntry("01-01-131", 0x0008, 0x0021);
+ GDCM_NAME_SPACE::DicomDirSerie *s131 = s13->NewSerie();
+ s111->SetEntryString("01-01-131", 0x0008, 0x0021);
// fill here other Serie characteristics
- gdcm::DicomDirImage *s1311 = s131->NewImage();
- s1311->SetValEntry("imageFileName1311",0x0004,0x1500);
+ GDCM_NAME_SPACE::DicomDirImage *s1311 = s131->NewImage();
+ s1311->SetEntryString("imageFileName1311",0x0004,0x1500);
// fill here other Image characteristics
// Print
std::cout << "Test/BuildUpDicomDir: Test Print of patients\n";
p1->Print();
- std::cout << "Test/BuildUpDicomDir: -------------------\n";
+ std::cout << "Test/BuildUpDicomDir: end of P1-------------------\n";
p2->Print();
- std::cout << "Test/BuildUpDicomDir: -------------------\n";
+ std::cout << "Test/BuildUpDicomDir: end of P2-------------------\n";
p3->Print();
+ std::cout << "Test/BuildUpDicomDir: end of P3-------------------\n";
std::cout << "Test/BuildUpDicomDir: Test Print of patients ended\n";
+
+
+ // Let's loop on Patients.
+ GDCM_NAME_SPACE::DicomDirPatient *p;
+ p=dcmdir->GetFirstPatient();
+ while (p) {
+ std::cout << "one more patient\n";
+ p->Print();
+ p=dcmdir->GetNextPatient();
+ }
+
if( !dcmdir->IsReadable() )
{
<<" is not readable"<<std::endl
<<" ...Failed"<<std::endl;
- delete dcmdir;
+ dcmdir->Delete();
return 1;
}
dcmdir->Print();
// Write it on disc
- dcmdir->WriteDicomDir("NewDICOMDIR");
- delete dcmdir;
+ dcmdir->Write("NewDICOMDIR");
+
+ dcmdir->Delete();
// Read the newly written DicomDir
- gdcm::DicomDir *newDicomDir = new gdcm::DicomDir("NewDICOMDIR");
+ GDCM_NAME_SPACE::DicomDir *newDicomDir = GDCM_NAME_SPACE::DicomDir::New();
+ newDicomDir->SetFileName("NewDICOMDIR");
+ newDicomDir->Load( );
if( !newDicomDir->IsReadable() )
{
std::cout<<" Written DicomDir 'NewDICOMDIR'"
<<" is not readable"<<std::endl
<<" ...Failed"<<std::endl;
- delete newDicomDir;
+ newDicomDir->Delete();
return 1;
}
// Check some value we are sure
+
+ int numberOfPatients = newDicomDir->GetNumberOfPatients();
+ if (numberOfPatients != 3)
+ {
+ std::cout<<" wrong GetNumberOfPatients() : " << newDicomDir->GetNumberOfPatients()
+ <<" (should be 3)" <<std::endl;
+
+ newDicomDir->Delete();
+ return 1;
+ }
+
p1 = newDicomDir->GetFirstPatient();
p2 = newDicomDir->GetNextPatient();
p3 = newDicomDir->GetNextPatient();
{
std::cout << "A patient is missing in written DicomDir"
<< std::endl;
- delete newDicomDir;
+ newDicomDir->Delete();
return 1;
}
<< "----------Final Check ---------------------"
<<std::endl;
- bool errorFound = false;
std::string valueStuff;
for (;;) // exit on 'break'
{
- if ( p1->GetEntryValue(0x0010, 0x0010) != "patientONE" )
+ if ( p1->GetEntryString(0x0010, 0x0010) != "patientONE" )
{
std::cout << "0x0010,0x0010 ["
- << p1->GetEntryValue(0x0010, 0x0010)
+ << p1->GetEntryString(0x0010, 0x0010)
<< "]" << std::endl;
errorFound = true;
break;
}
std::cout << "Patient : ["
- << p1->GetEntryValue(0x0010, 0x0010)
+ << p1->GetEntryString(0x0010, 0x0010)
<< "]" << std::endl;
if ( !(s11 = p1->GetFirstStudy()) )
errorFound = true;
break;
}
- valueStuff = s11->GetEntryValue(0x0008, 0x1030);
+ valueStuff = s11->GetEntryString(0x0008, 0x1030);
if ( valueStuff.find("StudyDescrOne.One_") >= valueStuff.length() )
{
std::cout << "1 : 0x0008,0x1030 ["
<< valueStuff
<< "]" << std::endl;
- valueStuff = s11->GetEntryValue(0x0008, 0x1060);
- if (!gdcm::Util::DicomStringEqual(valueStuff, "Dr Mabuse") )
+ valueStuff = s11->GetEntryString(0x0008, 0x1060);
+std::cout << "----------------length-----------------" << valueStuff.length() <<
+std::endl;
+ if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "Dr^Mabuse") )
{
std::cout << "2 : 0x0008,0x1060 ["
- << s11->GetEntryValue(0x0008,0x1060)
+ << s11->GetEntryString(0x0008,0x1060)
<< "]" << std::endl;
errorFound = true;
break;
}
- std::cout << "Pysician : ["
+ std::cout << "Physician : ["
<< valueStuff
<< "]" << std::endl;
if ( (s12 = p1->GetNextStudy()) == 0 )
errorFound = true;
break;
}
- if ( gdcm::Util::DicomStringEqual(s12->GetEntryValue(0x0008,
+ if ( GDCM_NAME_SPACE::Util::DicomStringEqual(s12->GetEntryString(0x0008,
0x1030),"StudyDescrOne.Two " ))
{
std::cout << "3 0x0008,0x1030 ["
- << s12->GetEntryValue(0x0008,0x1030)
+ << s12->GetEntryString(0x0008,0x1030)
<< "]" << std::endl;
errorFound = true;
break;
}
std::cout << "Study Descr : ["
- << s12->GetEntryValue(0x0008,0x1030)
+ << s12->GetEntryString(0x0008,0x1030)
<< "]" << std::endl;
- if ( gdcm::Util::DicomStringEqual(s12->GetEntryValue(0x0008,
- 0x1060),"Dr Zorglub " ))
+ if ( GDCM_NAME_SPACE::Util::DicomStringEqual(s12->GetEntryString(0x0008,
+ 0x1060),"Dr^Zorglub " ))
{
std::cout << "4 0x0008,0x1060 ["
- << s12->GetEntryValue(0x0008,0x1060)
+ << s12->GetEntryString(0x0008,0x1060)
<< "]" << std::endl;
errorFound = true;
break;
}
- std::cout << "Pysician : ["
- << s12->GetEntryValue(0x0008,0x1060)
+ std::cout << "___________________________________" << std::endl;
+ std::cout << "Pysician Reading Study: ["
+ << s12->GetEntryString(0x0008,0x1060)
<< "]" << std::endl;
if ( (s13 = p1->GetNextStudy()) == 0 )
std::cout << "Study StudyDescrOne.Tree missing" << std::endl;
break;
}
- if ( s13->GetEntryValue(0x0008, 0x1030) != "StudyDescrOne.Tree" )
+ if ( s13->GetEntryString(0x0008, 0x1030) != "StudyDescrOne.Tree" )
{
errorFound = true;
break;
<< valueStuff
<< "]" << std::endl;
- valueStuff = s13->GetEntryValue(0x0008, 0x1060);
- if (!gdcm::Util::DicomStringEqual(valueStuff, "Dr Follamour") )
+ valueStuff = s13->GetEntryString(0x0008, 0x1060);
+ if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "Dr^Follamour") )
{
std::cout << "5 0x0008,0x1060 ["
<< valueStuff
break;
}
- valueStuff = s111->GetEntryValue(0x0008, 0x0021);
- if (!gdcm::Util::DicomStringEqual(valueStuff, "01-01-131") )
+ valueStuff = s111->GetEntryString(0x0008, 0x0021);
+ if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "01-01-131") )
{
std::cout << "6 0x0008,0x0021 ["
<< valueStuff
errorFound = true;
break;
}
-/*
- if ( s1111->GetEntryValue(0x0004,0x1500) != "imageFileName1111 " )
- {
- errorFound = true;
- break;
- }
-*/
+
if ( (s1112 = s111->GetNextImage()) == 0 )
{
std::cout << "missing image S1112" << std::endl;
errorFound = true;
break;
}
-/*
- if ( s1112->GetEntryValue(0x0004,0x1500) != "imageFileName1112 " )
- {
- errorFound = true;
- break;
- }
- */
- break; // No error found. Stop looping
+
+ break; // No error found. Stop looping
}
- delete newDicomDir;
if ( errorFound )
{
std::cout << "MissWritting / MissReading " << std::endl;
- std::cout<<std::flush;
- return(1);
}
std::cout<<std::flush;
- return 0;
+ newDicomDir->Delete();
+
+ return errorFound;
}