jueves, 19 de septiembre de 2019

AUTOMATIZACION DE PROCESO


Se han automatizado varios procesos para hacer mas fácil el sistema, se creo un nuevo modulo de admisión ambulatoria, que facilita el ingreso de pacientes desde la agenda

lunes, 17 de diciembre de 2018

Traspado de reportes a PDF y el uso de Mini Printer

Hola

A todos

Se han agregado, mas mejoras asi mismo se puede usar una miniprinter para el modulo de Caja

Saludos

lunes, 8 de mayo de 2017

Create ODS spreadsheets C# Usin AODL + Query PostgreSQL

Library

using System;
using System.Data;  
using AODL;
using AODL.Document.SpreadsheetDocuments;
using AODL.Document.Content;
using AODL.Document.Content.Tables;
using AODL.Document;
using AODL.Package;
using AODL.Document.Collections;



string query_sql = "SELECT id_producto, description FROM products";


string[,] args_names_field = {
            {"Item", "item","1.5","",""},
            {"SKU","string","2.6","
id_producto",""},
            {"Producto","string","12","
description",""},
};
     new seshat.class_traslate_ods(query_sql+query_sql_grupo+query_sql_grupo1+query_sql_grupo2+ordern_lista,args_names_field,"CATALOGO DE PRODUCTOS");
 


          public class_traslate_ods (string query_sql,string[,] args_colums,string titulo_reporte)
        {
            connectionString = conexion_a_DB._url_servidor+conexion_a_DB._port_DB+conexion_a_DB._usuario_DB+conexion_a_DB._passwrd_user_DB;
            nombrebd = conexion_a_DB._nombrebd;
            int secuencia_req = 0;
            int files_field = 0;
                                  
            //Create new spreadsheet open document (.ods)
            AODL.Document.SpreadsheetDocuments.SpreadsheetDocument spreadsheetDocument = new AODL.Document.SpreadsheetDocuments.SpreadsheetDocument();
            spreadsheetDocument.New();
            AODL.Document.Content.Tables.Table table = new AODL.Document.Content.Tables.Table(spreadsheetDocument, "hoja1", "tablefirst");
            NpgsqlConnection conexion;
            conexion = new NpgsqlConnection (connectionString+nombrebd);
            // Verifica que la base de datos este conectada
            try{
                // creando el titulo del reporte
                string text;
                AODL.Document.Content.Tables.Cell cell;
                cell = table.CreateCell ();
                //cell.OfficeValueType ="float";
                AODL.Document.Content.Text.Paragraph paragraph;

                paragraph = new AODL.Document.Content.Text.Paragraph (spreadsheetDocument);
                text = titulo_reporte;          
                paragraph.TextContent.Add (new AODL.Document.Content.Text.SimpleText (spreadsheetDocument, text));
                cell.Content.Add (paragraph);
                cell.OfficeValueType = "string";
                cell.OfficeValue = text;
                //cell.StyleName = cell.CellStyle.CellProperties.
                table.InsertCellAt (files_field, 0, cell);
                files_field++;

                cell = table.CreateCell ();
                //cell.OfficeValueType ="float";
                paragraph = new AODL.Document.Content.Text.Paragraph (spreadsheetDocument);
                text = "";          
                paragraph.TextContent.Add (new AODL.Document.Content.Text.SimpleText (spreadsheetDocument, text));
                cell.Content.Add (paragraph);
                cell.OfficeValueType = "string";
                cell.OfficeValue = text;
                //cell.StyleName = cell.CellStyle.CellProperties.
                table.InsertCellAt (files_field, 0, cell);
                files_field++;

                // Creando los nombres de ancabezado de los campos  
                for (int colum_field = 0; colum_field <= args_colums.GetUpperBound (0); colum_field++) {
                    cell = table.CreateCell ();
                    //cell.OfficeValueType ="float";
                    paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);
                    //AODL.Document.Content.Text.FormatedText formText;
                    //formText.TextStyle.TextProperties.Bold();
                    text = args_colums[ colum_field, 0 ];          
                    paragraph.TextContent.Add(new AODL.Document.Content.Text.SimpleText(spreadsheetDocument,text));
                    cell.Content.Add(paragraph);
                    cell.OfficeValueType = "string";                          
                    cell.OfficeValue = text;
                    //cell.StyleName = cell.CellStyle.CellProperties.
                    table.InsertCellAt (files_field, colum_field, cell);
                    //table.ColumnCollection[colum_field].ColumnStyle.StyleName = "bold";

                    // ancho de la columnas
                    if (args_colums [colum_field, 2] != "") {
                        table.ColumnCollection[colum_field].ColumnStyle.ColumnProperties.Width = args_colums [colum_field, 2]+"cm";
                    }
                }
                files_field++;

                conexion.Open ();
                NpgsqlCommand comando;
                comando = conexion.CreateCommand ();
                comando.CommandText = query_sql;
                //Console.WriteLine(comando.CommandText);
                comando.ExecuteNonQuery();    comando.Dispose();
                NpgsqlDataReader lector = comando.ExecuteReader ();
                while (lector.Read()){
                    secuencia_req ++;
                    for (int colum_field = 0; colum_field <= args_colums.GetUpperBound (0); colum_field++) {
                        cell = table.CreateCell ();
                        //cell.OfficeValueType ="float";
                        paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);
                        //AODL.Document.Content.Text.FormatedText formText;
                        //formText.TextStyle.TextProperties.Bold();
                        if(args_colums[ colum_field, 3 ] != ""){
                            text = lector[(string) args_colums[ colum_field, 3 ]].ToString();
                            cell.OfficeValueType = args_colums[ colum_field, 1 ];
                        }else{                          
                            if (args_colums [colum_field, 1] == "item") {
                                text = secuencia_req.ToString().Trim();
                                cell.OfficeValueType = "float";
                            }else{
                                text = "";
                            }
                        }
                        //text = lector[(string) args_names_field[ colum_field ]].ToString().Trim();
                        paragraph.TextContent.Add(new AODL.Document.Content.Text.SimpleText(spreadsheetDocument,text));
                        cell.Content.Add(paragraph);                                                  
                        cell.OfficeValue = text;
                        //cell.StyleName = cell.CellStyle.CellProperties.
                        table.InsertCellAt (files_field, colum_field, cell);
                        //table.ColumnCollection[colum_field].ColumnStyle.StyleName = "bold";
                    }
                    files_field++;
                }
                // activando las formulas
                for (int colum_field = 0; colum_field <= args_colums.GetUpperBound (0); colum_field++) {
                    if (args_colums [colum_field, 4] != "") {
                        cell = table.CreateCell ();
                        paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);              
                        cell.Content.Add(paragraph);
                        cell.OfficeValueType = args_colums[ colum_field, 1 ];
                        //   ---cell1.OfficeValue = text;
                        cell.Formula = args_colums[ colum_field, 4 ]+files_field+")";
                        table.InsertCellAt (files_field, colum_field, cell);
                        //Console.WriteLine("{0}, {1}", args_formulas[i,0], args_formulas[i,1]);  
                    }
                }
                conexion.Close();              
                //Insert table into the spreadsheet document
                spreadsheetDocument.TableCollection.Add(table);
                string ods_name = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".ods";
                spreadsheetDocument.SaveTo(ods_name);
                try{
                    // open the document automatic
                    System.Diagnostics.Process.Start(ods_name);
                }catch(Exception ex){
                    MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
                                            MessageType.Error,
                                            ButtonsType.Close,"Open error file: {0}",ex.Message);
                    msgBoxError.Run ();        msgBoxError.Destroy();
                }
            }catch(NpgsqlException ex){
                    MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
                                    MessageType.Error,
                                    ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
                    msgBoxError.Run ();        msgBoxError.Destroy();
            }
        }      
    }

