00001 #ifndef __vtkMRMLPETCTFusionNode_h
00002 #define __vtkMRMLPETCTFusionNode_h
00003
00004 #include <list>
00005
00006 #include "vtkMRML.h"
00007 #include "vtkMRMLNode.h"
00008 #include "vtkMRMLStorageNode.h"
00009 #include "vtkPETCTFusion.h"
00010
00011 class vtkImageData;
00012
00013 class VTK_PETCTFUSION_EXPORT vtkMRMLPETCTFusionNode : public vtkMRMLNode
00014 {
00015 public:
00016
00017 static vtkMRMLPETCTFusionNode *New();
00018 vtkTypeMacro(vtkMRMLPETCTFusionNode,vtkMRMLNode);
00019 void PrintSelf(ostream& os, vtkIndent indent);
00020
00021
00022 typedef struct SUVEntry {
00023 int Label;
00024 double Max;
00025 double Mean;
00026 } SUVEntry;
00027
00028 std::list <SUVEntry> LabelResults;
00029
00030
00031
00032
00033
00034 virtual void SaveResultToTextFile( const char *fileName );
00035
00036
00037
00038 virtual vtkMRMLNode* CreateNodeInstance();
00039
00040
00041
00042 virtual void ReadXMLAttributes( const char** atts);
00043
00044
00045
00046 virtual void WriteXML(ostream& of, int indent);
00047
00048
00049
00050 virtual void Copy(vtkMRMLNode *node);
00051
00052
00053
00054 virtual const char* GetNodeTagName() {return "PETCTFusionParameters";};
00055
00056
00057
00058
00059 vtkGetStringMacro(InputCTReference);
00060 vtkSetStringMacro(InputCTReference);
00061
00062
00063
00064
00065 vtkGetStringMacro(InputPETReference);
00066 vtkSetStringMacro(InputPETReference);
00067
00068 vtkGetStringMacro (InputMask );
00069 vtkSetStringMacro (InputMask );
00070
00071 vtkGetStringMacro (MessageText );
00072 vtkSetStringMacro (MessageText );
00073
00074 vtkGetStringMacro (PETLUT);
00075 vtkSetStringMacro (PETLUT);
00076
00077 vtkGetStringMacro (CTLUT);
00078 vtkSetStringMacro (CTLUT);
00079
00080 vtkGetStringMacro (Layout);
00081 vtkSetStringMacro (Layout);
00082
00083 vtkGetStringMacro ( WeightUnits );
00084 vtkSetStringMacro ( WeightUnits );
00085
00086 vtkGetStringMacro ( DoseRadioactivityUnits );
00087 vtkSetStringMacro ( DoseRadioactivityUnits );
00088
00089 vtkGetStringMacro ( TissueRadioactivityUnits );
00090 vtkSetStringMacro ( TissueRadioactivityUnits );
00091
00092 vtkGetStringMacro ( VolumeUnits );
00093 vtkSetStringMacro ( VolumeUnits );
00094
00095 vtkGetMacro ( VolumeRendering, int );
00096 vtkSetMacro ( VolumeRendering, int );
00097
00098 vtkGetMacro ( NumberOfTemporalPositions, int );
00099 vtkSetMacro ( NumberOfTemporalPositions, int );
00100
00101 vtkGetMacro ( InjectedDose, double );
00102 vtkSetMacro ( InjectedDose, double );
00103
00104 vtkGetMacro ( PatientWeight, double );
00105 vtkSetMacro ( PatientWeight, double );
00106
00107 vtkGetStringMacro ( PatientName );
00108 vtkSetStringMacro ( PatientName );
00109
00110 vtkGetStringMacro ( StudyDate );
00111 vtkSetStringMacro ( StudyDate );
00112
00113 vtkGetStringMacro ( RadiopharmaceuticalStartTime );
00114 vtkSetStringMacro ( RadiopharmaceuticalStartTime );
00115
00116 vtkGetStringMacro (DecayCorrection);
00117 vtkSetStringMacro (DecayCorrection);
00118
00119 vtkGetStringMacro (DecayFactor );
00120 vtkSetStringMacro (DecayFactor );
00121
00122 vtkGetStringMacro (FrameReferenceTime );
00123 vtkSetStringMacro (FrameReferenceTime );
00124
00125 vtkGetStringMacro (RadionuclideHalfLife );
00126 vtkSetStringMacro (RadionuclideHalfLife );
00127
00128 vtkGetStringMacro (SeriesTime );
00129 vtkSetStringMacro (SeriesTime );
00130
00131 vtkGetStringMacro (PhilipsSUVFactor );
00132 vtkSetStringMacro (PhilipsSUVFactor );
00133
00134 vtkGetStringMacro (CalibrationFactor );
00135 vtkSetStringMacro (CalibrationFactor );
00136
00137 vtkGetMacro ( SUVmax_t1, float );
00138 vtkSetMacro ( SUVmax_t1, float );
00139 vtkGetMacro ( SUVmax_t2, float );
00140 vtkSetMacro ( SUVmax_t2, float );
00141
00142 vtkGetMacro ( SUVmin_t1, float );
00143 vtkSetMacro ( SUVmin_t1, float );
00144 vtkGetMacro ( SUVmin_t2, float );
00145 vtkSetMacro ( SUVmin_t2, float );
00146
00147 vtkGetMacro ( SUVmean_t1, float );
00148 vtkSetMacro ( SUVmean_t1, float );
00149 vtkGetMacro ( SUVmean_t2, float );
00150 vtkSetMacro ( SUVmean_t2, float );
00151
00152 vtkGetMacro ( SUVmaxmean_t1, float );
00153 vtkSetMacro ( SUVmaxmean_t1, float );
00154 vtkGetMacro ( SUVmaxmean_t2, float );
00155 vtkSetMacro ( SUVmaxmean_t2, float );
00156
00157 vtkGetMacro ( SUV_t1, float )
00158 vtkSetMacro ( SUV_t1, float )
00159
00160 vtkGetMacro ( SUV_t2, float )
00161 vtkSetMacro ( SUV_t2, float )
00162
00163 vtkGetMacro ( CTRangeMin, double);
00164 vtkSetMacro ( CTRangeMin, double);
00165
00166 vtkGetMacro ( CTRangeMax, double);
00167 vtkSetMacro ( CTRangeMax, double);
00168
00169 vtkGetMacro ( CTMin, double);
00170 vtkSetMacro ( CTMin, double);
00171
00172 vtkGetMacro ( CTMax, double);
00173 vtkSetMacro ( CTMax, double);
00174
00175 vtkGetMacro ( ColorRangeMin, double );
00176 vtkSetMacro ( ColorRangeMin, double );
00177
00178 vtkGetMacro ( ColorRangeMax, double );
00179 vtkSetMacro ( ColorRangeMax, double );
00180
00181 vtkGetMacro ( PETMin, double );
00182 vtkSetMacro ( PETMin, double );
00183
00184 vtkGetMacro ( PETMax, double );
00185 vtkSetMacro ( PETMax, double );
00186
00187 vtkGetMacro ( PETSUVmax, double );
00188 vtkSetMacro ( PETSUVmax, double );
00189
00190
00191
00192 virtual void UpdateReferenceID(const char *oldID, const char *newID);
00193 virtual void SetColorRange ( double min, double max );
00194 virtual void SetCTRange ( double min, double max );
00195
00196
00197 enum {
00198 ErrorEvent = 11000,
00199 ComputeDoneEvent,
00200 StartUpdatingDisplayEvent,
00201 UpdatePETDisplayEvent,
00202 UpdateCTDisplayEvent,
00203 DICOMUpdateEvent,
00204 NonDICOMEvent,
00205 WaitEvent,
00206 StatusEvent,
00207 PlotReadyEvent,
00208 };
00209
00210
00211 protected:
00212
00213 vtkMRMLPETCTFusionNode();
00214 ~vtkMRMLPETCTFusionNode();
00215 vtkMRMLPETCTFusionNode(const vtkMRMLPETCTFusionNode&);
00216 void operator=(const vtkMRMLPETCTFusionNode&);
00217
00218 char* InputCTReference;
00219 char* InputPETReference;
00220 char *InputMask;
00221 char* PETLUT;
00222 char* CTLUT;
00223 char* MessageText;
00224 char* Layout;
00225 int VolumeRendering;
00226
00227
00228 int NumberOfTemporalPositions;
00229 double PatientWeight;
00230 double InjectedDose;
00231
00232
00233
00234 char* WeightUnits;
00235
00236 char* PatientName;
00237 char* StudyDate;
00238
00239
00240 char* DoseRadioactivityUnits;
00241 char* TissueRadioactivityUnits;
00242
00243
00244 char* VolumeUnits;
00245 char *RadiopharmaceuticalStartTime;
00246 char *DecayCorrection;
00247 char *DecayFactor;
00248 char *FrameReferenceTime;
00249 char *RadionuclideHalfLife;
00250 char *SeriesTime;
00251
00252 char *PhilipsSUVFactor;
00253 char *CalibrationFactor;
00254
00255
00256 float SUV_t1;
00257 float SUV_t2;
00258 float SUVmax_t1;
00259 float SUVmin_t1;
00260 float SUVmean_t1;
00261 float SUVmaxmean_t1;
00262 float SUVmax_t2;
00263 float SUVmin_t2;
00264 float SUVmean_t2;
00265 float SUVmaxmean_t2;
00266
00267 double ColorRangeMin;
00268 double ColorRangeMax;
00269 double PETMin;
00270 double PETMax;
00271 double PETSUVmax;
00272
00273 double CTRangeMin;
00274 double CTRangeMax;
00275 double CTMin;
00276 double CTMax;
00277 };
00278
00279 #endif
00280