~ubuntu-branches/ubuntu/raring/ginkgocadx/raring-proposed

« back to all changes in this revision

Viewing changes to src/visualizator/visualizator/controllers/visualizatorcontroller.cpp

  • Committer: Package Import Robot
  • Author(s): Andreas Tille
  • Date: 2012-05-19 11:37:14 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120519113714-13jwx5svm7d4fnsq
Tags: 2.12.0.4889-1
* New upstream version
* debian/control: Standards-Version: 3.9.3 (no changes needed)
* debhelper 9 (control+compat)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *
3
 
 *  $Id: visualizatorcontroller.cpp 4555 2012-01-17 10:03:03Z tovar $
 
3
 *  $Id: visualizatorcontroller.cpp 4706 2012-02-16 07:59:43Z tovar $
4
4
 *  Ginkgo CADx Project
5
5
 *
6
6
 *  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
22
22
#include "../herramientas/herramientaoverlays.h"
23
23
#include "../herramientas/reconstructiontool.h"
24
24
 
25
 
#include "../dialogos/contenedorherramientas.h"
26
 
#include "../dialogos/importacion/pasodatosgenerales.h"
27
 
#include "../dialogos/importacion/datospersistentesimportacion.h"
28
 
#include "../dialogos/seleccionardiagnostico/seleccionardiagnostico.h"
 
25
#include <visualizator/dialogos/contenedorherramientas.h>
 
26
#include <main/gui/import/generaldata.h>
 
27
#include <main/gui/import/importationdata.h>
 
28
#include <visualizator/dialogos/seleccionardiagnostico/seleccionardiagnostico.h>
29
29
#include "../vistas/vista2d.h"
30
30
#include "../vistas/waveformview.h"
31
31
#include <visualizator/estudios/visualizatorstudy.h>
34
34
#include <api/ientorno.h>
35
35
#include <api/ivista.h>
36
36
#include <api/dicom/imodelodicom.h>
 
37
#include <api/integration/dict.h>
37
38
#include <api/icontroladorcarga.h>
38
39
#include <main/controllers/controladorhistorial.h>
39
40
#include <visualizator/dialogos/importacion/selectimagesimportationvisualizator.h>
48
49
#include <api/icontroladorcarga.h>
49
50
#include <main/controllers/controladorcarga.h>
50
51
#include <main/controllers/controladorcomandos.h>
 
52
#include <visualizator/commands/pdfextractercommand.h>
51
53
#include <commands/comandopacs.h>
52
54
 
53
55
#include <vector>
59
61
#include <visualizator/resources/aprimresourcemanager.h>
60
62
#include "../exportacion/tagsprivados.h"
61
63
 
 
64
#define UID_EncapsulatedPDFStorage  "1.2.840.10008.5.1.4.1.1.104.1"
 
65
 
62
66
namespace GNKVisualizator {
63
67
        class GNKVisualizatorControllerMode: public GNC::GCS::ModoControlador
64
68
        {
115
119
        // Codigos LOINC de los informes de A. Primaria.
116
120
        m_ListaInformes.push_back(GNC::GCS::IdHL7("TUID" + m_UID, "0", _Std("Ginkgo CADx Image Report"), "LN", "", "","v1.0"));
117
121
 
118
 
 
119
 
        // Codigos LOINC de los Estudios que genera A. Primaria
120
 
        m_ListaEstudios["EstudioOriginal"]= GNC::GCS::IdHL7("EstudioOriginal", "121018", "Study Instance UID", "DCM", "HD", "","v1.0");
121
 
        
122
 
        // Codigos LOINC de los registros HL7 que genera A. Primaria
123
 
        m_ListaRegistros["SerieOriginal"] = GNC::GCS::IdHL7("SerieOriginal", "112002", "Series Instance UID", "DCM", "HD", "","v1.0");
124
 
        m_ListaRegistros["IDPacs"] = GNC::GCS::IdHL7("IDPacs", "ARCHIVE", "IDPACS", "DCM", "HD", "","v1.0");
125
 
        m_ListaRegistros["Imagen"] = GNC::GCS::IdHL7("Imagen", "121126", "SOP Instance UID", "DCM", "HD", "","v1.0");
126
 
        m_ListaRegistros["SOPClass"] = GNC::GCS::IdHL7("SOPClass", "121127", "SOP Class ID", "DCM", "HD", "","v1.0");
127
 
 
128
122
        m_pPanelContenedorCustom = NULL;
129
123
 
130
124
        //registrar herramientas
160
154
                }
161
155
        }
162
156
        catch (GNC::GCS::ControladorHerramientasException& ex) {
163
 
                std::cerr << "Error al registrar herramientas de Oftal: No se pudo subscribir la herramienta: " << ex.getCause() << std::endl;
 
157
                std::cerr << "Error al registrar herramientas de Oftal: No se pudo subscribir la herramienta: " << ex << std::endl;
164
158
        }
