3
* $Id: icontextoestudio.h 3645 2011-04-04 09:21:08Z tovar $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
17
#if defined(__DEPRECATED)
20
#include <vtkSmartPointer.h>
21
#include <yasper/yasper.h>
25
class vtkGinkgoImageViewer;
26
class vtkAlgorithmOutput;
35
class IStreamingLoader;
36
class IContextoEstudioReferido;
37
class IControladorModulo;
42
class IModeloIntegracion;
48
struct TipoPrivateTags;
55
//region Interfaz de gestion de entrada (ficheros, diagnosticos, etc..)
56
class EXTAPI IContextoEstudio: public ILockable{
58
typedef enum TModoFuncionamiento {
61
} TModoFuncionamiento;
62
typedef struct TFicheroEstudio {
63
std::string RutaImagen;
64
std::string RutaDiagnostico;
67
GnkPtr<GIL::DICOM::TipoMetaInfo> MetaInfo;
68
GnkPtr<GIL::DICOM::TipoJerarquia> TagsImagen;
69
GnkPtr<GIL::DICOM::TipoJerarquia> TagsDiagnostico;
70
GnkPtr<GIL::DICOM::TipoPrivateTags> TagsPrivados;
77
WidgetsCargados = false;
83
typedef std::vector<GnkPtr<TFicheroEstudio> > TVectorFicherosEstudio;
85
GNC::GCS::IEntorno* Entorno;
86
GNC::GCS::IVista* Vista;
87
GNC::GCS::IControladorModulo* Modulo;
88
vtkSmartPointer<vtkGinkgoImageViewer> Viewer;
89
wxWindow* VentanaPadre; // La ventana WX de la que es padre la vista (Notebook/Grid..)
90
wxWindow* Ventana; // La ventana WX propia de la vista
92
GnkPtr<GNC::GCS::IStreamingLoader> Loader;
94
vtkSmartPointer<vtkAlgorithmOutput> renderConnection; // Conexion hacia renderer
96
int IndiceFicheroActivo;
97
std::list<std::string> ListaUIDsSerie;
99
TVectorFicherosEstudio Ficheros;
100
GnkPtr<GIL::IModeloIntegracion> ModeloIntegracion;
101
bool IgnorarModificaciones;
102
TModoFuncionamiento ModoFuncionamiento;
105
std::string UIDEstudioDiagnostico;
110
IContextoEstudio(const IContextoEstudio& o);
111
IContextoEstudio(const IContextoEstudio* o);
113
virtual ~IContextoEstudio();
115
static GnkPtr<GNC::GCS::IContextoEstudioReferido> NewRef(const GnkPtr<GNC::GCS::IContextoEstudio>& parent);
117
IContextoEstudio& operator = (const IContextoEstudio& o);
119
bool GetIgnorarModificaciones();
120
void SetIgnorarModificaciones(bool ignorar = true);
122
/** Obtiene el puerto de conexion de salida del StreamingLoader. Se usa para inyectar pipelines que necesiten las vistas graficas
123
Pipeline: Loader.ruta_fichero => [...] => Loader.loaderOutputConnection => [PIPELINE_ESPECIFICO] => Viewer.renderInputConnection => [...]
125
vtkSmartPointer<vtkAlgorithmOutput> GetLoaderOutputConnection();
127
/** Obtiene el puerto de conexion de entrada hacia el renderer. Por defecto es la salida del StreamingLoader
128
Pipeline: Loader.ruta_fichero => [...] => Loader.loaderOutputConnection => [PIPELINE_ESPECIFICO] => Viewer.renderInputConnection => [...]
130
void SetRendererInputConnection(const vtkSmartPointer<vtkAlgorithmOutput>& input);
132
void SetViewer(const vtkSmartPointer<vtkGinkgoImageViewer>& viewer);
134
void SetIndiceActivo(int indice);
136
virtual void InicializarContextoEstudio(std::vector<std::string>& rutas, const std::string uidEstudioDiagnostico, TModoFuncionamiento modoFuncionamiento);
137
std::vector<std::string> GetRutasImagenes();
139
std::vector<std::string> GetRutasDiagnosticos();
141
std::list<std::string> GetListaFicherosYDiagnosticos();
143
void SetModeloIntegracion(GnkPtr<GIL::IModeloIntegracion> modeloIntegracion);
144
GnkPtr<GIL::IModeloIntegracion>& GetModeloIntegracion();
146
const std::string& GetRutaDeImagenActiva();
147
const std::string& GetRutaDeImagen(const int indice);
148
const std::string& GetRutaDeDiagnosticoActivo();
150
const std::string& GetUIDEstudioDiagnostico();
153
GnkPtr<GIL::DICOM::TipoMetaInfo> GetMetaInfoDeImagenActiva();
154
GnkPtr<GIL::DICOM::TipoJerarquia> GetTagsImagenDeImagenActiva();
155
GnkPtr<GIL::DICOM::TipoJerarquia> GetTagsDiagnosticoDeImagenActiva();
156
GnkPtr<GIL::DICOM::TipoPrivateTags> GetTagsPrivadosDeImagenActiva();
158
GnkPtr<GIL::DICOM::TipoMetaInfo> GetMetaInfo(const int indice);
159
GnkPtr<GIL::DICOM::TipoJerarquia> GetTagsImagen(const int indice);
160
GnkPtr<GIL::DICOM::TipoJerarquia> GetTagsDiagnostico(int indice);
161
GnkPtr<GIL::DICOM::TipoPrivateTags> GetTagsPrivados(int indice);
163
int GetNumeroCortes();
164
virtual void RecalibrarImagenActiva(double spacing[3], double origin[3]);
165
virtual void RecalibrarImagen(const int indice, double spacing[3], double origin[3]);
167
bool GetSpacingActiva(double* spacing);
168
bool GetSpacingActiva(double& x, double& y, double& z);
169
// Returns true if image has spacing
170
bool GetSpacing(const int indice, double& x, double& y, double& z);
171
virtual void SetSpacing(const int indice, const double x, const double y, const double z);
173
void GetOriginActiva(double* origin);
174
void GetOriginActiva(double& x, double& y, double& z);
175
void GetOrigin(const int indice, double& x, double& y, double& z);
177
void GetDimensionsImagenActiva(int* dimensions);
178
void GetDimensionsImagenActiva(int& x, int& y, int& z);
179
void GetDimensionsImagen(const int indice, int& x, int& y, int& z);
181
int GetTSizeActiva();
182
const std::string GetNombreMedico();
183
const std::string GetNombreCentro();
185
bool GetTagImagenActiva(const std::string& tag, std::string& valor);
186
bool GetTagDiagnosticoActivo(const std::string& tag, std::string& valor);
188
int GetIndicePath(const std::string& path);
190
TModoFuncionamiento GetModoFuncionamiento();
193
bool EstaModificadoActivo();
194
bool EstaModificado();
195
void SetModificadoFicheroActivo();
196
void SetModificado(const int indice);
200
void GuardarWidgets(int indice);
201
void CargarWidgetsActivo(bool force = false);
202
void CargarWidgets(int indice = 0, bool force = false);
203
virtual bool CallbackPreGuardarDiagnostico(const int /*indice*/, GIL::DICOM::IDICOMManager* /*pDicomManager*/) = 0;
204
virtual bool CallbackPreCrearDiagnostico(const int /*indice*/, GIL::DICOM::TipoJerarquia* /*pJerarquiaSR*/, std::list<GnkPtr<GIL::DICOM::TipoPrivateTags> >&/*listaTagsPrivados*/) = 0;
210
void SetTagsDiagnostico( GIL::DICOM::TipoJerarquia& baseSR, GnkPtr<GIL::DICOM::TipoJerarquia> pTagDiagnostico );
211
bool GuardarUnDiagnostico();
212
bool GuardarNDiagnosticos();
213
void CargarMetaInfo(const int indice);
214
void CargarTagsImagen(const int indice);
215
virtual void CallbackCargarTagsImagen(const int /*indice*/, GIL::DICOM::IDICOMManager* /*pDicomManager*/) = 0;
216
void CrearMapaValoracionUnsignedChar(vtkSmartPointer<vtkImageData>& pMapa, GnkPtr<GIL::DICOM::TipoPrivateTags> pTagsPrivados, const unsigned char tag, const int indice, unsigned char valorInicial = 0);
218
friend class IContextoEstudioReferido;
221
class EXTAPI IContextoEstudioReferido : public IContextoEstudio
224
IContextoEstudioReferido();
226
virtual ~IContextoEstudioReferido();
230
virtual bool CallbackPreGuardarDiagnostico(const int indice, GIL::DICOM::IDICOMManager* pDicomManager) {return EstudioPadre->CallbackPreGuardarDiagnostico(indice, pDicomManager);}
231
virtual bool CallbackPreCrearDiagnostico(const int indice, GIL::DICOM::TipoJerarquia* pJerarquiaSR, std::list<GnkPtr<GIL::DICOM::TipoPrivateTags> >&listaTagsPrivados) {return EstudioPadre->CallbackPreCrearDiagnostico(indice, pJerarquiaSR,listaTagsPrivados);}
232
virtual void CallbackCargarTagsImagen(const int indice, GIL::DICOM::IDICOMManager* pDicomManager) {EstudioPadre->CallbackCargarTagsImagen(indice, pDicomManager);}
235
GnkPtr<IContextoEstudio> EstudioPadre;