00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkMedicalImageProperties_h
00027 #define __vtkMedicalImageProperties_h
00028
00029 #include "vtkObject.h"
00030
00031 class vtkMedicalImagePropertiesInternals;
00032
00033 class VTK_IO_EXPORT vtkMedicalImageProperties : public vtkObject
00034 {
00035 public:
00036 static vtkMedicalImageProperties *New();
00037 vtkTypeRevisionMacro(vtkMedicalImageProperties,vtkObject);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00041 virtual void Clear();
00042
00044
00045 vtkSetStringMacro(PatientName);
00046 vtkGetStringMacro(PatientName);
00048
00050
00051 vtkSetStringMacro(PatientID);
00052 vtkGetStringMacro(PatientID);
00054
00056
00059 vtkSetStringMacro(PatientAge);
00060 vtkGetStringMacro(PatientAge);
00062
00067 static int GetAgeAsFields(const char *age, int &year, int &month, int &week, int &day);
00068
00069
00070
00071
00072
00073
00074
00075 int GetPatientAgeYear();
00076 int GetPatientAgeMonth();
00077 int GetPatientAgeWeek();
00078 int GetPatientAgeDay();
00079
00081
00082 vtkSetStringMacro(PatientSex);
00083 vtkGetStringMacro(PatientSex);
00085
00087
00089 vtkSetStringMacro(PatientBirthDate);
00090 vtkGetStringMacro(PatientBirthDate);
00092
00093
00094
00095 int GetPatientBirthDateYear();
00096 int GetPatientBirthDateMonth();
00097 int GetPatientBirthDateDay();
00098
00100
00101 vtkSetStringMacro(StudyDate);
00102 vtkGetStringMacro(StudyDate);
00104
00106
00108 vtkSetStringMacro(AcquisitionDate);
00109 vtkGetStringMacro(AcquisitionDate);
00111
00112
00113
00114 int GetAcquisitionDateYear();
00115 int GetAcquisitionDateMonth();
00116 int GetAcquisitionDateDay();
00117
00119
00121 vtkSetStringMacro(StudyTime);
00122 vtkGetStringMacro(StudyTime);
00124
00126
00129 vtkSetStringMacro(AcquisitionTime);
00130 vtkGetStringMacro(AcquisitionTime);
00132
00134
00136 vtkSetStringMacro(ImageDate);
00137 vtkGetStringMacro(ImageDate);
00139
00140
00141
00142 int GetImageDateYear();
00143 int GetImageDateMonth();
00144 int GetImageDateDay();
00145
00149 static int GetDateAsFields(const char *date, int &year, int &month, int &day);
00150
00154 static int GetDateAsLocale(const char *date, char *locale);
00155
00157
00159 vtkSetStringMacro(ImageTime);
00160 vtkGetStringMacro(ImageTime);
00162
00164
00165 vtkSetStringMacro(ImageNumber);
00166 vtkGetStringMacro(ImageNumber);
00168
00170
00171 vtkSetStringMacro(SeriesNumber);
00172 vtkGetStringMacro(SeriesNumber);
00174
00176
00178 vtkSetStringMacro(SeriesDescription);
00179 vtkGetStringMacro(SeriesDescription);
00181
00183
00184 vtkSetStringMacro(StudyID);
00185 vtkGetStringMacro(StudyID);
00187
00189
00190 vtkSetStringMacro(StudyDescription);
00191 vtkGetStringMacro(StudyDescription);
00193
00195
00196 vtkSetStringMacro(Modality);
00197 vtkGetStringMacro(Modality);
00199
00201
00202 vtkSetStringMacro(Manufacturer);
00203 vtkGetStringMacro(Manufacturer);
00205
00207
00208 vtkSetStringMacro(ManufacturerModelName);
00209 vtkGetStringMacro(ManufacturerModelName);
00211
00213
00214 vtkSetStringMacro(StationName);
00215 vtkGetStringMacro(StationName);
00217
00219
00220 vtkSetStringMacro(InstitutionName);
00221 vtkGetStringMacro(InstitutionName);
00223
00225
00227 vtkSetStringMacro(ConvolutionKernel);
00228 vtkGetStringMacro(ConvolutionKernel);
00230
00232
00234 vtkSetStringMacro(SliceThickness);
00235 vtkGetStringMacro(SliceThickness);
00236 virtual double GetSliceThicknessAsDouble();
00238
00240
00242 vtkSetStringMacro(KVP);
00243 vtkGetStringMacro(KVP);
00245
00247
00249 vtkSetStringMacro(GantryTilt);
00250 vtkGetStringMacro(GantryTilt);
00251 virtual double GetGantryTiltAsDouble();
00253
00255
00257 vtkSetStringMacro(EchoTime);
00258 vtkGetStringMacro(EchoTime);
00260
00262
00264 vtkSetStringMacro(EchoTrainLength);
00265 vtkGetStringMacro(EchoTrainLength);
00267
00269
00272 vtkSetStringMacro(RepetitionTime);
00273 vtkGetStringMacro(RepetitionTime);
00275
00277
00279 vtkSetStringMacro(ExposureTime);
00280 vtkGetStringMacro(ExposureTime);
00282
00284
00285 vtkSetStringMacro(XRayTubeCurrent);
00286 vtkGetStringMacro(XRayTubeCurrent);
00288
00290
00292 vtkSetStringMacro(Exposure);
00293 vtkGetStringMacro(Exposure);
00295
00297
00298 vtkSetVector6Macro(DirectionCosine,double);
00299 vtkGetVector6Macro(DirectionCosine,double);
00301
00302
00303
00304
00305
00306 virtual void AddUserDefinedValue(const char *name, const char *value);
00307 virtual const char *GetUserDefinedValue(const char *name);
00308 virtual unsigned int GetNumberOfUserDefinedValues();
00309 virtual const char *GetUserDefinedNameByIndex(unsigned int idx);
00310 virtual const char *GetUserDefinedValueByIndex(unsigned int idx);
00311 virtual void RemoveAllUserDefinedValues();
00312
00314
00322 virtual int AddWindowLevelPreset(double w, double l);
00323 virtual void RemoveWindowLevelPreset(double w, double l);
00324 virtual void RemoveAllWindowLevelPresets();
00325 virtual int GetNumberOfWindowLevelPresets();
00326 virtual int HasWindowLevelPreset(double w, double l);
00327 virtual int GetWindowLevelPresetIndex(double w, double l);
00328 virtual int GetNthWindowLevelPreset(int idx, double *w, double *l);
00329 virtual double* GetNthWindowLevelPreset(int idx);
00330 virtual void SetNthWindowLevelPresetComment(int idx, const char *comment);
00331 virtual const char* GetNthWindowLevelPresetComment(int idx);
00333
00335
00339 const char *GetInstanceUIDFromSliceID(int volumeidx, int sliceid);
00340 void SetInstanceUIDFromSliceID(int volumeidx, int sliceid, const char *uid);
00342
00345 int GetSliceIDFromInstanceUID(int &volumeidx, const char *uid);
00346
00347
00348 typedef enum {
00349 AXIAL = 0,
00350 CORONAL,
00351 SAGITTAL
00352 } OrientationType;
00353
00354 int GetOrientationType(int volumeidx);
00355 void SetOrientationType(int volumeidx, int orientation);
00356 static const char *GetStringFromOrientationType(unsigned int type);
00357
00359 virtual void DeepCopy(vtkMedicalImageProperties *p);
00360
00361 protected:
00362 vtkMedicalImageProperties();
00363 ~vtkMedicalImageProperties();
00364
00365 char *StudyDate;
00366 char *AcquisitionDate;
00367 char *StudyTime;
00368 char *AcquisitionTime;
00369 char *ConvolutionKernel;
00370 char *EchoTime;
00371 char *EchoTrainLength;
00372 char *Exposure;
00373 char *ExposureTime;
00374 char *GantryTilt;
00375 char *ImageDate;
00376 char *ImageNumber;
00377 char *ImageTime;
00378 char *InstitutionName;
00379 char *KVP;
00380 char *ManufacturerModelName;
00381 char *Manufacturer;
00382 char *Modality;
00383 char *PatientAge;
00384 char *PatientBirthDate;
00385 char *PatientID;
00386 char *PatientName;
00387 char *PatientSex;
00388 char *RepetitionTime;
00389 char *SeriesDescription;
00390 char *SeriesNumber;
00391 char *SliceThickness;
00392 char *StationName;
00393 char *StudyDescription;
00394 char *StudyID;
00395 char *XRayTubeCurrent;
00396 double DirectionCosine[6];
00397
00399
00400 vtkMedicalImagePropertiesInternals *Internals;
00401
00403
00404 private:
00405 vtkMedicalImageProperties(const vtkMedicalImageProperties&);
00406 void operator=(const vtkMedicalImageProperties&);
00407 };
00408
00409 #endif