1 /*=========================================================================
4 Module: $RCSfile: gdcmDicomDirStudy.h,v $
6 Date: $Date: 2007/08/29 15:30:49 $
7 Version: $Revision: 1.37 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
19 #ifndef _GDCMDICOMDIRSTUDY_H_
20 #define _GDCMDICOMDIRSTUDY_H_
22 #include "gdcmDicomDirObject.h"
24 namespace GDCM_NAME_SPACE
28 //-----------------------------------------------------------------------------
29 typedef std::list<DicomDirSerie *> ListDicomDirSerie;
32 // For future use (Full DICOMDIR)
33 typedef std::list<DicomDirVisit *> ListDicomDirVisit;
35 typedef std::list<DicomDirResult *> ListDicomDirResult;
36 typedef std::list<DicomDirStudyComponent *> ListDicomDirStudyComponent;
38 //-----------------------------------------------------------------------------
40 * \brief describes a STUDY within a within a PATIENT
41 * (DicomDirPatient) of a given DICOMDIR (DicomDir)
43 class GDCM_EXPORT DicomDirStudy : public DicomDirObject
45 gdcmTypeMacro(DicomDirStudy);
48 /// \brief Constructs a DicomDirStudy with a RefCounter
49 static DicomDirStudy *New(bool empty=false) {return new DicomDirStudy(empty);}
51 void Print(std::ostream &os = std::cout, std::string const &indent = "" );
52 void WriteContent(std::ofstream *fp, FileType t, bool insideMetaElements,bool insideSequence );
55 DicomDirSerie *NewSerie();
56 /// Adds a gdcm::DicomDirSerie to a gdcm::DicomDirStudy
57 void AddSerie(DicomDirSerie *obj) { Series.push_back(obj); }
59 DicomDirSerie *GetFirstSerie();
60 DicomDirSerie *GetNextSerie();
61 DicomDirSerie *GetLastSerie();
62 /// returns the number of Series currently held in the gdcm::DicomDirStudy
63 int GetNumberOfSeries() { return Series.size();}
66 DicomDirVisit *NewVisit();
67 /// Adds a gdcm::DicomDirVisit to a gdcm::DicomDirStudy
68 void AddVisit(DicomDirVisit *obj) { Visits.push_back(obj); }
70 DicomDirVisit *GetFirstVisit();
71 DicomDirVisit *GetNextVisit();
72 DicomDirVisit *GetLastVisit();
73 /// returns the number of Visit currently held in the gdcm::DicomDirStudy
74 int GetNumberOfVisits() { return Visits.size();}
76 // for future use (Full DICOMDIR)
78 DicomDirResult *GetFirstResult();
79 DicomDirResult *GetNextResult();
80 DicomDirResult *GetLastResult();
82 DicomDirStudyComponent *GetFirstStudyComponent();
83 DicomDirStudyComponent *GetNextStudyComponent();
84 DicomDirStudyComponent *GetLastStudyComponent();
87 virtual void Copy(DocEntrySet *set);
90 DicomDirStudy(bool empty=false);
94 /// chained list of DicomDirSeries (to be exploited hierarchicaly)
95 ListDicomDirSerie Series;
96 /// iterator on the DicomDirSeries of the current DicomDirStudy
97 ListDicomDirSerie::iterator ItSerie;
99 /// chained list of DicomDirVisits(single level)
100 ListDicomDirVisit Visits;
101 /// iterator on the DicomDirVisits of the current DicomDirStudy
102 ListDicomDirVisit::iterator ItVisit;
105 // for future use (Full DICOMDIR)
107 /// chained list of DicomDirResults(single level)
108 ListDicomDirResult Results;
109 /// iterator on the DicomDirResults of the current DicomDirStudy
110 ListDicomDirResult::iterator ItResult;
112 /// chained list of DicomDirStudyComponents(single level)
113 ListDicomDirStudyComponent StudyComponents;
114 /// iterator on the DicomDirStudyComponents of the current DicomDirStudy
115 ListDicomDirStudyComponent::iterator ItStudyComponents;
118 } // end namespace gdcm
120 //-----------------------------------------------------------------------------