Exemplo n.º 1
0
        public void ContruirVistaPrevia(Dictionary <int, Orden> ordenes)
        {
            LogicaExamen oLExamen = new LogicaExamen();

            sector = new Sector();

            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings.PaperSize        = new PaperSize("A4", 827, 1169);
            sector.Configuracion.TamañoPapel.Width  = pd.DefaultPageSettings.PaperSize.Width;
            sector.Configuracion.TamañoPapel.Height = pd.DefaultPageSettings.PaperSize.Height;
            sector.Configuracion.Margen             = new Padding(5, 5, 5, 40);

            FormatoImpresion        formato;
            List <FormatoImpresion> formatos = new List <FormatoImpresion>();

            foreach (Orden orden in ordenes.Values)
            {
                formato = ConstructorFicha.GetInstance().CrearAllDocumento(oLExamen.RecuperarExamenes(orden), orden, 7.5f, sector.Configuracion.TamañoPapel);
                formatos.Add(formato);
            }
            buffer = new BufferImpresion(formatos);

            PrintDialog printdia = new PrintDialog();

            printdia.Document = pd;

            if (printdia.ShowDialog() == DialogResult.OK)
            {
                pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
                pd.Print();
            }
        }
Exemplo n.º 2
0
 public static ConstructorFicha GetInstance()
 {
     if (clasificador == null)
     {
         clasificador = new ConstructorFicha();
     }
     clasificador.LimpiarRepositorio();
     return(clasificador);
 }
Exemplo n.º 3
0
        public void ContruirVistaPreviaExamenPaciente(Orden orden, Dictionary <int, Examen> examenes)
        {
            sector = new Sector();

            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings.PaperSize        = new PaperSize("A4", 827, 1169);
            sector.Configuracion.TamañoPapel.Width  = pd.DefaultPageSettings.PaperSize.Width;
            sector.Configuracion.TamañoPapel.Height = pd.DefaultPageSettings.PaperSize.Height;
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);

            FormatoImpresion        formato;
            List <FormatoImpresion> formatos = new List <FormatoImpresion>();

            formato = ConstructorFicha.GetInstance().CrearAllDocumento(examenes, orden, 7.5f, sector.Configuracion.TamañoPapel);
            formatos.Add(formato);

            buffer = new BufferImpresion(formatos);
        }