jueves, 2 de marzo de 2017

Creacion de un TreeView GTK# (Create treeview GTK# C-Sharp)

Buen Dia Amigos

Aca del dejo como crear un TreeView en GKT#, bajo monodevelop 5.10 Linux aunque tambien funciona para Xamarin Studio sin problemas

Librerias a Usar

using System;
using Gtk;
using Gdk;
using Glade;
using Npgsql;
using System.Collections;
using System.Data;
using System.Collections.Generic;







Llamada del scrip

Explicacion del arreglo

{ "Cant.", "text","","","","","true"},

0 titulo
1 tipo de la columna
2 ancho de la columna
3 R   Color
4 G   Color
5 B   Color
6 true visualiza columna   false oculta columna


void crea_treeview()
        {
           
object[] parametros = { treeview_concepto_remis,treeViewEngineconcepremis};
            string[,] coltreeview = {
                { "Cant.", "text","","","","","true"},
                { "Ref.", "text","","","","","true" },
                { "Descripcion", "text","400","","","","true" },
                { "Pre. Unitario", "text","","","","","true" },
                { "Total", "text","","","","","true" },
                { "Lote", "text","100","","","","true" },
                { "Caducidad", "text","80","","","","true" },
                { "Cod. Barra", "text","","","","","true" },
                { "Ref.", "text","","","","","true" },
                { "ID Producto", "text","","","","","true" },
                { "Nro.remision", "text","","","","","false" }
            };
            crea_colums_treeview (parametros, coltreeview,"treeview_concepto_remis");

}


