Program: gdcm
Module: $RCSfile: gdcmDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/01/25 15:44:23 $
- Version: $Revision: 1.118 $
+ Date: $Date: 2005/02/01 10:29:54 $
+ Version: $Revision: 1.123 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
+//-----------------------------------------------------------------------------
+// For full DICOMDIR description, see:
+// PS 3.3-2003, pages 731-750
+//-----------------------------------------------------------------------------
#include "gdcmDicomDir.h"
#include "gdcmDicomDirStudy.h"
#include "gdcmDicomDirSerie.h"
namespace gdcm
{
-
-//-----------------------------------------------------------------------------
-// For full DICOMDIR description, see:
-// PS 3.3-2003, pages 731-750
//-----------------------------------------------------------------------------
// Constructor / Destructor
-
/**
* \brief Constructor : creates an empty DicomDir
*/
}
}
-//-----------------------------------------------------------------------------
-// Print
-/**
- * \brief Canonical Printer
- * @param os ostream we want to print in
- * @param indent Indentation string to be prepended during printing
- */
-void DicomDir::Print(std::ostream &os, std::string const & )
-{
- if( MetaElems )
- {
- MetaElems->SetPrintLevel(PrintLevel);
- MetaElems->Print(os);
- }
- for(ListDicomDirPatient::iterator cc = Patients.begin();
- cc != Patients.end();
- ++cc)
- {
- (*cc)->SetPrintLevel(PrintLevel);
- (*cc)->Print(os);
- }
-}
-
//-----------------------------------------------------------------------------
// Public
/**
//-----------------------------------------------------------------------------
// Protected
-
/**
* \brief create a Document-like chained list from a root Directory
* @param path entry point of the tree-like structure
/**
* \brief adds *the* Meta to a partially created DICOMDIR
- */
-
+ */
DicomDirMeta *DicomDir::NewMeta()
{
if( MetaElems )
delete MetaElems;
- // friend class hunting : we miss GetLastEntry and GetPreviousEntry
- // to be able to remove any direct reference to TagHT
DocEntry *entry = GetFirstEntry();
if( entry )
- //if ( TagHT.begin() != TagHT.end() ) // after Document Parsing
{
MetaElems = new DicomDirMeta(true);
entry = GetFirstEntry();
}
- /*TagDocEntryHT::iterator lastOneButSequence = TagHT.end();
- lastOneButSequence --;
- // ALL the 'out of Sequence' Tags belong to Meta Elems
- // (we skip 0004|1220 [Directory record sequence] )
- for ( TagDocEntryHT::iterator cc = TagHT.begin();
- cc != lastOneButSequence;
- ++cc)
- {
- MetaElems->AddEntry( cc->second );
- }*/
}
else // after root directory parsing
{
}
}
-//-----------------------------------------------------------------------------
/**
* \brief CallStartMethod
*/
}
}
-//-----------------------------------------------------------------------------
/**
* \brief CallProgressMethod
*/
}
}
-//-----------------------------------------------------------------------------
/**
* \brief CallEndMethod
*/
*/
void DicomDir::CreateDicomDir()
{
- // The list is parsed.
+ // The SeqEntries of "Directory Record Sequence" are parsed.
// When a DicomDir tag ("PATIENT", "STUDY", "SERIE", "IMAGE") is found :
// 1 - we save the beginning iterator
// 2 - we continue to parse
DocEntry *e = GetDocEntry(0x0004, 0x1220);
if ( !e )
{
- gdcmVerboseMacro( "NO Directory record sequence (0x0004,0x1220)");
+ gdcmVerboseMacro( "No Directory Record Sequence (0004,1220) found");
/// \todo FIXME: what to do when the parsed file IS NOT a DICOMDIR file ?
return;
}
SeqEntry *s = dynamic_cast<SeqEntry *>(e);
if ( !s )
{
- gdcmVerboseMacro( "No SeqEntry present");
- // useless : (0x0004,0x1220) IS a Sequence !
+ gdcmVerboseMacro( "Element (0004,1220) is not a Sequence ?!?");
return;
}
// neither an 'IMAGE' SQItem. Skip to next item.
continue;
}
+ if( si )
+ MoveSQItem(si,tmpSI);
- //if( si )
- //MoveSQItem(si,tmpSI);
tmpSI=s->GetNextSQItem();
}
-// friend hunting : this one will be difficult to remove !
ClearEntry();
}
} // end namespace gdcm
//-----------------------------------------------------------------------------
+// Print
+/**
+ * \brief Canonical Printer
+ * @param os ostream we want to print in
+ * @param indent Indentation string to be prepended during printing
+ */
+void DicomDir::Print(std::ostream &os, std::string const & )
+{
+ if( MetaElems )
+ {
+ MetaElems->SetPrintLevel(PrintLevel);
+ MetaElems->Print(os);
+ }
+ for(ListDicomDirPatient::iterator cc = Patients.begin();
+ cc != Patients.end();
+ ++cc)
+ {
+ (*cc)->SetPrintLevel(PrintLevel);
+ (*cc)->Print(os);
+ }
+}
+
+//-----------------------------------------------------------------------------