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
// 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"
:Document( )
{
Initialize(); // sets all private fields to NULL
+ ParseDir = false;
NewMeta();
}
}
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 )
gdcmErrorMacro( "Add AddSerieToEnd failed");
}
}
+ else if ( v == "VISIT " )
+ {
+ si = new DicomDirVisit(true);
+ if ( !AddVisitToEnd( static_cast<DicomDirVisit *>(si)) )
+ {
+ delete si;
+ si = NULL;
+ gdcmErrorMacro( "Add AddVisitToEnd failed");
+ }
+ }
else if ( v == "STUDY " )
{
si = new DicomDirStudy(true);
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();
}
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
* @param src source SQItem
*/
void DicomDir::MoveSQItem(DocEntrySet *dst,DocEntrySet *src)
-{
+{
DocEntry *entry;
entry = src->GetFirstEntry();