1 /*=========================================================================
4 Module: $RCSfile: gdcmDicomDirSerie.h,v $
6 Date: $Date: 2007/08/29 15:30:49 $
7 Version: $Revision: 1.38 $
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 _GDCMDICOMDIRSERIE_H_
20 #define _GDCMDICOMDIRSERIE_H_
22 #include "gdcmDicomDirObject.h"
24 namespace GDCM_NAME_SPACE
27 class DicomDirPrivate;
29 //-----------------------------------------------------------------------------
30 typedef std::list<DicomDirImage *> ListDicomDirImage;
31 typedef std::list<DicomDirPrivate *> ListDicomDirPrivate;
32 //-----------------------------------------------------------------------------
34 * \brief describes a SERIE within a within a STUDY
35 * (DicomDirStudy) of a given DICOMDIR (DicomDir)
37 class GDCM_EXPORT DicomDirSerie : public DicomDirObject
39 gdcmTypeMacro(DicomDirSerie);
42 /// \brief Constructs a DicomDirSerie with a RefCounter
43 static DicomDirSerie *New(bool empty=false) {return new DicomDirSerie(empty);}
45 void Print( std::ostream &os = std::cout, std::string const &indent = "" );
46 void WriteContent( std::ofstream *fp, FileType t, bool insideMetaElements,
47 bool insideSequence );
50 DicomDirImage *NewImage();
51 /// Add a new gdcm::DicomDirImage to the Serie
52 void AddImage(DicomDirImage *obj) { Images.push_back(obj); }
55 DicomDirImage *GetFirstImage();
56 DicomDirImage *GetNextImage();
57 /// returns the number of Images currently held in the gdcm::DicomDirSerie
58 int GetNumberOfImages() { return Images.size();}
60 // 'Private' methods (For SIEMENS 'CSA non image')
61 DicomDirPrivate *NewPrivate();
62 /// Add a new gdcm::DicomDirPrivate to the Serie
63 void AddPrivate(DicomDirPrivate *obj) { Privates.push_back(obj); }
66 DicomDirPrivate *GetFirstPrivate();
67 DicomDirPrivate *GetNextPrivate();
68 /// returns the number of 'Privates' currently held in the gdcm::DicomDirSerie
69 int GetNumberOfPrivates() { return Privates.size();}
71 virtual void Copy(DocEntrySet *set);
74 DicomDirSerie(bool empty=false);
78 ///chained list of DicomDirImages (to be exploited recursively)
79 ListDicomDirImage Images;
80 /// iterator on the DicomDirImages of the current DicomDirSerie
81 ListDicomDirImage::iterator ItImage;
83 ///chained list of DicomDirPrivates (to be exploited recursively)
84 ListDicomDirPrivate Privates;
85 /// iterator on the DicomDirPrivates of the current DicomDirSerie
86 ListDicomDirPrivate::iterator ItPrivate;
88 // for future use (Full DICOMDIR):
90 /// chained list of DicomDirOverlays(single level)
91 ListDicomDirOverlay Overlays;
92 /// iterator on the DicomDirOverlays of the current DicomDirSerie
93 ListDicomDirOverlay::iterator ItOverlay;
95 /// chained list of DicomDirModalityLuts(single level)
96 ListDicomDirModalityLut ModalityLuts;
97 /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
98 ListDicomDirModalityLut::iterator ItModalityLuts;
100 /// chained list of DicomDirCurves(single level)
101 ListDicomDirCurve Curves;
102 /// iterator on the DicomDirCurves of the current DicomDirSerie
103 ListDicomDirCurve::iterator ItCurves;
105 /// chained list of DicomDirStoredPrints(single level)
106 ListDicomDirStoredPrint StoredPrints;
107 /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
108 ListDicomDirStoredPrint::iterator ItStoredPrints;
110 /// chained list of DicomDirRtDoses(single level)
111 ListDicomDirRtDose RtDoses;
112 /// iterator on the DicomDirRtDoses of the current DicomDirSerie
113 ListDicomDirRtDose::iterator ItRtDoses;
115 /// chained list of DicomDirRtStructureSets(single level)
116 ListDicomDirRtStructureSet RtStructureSets;
117 /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
118 ListDicomDirRtStructureSet::iterator ItRtStructureSets;
120 /// chained list of DicomDirRtPlans(single level)
121 ListDicomDirRtPlan RtPlans;
122 /// iterator on the DicomDirRtPlans of the current DicomDirSerie
123 ListDicomDirPlan::iterator ItRtPlans;
125 /// chained list of DicomDirRtTreatRecords(single level)
126 ListDicomDirRtTreatRecord RtTreatRecords;
127 /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
128 ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
130 /// chained list of DicomDirPresentations(single level)
131 ListDicomDirPresentation Presentations;
132 /// iterator on the DicomDirPresentations of the current DicomDirSerie
133 ListDicomDirPresentation::iterator ItPresentations;
135 /// chained list of DicomDirWaveForms(single level)
136 ListDicomDirWaveForm WaveForms;
137 /// iterator on the DicomDirWaveForms of the current DicomDirSerie
138 ListDicomDirWaveForm::iterator ItWaveForms;
140 /// chained list of DicomDirSrDocuments(single level)
141 ListDicomDirSrDocument SrDocuments;
142 /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
143 ListDicomDirSrDocument::iterator ItSrDocuments;
145 /// chained list of DicomDirKeyObjectDocs(single level)
146 ListDicomDirKeyObjectDoc KeyObjectDocs;
147 /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
148 ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
150 /// chained list of DicomDirSpectroscopys(single level)
151 ListDicomDirSpectroscopy Spectroscopys;
152 /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
153 ListDicomDirSpectroscopy::iterator ItSpectroscopys;
155 /// chained list of DicomDirRawDatas(single level)
156 ListDicomDirRawData RawDatas;
157 /// iterator on the DicomDirRawDatas of the current DicomDirSerie
158 ListDicomDirRawData::iterator ItRawDatas;
160 /// chained list of DicomDirRegistrations(single level)
161 ListDicomDirRegistration Registrations;
162 /// iterator on the DicomDirRegistrations of the current DicomDirSerie
163 ListDicomDirRegistration::iterator ItRegistrations;
165 /// chained list of DicomDirFiducials(single level)
166 ListDicomDirFiducial Fiducials;
167 /// iterator on the DicomDirFiducials of the current DicomDirSerie
168 ListDicomDirFiducial::iterator ItFiducials;
172 } // end namespace gdcm
173 //-----------------------------------------------------------------------------