X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=Testing%2FTestBuildUpDicomDir.cxx;h=11aff99f3105b890b8824b84b1c65453cb76b43e;hb=41fcaa925770000d87082af846146bf7a8d4438d;hp=4037663d7d537d6890c18a69a4eddee92ed80a67;hpb=99527f7d2edc2714942c0837cb56ff333b9fbb92;p=gdcm.git diff --git a/Testing/TestBuildUpDicomDir.cxx b/Testing/TestBuildUpDicomDir.cxx index 4037663d..11aff99f 100644 --- a/Testing/TestBuildUpDicomDir.cxx +++ b/Testing/TestBuildUpDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestBuildUpDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/07/08 13:39:57 $ - Version: $Revision: 1.3 $ + 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 @@ -37,15 +37,19 @@ int TestBuildUpDicomDir(int argc, char *argv[]) { 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(); @@ -57,10 +61,10 @@ int TestBuildUpDicomDir(int argc, char *argv[]) // 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(); @@ -71,22 +75,22 @@ int TestBuildUpDicomDir(int argc, char *argv[]) // 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(); @@ -97,10 +101,10 @@ int TestBuildUpDicomDir(int argc, char *argv[]) // 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. @@ -112,57 +116,68 @@ int TestBuildUpDicomDir(int argc, char *argv[]) // 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() ) { @@ -170,7 +185,7 @@ int TestBuildUpDicomDir(int argc, char *argv[]) <<" is not readable"<Delete(); return 1; } @@ -181,11 +196,12 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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(); + GDCM_NAME_SPACE::DicomDir *newDicomDir = GDCM_NAME_SPACE::DicomDir::New(); newDicomDir->SetFileName("NewDICOMDIR"); newDicomDir->Load( ); if( !newDicomDir->IsReadable() ) @@ -194,10 +210,21 @@ int TestBuildUpDicomDir(int argc, char *argv[]) <<" is not readable"<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)" <Delete(); + return 1; + } + p1 = newDicomDir->GetFirstPatient(); p2 = newDicomDir->GetNextPatient(); p3 = newDicomDir->GetNextPatient(); @@ -206,7 +233,7 @@ int TestBuildUpDicomDir(int argc, char *argv[]) { std::cout << "A patient is missing in written DicomDir" << std::endl; - delete newDicomDir; + newDicomDir->Delete(); return 1; } @@ -214,20 +241,19 @@ int TestBuildUpDicomDir(int argc, char *argv[]) << "----------Final Check ---------------------" <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()) ) @@ -236,7 +262,7 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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 [" @@ -249,16 +275,18 @@ int TestBuildUpDicomDir(int argc, char *argv[]) << 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 ) @@ -266,30 +294,31 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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 ) @@ -297,7 +326,7 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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; @@ -306,8 +335,8 @@ int TestBuildUpDicomDir(int argc, char *argv[]) << 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 @@ -326,8 +355,8 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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 @@ -345,37 +374,24 @@ int TestBuildUpDicomDir(int argc, char *argv[]) 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<Delete(); + + return errorFound; }