165
159
 
166
160
 
280
274
                        }
281
275
                }
282
276
        }
283
 
        //
284
 
 
285
 
        /*ESTO SIRVE PARA NO SEPARAR POR SERIES...
286
 
        std::list<std::string> listaUIDSerie;
287
 
        std::vector<std::string> rutas;
288
 
        GnkPtr<GIL::IModeloIntegracion> pModeloIntegracion = NULL;
289
 
        for(ListaDescriptoresSerie::iterator it = series.begin(); it!=series.end(); it++){
290
 
                listaUIDSerie.push_back((*it).m_uidSerie);
291
 
                if(!m_ListaModos[modo]->SoportaModalidad((*it).m_modalidad)){
292
 
                        //mensaje de error!!
293
 
                        wxMessageBox(_("Derma view does not support modality studies") + wxString::FromUTF8((*it).m_modalidad.c_str()), _("Error"), wxICON_ERROR);
294
 
                        return NULL;
295
 
                }
296
 
                if((*it).m_pModeloIntegracion.IsValid()) {
297
 
                        pModeloIntegracion = (*it).m_pModeloIntegracion;
298
 
                }
299
 
                std::vector<std::string> rutasSerie = m_pEntorno->GetControladorHistorial()->GetPathsSerieOrdenados((*it).m_uidSerie);
300
 
                for (std::vector<std::string>::iterator it = rutasSerie.begin(); it != rutasSerie.end(); ++it) {
301
 
                        rutas.push_back((*it));
302
 
                }
303
 
        }
304
 
        {
305
 
        */
306
277
 
307
278
        for(std::set<std::string>::iterator it = uidsSeries.begin(); it!= uidsSeries.end(); it++)
308
279
        {
309
280
                std::vector<std::string> rutas = m_pEntorno->GetControladorHistorial()->GetPathsSerieOrdenados((*it));
 
281
                if (rutas.size() == 0)
 
282
                {
 
283
                        return NULL;
 
284
                }
 
285
 
 
286
                //if it's pdf...
 
287
                GNC::GCS::ControladorHistorial::ListaModelosDCM dcmModels;
 
288
                GNC::GCS::ControladorHistorial::Instance()->GetAllModelosDCMSeries((*it), dcmModels);
 
289
                if (dcmModels.size() > 0 && dcmModels.front().m_sopClassUID == UID_EncapsulatedPDFStorage) 
 
290
                {                       
 
291
                        GNKVisualizator::GADAPI::PDFExtracterCommandParameters* pParams = new GNKVisualizator::GADAPI::PDFExtracterCommandParameters(rutas);
 
292
                        GNKVisualizator::GADAPI::PDFExtracterCommand* pCmd = new GNKVisualizator::GADAPI::PDFExtracterCommand(pParams);
 
293
                        m_pEntorno->GetControladorComandos()->ProcessAsync("Extracting...", pCmd, NULL);
 
294
                        
 
295
                        continue;
 
296
                }
310
297
 
311
298
                GNC::GCS::IControladorVistas* pCtrlVistas = m_pEntorno->GetControladorVistas();
312
299
                wxWindow* pVentanaPadre = NULL;
313
300
 
314
 
                if (rutas.size() == 0)
315
 
                {
316
 
                        return NULL;
317
 
                }
318
 
 
319
301
                //primero de todo seleccionar diagnostico
320
302
                std::string uidDiagnosticoSeleccionado = uidEstudioDiagnostico;
321
303
                if(!SeleccionarDiagnostico(rutas[0],uidDiagnosticoSeleccionado))
418
400
        return m_pEntorno->GetControladorPermisos()->Get("atencionprimaria", "dicomizador");
419
401
}
420
402
 
421
 