Como se crea automaticamente las columnas del TreeView

void crea_colums_treeview(object[] args,string [,] args_colums,string nombre_treeview_)
        {
            //var columns_renderertext = new List();
            //var columns_renderertoggle = new List();
            Gtk.CellRendererText text;
            Gtk.CellRendererToggle toggle;
            Gtk.TreeView treeviewobject = null;
            Gtk.ListStore treeViewEngine = null;
            ArrayList columns = new ArrayList ();

            treeviewobject = (object) args[0] as Gtk.TreeView;
            treeViewEngine = (object) args[1] as Gtk.ListStore;

            var columns_treeview = new List();

            foreach (TreeViewColumn tvc in treeviewobject.Columns)
                treeviewobject.RemoveColumn(tvc);

            Type[] t = new Type[args_colums.GetUpperBound (0)+1];
            for (int colum_field = 0; colum_field <= args_colums.GetUpperBound (0); colum_field++) {
                if ((string)args_colums [colum_field, 1] == "text") {
                    t [colum_field] = typeof(string);
                }
                if ((string)args_colums [colum_field, 1] == "toogle") {
                    t [colum_field] = typeof(bool);
                }
            }
            treeViewEngine = new Gtk.ListStore(t);
            //treeViewEngine = liststore_;
            treeviewobject.Model = treeViewEngine;
            treeviewobject.RulesHint = true;
            //treeviewobject.Selection.Mode = SelectionMode.Multiple;
            if (args_colums.GetUpperBound (0) >= 0) {
                for (int colum_field = 0; colum_field <= args_colums.GetUpperBound (0); colum_field++) {
                    if ((string)args_colums [colum_field, 0] != "") {
                        if ((string)args_colums [colum_field, 1] == "text") {
                            // column for holiday names
                            text = new CellRendererText ();
                            text.Xalign = 0.0f;
                            columns.Add (text);
                            columns_treeview.Add (new TreeViewColumn ((string)args_colums [colum_field, 0], text, "text", colum_field));
                            //columns_renderertext.Add (new CellRendererText ()); 
                            //columns_renderertext [colum_field+1].Xalign = 0.0f;
                            //columns.Add (columns_renderertext [colum_field+1]);
                            //columns_treeview.Add (new TreeViewColumn ((string)args_colums [colum_field, 0], columns_renderertext [colum_field], "text", colum_field));
                            // ancho de la columna
                            if ((string) args_colums [colum_field, 2] != "") {
                                text.Width = int.Parse((string) args_colums [colum_field, 2]);
                            }
                            // color de la columna
                            if ((string) args_colums [colum_field, 3] != "") {
                                text.CellBackgroundGdk = new Gdk.Color (byte.Parse((string) args_colums [colum_field, 3]), byte.Parse((string) args_colums [colum_field, 4]), byte.Parse((string) args_colums [colum_field, 5]));
                            }
                            if (nombre_treeview_ == "treeview_concepto_remis"){
                                if(colum_field == 0) {
                                    text.Editable = true;
                                    text.Edited += NumberCellEdited_cantremis;
                                }
                                if(colum_field == 2) {
                                    text.Editable = true;
                                    text.Edited += NumberCellEdited_concepto;
                                }
                                if(colum_field == 3) {
                                    text.Editable = true;
                                    text.Edited += NumberCellEdited_precioremis;
                                }
                                if(colum_field == 5) {
                                    text.Editable = true;
                                    text.Edited += NumberCellEdited_lote;
                                }
                                if(colum_field == 6) {
                                    text.Editable = true;
                                    text.Edited += NumberCellEdited_caducidad;
                                }
                            }
                        }
                        if ((string)args_colums [colum_field, 1] == "toogle") {
                            // column for holiday names
                            toggle = new CellRendererToggle ();
                            toggle.Xalign = 0.0f;
                            columns.Add (toggle);
                            columns_treeview.Add (new TreeViewColumn ((string)args_colums [colum_field, 0], toggle, "active", colum_field));
                            //columns_renderertoggle.Add(new CellRendererToggle());
                            //columns_renderertoggle[colum_field].Xalign = 0.0f;
                            //columns.Add (columns_renderertoggle[colum_field]);
                            //columns_treeview.Add (new TreeViewColumn ((string)args_colums [colum_field, 0], columns_renderertoggle[colum_field], "active", colum_field));
                            //toggle.Toggled += new ToggledHandler (selecciona_fila);
                            // ancho de la columna
                            if ((string) args_colums [colum_field, 2] != "") {
                                toggle.Width = int.Parse((string) args_colums [colum_field, 2]);
                            }
                            // color de la columna
                            if ((string) args_colums [colum_field, 3] != "") {
                                toggle.CellBackgroundGdk = new Gdk.Color (byte.Parse((string) args_colums [colum_field, 3]), byte.Parse((string) args_colums [colum_field, 4]), byte.Parse((string) args_colums [colum_field, 5]));
                            }
                        }
                        columns_treeview [colum_field].Resizable = true;
                        treeviewobject.InsertColumn (columns_treeview [colum_field], colum_field);
                        columns_treeview [colum_field].Visible = Convert.ToBoolean((string)args_colums [colum_field, 6]);
                    }
                }
                if (nombre_treeview_ == "treeview_concepto_remis"){
                    //treeview_concepto_remis.RowActivated += on_button_ligar_erp_clicked;
                    treeview_concepto_remis = treeviewobject;
                    treeViewEngineconcepremis = treeViewEngine;
                }
                if (nombre_treeview_ == "treeview_lista_remisiones") {
                    treeview_lista_remisiones.RowActivated += on_button_abrirremis_clicked;
                    treeview_lista_remisiones = treeviewobject;
                    treeViewEngineListaRemis = treeViewEngine;
                }
            }
        }

jueves, 8 de diciembre de 2016

Reportes Varios y Estadisticos

Se crearon reportes para:

  1. Consumo total por mes y año (cargos realizados)
  2. Reporte de consumo por pacientes
  3. Reporte de Solicitudes de Laboratorio
  4. Reporte de Solicitudes de Imagenologia
  5. Reporte de Solicitudes de Dietas
  6. Reporte de Admisiones
  7. Reporte de Facturas enlasadas con Ordenes de Compra
  8. Reporte de Requisiciones Generadas
  9. Etc.


Estamos trabajando para que todos estos reportes se pueda exportar a hojas de calculo de tipo LibreOffice (solo algunos estan funcionando)

Saludos

Mejoras en el Expediente Electronico

Se ha mejorado el expediente electronico, se integra SOAP al 100% asi como la toma de signos vitales, ademas estamos trabajando en las visitas medica, interconsulta, anestesia, cirujano y ayudantes para llevar un control de los honorarios medicos e integrarlos a los tabuladore de pago

Hay muchas novedades

Saludos a todos

lunes, 1 de agosto de 2016

Traspaso de reportes a iTextSharp

Se han estado traspasando todos los reportes a itextsharp para darle mas soporte a nuestra version de windows