Sistema Hospitalario OSIRIS
Sistema para la administracion de hospitales, almacenes, facturacion, laboratorio, farmacia, registro en linea de cargos realizdos a paciente, separacion de paquetes, caja, tesoreria, etc.
miércoles 7 de septiembre de 2011
miércoles 24 de agosto de 2011
Export to ods for C# (mono)
He conseguido exportar un query a una hoja de calculo de tipo ods, espero que sea de ayuda
He tenido que recompilar AODL ya que para linux no tenia soporte.
using System;
using SmartXLS; // libreria para crear archivo xls es de paga
using Npgsql;
using Gtk;
using Glade;
// libreria creada con el proyecto AODL 1.4 que usa
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;
using NUnit.Framework;
namespace osiris
{
public class class_traslate_spreadsheet
{
string connectionString;
string nombrebd;
class_conexion conexion_a_DB = new class_conexion();
//Declaracion de ventana de error
protected Gtk.Window MyWinError;
protected Gtk.Window MyWin;
public class_traslate_spreadsheet (string numeroatencion_)
{
int files_field = 0;
string[] args_names_field = {"foliodeservicio","descripcion_producto","idproducto","cantidadaplicada","preciounitario","ppcantidad"};
string[] args_type_field = {"float","string","string","float","float","float"};
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;
//Create new spreadsheet open document (.ods)
AODL.Document.SpreadsheetDocuments.SpreadsheetDocument spreadsheetDocument = new AODL.Document.SpreadsheetDocuments.SpreadsheetDocument();
spreadsheetDocument.New();
//Create a new table
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{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
for (int colum_field = 0; colum_field < args_names_field.Length; colum_field++){
AODL.Document.Content.Tables.Cell cell = table.CreateCell ();
//cell.OfficeValueType ="float";
AODL.Document.Content.Text.Paragraph paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);
string 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.OfficeValueType = (string) args_type_field [colum_field];
cell.OfficeValue = text;
table.InsertCellAt (files_field, colum_field, cell);
}
files_field++;
}
conexion.Close();
//Insert table into the spreadsheet document
spreadsheetDocument.TableCollection.Add(table);
spreadsheetDocument.SaveTo("export.ods");
// open the document automatic
System.Diagnostics.Process.Start("export.ods");
}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}
/*
// Usando libreria SmartXLS
WorkBook book = new WorkBook();
try{
//Sets the number of worksheets in this workbook
book.NumSheets = 2;
// set sheet names
book.setSheetName(0, "hoja1"); // renombrando la pestaña
book.setSheetName(1, "hoja2"); // renombrando la pestaña
book.Sheet = 0;
// book.setText(Fila, columna , "texto");
book.setText(0, 0, "foliodeservicio");
book.setText(0, 1, "descripcion_producto");
book.setText(0, 2, "idproducto");
book.setText(0, 3, "cantidadaplicada");
book.setText(0, 4, "preciounitario");
book.setText(0, 5, "ppcantidad");
book.setText(0, 6, "fechcreacion");
book.setText(0, 7, "descripcion_admisiones");
book.setText(0, 8, "idtipoadmision");
book.setText(0, 8, "descripcion_grupo_producto");
book.setText(0, 8, "aplicar_iva");
NpgsqlConnection conexion;
conexion = new NpgsqlConnection (connectionString+nombrebd);
// Verifica que la base de datos este conectada
try{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
book.setNumber(number_file, 0, int.Parse(numeroatencion_));
book.setText(number_file, 1, (string) lector["descripcion_producto"]);
number_file++;
}
conexion.Close();
book.write("export.xls");
System.Diagnostics.Process.Start("export.xls");
}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}
}catch (System.Exception ex){
Console.Error.WriteLine(ex);
}
*/
}
}
}
He tenido que recompilar AODL ya que para linux no tenia soporte.
using System;
using SmartXLS; // libreria para crear archivo xls es de paga
using Npgsql;
using Gtk;
using Glade;
// libreria creada con el proyecto AODL 1.4 que usa
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;
using NUnit.Framework;
namespace osiris
{
public class class_traslate_spreadsheet
{
string connectionString;
string nombrebd;
class_conexion conexion_a_DB = new class_conexion();
//Declaracion de ventana de error
protected Gtk.Window MyWinError;
protected Gtk.Window MyWin;
public class_traslate_spreadsheet (string numeroatencion_)
{
int files_field = 0;
string[] args_names_field = {"foliodeservicio","descripcion_producto","idproducto","cantidadaplicada","preciounitario","ppcantidad"};
string[] args_type_field = {"float","string","string","float","float","float"};
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;
//Create new spreadsheet open document (.ods)
AODL.Document.SpreadsheetDocuments.SpreadsheetDocument spreadsheetDocument = new AODL.Document.SpreadsheetDocuments.SpreadsheetDocument();
spreadsheetDocument.New();
//Create a new table
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{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
for (int colum_field = 0; colum_field < args_names_field.Length; colum_field++){
AODL.Document.Content.Tables.Cell cell = table.CreateCell ();
//cell.OfficeValueType ="float";
AODL.Document.Content.Text.Paragraph paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);
string 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.OfficeValueType = (string) args_type_field [colum_field];
cell.OfficeValue = text;
table.InsertCellAt (files_field, colum_field, cell);
}
files_field++;
}
conexion.Close();
//Insert table into the spreadsheet document
spreadsheetDocument.TableCollection.Add(table);
spreadsheetDocument.SaveTo("export.ods");
// open the document automatic
System.Diagnostics.Process.Start("export.ods");
}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}
/*
// Usando libreria SmartXLS
WorkBook book = new WorkBook();
try{
//Sets the number of worksheets in this workbook
book.NumSheets = 2;
// set sheet names
book.setSheetName(0, "hoja1"); // renombrando la pestaña
book.setSheetName(1, "hoja2"); // renombrando la pestaña
book.Sheet = 0;
// book.setText(Fila, columna , "texto");
book.setText(0, 0, "foliodeservicio");
book.setText(0, 1, "descripcion_producto");
book.setText(0, 2, "idproducto");
book.setText(0, 3, "cantidadaplicada");
book.setText(0, 4, "preciounitario");
book.setText(0, 5, "ppcantidad");
book.setText(0, 6, "fechcreacion");
book.setText(0, 7, "descripcion_admisiones");
book.setText(0, 8, "idtipoadmision");
book.setText(0, 8, "descripcion_grupo_producto");
book.setText(0, 8, "aplicar_iva");
NpgsqlConnection conexion;
conexion = new NpgsqlConnection (connectionString+nombrebd);
// Verifica que la base de datos este conectada
try{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
book.setNumber(number_file, 0, int.Parse(numeroatencion_));
book.setText(number_file, 1, (string) lector["descripcion_producto"]);
number_file++;
}
conexion.Close();
book.write("export.xls");
System.Diagnostics.Process.Start("export.xls");
}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}
}catch (System.Exception ex){
Console.Error.WriteLine(ex);
}
*/
}
}
}
jueves 11 de agosto de 2011
lunes 13 de septiembre de 2010
Manual de Instalacion del Sistema Hospitalario OSIRIS
Hola Amigos
le dejo el link del manual de instalacion del sistemas para GNU/Linux
http://www.scribd.com/doc/37039589/Manual-Instalacion-Sistema-Hospitalario-OSIRIS
Este manual esta un poco descontinuado, se hicieron modificaciones para no usar la libreria gnomeprint.
Se agregaron mas campos y tablas a la base de datos
cualquier duda para solicitar la base de datos envienme un correo a arcangeldoc@gmail.com
Saludos
le dejo el link del manual de instalacion del sistemas para GNU/Linux
http://www.scribd.com/doc/37039589/Manual-Instalacion-Sistema-Hospitalario-OSIRIS
Este manual esta un poco descontinuado, se hicieron modificaciones para no usar la libreria gnomeprint.
Se agregaron mas campos y tablas a la base de datos
cualquier duda para solicitar la base de datos envienme un correo a arcangeldoc@gmail.com
Saludos
sábado 8 de mayo de 2010
Nuevas Mejoras
He estado trabajando arduamente en este sistema se han corregido y mejorado bastantes bugs, asi mismo se han reducido los scrip y mejorando las classes de objetos.
He incorporado una agenda que permite realizar citas medicas y de quirofano esto nos pemitira tener una herramienta mas a nuestro sistema.
Se realizan muchas mejoras para poder enlasar en forma eficiente el expediente elecctronicono.
Estere postenado nuevas mejoras
Saludos
He incorporado una agenda que permite realizar citas medicas y de quirofano esto nos pemitira tener una herramienta mas a nuestro sistema.
Se realizan muchas mejoras para poder enlasar en forma eficiente el expediente elecctronicono.
Estere postenado nuevas mejoras
Saludos
miércoles 9 de diciembre de 2009
Problemas con libreria Gnome Print
Hola a todos
En un trabajo titanico se ha logrado de traspasar OSIRIS a Windows me tope que los reportes no funcionan ya que Gnome Print no esta portado a Windows, asi que me he visto a traspasar todos a GTK# Print, aunque este no se comporta de igual manera en Linux y Windows.
Tendre Noticias Pronto con un demo de un Reporte 100% en Windows
Saludos
En un trabajo titanico se ha logrado de traspasar OSIRIS a Windows me tope que los reportes no funcionan ya que Gnome Print no esta portado a Windows, asi que me he visto a traspasar todos a GTK# Print, aunque este no se comporta de igual manera en Linux y Windows.
Tendre Noticias Pronto con un demo de un Reporte 100% en Windows
Saludos
miércoles 5 de agosto de 2009
Leer textos delimitados en C# y Mono
Este pequeño ejemplo permite leer linea por linea de un texto o un campo text que este dentro de una tabla de base de datos, se probo con motor de base de datos PostgreSQL
//char[] delimiterChars = {';'}; // delimitador de Cadenas
char[] delimiterChars = {' '}; // delimitador de Cadenas
//string texto = (string) lector["prueba"]; // puede ser una campo de la base de datos tipo Text
string texto = "1;daniel;olivares;cuevas\n"+
"2;genaro;cuevas;bazaldua\n"+
"3;gladys;perez;orellana\n";
string[] words = texto.Split(delimiterChars); // Separa las Cadenas
string lineas_texto = "";
// Recorre la variable
foreach (string s in words){
if (s.Length > 0){
//comprueba si hay historial de contrato "s" tiene historial
Console.WriteLine(s.ToString()+"\n");
lineas_texto += s;
}
}
si le ponen el delimitador ";" en consola aparareceran valor por valor del text
1
daniel
olivares
cuevas
si esta vacio aprecera
1;daniel;olivares;cuevas
Espero que sirva de algo
//char[] delimiterChars = {';'}; // delimitador de Cadenas
char[] delimiterChars = {' '}; // delimitador de Cadenas
//string texto = (string) lector["prueba"]; // puede ser una campo de la base de datos tipo Text
string texto = "1;daniel;olivares;cuevas\n"+
"2;genaro;cuevas;bazaldua\n"+
"3;gladys;perez;orellana\n";
string[] words = texto.Split(delimiterChars); // Separa las Cadenas
string lineas_texto = "";
// Recorre la variable
foreach (string s in words){
if (s.Length > 0){
//comprueba si hay historial de contrato "s" tiene historial
Console.WriteLine(s.ToString()+"\n");
lineas_texto += s;
}
}
si le ponen el delimitador ";" en consola aparareceran valor por valor del text
1
daniel
olivares
cuevas
si esta vacio aprecera
1;daniel;olivares;cuevas
Espero que sirva de algo
Suscribirse a:
Entradas (Atom)