/*========================================================================= Program: wxMaracas Module: $RCSfile: marDicom.h,v $ Language: C++ Date: $Date: 2008/10/31 16:32:55 $ Version: $Revision: 1.1 $ Copyright: (c) 2002, 2003 License: This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef __MAR__KERNEL__DICOM__HXX__ #define __MAR__KERNEL__DICOM__HXX__ #include #include #include "marObject.h" class MAR_KERNEL_EXPORT marDicom : public marObject { public: enum DicomTags { ID_File_Name = 0 , ID_SOP_Class_UID , ID_SOP_Instance_UID , ID_Study_Date , ID_Series_Date , ID_Acquisition_Date , ID_Image_Date , ID_Study_Time , ID_Series_Time , ID_Acquisition_Time , ID_Image_Time , ID_Modality , ID_Manufacturer , ID_Institution_Name , ID_Study_Description , ID_Series_Description , ID_Admitting_Diagnoses_Description , ID_Patient_Name , ID_Patient_ID , ID_Body_Part_Examined , ID_Scanning_Sequence , ID_Sequence_Variant , ID_Scan_Options , ID_MR_Acquisition_Type , ID_Sequence_Name , ID_Slice_Thickness , ID_Repetition_Time , ID_Echo_Time , ID_Inversion_Time , ID_Number_of_Averages , ID_Imaging_Frequency , ID_Imaged_Nucleus , ID_Echo_Number , ID_Magnetic_Field_Strength , ID_Spacing_Between_Slices , ID_Echo_Train_Length , ID_Percent_Sampling , ID_Percent_Phase_Field_of_View , ID_Receiving_Coil , ID_Patient_Position , ID_Study_Instance_UID , ID_Series_Instance_UID , ID_Study_ID , ID_Series_Number , ID_Acquisition_Number , ID_Image_Number , ID_Patient_Orientation , ID_Image_Position , ID_Image_Position_Patient , ID_Image_Orientation , ID_Image_Orientation_Patient , ID_Location , ID_Frame_of_Reference_UID , ID_Slice_Location , ID_Image_Comments , ID_Pixel_Spacing , ID_Window_Center , ID_Window_Width , ID_dicom_tags_count }; public: marDicom( marParameters* p = NULL ); ~marDicom( ) { reset( ); } wxString& getActualStudy( ) { return( _actualStudy ); } wxString& getActualSerie( ) { return( _actualSerie ); } wxArrayString getStudies( ); wxArrayString getSeries( ); wxArrayString getStudyData( ); wxArrayString getSerieData( ); void loadActualSerie( ); wxArrayString& getImageFileNames( ) { return( _imageFileNames ); } wxArrayString& getImageNumbers( ) { return( _imageNumbers ); } void loadVolume( bool force = false ); void freeVolume( ); bool volumeLoaded( ) { return( _volume != NULL ); } kVolume* getVolume( ) { return( _volume ); } wxString getImageNumber( int i ) { return( _imageNumbers[ i ] ); } wxString getImageFileName( int i ) { return( _imageFileNames[ i ] ); } bool setActualStudy( wxString& s ); bool setActualSerie( wxString& s ); /** General methods */ void reset( ) { freeVolume( ); _imageFileNames.Clear( ); _imageNumbers.Clear( ); } void copyFrom( const marObject& from ); /** Persistence methods */ bool save( std::ofstream& os ); bool load( std::ifstream& is ); wxArrayString getRelationalArrayStudyData( ); wxArrayString getRelationalArraySerieData( ); private: wxString _actualStudy; wxString _actualSerie; wxArrayString _imageFileNames; wxArrayString _imageNumbers; kVolume* _volume; }; #endif // __MAR__KERNEL__DICOM__HXX__