1 /*=========================================================================
4 Module: $RCSfile: gdcmDicomDirSerie.h,v $
6 Date: $Date: 2007/08/22 16:14:03 $
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 _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 );
49 DicomDirImage *NewImage();
50 /// Add a new gdcm::DicomDirImage to the Serie
51 void AddImage(DicomDirImage *obj) { Images.push_back(obj); }
54 DicomDirImage *GetFirstImage();
55 DicomDirImage *GetNextImage();
56 /// returns the number of Images currently held in the gdcm::DicomDirSerie
57 int GetNumberOfImages() { return Images.size();}
59 // 'Private' methods (For SIEMENS 'CSA non image')
60 DicomDirPrivate *NewPrivate();
61 /// Add a new gdcm::DicomDirPrivate to the Serie
62 void AddPrivate(DicomDirPrivate *obj) { Privates.push_back(obj); }
65 DicomDirPrivate *GetFirstPrivate();
66 DicomDirPrivate *GetNextPrivate();
67 /// returns the number of 'Privates' currently held in the gdcm::DicomDirSerie
68 int GetNumberOfPrivates() { return Privates.size();}
70 virtual void Copy(DocEntrySet *set);
73 DicomDirSerie(bool empty=false);
77 ///chained list of DicomDirImages (to be exploited recursively)
78 ListDicomDirImage Images;
79 /// iterator on the DicomDirImages of the current DicomDirSerie
80 ListDicomDirImage::iterator ItImage;
82 ///chained list of DicomDirPrivates (to be exploited recursively)
83 ListDicomDirPrivate Privates;
84 /// iterator on the DicomDirPrivates of the current DicomDirSerie
85 ListDicomDirPrivate::iterator ItPrivate;
87 // for future use (Full DICOMDIR):
89 /// chained list of DicomDirOverlays(single level)
90 ListDicomDirOverlay Overlays;
91 /// iterator on the DicomDirOverlays of the current DicomDirSerie
92 ListDicomDirOverlay::iterator ItOverlay;
94 /// chained list of DicomDirModalityLuts(single level)
95 ListDicomDirModalityLut ModalityLuts;
96 /// iterator on the DicomDirModalityLuts of the current DicomDirSerie
97 ListDicomDirModalityLut::iterator ItModalityLuts;
99 /// chained list of DicomDirCurves(single level)
100 ListDicomDirCurve Curves;
101 /// iterator on the DicomDirCurves of the current DicomDirSerie
102 ListDicomDirCurve::iterator ItCurves;
104 /// chained list of DicomDirStoredPrints(single level)
105 ListDicomDirStoredPrint StoredPrints;
106 /// iterator on the DicomDirStoredPrints of the current DicomDirSerie
107 ListDicomDirStoredPrint::iterator ItStoredPrints;
109 /// chained list of DicomDirRtDoses(single level)
110 ListDicomDirRtDose RtDoses;
111 /// iterator on the DicomDirRtDoses of the current DicomDirSerie
112 ListDicomDirRtDose::iterator ItRtDoses;
114 /// chained list of DicomDirRtStructureSets(single level)
115 ListDicomDirRtStructureSet RtStructureSets;
116 /// iterator on the DicomDirRtStructureSets of the current DicomDirSerie
117 ListDicomDirRtStructureSet::iterator ItRtStructureSets;
119 /// chained list of DicomDirRtPlans(single level)
120 ListDicomDirRtPlan RtPlans;
121 /// iterator on the DicomDirRtPlans of the current DicomDirSerie
122 ListDicomDirPlan::iterator ItRtPlans;
124 /// chained list of DicomDirRtTreatRecords(single level)
125 ListDicomDirRtTreatRecord RtTreatRecords;
126 /// iterator on the DicomDirRtTreatRecords of the current DicomDirSerie
127 ListDicomDirRtTreatRecord::iterator ItRtTreatRecords;
129 /// chained list of DicomDirPresentations(single level)
130 ListDicomDirPresentation Presentations;
131 /// iterator on the DicomDirPresentations of the current DicomDirSerie
132 ListDicomDirPresentation::iterator ItPresentations;
134 /// chained list of DicomDirWaveForms(single level)
135 ListDicomDirWaveForm WaveForms;
136 /// iterator on the DicomDirWaveForms of the current DicomDirSerie
137 ListDicomDirWaveForm::iterator ItWaveForms;
139 /// chained list of DicomDirSrDocuments(single level)
140 ListDicomDirSrDocument SrDocuments;
141 /// iterator on the DicomDirSrDocuments of the current DicomDirSerie
142 ListDicomDirSrDocument::iterator ItSrDocuments;
144 /// chained list of DicomDirKeyObjectDocs(single level)
145 ListDicomDirKeyObjectDoc KeyObjectDocs;
146 /// iterator on the DicomDirKeyObjectDocs of the current DicomDirSerie
147 ListDicomDirKeyObjectDoc::iterator ItKeyObjectDocs;
149 /// chained list of DicomDirSpectroscopys(single level)
150 ListDicomDirSpectroscopy Spectroscopys;
151 /// iterator on the DicomDirSpectroscopys of the current DicomDirSerie
152 ListDicomDirSpectroscopy::iterator ItSpectroscopys;
154 /// chained list of DicomDirRawDatas(single level)
155 ListDicomDirRawData RawDatas;
156 /// iterator on the DicomDirRawDatas of the current DicomDirSerie
157 ListDicomDirRawData::iterator ItRawDatas;
159 /// chained list of DicomDirRegistrations(single level)
160 ListDicomDirRegistration Registrations;
161 /// iterator on the DicomDirRegistrations of the current DicomDirSerie
162 ListDicomDirRegistration::iterator ItRegistrations;
164 /// chained list of DicomDirFiducials(single level)
165 ListDicomDirFiducial Fiducials;
166 /// iterator on the DicomDirFiducials of the current DicomDirSerie
167 ListDicomDirFiducial::iterator ItFiducials;
171 } // end namespace gdcm
172 //-----------------------------------------------------------------------------