00001 /*========================================================================= 00002 00003 Program: gdcm 00004 Module: $RCSfile: gdcmDicomDirElement.h,v $ 00005 Language: C++ 00006 Date: $Date: 2007/08/22 16:14:03 $ 00007 Version: $Revision: 1.41 $ 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 #ifndef _GDCMDICOMDIRELEMENT_H_ 00020 #define _GDCMDICOMDIRELEMENT_H_ 00021 00022 #include "gdcmRefCounter.h" 00023 #include "gdcmVRKey.h" 00024 00025 #include <list> 00026 00027 namespace GDCM_NAME_SPACE 00028 { 00029 00030 //----------------------------------------------------------------------------- 00031 00032 typedef std::list<DicomElement> ListDicomDirElem; 00033 typedef std::list<DicomElement> ListDicomDirMetaElem; 00034 typedef std::list<DicomElement> ListDicomDirPatientElem; 00035 typedef std::list<DicomElement> ListDicomDirStudyElem; 00036 typedef std::list<DicomElement> ListDicomDirVisitElem; 00037 typedef std::list<DicomElement> ListDicomDirSerieElem; 00038 typedef std::list<DicomElement> ListDicomDirImageElem; 00039 typedef std::list<DicomElement> ListDicomDirPrivateElem; // For "CSA Non Image" 00040 00041 // For future use (Full DICOMDIR) 00042 00043 /* 00044 typedef std::list<DicomElement> ListDicomDirResultElem; 00045 typedef std::list<DicomElement> ListDicomDirStudyComponentElem; 00046 00047 typedef std::list<DicomElement> ListDicomDirOverlayElem; 00048 typedef std::list<DicomElement> ListDicomDirModalityLutElem; 00049 typedef std::list<DicomElement> ListDicomDirModalityLutElem; 00050 typedef std::list<DicomElement> ListDicomDirCurveElem; 00051 typedef std::list<DicomElement> ListDicomDirStoredPrintElem; 00052 typedef std::list<DicomElement> ListDicomDirRtDoseElem; 00053 typedef std::list<DicomElement> ListDicomDirRtStructureSetElem; 00054 typedef std::list<DicomElement> ListDicomDirRtPlanElem; 00055 typedef std::list<DicomElement> ListDicomDirRtTreatRecordElem; 00056 typedef std::list<DicomElement> ListDicomDirPresentationElem; 00057 typedef std::list<DicomElement> ListDicomDirSrDocumentElem; 00058 typedef std::list<DicomElement> ListDicomDirKeyObjectDocElem; 00059 typedef std::list<DicomElement> ListDicomDirSpectroscopyElem; 00060 typedef std::list<DicomElement> ListDicomDirRawDataElem; 00061 typedef std::list<DicomElement> ListDicomDirRegistrationElem; 00062 typedef std::list<DicomElement> ListDicomDirFiducialElem; 00063 */ 00064 00065 //----------------------------------------------------------------------------- 00070 class GDCM_EXPORT DicomDirElement : public RefCounter 00071 { 00072 gdcmTypeMacro(DicomDirElement); 00073 00074 public: 00076 static DicomDirElement *New() {return new DicomDirElement();} 00077 00081 virtual void Print(std::ostream &os = std::cout, 00082 std::string const &indent = "" ); 00083 00088 ListDicomDirMetaElem const &GetDicomDirMetaElements() const 00089 { return DicomDirMetaList; } 00090 00095 ListDicomDirPatientElem const &GetDicomDirPatientElements() const 00096 { return DicomDirPatientList; } 00097 00102 ListDicomDirStudyElem const &GetDicomDirStudyElements() const 00103 { return DicomDirStudyList; } 00104 00109 ListDicomDirVisitElem const &GetDicomDirVisitElements() const 00110 { return DicomDirVisitList; } 00115 ListDicomDirSerieElem const &GetDicomDirSerieElements() const 00116 { return DicomDirSerieList; } 00117 00122 ListDicomDirImageElem const &GetDicomDirImageElements() const 00123 { return DicomDirImageList; } 00124 00129 ListDicomDirPrivateElem const &GetDicomDirPrivateElements() const 00130 { return DicomDirPrivateList; } 00131 00132 00133 // Public method to add an element 00134 bool AddEntry(DicomDirType type, DicomElement const &elem); 00135 00136 // Only one instance of ddElem 00137 void AddDicomDirElement(DicomDirType type, 00138 uint16_t group, uint16_t elem, VRKey vr); 00139 00140 protected: 00141 DicomDirElement(); 00142 ~DicomDirElement(); 00143 00144 private: 00146 ListDicomDirMetaElem DicomDirMetaList; 00148 ListDicomDirPatientElem DicomDirPatientList; 00150 ListDicomDirStudyElem DicomDirStudyList; 00152 ListDicomDirVisitElem DicomDirVisitList; 00154 ListDicomDirSerieElem DicomDirSerieList; 00156 ListDicomDirImageElem DicomDirImageList; 00158 ListDicomDirPrivateElem DicomDirPrivateList; 00159 }; 00160 } // end namespace gdcm 00161 //----------------------------------------------------------------------------- 00162 #endif