X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDicomDir.cxx;h=de32b9533d7e065c8a4cb27bd61afa6553dc7e3b;hb=44f77c590dae9d3ba7da64eb30e0236a019020a8;hp=1226e49598d9b3ca02ef9a6a7d47d7f3d0d8f9ff;hpb=fbd2698cb0545343abc2d8aefe92bab1f5b3eaa3;p=gdcm.git diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index 1226e495..de32b953 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/07/07 16:37:40 $ - Version: $Revision: 1.144 $ + Date: $Date: 2005/07/12 17:08:12 $ + Version: $Revision: 1.148 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,8 +21,10 @@ // PS 3.3-2003, pages 731-750 //----------------------------------------------------------------------------- #include "gdcmDicomDir.h" +#include "gdcmDicomDirObject.h" #include "gdcmDicomDirStudy.h" #include "gdcmDicomDirSerie.h" +#include "gdcmDicomDirVisit.h" #include "gdcmDicomDirImage.h" #include "gdcmDicomDirPatient.h" #include "gdcmDicomDirMeta.h" @@ -117,6 +119,7 @@ DicomDir::DicomDir() :Document( ) { Initialize(); // sets all private fields to NULL + ParseDir = false; NewMeta(); } @@ -603,7 +606,8 @@ void DicomDir::CreateDicomDirChainedList(std::string const &path) } f = new File( ); - f->SetLoadMode(LoadMode); // we allow user not to load Sequences... + f->SetLoadMode(LoadMode); // we allow user not to load Sequences, or Shadow + // groups, or ...... f->Load( it->c_str() ); // if ( !f ) @@ -771,6 +775,16 @@ void DicomDir::CreateDicomDir() gdcmErrorMacro( "Add AddSerieToEnd failed"); } } + else if ( v == "VISIT " ) + { + si = new DicomDirVisit(true); + if ( !AddVisitToEnd( static_cast(si)) ) + { + delete si; + si = NULL; + gdcmErrorMacro( "Add AddVisitToEnd failed"); + } + } else if ( v == "STUDY " ) { si = new DicomDirStudy(true); @@ -804,7 +818,9 @@ void DicomDir::CreateDicomDir() continue; } if ( si ) - MoveSQItem(si,tmpSI); + //MoveSQItem(si,tmpSI); // Old code : Copies each Entry + // -and then removes the source- + si->MoveObject(tmpSI); // New code : Copies the List tmpSI=s->GetNextSQItem(); } @@ -858,6 +874,26 @@ bool DicomDir::AddSerieToEnd(DicomDirSerie *dd) return false; } +/** + * \brief AddVisitToEnd + * @param dd SQ Item to enqueue to the DicomDirVisit chained List + */ +bool DicomDir::AddVisitToEnd(DicomDirVisit *dd) +{ + if ( Patients.size() > 0 ) + { + ListDicomDirPatient::iterator itp = Patients.end(); + itp--; + + DicomDirStudy *study = (*itp)->GetLastStudy(); + if ( study ) + { + study->AddVisit(dd); + return true; + } + } + return false; +} /** * \brief AddImageToEnd * @param dd SQ Item to enqueue to the DicomDirImage chained List @@ -1098,7 +1134,7 @@ void DicomDir::SetElement(std::string const &path, DicomDirType type, * @param src source SQItem */ void DicomDir::MoveSQItem(DocEntrySet *dst,DocEntrySet *src) -{ +{ DocEntry *entry; entry = src->GetFirstEntry();