void GNKVisualizator::ControladorAtencionPrimaria::GetPasosImportacion(IWizard* pWizard,std::list<IPasoWizard*> &listaPasos, wxWindow* pParent, std::string &dirTemporal, GnkPtr<GIL::IModeloIntegracion> pModeloIntegracion){
422
 
        GnkPtr<GNKVisualizator::GUI::TipoWizardImportacion> datosPersistentes(new GNKVisualizator::GUI::TipoWizardImportacion(pModeloIntegracion));
 
403
void GNKVisualizator::ControladorAtencionPrimaria::GetPasosImportacion(IWizard* pWizard,std::list<IPasoWizard*> &listaPasos, wxWindow* pParent, std::string &dirTemporal, GnkPtr<GIL::IModeloIntegracion> pModeloIntegracion)
 
404
{
 
405
        GnkPtr<GNC::GUI::ImportationData> datosPersistentes(new GNC::GUI::ImportationData(pModeloIntegracion));
423
406
 
424
 
        IPasoWizard* paso=new GNKVisualizator::GUI::PasoDatosGenerales(pParent,pWizard,datosPersistentes,dirTemporal,m_pEntorno);
 
407
        IPasoWizard* paso=new GNC::GUI::GeneralData(pParent,pWizard,datosPersistentes, true);
425
408
        listaPasos.push_back(paso);
426
409
 
427
410
        paso = new GNKVisualizator::GUI::SelectImagesImportationVisualizator(pParent,pWizard,datosPersistentes,dirTemporal);
475
458
void GNKVisualizator::ControladorAtencionPrimaria::ReprocessIntegration(const std::string& uidSeries, GnkPtr<GIL::IModeloIntegracion> pIntegrationModel)
476
459
{       
477
460
        //reprocess integration flow...
 
461
 
478
462
        std::vector<std::string> rutas = m_pEntorno->GetControladorHistorial()->GetPathsSerieOrdenados(uidSeries);
479
463
        GnkPtr<GNKVisualizator::VisualizatorStudy> estudio = new GNKVisualizator::VisualizatorStudy();
480
464
        estudio->ListaUIDsSerie.push_back(uidSeries);
483
467
        estudio->VentanaPadre = NULL;
484
468
        estudio->InicializarContextoEstudio(rutas, "", GNC::GCS::IContextoEstudio::TMF_UNDiagnostico);
485
469
 
486
 
        
 
470
        GIL::IStudyModel studyModel;
 
471
        GIL::ISeriesModel seriesModel;
487
472
        //recreate evidences...
488
473
        std::string strTmp0, strTmp1;
489
 
        pIntegrationModel->Evidencias.clear();
 
474
 
490
475
        estudio->SetIndiceActivo(0);
491
476
        estudio->GetTagImagenActiva("0020|000d", strTmp0);//uid study
 
477
        studyModel.MapOfVars.InsertVariable(GKDI_STUDY_INSTANCE_UID, strTmp1);
492
478
        estudio->GetTagImagenActiva("0008|0050", strTmp1);//accession
493
 
        GIL::IModeloEvidenciaEstudio evidenciaEstudioDicomizado("EstudioOriginal", strTmp0, strTmp1);
 
479
        studyModel.MapOfVars.InsertVariable(GKDI_STUDY_ACCESSION_NUMBER, strTmp1);
494
480
 
495
481
        estudio->GetTagImagenActiva("0020|000e", strTmp0);//uid series
496
 
        GIL::IModeloEvidenciaSerie evidenciaSerie("SerieOriginal", strTmp0);
 
482
        seriesModel.MapOfVars.InsertVariable(GKDI_SERIE_INSTANCE_UID, strTmp0);
497
483
        for (int i = 0; i < estudio->GetNumeroCortes(); ++i) {
 
484
                GIL::IImageModel imageModel;
498
485
                estudio->SetIndiceActivo(i);
499
486
                estudio->GetTagImagenActiva("0008|0018", strTmp0);//sop instance
500
487
                estudio->GetTagImagenActiva("0008|0016", strTmp1);//sop class
501
 
 
502
 
                GIL::IModeloEvidenciaImagen evidenciaImagen("Imagen", strTmp0, strTmp1);
503
 
                evidenciaSerie.ListaImagenes.push_back(evidenciaImagen);
 
488
                imageModel.MapOfVars.InsertVariable(GKDI_IMAGE_SOP_INSTANCE_UID, strTmp0);
 
489
                imageModel.MapOfVars.InsertVariable(GKDI_IMAGE_SOP_CLASS_UID, strTmp1);
 
490
                seriesModel.Images.push_back(imageModel);
504
491
        }
505
492
 
506
 
        evidenciaEstudioDicomizado.ListaSeries.push_back(evidenciaSerie);
507
 
        pIntegrationModel->Evidencias.push_back(evidenciaEstudioDicomizado);
 
493
        studyModel.Series.push_back(seriesModel);
 
494
 
 
495
        pIntegrationModel->Studies.push_back(studyModel);
508
496
        //
509
 
        GADAPI::ComandoPACSParams * pParams = new ::GADAPI::ComandoPACSParams(pIntegrationModel->PACSAlmacenamiento, rutas, pIntegrationModel);
 
497
        ::GADAPI::ComandoPACSParams * pParams = new ::GADAPI::ComandoPACSParams(pIntegrationModel->GlobalVariables.GetValue(GKDI_GLOBAL_PACS_STORE_SID), rutas, pIntegrationModel);
510
498
        pParams->m_informar = false;
511
 
        GADAPI::ComandoPACS * pCmd = new ::GADAPI::ComandoPACS(pParams);
 
499
        ::GADAPI::ComandoPACS * pCmd = new ::GADAPI::ComandoPACS(pParams);
512
500
        GNC::GCS::ControladorComandos::Instance()->ProcessAsync(_Std("Uploading..."), pCmd, NULL);      
513
501
        //
514
502
}