Program: gdcm
Module: $RCSfile: TestDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/01/31 03:22:24 $
- Version: $Revision: 1.35 $
+ Date: $Date: 2005/08/31 09:29:11 $
+ Version: $Revision: 1.40 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
// locate the corresponding element in 'source' file
e1 = pa1->GetDocEntry( e2->GetGroup(),e2->GetElement() );
+
+ // an element doesn't exist in origin file
if (!e1)
{
- // an element doesn't exist in source file
std::cout << "DicomDir element " << std::hex
<< e2->GetGroup() << "," <<e2->GetElement() << std::endl;
return 1;
!dynamic_cast<gdcm::ValEntry*>(e2) )
continue;
+ // a value is read as GDCM_UNFOUND
+ if ( ((gdcm::ValEntry*)e1)->GetValue() == gdcm::GDCM_UNFOUND )
+ {
+ std::cout << "for gdcm source DicomDir : element (" << std::hex
+ << e1->GetGroup() << "," <<e1->GetElement()
+ << ") has values [" << gdcm::GDCM_UNFOUND << "]"
+ << std::endl;
+ return 1;
+ }
+
+ // values differ in source file and destination file
if ( ((gdcm::ValEntry*)e1)->GetValue() !=
((gdcm::ValEntry*)e2)->GetValue() )
{
+
// serious trouble : values differ in source and destination file
std::cout << "for gdcm DicomDir element (" << std::hex
<< e2->GetGroup() << "," <<e2->GetElement()
return 0;
}
-int TestDicomDir(int argc, char* argv[])
+int TestDicomDir(int argc, char *argv[])
{
gdcm::DicomDir *dicomdir;
- gdcm::DicomDirPatient * pa1;
- gdcm::DicomDirStudy *st1;
- gdcm::DicomDirSerie *se1;
- gdcm::DicomDirImage *im1;
+ gdcm::DicomDirPatient *pa1;
+ gdcm::DicomDirStudy *st1;
+ gdcm::DicomDirSerie *se1;
+ gdcm::DicomDirImage *im1;
gdcm::TSKey v;
file += "/DICOMDIR";
}
- dicomdir = new gdcm::DicomDir(file);
+ dicomdir = new gdcm::DicomDir( );
+ dicomdir->SetFileName(file);
+ dicomdir->Load( );
if (argc > 2)
{
int level = atoi(argv[2]);
// ------------------------- second stage ---------------------------
// Write on disc what we read
- dicomdir->WriteDicomDir("NewDICOMDIR");
+ dicomdir->Write("NewDICOMDIR");
std::cout << std::endl << std::endl
<< "NewDICOMDIR written on disc ================================="
<< std::endl<< std::endl;
// Read what we wrote
- gdcm::DicomDir *d2 = new gdcm::DicomDir("NewDICOMDIR");
-
- if (!d2)
+ gdcm::DicomDir *d2 = new gdcm::DicomDir( );
+ d2->SetFileName("NewDICOMDIR");
+ d2->Load( );
+ if (!d2->IsReadable( ))
{
std::cout << std::endl << std::endl
<< "Read NewDicomDir from disc failed ========================"
<< std::endl<< std::endl;
gdcm::DicomDirPatient *pa2;
- gdcm::DicomDirStudy *st2;
- gdcm::DicomDirSerie *se2;
- gdcm::DicomDirImage *im2;
+ gdcm::DicomDirStudy *st2;
+ gdcm::DicomDirSerie *se2;
+ gdcm::DicomDirImage *im2;
pa1 = dicomdir->GetFirstPatient();
pa2 = d2->GetFirstPatient();
if (!d2)
{
std::cout << "NewDICOMDIR contains no Patient ?!?" << std::endl;
+ delete dicomdir;
+ delete d2;
return 1;
}
{ // we process all the PATIENT of this DICOMDIR
if ( CompareSQItem(pa2,pa1) == 1 )
- return 1;
+ {
+ delete dicomdir;
+ delete d2;
+ return 1;
+ }
// just to allow human reader to be sure ...
std::cout << pa2->GetEntryValue(0x0010, 0x0010)
while ( st1 && st2 )
{
if ( CompareSQItem(st2,st1) == 1 )
- return 1;
+ {
+ delete dicomdir;
+ delete d2;
+ return 1;
+ }
// just to allow human reader to be sure ...
std::cout << "--- "<< st2->GetEntryValue(0x0008, 0x1030);
while ( im1 && im2 ) // we process all the IMAGE of this serie
{
if ( CompareSQItem(im2,im1) == 1 )
+ {
+ delete dicomdir;
+ delete d2;
return 1;
+ }
im1 = se1->GetNextImage();
im2 = se2->GetNextImage();
std::cout << std::flush;
delete dicomdir;
+ delete d2;
return 0;
}