Exemplo n.º 4
0
        public FormatoImpresion CrearAllDocumento(Dictionary <int, Examen> examenes, Orden orden, float tamañoFuente, Size tamañoPag)
        {
            LogicaPaciente   oLPaciente   = new LogicaPaciente();
            Clasificador     clasificador = new Clasificador();
            FormatoImpresion formato;

            tamañoPag.Height = tamañoPag.Height / 2;
            tamañoPag.Width  = tamañoPag.Width / 2;
            Paciente paciente = oLPaciente.ObtenerPerfilPorId(orden.IdPaciente);

            int      idLastResponsable = 0;
            DateTime tempTime          = DateTime.MinValue;

            foreach (Examen ex in examenes.Values)
            {
                Area area = (Area)Plantillas.GetInstance().GetPlantilla(ex.IdPlantilla).Area;
                repositorio[area].Add(ex.IdData);
                if (ex.UltimaModificacion >= tempTime)
                {
                    tempTime          = ex.UltimaModificacion;
                    idLastResponsable = ex.IdCuenta;
                }
            }


            //CONSTRUCCION DE CABECERA
            formato = new FormatoImpresion();
            FormatoImpresionCabecera cab = new FormatoImpresionCabecera();
            Dictionary <int, FormatoImpresionPagina> paginas = new Dictionary <int, FormatoImpresionPagina>();
            LogicaCuenta oLCuenta = new LogicaCuenta();
            BLMedico     oLMedico = new BLMedico();
            Medico       med      = oLMedico.ObtenerMedico(orden.IdMedico);
            Cuenta       cu       = oLCuenta.ObtenerCuenta(idLastResponsable);
            Tiempo       tiempo   = DiccionarioGeneral.GetInstance().CalcularEdad(paciente.FechaNacimiento);

            cab.Edad     = DiccionarioGeneral.GetInstance().FormatoEdad(tiempo);
            cab.Orden    = "No " + orden.IdData;
            cab.Nombre   = CultureInfo.CurrentCulture.TextInfo.ToTitleCase((paciente.Nombre + " " + paciente.PrimerApellido + " " + paciente.SegundoApellido));
            cab.Historia = paciente.Historia;

            cab.Responsable  = CultureInfo.CurrentCulture.TextInfo.ToTitleCase((cu.Nombre + " " + cu.PrimerApellido + " " + cu.SegundoApellido + " - " + cu.Especialidad));
            cab.Doctor       = CultureInfo.CurrentCulture.TextInfo.ToTitleCase((med.Nombre + " " + med.PrimerApellido + " " + med.SegundoApellido));
            cab.UltimaRev    = (tempTime.ToShortDateString());
            formato.Cabecera = cab;

            Dictionary <int, FormatoImpresionPaginaLinea> lineas = null;
            FormatoImpresionPagina      pagina = null;
            FormatoImpresionPaginaLinea linea  = null;
            int indexLinea = 0;

            foreach (Area key in repositorio.Keys)
            {
                if (repositorio[key].Count > 0)
                {
                    pagina          = new FormatoImpresionPagina();
                    lineas          = new Dictionary <int, FormatoImpresionPaginaLinea>();
                    pagina.Detalles = lineas;
                    indexLinea      = 0;
                    //CONSTRUCCION DE PAGINAS

                    linea           = new FormatoImpresionPaginaLinea();
                    linea.Nombre    = "LABORATORIO DE " + DiccionarioGeneral.GetInstance().Area[(int)key];
                    linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.TituloArea;

                    lineas.Add(indexLinea, linea);
                    indexLinea++;


                    foreach (int idEx in repositorio[key])
                    {
                        Examen ex = examenes[idEx];
                        linea           = new FormatoImpresionPaginaLinea();
                        linea.Nombre    = Plantillas.GetInstance().GetPlantilla(ex.IdPlantilla).Nombre;
                        linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.TituloExamen;
                        lineas.Add(indexLinea, linea);
                        indexLinea++;

                        Dictionary <int, PlantillaFila> plantillaFila = Plantillas.GetInstance().GetPlantilla(ex.IdPlantilla).Filas;
                        for (int i = 0; i < plantillaFila.Count; i++)
                        {
                            switch (plantillaFila[i].Tipo)
                            {
                            case PlantillaFila.PlantillaFilaTipo.Agrupada:

                                PlantillaFilaGrupo filaGrupo = (PlantillaFilaGrupo)plantillaFila[i];
                                linea           = new FormatoImpresionPaginaLinea();
                                linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.TituloGrupo;
                                linea.Nombre    = filaGrupo.Nombre;

                                lineas.Add(indexLinea, linea);
                                indexLinea++;

                                if (filaGrupo.IdData == 4)    //Para el grupo especial Medicina // Luego se puede mejorar Agregando un elemento deseado incorporandolo
                                {
                                    foreach (PlantillaItem itemG in filaGrupo.Items.Values)
                                    {
                                        linea           = new FormatoImpresionPaginaLinea();
                                        linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                        linea.Nombre    = " * " + itemG.Nombre;
                                        int indice = Convert.ToInt32(ex.DetallesByItem[itemG.IdData].Campo);
                                        if (indice != 0)
                                        {
                                            linea.Resultado = itemG.OpcionesByIndice[indice];
                                            lineas.Add(indexLinea, linea);
                                            indexLinea++;
                                        }
                                    }
                                }
                                else
                                {
                                    foreach (PlantillaItem itemG in filaGrupo.Items.Values)
                                    {
                                        switch (itemG.TipoCampo)
                                        {
                                        case TipoCampo.Input:
                                            linea           = new FormatoImpresionPaginaLinea();
                                            linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                            linea.Nombre    = " * " + itemG.Nombre;
                                            linea.Resultado = ex.DetallesByItem[itemG.IdData].Campo.ToString();
                                            if (itemG.TieneUnidad)
                                            {
                                                linea.Resultado += itemG.Unidad;
                                            }
                                            linea.Resultado += clasificador.Clasificar(paciente, ex.IdData, ex.DetallesByItem[itemG.IdData]);
                                            lineas.Add(indexLinea, linea);
                                            indexLinea++;
                                            break;

                                        case TipoCampo.Lista:
                                            linea           = new FormatoImpresionPaginaLinea();
                                            linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                            linea.Nombre    = " * " + itemG.Nombre;
                                            linea.Resultado = itemG.OpcionesByIndice[Convert.ToInt32(ex.DetallesByItem[itemG.IdData].Campo)];
                                            lineas.Add(indexLinea, linea);
                                            indexLinea++;
                                            break;

                                        case TipoCampo.Texto:
                                            if (!ex.DetallesByItem[itemG.IdData].Campo.Equals(""))
                                            {
                                                linea           = new FormatoImpresionPaginaLinea();
                                                linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                                linea.Nombre    = " * " + itemG.Nombre;
                                                string        temp  = "";
                                                List <string> lista = ConstructorFicha.AcoplarTexto(linea.Nombre + ": " + ex.DetallesByItem[itemG.IdData].Campo.ToString(), "Futura Bk BT", 7.5f, (double)tamañoPag.Width);
                                                for (int ind = 0; ind < lista.Count; ind++)
                                                {
                                                    linea           = new FormatoImpresionPaginaLinea();
                                                    linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemTexto;

                                                    if (itemG.TieneUnidad && indexLinea + 1 == lista.Count)
                                                    {
                                                        temp += itemG.Unidad;
                                                    }
                                                    linea.Resultado = lista[ind];

                                                    lineas.Add(indexLinea, linea);
                                                    indexLinea++;
                                                }
                                            }
                                            break;
                                        }
                                    }
                                }
                                break;

                            case PlantillaFila.PlantillaFilaTipo.Simple:
                                PlantillaItem item = ((PlantillaFilaSimple)plantillaFila[i]).Item;
                                switch (item.TipoCampo)
                                {
                                case TipoCampo.Input:
                                    linea           = new FormatoImpresionPaginaLinea();
                                    linea.Nombre    = item.Nombre;
                                    linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                    linea.Resultado = ex.DetallesByItem[item.IdData].Campo.ToString();
                                    if (item.TieneUnidad)
                                    {
                                        linea.Resultado += "  " + item.Unidad;
                                    }
                                    switch (item.TipoDato)
                                    {
                                    case TipoDato.Entero:
                                        linea.Resultado += clasificador.Clasificar(paciente, ex.IdData, ex.DetallesByItem[item.IdData]);
                                        break;

                                    case TipoDato.Decimal:
                                        linea.Resultado += clasificador.Clasificar(paciente, ex.IdData, ex.DetallesByItem[item.IdData]);
                                        break;
                                    }

                                    lineas.Add(indexLinea, linea);
                                    indexLinea++;
                                    break;

                                case TipoCampo.Lista:

                                    linea           = new FormatoImpresionPaginaLinea();
                                    linea.Nombre    = item.Nombre;
                                    linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemSimple;
                                    linea.Resultado = item.OpcionesByIndice[Convert.ToInt32(ex.DetallesByItem[item.IdData].Campo)];
                                    lineas.Add(indexLinea, linea);
                                    indexLinea++;
                                    break;

                                case TipoCampo.Texto:
                                    if (!ex.DetallesByItem[item.IdData].Campo.Equals(""))
                                    {
                                        linea        = new FormatoImpresionPaginaLinea();
                                        linea.Nombre = item.Nombre;
                                        string        temp  = "";
                                        List <string> lista = ConstructorFicha.AcoplarTexto(linea.Nombre + ": " + ex.DetallesByItem[item.IdData].Campo, "Futura Bk BT", 7.5f, (double)tamañoPag.Width);

                                        for (int ind = 0; ind < lista.Count; ind++)
                                        {
                                            linea           = new FormatoImpresionPaginaLinea();
                                            linea.TipoLinea = FormatoImpresionPaginaLinea.TipoPaginaLinea.ItemTexto;

                                            if (item.TieneUnidad && ind + 1 == lista.Count)
                                            {
                                                temp += item.Unidad;
                                            }
                                            linea.Resultado = lista[ind];

                                            lineas.Add(indexLinea, linea);
                                            indexLinea++;
                                        }
                                    }
                                    break;
                                }
                                break;
                            }
                        }
                    }
                    formato.Paginas.Add(pagina);
                }
            }
            return(formato);
        }