gdcmDicomDirStudy.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002                                                                                 
00003   Program:   gdcm
00004   Module:    $RCSfile: gdcmDicomDirStudy.cxx,v $
00005   Language:  C++
00006   Date:      $Date: 2007/07/26 08:36:49 $
00007   Version:   $Revision: 1.44 $
00008                                                                                 
00009   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
00010   l'Image). All rights reserved. See Doc/License.txt or
00011   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
00012                                                                                 
00013      This software is distributed WITHOUT ANY WARRANTY; without even
00014      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00015      PURPOSE.  See the above copyright notices for more information.
00016                                                                                 
00017 =========================================================================*/
00018 
00019 #include "gdcmDicomDirStudy.h"
00020 #include "gdcmDicomDirElement.h"
00021 #include "gdcmGlobal.h"
00022 #include "gdcmDicomDirSerie.h"
00023 #include "gdcmDicomDirVisit.h"
00024 #include "gdcmDebug.h"
00025 
00026 namespace GDCM_NAME_SPACE 
00027 {
00028 //-----------------------------------------------------------------------------
00029 // Constructor / Destructor
00034 DicomDirStudy::DicomDirStudy(bool empty)
00035               :DicomDirObject()
00036 {
00037    if ( !empty )
00038    {
00039       ListDicomDirStudyElem const &elemList = 
00040          Global::GetDicomDirElements()->GetDicomDirStudyElements();
00041       FillObject(elemList);
00042    }
00043 }
00044 
00048 DicomDirStudy::~DicomDirStudy() 
00049 {
00050    ClearSerie();
00051 }
00052 
00053 //-----------------------------------------------------------------------------
00054 // Public
00061 void DicomDirStudy::WriteContent(std::ofstream *fp, FileType t, bool insideMetaElements)
00062 {
00063    DicomDirObject::WriteContent(fp, t, false);
00064 
00065    for(ListDicomDirSerie::iterator cc = Series.begin();
00066                                    cc!= Series.end();
00067                                  ++cc )
00068    {
00069       (*cc)->WriteContent( fp, t, false );
00070    }
00071 
00072    for(ListDicomDirVisit::iterator icc = Visits.begin();
00073                                    icc!= Visits.end();
00074                                  ++icc )
00075    {
00076       (*icc)->WriteContent( fp, t, false );
00077    }
00078 }
00079 
00084 DicomDirSerie *DicomDirStudy::NewSerie()
00085 {
00086    DicomDirSerie *dd = DicomDirSerie::New();
00087    Series.push_back(dd);
00088    return dd;
00089 } 
00090 
00094 void DicomDirStudy::ClearSerie()
00095 {
00096    for(ListDicomDirSerie::iterator cc = Series.begin();
00097                                    cc != Series.end();
00098                                  ++cc )
00099    {
00100       (*cc)->Delete();
00101    }
00102    Series.clear();
00103 }
00104 
00109 DicomDirSerie *DicomDirStudy::GetFirstSerie()
00110 {
00111    ItSerie = Series.begin();
00112    if (ItSerie != Series.end())
00113       return *ItSerie;
00114    return NULL;
00115 }
00116 
00122 DicomDirSerie *DicomDirStudy::GetNextSerie()
00123 {
00124    gdcmAssertMacro (ItSerie != Series.end());
00125 
00126    ++ItSerie;
00127    if (ItSerie != Series.end())
00128       return *ItSerie;
00129    return NULL;
00130 }  
00131 
00136 DicomDirSerie *DicomDirStudy::GetLastSerie()
00137 {
00138    ItSerie = Series.end();
00139    if (ItSerie != Series.begin())
00140    {
00141      --ItSerie;
00142       return *ItSerie;
00143    }
00144    return NULL;
00145 }
00146 
00147 
00152 DicomDirVisit *DicomDirStudy::NewVisit()
00153 {
00154    DicomDirVisit *dd = DicomDirVisit::New();
00155    Visits.push_back(dd);
00156    dd->Delete();
00157    return dd;
00158 } 
00159 
00163 void DicomDirStudy::ClearVisit()
00164 {
00165    for(ListDicomDirVisit::iterator cc =  Visits.begin();
00166                                    cc != Visits.end();
00167                                  ++cc )
00168    {
00169       (*cc)->Delete();
00170    }
00171    Visits.clear();
00172 }
00173 
00178 DicomDirVisit *DicomDirStudy::GetFirstVisit()
00179 {
00180    ItVisit = Visits.begin();
00181    if (ItVisit != Visits.end())
00182       return *ItVisit;
00183    return NULL;
00184 }
00185 
00191 DicomDirVisit *DicomDirStudy::GetNextVisit()
00192 {
00193    gdcmAssertMacro (ItVisit != Visits.end());
00194 
00195    ++ItVisit;
00196    if (ItVisit != Visits.end())
00197       return *ItVisit;
00198    return NULL;
00199 }
00200 
00205 DicomDirVisit *DicomDirStudy::GetLastVisit()
00206 {
00207    ItVisit = Visits.end();
00208    if (ItVisit != Visits.begin())
00209    {
00210      --ItVisit;
00211       return *ItVisit;
00212    }
00213    return NULL;
00214 }
00215 
00221 void DicomDirStudy::Copy(DocEntrySet *set)
00222 {
00223    // Remove all previous childs
00224    ClearSerie();
00225    ClearVisit();
00226 
00227    DicomDirObject::Copy(set);
00228 
00229    DicomDirStudy *ddEntry = dynamic_cast<DicomDirStudy *>(set);
00230    if( ddEntry )
00231    {
00232       Series = ddEntry->Series;
00233       for(ItSerie = Series.begin();ItSerie != Series.end();++ItSerie)
00234          (*ItSerie)->Register();
00235 
00236       Visits = ddEntry->Visits;
00237       for(ItVisit = Visits.begin();ItVisit != Visits.end();++ItVisit)
00238          (*ItVisit)->Register();
00239    }
00240 }
00241 
00242 //-----------------------------------------------------------------------------
00243 // Protected
00244 
00245 //-----------------------------------------------------------------------------
00246 // Private
00247 
00248 //-----------------------------------------------------------------------------
00249 // Print
00256 void DicomDirStudy::Print(std::ostream &os, std::string const & )
00257 {
00258    os << "STUDY" << std::endl;
00259    DicomDirObject::Print(os);
00260 
00261    for(ListDicomDirSerie::iterator cc = Series.begin();
00262                                    cc != Series.end();
00263                                    ++cc)
00264    {
00265       (*cc)->SetPrintLevel(PrintLevel);
00266       (*cc)->Print(os);
00267    }
00268 
00269    for(ListDicomDirVisit::iterator cc2 =  Visits.begin();
00270                                    cc2 != Visits.end();
00271                                    ++cc2)
00272    {
00273       (*cc2)->SetPrintLevel(PrintLevel);
00274       (*cc2)->Print(os);
00275    }
00276 
00277 }
00278 
00279 //-----------------------------------------------------------------------------
00280 } // end namespace gdcm

Generated on Fri Aug 24 12:59:30 2007 for gdcm by  doxygen 1.4.6