3
* $Id: icontroladormodulo.h 3648 2011-04-04 11:56:18Z 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
20
#include <yasper/yasper.h>
21
#include "imodelointegracion.h"
22
#include "imodelointegracion.h"
23
#include "icontextoestudio.h"
26
class IPasoConfiguracion;
38
class IControladorImportacionPACS;
40
#define GINKGO_PARAMS_SEPARATOR "="
46
/* Appender / formatter para reordenar y/o añadir tags DICOM necesarios por el controlador o vista en la importacion */
47
typedef struct TagsDICOM {
48
typedef std::vector<std::string> ListaArbolesPersonalizados;
49
typedef std::map<std::string, int> MapaTags;
51
// Vector de nombres de raices de tags DICOM que el modo necesita
52
ListaArbolesPersonalizados ArbolesPersonalizados;
53
// Mapa de tags a insertar/sobreescribir con sus id de raices asociadas (donde se insertaran)
54
MapaTags TagsAInsertar;
58
class EXTAPI ModoControlador {
60
class EXTAPI TipoListaModalidades : public std::list<std::string> { };
62
ModoControlador(int id, const std::string& descripcion, TipoListaModalidades listaModalidades, bool abreSeriesSueltas, wxBitmap * bitmap = NULL)
65
this->descripcion = descripcion;
66
this->bitmap = bitmap;
67
this->m_listaModalidades = listaModalidades;
68
this->m_abreSeriesSueltas = abreSeriesSueltas;
73
m_listaModalidades.clear();
76
const TipoListaModalidades GetModalidades(){
77
return m_listaModalidades;
80
const std::string& GetDescripcion(){
84
wxBitmap* GetBitmap(){
92
bool AbreSeriesSueltas()
94
return m_abreSeriesSueltas;
97
virtual bool SupportsModalityFile(const std::string &modalidad, const std::string& transferSyntax){
98
for(TipoListaModalidades::iterator it = m_listaModalidades.begin(); it!= m_listaModalidades.end(); ++it){
99
if((*it) == modalidad){
100
if (transferSyntax != "1.2.840.10008.1.2.4.100" && transferSyntax != "1.2.840.10008.1.2.4.101") {
111
TipoListaModalidades m_listaModalidades;
113
std::string descripcion;
115
bool m_abreSeriesSueltas;
118
class EXTAPI Plantilla{
120
Plantilla(const wxBitmap& plantilla, const std::string& nombre, const std::string& descripcion = "");
124
const wxBitmap* GetImagen() const {
128
const std::string& GetNombre() const {
132
const std::string& GetDescripcion() const {
133
return m_descripcion;
137
wxBitmap* m_plantilla;
138
std::string m_nombre;
139
std::string m_descripcion;
144
std::string etiqueta; // Etiqueta que usa Ginkgo para localizar el código
145
std::string codigo; // Código formal para la etiqueta
146
std::string namespaceid; // NamespaceID de la entidad asignatoria
147
std::string descripcion; // Descripcion del codigo
148
std::string tipoobservacion; // Tipo de observacion. Solo se usa para Ids transportados en OBX
149
std::string tipodatos;
150
std::string version; //version of the id
156
inline IdHL7(const IdHL7& o)
161
inline IdHL7(const std::string& e, const std::string& c, const std::string& d, const std::string& n, const std::string& t, const std::string& td, const std::string& v = "")
172
inline IdHL7& operator = (const IdHL7& o)
174
etiqueta = o.etiqueta;
176
descripcion = o.descripcion;
177
namespaceid = o.namespaceid;
178
tipoobservacion = o.tipoobservacion;
179
tipodatos = o.tipodatos;
184
inline operator const std::string () const {
185
return codigo + "^" + descripcion + "^" + namespaceid;
189
/* Controlador de módulos. Responsable de proveer una factoría de controladores de estudios y registrarlos mediante el controlador de vistas. */
190
class EXTAPI IControladorModulo {
192
typedef struct TPrivateTagReemplazable
194
typedef enum {STD, XML} TType;
197
TPrivateTagReemplazable (unsigned char id, TType type)
202
} TPrivateTagReemplazable;
203
typedef std::list<TPrivateTagReemplazable> TListaIdsTagsPrivados;
204
//first element uid provider, second list of tags
205
typedef std::map<std::string, TListaIdsTagsPrivados> TMapaTagsPrivados;
207
class DescriptorSerie {
209
DescriptorSerie(const std::string& uidSerie, const std::string& modalidad, const std::string& transferSyntax, GnkPtr<GIL::IModeloIntegracion> pModeloIntegracion){
210
m_uidSerie = uidSerie;
211
m_modalidad = modalidad;
212
m_uidTransferSyntax = transferSyntax;
213
m_pModeloIntegracion = pModeloIntegracion;
216
std::string m_uidSerie;
217
std::string m_modalidad;
218
std::string m_uidTransferSyntax;
219
GnkPtr<GIL::IModeloIntegracion> m_pModeloIntegracion;
222
typedef std::list<DescriptorSerie> ListaDescriptoresSerie;
223
typedef std::list<Plantilla*> TipoListaPlantillas;
224
typedef std::list<IdHL7> TipoListaIdsHL7;
225
typedef std::map<std::string,IdHL7> TipoMapaIdsHL7;
228
IControladorModulo(GNC::GCS::IEntorno* pEntorno, const std::string& uid, int priority, const std::string& sid = "Common");
231
virtual ~IControladorModulo();
233
/* Obtiene el UID único del módulo */
234
const std::string& GetUID() const
239
/* Obtiene el SID (String Id) único del módulo. Usado para transferencia de parámetros de línea de comandos. */
240
const std::string& GetSID() const
245
const wxBitmap* GetBitmap() {
249
/* Obtiene el Nombre del módulo (que aparece en el menú)*/
250
const std::string& GetNombre() const
255
virtual bool SoportaImportacion() const
260
//si importa series true, si importa estudios false
261
virtual bool ImportaSeries() const
266
virtual TipoListaPlantillas& GetPlantillas() {
267
return m_listaPlantillas;
270
virtual void GetPasosImportacion(IWizard* , std::list<IPasoWizard*> &, wxWindow* , std::string &, GnkPtr<GIL::IModeloIntegracion> ){
274
virtual void GetPasosConfiguracion( std::list<IPasoConfiguracion*> &, wxWindow* ){
278
// Metodos de inicializacion de configuracion del modulo
279
void RegistrarConfiguracion();
281
//registra las vistas
282
virtual void RegistrarVistas() = 0;
284
const IdHL7 GetIdInforme(const std::string& key) const;
286
const IdHL7 GetIdEstudioHL7(const std::string& key) const;
288
const IdHL7 GetIdRegistroHL7(const std::string& key) const;
290
/* Abre un estudio de manera no interactiva desde un directorio y devuelve su controlador específico */
291
virtual GNC::GCS::IVista* AbrirVista(int modo, ListaDescriptoresSerie& series, const std::string& uidEstudioDiagnostico = "") = 0;
294
//region "Manipulacion de paneles extra (Herramientas, etc.)"
296
virtual void InsertarPaneles()
300
virtual void EliminarPaneles()
304
virtual void MostrarPaneles(bool = true, bool = true)
308
virtual void OcultarPaneles(bool = true, bool = true)
314
typedef std::vector<ModoControlador*> ListaModos;
315
typedef std::vector<ModoControlador*>::iterator IteradorListaModos;
317
virtual ModoControlador* GetModo(int id) {
318
if (id >= (int)m_ListaModos.size()) {
322
return m_ListaModos[id];
326
virtual ListaModos& GetListaModos(){
330
virtual int GetPriority()
335
virtual void GetTagsPrivadosReplace(GNC::GCS::IControladorModulo::TMapaTagsPrivados& mapaTags);
336
virtual GNC::GCS::IContextoEstudio::TModoFuncionamiento GetDiagnosticMode();
339
GNC::GCS::IEntorno* m_pEntorno;
340
ListaModos m_ListaModos;
341
TipoListaPlantillas m_listaPlantillas;
343
TipoListaIdsHL7 m_ListaInformes;
344
TipoMapaIdsHL7 m_ListaEstudios;
345
TipoMapaIdsHL7 m_ListaRegistros;
349
std::string m_Nombre;
350
std::string m_CopyRight;
351
std::string m_Author;
354
int m_VersionRelease;
355
std::string m_CodeName;
356
std::string m_Version;