PLATAFORMA WEB PARA LA ADMINISTRACIÓN DE LOS REPORTES DE HISTORIAS CLÍNICAS DE COMFAMILIAR RISARALDA JORGE LEONARDO BAÑOL UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PRÁCTICAS ACADÉMICAS PEREIRA 2013 PLATAFORMA WEB PARA LA ADMINISTRACIÓN DE LOS REPORTES DE HISTORIAS CLÍNICAS DE COMFAMILIAR RISARALDA JORGE LEONARDO BAÑOL INFORME FINAL DE PRÁCTICA TUTOR ALONSO TORO LAZO INGENIERO DE SISTEMAS Y TELECOMUNICACIONES UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PRÁCTICAS ACADÉMICAS PEREIRA 2013 DEDICATORIA Agradecimientos inmensos a Dios por ser mi fuerza y mi voluntad, a mi incondicional Madre por ser la fuente de mi inspiración y el motivo por el cual mis proyectos y mis sueños se hacen realidad, a mi tutor por el constante apoyo, preocupación y concejos, a mi Universidad por ser mi segunda casa. Contenido INTRODUCCIÓN .................................................................................................... 8 1. PRESENTACIÓN DE COMFAMILIAR RISARALDA ........................................ 9 1.1. RESEÑA HISTÓRICA ................................................................................ 9 1.1.1. Historia de Comfamiliar Risaralda a través de los hechos más importantes ...................................................................................................... 9 1.2. DIRECCIONAMIENTO ESTRATÉGICO ................................................... 11 1.2.1. Misión ................................................................................................ 11 1.2.2. Visión ................................................................................................. 11 1.2.3. Política de Calidad ............................................................................. 11 1.2.4. Objetivos de Calidad .......................................................................... 11 1.2.5. Políticas Administrativas .................................................................... 11 1.2.6. Número de Colaboradores................................................................. 12 1.3. ESTRUCTURA ORGANIZACIONAL ........................................................ 12 2. DEFINICIÓN DE LAS LÍNEAS DE INTERVENCIÓN ..................................... 14 3. DESCRIPCIÓN DEL PROBLEMA .................................................................. 15 4. JUSTIFICACIÓN ............................................................................................ 17 5. OBJETIVOS ................................................................................................... 18 5.1. OBJETIVO GENERAL ............................................................................. 18 5.2. OBJETIVOS ESPECÍFICOS .................................................................... 18 6. MARCO TEÓRICO ......................................................................................... 19 6.1. SISTEMAS DE INFORMACIÓN ............................................................... 19 6.2. INGENIERÍA DEL SOFTWARE ................................................................ 19 6.3. BASES DE DATOS .................................................................................. 21 6.3.1. Bases de datos relacionales .............................................................. 21 6.3.2. Conceptos.......................................................................................... 22 6.4. LENGUAJE DE PROGRAMACIÓN JAVA ................................................ 25 6.4.1. Características ................................................................................... 26 6.4.2. Programación orientada a objetos ..................................................... 26 6.5. IREPORT DESIGNER .............................................................................. 27 6.6. PLATAFORMA WEB................................................................................. 27 7. CRONOGRAMA ............................................................................................. 29 7.1. ACTIVIDADES DEL PROYECTO ............................................................. 29 7.2. PLANIFICACIÓN PRIMERA ETAPA (Reportes de Historia Clínica) ......... 29 7.3. PLANIFICACIÓN SEGUNDA ETAPA (Plataforma web) ........................... 30 8. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS ................................ 31 8.1. PRIMERA ETAPA – REPORTES HISTORIA CLÍNICA ............................. 31 8.1.1. Análisis de la Información .................................................................. 31 8.1.2. Especificación de Requerimientos ..................................................... 32 8.1.3. Diseño de los Reportes ..................................................................... 32 8.1.4. Construcción de los SQL para los Reportes y Subreportes ............... 34 8.1.5. Implementación y ejecución de los reportes ...................................... 38 8.2. SEGUNDA ETAPA – PLATAFORMA WEB ............................................... 41 9. 11. CONCLUSIONES........................................................................................... 45 REFERENCIAS BIBLIOGRAFICAS ............................................................ 47 Lista de ilustraciones Ilustración 1. Organigrama Comfamiliar Risaralda ................................................ 13 Ilustración 2. Planificación Primera etapa (Reportes de Historia Clínica) .............. 29 Ilustración 3. Planificación Segunda Etapa (Plataforma web) ............................... 30 Ilustración 4. Diseño de la Historia Clínica Completa ............................................ 33 Ilustración 5. Diseño de Historia Clínica Epicrisis.................................................. 33 Ilustración 6. Estructura de los Reportes de Historia Clínica ................................. 34 Ilustración 7. Impresión de la Historia Clínica Completa desde el SIIS ................. 39 Ilustración 8. Impresión de las Historia Clínica Epicrisis desde el SIIS ................. 40 Ilustración 9. Pantalla de Inicio .............................................................................. 41 Ilustración 10. Pantalla Mi cuenta .......................................................................... 42 Ilustración 11. Pantalla Buscar Factura ................................................................. 43 Ilustración 12. Pantalla Estado de las Facturas ..................................................... 44 Lista de tablas Tabla 1. Conformación planta de personal por tipo de contrato ............................ 12 Tabla 2. Actividades del proyecto .......................................................................... 29 Tabla 3. Especificación de los requerimientos ....................................................... 32 Tabla 4. Interacción pantalla Inicio ........................................................................ 41 Tabla 5. Interacción pantalla Mi cuenta ................................................................. 42 Tabla 6. Interacción pantalla Buscar factura .......................................................... 43 Tabla 7. Interacción pantalla Estado de las facturas ............................................. 44 RESUMEN Actualmente Comfamiliar Risaralda cuenta con un sistema de información, en el cual se almacena toda la información de las atenciones que se le realiza a un usuario que ingresa a la Clínica por cualquier tipo de servicio, esta información se almacena en una base de datos y sirve como soporte de muchos procesos que se llevan en la clínica. Uno de esos procesos tiene que ver, con las Historias clínicas que se generan a través del Sistema de Información Integral de Salud (SIIS), presentan demasiados inconvenientes, de tiempo, de seguridad y confiabilidad. Esta organización tiene un interés particular de intervenir este proceso para dar solución a los problemas que actualmente acarrea este sistema, y por ende brindar un mejor servicio a los usuarios. También es de interés para la organización brindar la posibilidad de acceder a estos soportes a través de la web, desarrollando una plataforma que sirva para mejorar aún más este proceso. El proyecto se llevará a cabo en el transcurso de la práctica profesional. Descriptores: Sistemas de Información, Plataforma Web, Bases de Datos, Historias Clínicas, Seguridad. ABSTRACT Currently Comfamiliar Risaralda has an information system, in which all information of the care that is performed in a user enters the clinic for any type of service is stored, this information is stored in a database and serves as support for many processes that are carried in the clinic. One such process has to do with the Medical Records that are generated through the System of Integral Health Information (SIIS) have too many problems, time, safety and reliability. This organization has a particular interest of this process involved to solve the problems that currently carries this system, and thus provide a better service to the user. Also of interest to the organization providing the ability to access these supports through the web, developing a platform that will serve to further enhance this process. The project will take place in the course of professional practice. Descriptors: Information Systems, Web Platform, Database, Medical Records, Security. INTRODUCCIÓN El presente proyecto se redacta con carácter de trabajo de práctica profesional, y tiene como fin cumplir con uno de los requisitos de la Universidad para optar por el título profesional de Ingeniería de Sistemas y Telecomunicaciones. Para tal fin, se interviene en la organización Comfamiliar Risaralda en un proyecto cuyo funcionamiento viene desde hace nueve años aproximadamente y que actualmente presenta inconvenientes en la impresión de Historias clínicas. El proyecto pretende dar solución a estos problemas aplicando procesos, modelos y métodos de ingeniería del software que garanticen la calidad del producto resultante. El proyecto tiene como estructura una etapa de análisis, una de diseño y otra de desarrollo. En cada una de ellas se desarrollan una serie de actividades que serán descritas más adelante en el presente trabajo. Una vez terminadas estas etapas se espera entregar en funcionamiento los reportes correspondientes a las historias clínicas, pero además, se brindará la posibilidad de acceder a ellos de forma virtual a través de un portal web, donde sólo podrán ingresar los usuarios que estén directamente relacionados con la impresión de las Historias Clínicas. En este documento se pretende mostrar los procesos que se llevarán a cabo para la entrega del proyecto, recalcando el apoyo en las buenas prácticas de ingeniería del software como objeto para garantizar un producto de calidad y sobre todo, que supla las necesidades que actualmente se presentan en la organización en lo que a reportes de Historias Clínicas se refiere. 1. PRESENTACIÓN DE COMFAMILIAR RISARALDA 1.1. RESEÑA HISTÓRICA La historia de Comfamiliar Risaralda nació con el decreto 118 del 21 de junio de 1957. En él se establecieron los argumentos por los cuales el Gobierno colombiano consideraba de vital importancia atender las necesidades de las clases menos favorecidas económicamente. En Pereira, la vida comercial e industrial estaba en plena etapa de desarrollo y así mismo se presentaban carencias de servicios esenciales en la comunidad. En medio de este panorama, el 29 de agosto de 1957, nació la Caja de Compensación Familiar de Risaralda. En un principio solo se ocupaba de la administración y redistribución de los aportes de las empresas afiliadas, mediante el subsidio familiar. Después se inició la prestación de servicios sociales y con esto el camino para brindar los mejores beneficios a las empresas, afiliados y a sus familias. 1.1.1. Historia de Comfamiliar Risaralda a través de los hechos más importantes 1963: Se amplió el número de empresas afiliadas, se impulsó el servicio médico odontológico y se puso en marcha la capacitación, según lo dispuesto por el decreto 3151 de 1962, para mejorar las condiciones laborales, de salud y capacitación de los trabajadores de las empresas afiliadas. Después vino un tiempo importante, en el cual se adquirieron los terrenos que hoy ocupan la sede de la carrera 5 a con calle 22, Parque Comfamiliar en Galicia y los centros integrales de servicios de Dosquebradas, Circunvalar, Cuba, Jardín y Obrero. 1971: Se inaugura la sede administrativa en la carrera 5a con calle 22, para ese mismo año se inaugura el primer supermercado de la región. 1982: En el mes de junio se da apertura al Parque Recreacional ubicado en Galicia, que se convierte en el más importante de la región. 1984: Se inaugura en las instalaciones de la carrera 5a, el quirófano para el servicio ambulatorio. 1993: Se da la aprobación para construir la Clínica Comfamiliar y se aprueba el reglamento para el Premio Mujer Comfamiliar. 1996: Se construye el edificio de Capacitación. 1997: Se inaugura La Clínica Materno Infantil, conocida hoy como Clínica Comfamiliar. También se da apertura al edificio de apartamentos El Jardín. 1998: Se construyeron 100 soluciones de vivienda en el sector de Villa Santana y se dio inicio a la construcción del proyecto Ciudad Boquía. 2003: Se inaugura La Granja de Noé, un novedoso parque temático de 24.258 mts2 ubicado dentro del Parque Comfamiliar Galicia. 2004: Este año trajo para Comfamiliar Risaralda procesos que la consolidaron como pionera en el área del servicio médico regional, entre éstos se encuentra la incursión en cardiología invasiva. 2006: Se aprueba la creación del servicio de hospitalización en casa y se da paso a la ampliación locativa de la Clínica, permitiendo la apertura de nuevos servicios. Se destaca la certificación recibida ICONTEC. 2008: Se inauguran las nuevas atracciones acuáticas en el Parque Comfamiliar Galicia (Piscina de olas, toboganes, río lento), siendo uno de los principales atractivos para los risaraldenses y turistas. Se iniciaron los servicios de la UCI Pediátrica. 2010: Se realizó el lanzamiento del Programa de Inserción Laboral Productiva para personas con discapacidad. Comfamiliar Risaralda fue sede de los Juegos Intercajas de la Confraternidad, se recibieron más de 2.000 deportistas de todo el país representando 33 Cajas de Compensación. 2011: Se dio apertura al Centro Integral de Servicios en La Virginia, un amplio y moderno edificio de cuatro pisos que permite a los habitantes de ese municipio conocer diferentes programas ofrecidos por Comfamiliar. También en este año inició el Magazín 'Hogar Dulce Hogar', un programa en vivo donde se dan a conocer los servicios de la entidad y se tratan temas de interés general, es transmitido los días lunes, miércoles y viernes. Comfamiliar Galicia remodeló sus escenarios deportivos, para ser campo de entrenamiento del Campeonato Mundial Sub 20 de la FIFA Colombia 2011. Las selecciones que estuvieron en dicha ocasión fueron España, México, Camerún y Nigeria. 2012: Participa como operador del Jardín Social 'Cosechando Sueños' en el Corregimiento de Puerto Caldas, como un lugar que brindará atención integral a más de 300 niños que se encuentran en su etapa de primera infancia como una forma de vincularse con la estrategia de 'Cero a Siempre' promovida por el gobierno nacional. Se realizó la inauguración de Consotá un atractivo que permite conocer nuestras culturas indígenas colombianas, dándole tránsito a la colonización antioqueña y terminando en una réplica de Pereira en los años 30, esta zona cuenta además con 22 cabañas tipo colonial. 1.2. DIRECCIONAMIENTO ESTRATÉGICO 1.2.1. Misión Es una Entidad de servicios dentro del campo de la Protección Social, que con fundamento en la subsidiariedad, la sostenibilidad, la equidad y la inclusión, permite el desarrollo integral de la comunidad generando valor público. 1.2.2. Visión Actuar en el campo de la Protección Social, desarrollo y bienestar de la comunidad, con liderazgo y proyección Institucional. 1.2.3. Política de Calidad COMFAMILIAR RISARALDA optimiza los recursos y los afianza a través del incremento de la competencia del personal, buscando la satisfacción del cliente convirtiendo el servicio en una cultura de mejoramiento continuo. 1.2.4. Objetivos de Calidad Aumentar la satisfacción de los clientes. Garantizar la Calidad de los procesos y servicios. Mantener y mejorar el Sistema de Gestión de Calidad. Promover el mejoramiento de la competencia del personal. Asegurar la confiabilidad de la información. Asegurar la sostenibilidad económica. 1.2.5. Políticas Administrativas Identificar las necesidades e incrementar el portafolio de servicios. Satisfacer al cliente interno y externo. Mejorar la comunicación. Disminuir costos y gastos. Revisar y ajustar los procesos. Tecnificar y automatizar los procesos Profesionalizar el recurso humano. 1.2.6. Número de Colaboradores Tabla 1. Conformación planta de personal por tipo de contrato Fuente: elaboración propia TIPO DE VINCULACIÓN 2012 2013 VARIACIÓN Adicionales Práctica Convencionado parcial con extralegales Convencionado parcial sin extralegales Convencionado total Convenios Fijos Fuera de convención Fuera de convención sin extralegales Integrales Integrales – Fijos Por obra TOTAL 5 57 81 59 56 41 922 40 1 6 4 276 1549 18 51 81 59 54 21 918 40 1 6 9 172 1431 13 -6 0 0 -2 -20 -4 0 0 0 5 -104 -52 1.3. ESTRUCTURA ORGANIZACIONAL Ilustración 1. Organigrama Comfamiliar Risaralda Fuente: Informe de Gestión y Balance Social 2012 ÁREA/DEPARTAMENTO DE PRÁCTICA: Sistemas. El proceso de Sistemas dio cobertura a todo el ámbito tecnológico de la entidad, en cuanto a Redes y Comunicaciones, Mantenimiento de Hardware y Software, desarrollo y mantenimiento de sistemas de información y procesos. En el año 2012 se obtuvo un resultado del 99,9% en el cumplimiento del plan estratégico. Se culminaron proyectos como: evaluación y reevaluación de proveedores activos, se realizaron exitosamente los mantenimientos preventivos de equipos programados, se destaca además la renovación del sitio web y desarrollo del micrositio para el Parque Comfamiliar Galicia. 2. DEFINICIÓN DE LAS LÍNEAS DE INTERVENCIÓN Teniendo en cuenta que Comfamiliar Risaralda en su filosofía de brindar el mejor servicio a sus clientes, actualmente cuenta con más de 35 desarrollos de software propios que permiten acercar al usuario a los servicios prestados por la organización. Al realizar la práctica se interviene en uno de estos desarrollos, específicamente en el SIIS (Sistema de Información de Salud Integral) el cual presenta altercados con la impresión de Historias Clínicas. Por ser un proyecto de desarrollo ésta práctica se direcciona en las líneas de Desarrollo de Software y Sistemas de Información, apoyadas por la Ingeniería del Software. 3. DESCRIPCIÓN DEL PROBLEMA En la organización, específicamente en la Clínica, el SIIS (Sistema de Información Integral de Salud) administra toda la información relacionada con la atención de los pacientes que ingresan a la institución por cualquiera de los servicios que se ofrecen en las tres áreas, Clínica, Odontología y Medicina. El SIIS genera diferentes reportes asociados a cada uno de estos servicios. Actualmente se presentan inconvenientes en dos de los reportes generados por el sistema, Impresión de la Historia Clínica Completa e Impresión de la Historia Clínica de Epicrisis. La Historia Clínica Completa comprende toda la información relacionada del paciente desde el primer momento que ingresó a atención por cualquier tipo de servicio. Cuando se genera el reporte y la historia clínica completa es muy grande, que por lo general lo es, el SIIS se bloquea o en caso contrario cuando se genera la impresión, el seguimiento o estudio de la historia se hace tediosa porque no muestra de forma la clara las atenciones y servicios por los cuales ingresó. La Historia Clínica de Epicrisis comprende la información resumida de todas las atenciones que ha recibido un paciente en un ingreso, como estructura- se entiende que un ingreso, una evolución y un egreso, son los componentes más importantes que conforman una Epicrisis. Para cualquier sistema de información se hace difícil sacar un resumen coherente a partir de una serie de datos, por consiguiente la evolución de un paciente no es posible generarla de manera automática a través del SIIS (Sistema de Información Integral de Salud). Para efectos legales, la historia clínica completa debe de comprender la información del paciente de forma clara, concisa y segura, esto con el fin de entregar reportes cuando se solicitan por parte de EPS (Entidades Prestadoras de Salud), entidades judiciales, también para evidencias en caso de demandas por malapraxis medica, es decir actos o procedimientos inapropiados por parte de los profesionales hacia los pacientes, para investigaciones científicas acerca del tratamiento de una enfermedad, entre otros. Para efectos financieros, al momento de generar los cobros a otras EPS por los servicios prestados, así como de los medicamentos suministrados durante la atención en la IPS, la historia clínica de epicrisis no cumple con todos los requisitos que exigen algunos auditores de otras EPS, por lo que las cuentas de cobro sufren glosas (objeciones a las cuentas de cobro presentadas por las Instituciones Prestadoras de Servicios de Salud - IPS), y son devueltas para corrección, esto en muchas ocasiones genera más trabajo del que debería existir. Para efectos de seguridad e integridad de la información, los reportes son generados en HTML luego se guardan en un archivo y posteriormente un Browser o navegador los ejecuta y los muestra; esto a niveles altos de seguridad informática puede generar vulnerabilidades de la información ya que no se dan todas las medidas para proteger los datos de la historia clínica del paciente, teniendo en cuenta también las implicaciones legales que acarrean las historias clínicas. Para efectos ambientales la cantidad de papel que generan los reportes es demasiada, si se tiene en cuenta que hay historias clínicas completas de hasta 800 páginas por paciente. Ahora, hay reportes que se imprimen más de una vez y esto incrementa mucho más el papel utilizado para generar las impresiones, sin mencionar la cantidad de tinta y otros recursos utilizados en el proceso. 4. JUSTIFICACIÓN SIIS (Sistema de Información Integral de Salud) es un software de desarrollo propio de Comfamiliar Risaralda, por lo que el soporte y mantenimiento lo hace la misma organización. Partiendo de esa premisa la organización tiene la necesidad de intervenir en el software SIIS, para brindar un mejor servicio a los usuarios que intervienen directa o indirectamente con la impresión de reportes. Las áreas de la organización que están relacionadas directamente con la impresión de reportes son: facturación, medicina, odontología y sistemas, estas tienen un gran interés de que el proyecto se lleve a cabo, con el fin de que se brinde un mejor servicio tanto para el personal administrativo de la clínica como para los pacientes. Una de las ventajas de la puesta en marcha de este proyecto es que mejorará en gran sentido el servicio prestado por la clínica a los usuarios, en cuanto a lo que reportes de Historia Clínica se refiere y por supuesto llevará a una optimización de recursos y de tiempo, ya que brindará la posibilidad de acceder a los reportes de manera virtual, así la gran cantidad de papel utilizado en las impresiones ya no serían necesarios, pero además el tiempo que era requerido para dicha labor se reduce considerablemente al no tener que realizar impresiones cada vez que sean solicitadas. 5. OBJETIVOS 5.1. OBJETIVO GENERAL Desarrollar una Plataforma Web que permita administrar los Reportes de Historia Clínica, Reportes que serán diseñados y desarrollados durante el ciclo de vida del proyecto. 5.2. OBJETIVOS ESPECÍFICOS Realizar el levantamiento y análisis de la información. Establecer los requerimientos del proyecto. Diseñar los reportes. Construir los SQL de los reportes. Implementar el diseño y los SQL de los reportes en la herramienta iReport. Diseñar el Sitio Web. Desarrollar el Sitio Web para la administración de los reportes de Historias Clínicas. 6. MARCO TEÓRICO 6.1. SISTEMAS DE INFORMACIÓN Un sistema de información según (Fernandez Alarcón, 2006), por definición es un conjunto de elementos que interactúan entre sí con un fin común; que permite que la información esté disponible para satisfacer las necesidades en una organización, un sistema de información no siempre requiere contar con recurso computacional aunque la disposición del mismo facilita el manejo e interpretación de la información por los usuarios. Los elementos que interactúan entre sí son: el equipo computacional (cuando esté disponible), el recurso humano, los datos o información fuente, programas ejecutados por las computadoras, las telecomunicaciones y los procedimientos de políticas y reglas de operación. Un Sistema de Información realiza cuatro actividades básicas: Entrada de información: proceso en el cual el sistema toma los datos que requiere. Almacenamiento de información: pude hacerse por computadora o archivos físicos para conservar la información. Procesamiento de la información: permite la transformación de los datos fuente en información que puede ser utilizada para la toma de decisiones. Salida de información: es la capacidad del sistema para producir la información procesada o sacar los datos de entrada al exterior. Los usuarios de los sistemas de información tienen diferente grado de participación dentro de un sistema y son el elemento principal que lo integra, así se puede definir usuarios primarios quienes alimentan el sistema, usuarios indirectos que se benefician de los resultados pero que no interactúan con el sistema, usuarios gerenciales y directivos quienes tienen responsabilidad administrativa y de toma de decisiones con base a la información que produce el sistema. 6.2. INGENIERÍA DEL SOFTWARE De acuerdo a (Pressman, 2005), la Ingeniería de software es el área de la ingeniería que ofrece métodos y técnicas para desarrollar y mantener software. Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos, o desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a infinidad de áreas: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, derecho, Internet, Intranet, etc. Una definición precisa aún no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los más prestigiosos autores: Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978). Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976). Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972). Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993). En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora. El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de ingeniería de universidades reconocidas. Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software. Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software". En Hispanoamérica el término usado normalmente es el primero de ellos. La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa. La IS se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la forma más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada. 6.3. BASES DE DATOS Una base de datos es un “almacén” que permite guardar grandes cantidades de información de forma organizada para que luego sea posible encontrarla y utilizarla fácilmente. Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos (Nevado Cabello). 6.3.1. Bases de datos relacionales Una base de datos relacional es una base de datos en donde todos los datos visibles al usuario están organizados estrictamente como tablas de valores, y en donde todas las operaciones de la base de datos operan sobre estas tablas. Estas bases de datos son percibidas por los usuarios como una colección de relaciones normalizadas de diversos grados que varían con el tiempo. El modelo relacional representa un sistema de bases de datos en un nivel de abstracción un tanto alejado de los detalles de la máquina subyacente, de la misma manera como, por ejemplo, un lenguaje del tipo de PL/1 representa un sistema de programación con un nivel de abstracción un tanto alejado de los detalles de la máquina subyacente. De hecho, el modelo relacional puede considerarse como un lenguaje de programación más bien abstracto, orientado de manera específica hacia las aplicaciones de bases de datos. En términos tradicionales una relación se asemeja a un archivo, una tupla a un registro, y un atributo a un campo. Pero estas correspondencias son aproximadas, en el mejor de los casos. Una relación no debe considerarse como “solo un archivo”, sino más bien como un archivo disciplinado, siendo el resultado de esta disciplina una simplificación considerable de las estructuras de datos con las cuales debe interactuar el usuario, lo cual a su vez simplifica los operadores requeridos para manejar esas estructuras Características principales: Cada “archivo” contiene solo un tipo de registros. Los campos no tienen un orden específico, de izquierda a derecha. Los registros no tienen un orden específico, de arriba hacia abajo. Cada campo tiene un solo valor. Los registros poseen un campo identificador único (o combinación de campos) llamado clave primaria. Así, todos los datos en una base de datos relacional se representan de una y solo una manera, a saber, por su valor explícito. En particular, las conexiones lógicas dentro de una relación y entre las relaciones se representan mediante esos valores; no existen “ligas” o apuntadores visibles para el usuario, ni ordenamientos visibles para el usuario, ni grupos repetitivos visibles para el usuario, etc. Actualmente algunos de los administradores de bases de datos, utilizan un sistema de búsqueda con algoritmos de árboles B. Pero las búsquedas que se pueden realizar con estos algoritmos son sólo para memoria principal. Los algoritmos implementados para realizar búsquedas con listas salteadas o por bloques (skip lists) son eficientes para realizar búsquedas en memoria secundaria. Como tienen varios niveles en cada nodo de la lista, nos permite dar saltos más largos al realizar las búsquedas, esto provoca que las sean más rápidas. 6.3.2. Conceptos Sistema administrador de base de datos relacionales: Es un sistema que permite administrar bases de datos basadas en el modelo relacional. Base de datos relacionales: Es una colección de datos organizada en tablas, también llamadas relaciones, que están relacionadas entre sí y que pueden ser accesadas de una forma fácil. Relación o tabla: Es un conjunto de filas y columnas que tienen atributos en común. Es la base principal de las bases de datos relacionales. Tupla, fila o registro: Cada una de las filas que forman una tabla o relación. Cada fila representa a un objeto de la realidad y la información perteneciente a éste. Atributo o campo: Cada una de las columnas que forman una relación. Granularidad: Propiedad del valor de un campo que garantiza que está dividido en el menor subconjunto posible para su dominio de datos. Por ejemplo, una dirección tiene una calle, número de casa, departamento y país. La granularidad consistiría, en este caso, en dividir esa dirección en cada una de las partes que la conforman. Dominio de datos: Se refiere a todos los posibles valores que un atributo o campo de una tabla puede tener, por ejemplo, la edad de una persona puede estar entre 0 años a 150. Constraint o restricciones: Son un conjunto de reglas que se aplica a los atributos de una tabla para limitar el dominio de datos que puede tener. Entre las principales restricciones están los CHECK, utilizado para garantizar que el valor del campo cumpla una expresión booleana (precio de un producto mayor que cero, por ejemplo), las restricciones NULL y NOT NULL, las llaves primarias y las llaves foráneas, entre otras. Llave primaria: Una llave primaria sirve para identificar unívocamente a una fila dentro de una tabla o relación. La llave primaria es una combinación de una restricción UNIQUE y una restricción NOT NULL. Las llaves primarias pueden ser aplicadas a un campo o a un conjunto de campos (llave compuesta). Una tabla puede tener una llave primaria como máximo. La teoría de base de datos dicta que cada tabla debería tener una llave primaria aunque muchos de los gestores de base de datos no hacen obligatorio esta regla. Llave foránea: Restricción que garantiza que el valor de un campo de una tabla está presente en el campo de otra tabla. Es un campo en una relación que coincide con el valor de una llave primaria en otra relación. No tienen valores únicos y son utilizadas para restringir el dominio del campo (limitándolo a valores de otro campo en otra tabla) que es llave foránea. Una llave foránea especifica que el valor en una columna debe ser igual a los valores que aparecen en alguna fila de otra tabla. Las llaves foráneas deben referenciar a columnas que son ya sea llaves primarias o que contienen restricciones UNIQUE. Unique: Una restricción UNIQUE tiene como objetivo garantizar que una columna o grupo de columnas tenga un valor único dentro de una relación, es decir que no se repitan. Una restricción UNIQUE es violada cuando hay más de una fila en la tabla donde los valores de todas las columnas incluidas en la restricción son iguales. Diferencia entre una llave primaria y la restricción UNIQUE: Las diferencias entre una llave primaria y una restricción UNIQUE básicamente son las siguientes: Una llave primaria no permite valores nulos, una restricción UNIQUE, sí. Cada tabla solo puede tener una llave primaria como máximo, sin embargo puede tener más de una restricción UNIQUE. Existen otras diferencias en la forma en que son implementadas estas restricciones pero estas dependen del gestor de base de datos utilizado. Índice: Utilizado para permitir acceso aleatorio rápido a una tupla principalmente para cuestiones de búsqueda. Los índices no son considerados como parte de la base de datos sino que como un detalle de implementación. La correcta aplicación de los índices puede ayudar a mejorar el rendimiento de la base de datos. Vista: Una vista es una consulta a la base de datos a la que se le ha asignado un nombre y que puede ser utilizada como una tabla común, aunque no esté definida dentro del esquema de la base de datos. Debido a que se comporta como una tabla, se pueden realizar operaciones de consulta de datos de forma normal. En cuestión de actualizaciones de datos, dado que una vista es una consulta, ésta se ejecuta cada vez que la vista es utilizada. Algunos gestores de base de datos permiten la actualización de la vista directamente, en otros es necesario actualizar los datos de las tablas que se han relacionado en la consulta que forma la vista. DML (Data Manipulation Language): Subconjunto del lenguaje SQL utilizado para la manipulación de los datos en la base de datos, incluye instrucciones como INSERT, UPDATE, DELETE. DDL (Data Definition Language): Subconjunto del lenguaje SQL utilizado para la definición de los datos de la base. Incluye la creación de tablas, restricciones, definición de tipos de datos y otros. Esquema: Un esquema es un entorno en el cual están agrupados objetos de la base de datos como tipos de datos, funciones y operadores. Son utilizados para evitar conflictos entre otros objetos que puedan tener el mismo nombre. Entre las ventajas que permite el uso de esquemas está el evitar conflictos cuando hay concurrencia de usuario en la base de datos y organización de los objetos dentro de grupos lógicos para hacerlos más administrables. Los esquemas son como los directorios en los sistemas operativos, a diferencia que los esquemas no se pueden anidar. Lenguaje procedural: Son lenguajes que permiten al usuario definir sus propias funciones dentro de la base de datos. La sintaxis y funcionalidad de estos lenguajes dependen del gestor de base de datos que se esté utilizando. Algunos de los lenguajes procedurales más comunes son PL/SQL de Oracle y el PGL/PSQL de postgresql. Normalización: Proceso de organizar campos y tablas de una base de datos relacionales para minimizar la redundancia y la dependencia con el fin de aislar los datos de tal forma que las modificaciones puedan ser hechas solo a una tabla y propagadas a las demás a través de las relaciones entre estas. Entre las ventajas de la Normalización se tiene que se minimiza el re diseño de la estructura de la base de datos cuando ésta se quiere extender y que se logra un modelo de datos más informativo para el usuario. Transacciones: Una transacción es una unidad de trabajo desarrollada dentro del sistema gestor de base de datos sobre la base de datos. Tienen como objetivo proveer unidades de trabajo confiables que permitan mantener la integridad y consistencia de los datos en caso de ocurrir errores durante la ejecución de las operaciones. Las operaciones de las transacciones no son visibles a otras transacciones. Por definición, una transacción debe ser atómica (ejecutarse completamente o no ejecutarse en lo absoluto), consistente, aislada y permanente (principio ACID). SQL (Structured Query Language): Lenguaje de consulta estructurado. Es utilizado para manipulación de datos y para definición del esquema de la base de datos también. Trigger: Un Trigger (o disparador en español) es una especificación a la base de datos para que ejecute una función en particular, de manera automática, cada vez que cierto tipo de operación (INSERT, UPDATE, DELETE) sea ejecutada sobre un objeto de la base de datos (tablas y vistas, por ejemplo). Procedimiento almacenado: Código ejecutable que es almacenado en la base de datos. Sirven, generalmente, para manipulación y cálculo de datos de forma automática. 6.4. LENGUAJE DE PROGRAMACIÓN JAVA Según (Groussard, 2012), SUN Microsystems caracteriza a JAVA como un lenguaje sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, independiente de las arquitecturas, portable, eficaz, multihilo y dinámico. Java fue diseñado en 1990 por James Gosling, de Sun Microsystems, como software para dispositivos electrónicos de consumo. Curiosamente, todo este lenguaje fue diseñado antes de que diese comienzo la era World Wide Web, puesto que fue diseñado para dispositivos electrónicos como calculadoras, microondas y la televisión interactiva. En los primeros años de la década de los noventa, Sun Microsystems decidió intentar introducirse en el mercado de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos. Tras unos comienzos dudosos, Sun decidió crear una filial, denominada FirstPerson Inc., para dar margen de maniobra al equipo responsable del proyecto. Inicialmente Java se llamó Oak (roble en inglés), aunque tuvo que cambiar de denominación, debido a que dicho nombre ya estaba registrado por otra empresa. Se dice este nombre se le puso debido a la existencia de tal árbol en los alrededores del lugar de trabajo de los promotores del lenguaje. Tres de las principales razones que llevaron a crear Java son: Creciente necesidad de interfaces mucho más cómodas e intuitivas que los sistemas de ventanas que proliferaban hasta el momento. Fiabilidad del código y facilidad de desarrollo. Gosling observó que muchas de las características que ofrecían C o C++ aumentaban de forma alarmante el gran coste de pruebas y depuración. Por ello en los sus ratos libres creó un lenguaje de programación donde intentaba solucionar los fallos que encontraba en C++. Enorme diversidad de controladores electrónicos. Los dispositivos electrónicos se controlan mediante la utilización de microprocesadores de bajo precio y reducidas prestaciones, que varían cada poco tiempo y que utilizan diversos conjuntos de instrucciones. Java permite escribir un código común para todos los dispositivos. Por todo ello, en lugar de tratar únicamente de optimizar las técnicas de desarrollo y dar por sentada la utilización de C o C++, el equipo de Gosling se planteó que tal vez los lenguajes existentes eran demasiado complicados como para conseguir reducir de forma apreciable la complejidad de desarrollo asociada a ese campo. Por este motivo, su primera propuesta fue idear un nuevo lenguaje de programación lo más sencillo posible, con el objeto de que se pudiese adaptar con facilidad a cualquier entorno de ejecución. Basándose en el conocimiento y estudio de gran cantidad de lenguajes, este grupo decidió recoger las características esenciales que debía tener un lenguaje de programación moderno y potente, pero eliminando todas aquellas funciones que no eran absolutamente imprescindibles. 6.4.1. Características No es arriesgado afirmar que Java supone un significativo avance en el mundo de los entornos software, y esto viene avalado por tres elementos claves que diferencian a este lenguaje desde un punto de vista tecnológico: Es un lenguaje de programación que ofrece la potencia del diseño orientado a objetos con una sintaxis fácilmente accesible y un entorno robusto y agradable. Proporciona un conjunto de clases potente y flexible. Pone al alcance de cualquiera la utilización de aplicaciones que se pueden incluir directamente en páginas Web (aplicaciones denominadas applets). Java aporta a la Web una interactividad que se había buscado durante mucho tiempo entre usuario y aplicación. 6.4.2. Programación orientada a objetos Java incorpora el uso de la orientación a objetos como uno de los pilares básicos de su lenguaje. La orientación a objetos es un paradigma de programación que facilita la creación de software de calidad por sus factores que potencian el mantenimiento, la extensión y la reutilización del software generado bajo este paradigma. La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento. El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente denominado objeto. Un objeto es la representación de un concepto para un programa, y contiene toda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones que pueden modificar dicho estado, y determinan las capacidades del objeto. 6.5. IREPORT DESIGNER De acuerdo a (Jaspersoft Corporation, 2000 - 2014), iReport Designer es una herramienta de creación de código abierto que puede crear informes complejos de todo tipo de aplicaciones Java a través la biblioteca JasperReports. Está escrito en Java puro 100 % y se distribuye con el código fuente de acuerdo con la GNU General Public License. A través de una interfaz gráfica intuitiva y rica, iReport permite crear rápidamente cualquier tipo de informe de forma muy sencilla. iReport permite a los ingenieros que están aprendiendo esta tecnología acceder a todas las funciones de JasperReports, así como también permite ayudar a los usuarios expertos a ahorrar mucho tiempo durante la elaboración de los informes complejos. Para la Versión 5.0, iReport fue reescrito casi por completo, con la nueva aplicación basada en el cliente enriquecido de NetBeans plataforma. A pesar de que la interfaz de usuario aparece más o menos lo mismo, un nuevo diseño completo del núcleo de iReport y el uso de la plataforma NetBeans nos permitirá crear rápidamente nuevas características, lo que hace aún más fácil iReport de aprender y usar. 6.6. PLATAFORMA WEB La plataforma web se puede definir según (BuenasTareas.com, 2014), como una aplicación en la cual un sistema puede ser desarrollado, es decir donde se pueden crear una variedad de opciones para los usuarios ya que son páginas de acceso, cuando se desarrolla un programa, se hace de manera que funcione en una plataforma específica, como por ejemplo la plataforma de una empresa que la crean para dar información de interés a los usuarios pero esa información puede ser restringida ya que si alguien quiere saber cosas más importantes o privadas tienen que tener una clave de acceso, debido a que no es información para todos. Esto se refiere a que el programa va a funcionar en un determinado sistema operativo. Normalmente hay versiones para Windows, Macos, Linux, entre otros, pero cuando nos estamos refiriendo a una plataforma web, estamos diciendo que el sistema funcionara desde un navegador web independiente de Sistema Operativo que se esté utilizando. Una plataforma es por ejemplo, un sistema operativo, o un gran software que sirve como base para ejecutar determinadas aplicaciones. También son plataformas las arquitecturas del hardware, los lenguajes de programación y sus librerías en tiempo de ejecución, como lo son las de video juegos. 7. CRONOGRAMA 7.1. ACTIVIDADES DEL PROYECTO Tabla 2. Actividades del proyecto Fuente: elaboración propia 7.2. PLANIFICACIÓN PRIMERA ETAPA (Reportes de Historia Clínica) Ilustración 2. Planificación Primera etapa (Reportes de Historia Clínica) Fuente: elaboración propia 7.3. PLANIFICACIÓN SEGUNDA ETAPA (Plataforma web) Ilustración 3. Planificación Segunda Etapa (Plataforma web) Fuente: elaboración propia 8. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS 8.1. PRIMERA ETAPA – REPORTES HISTORIA CLÍNICA 8.1.1. Análisis de la Información Durante el transcurso de las primeras semanas se indago acerca de todo lo relacionado con las historias clínicas, estructura, implicaciones legales, importancia para la Clínica, situación actual, problemas, posibles soluciones, etc. Pero además, se hace un breve análisis de la estructura de la base de datos, y de las tablas involucradas directamente con la información que se presenta en las Historias Clínicas. En este periodo de acoplamiento del practicante con la organización se da prioridad al enfoque que tendrán los reportes, y de cómo será su implementación, se establecen tiempos y alcances del proyecto en una reunión previa con el jefe, el asesor de la organización para el proyecto y el practicante. Para la recolección de la información, se tomó como base el documento de análisis y diseño del Sistema de Información Integral de Salud (SIIS), sistema donde actualmente se realizan los reportes. Específicamente se revisa el caso de uso que tiene relación con la impresión de las Historias Clínicas, otorgando información valiosa que muestra la forma en cómo se realiza la impresión desde el SIIS. Se realizan pruebas de cómo se lleva el proceso actual de las impresiones y se obtienen detalles específicos del funcionamiento, como el tiempo de los reportes, la estructura y el orden de la información mostrada. Tomando como base la información y los resultados conseguidos anteriormente, se programa una reunión con la Jefe de facturación y la Jefe de Glosas, para definir requisitos puntuales y posteriormente establecer una primera entrega de requerimientos. Se determina con la jefe de glosas hacer un compendio en un archivo, de las glosas más recurrentes de la clínica para tener una mejor apreciación del problema existente en el departamento de facturación, e incluir estas apreciaciones en la especificación de los requerimientos. Finalmente y para dar inicio al diseño, en una reunión con los directivos de la clínica Comfamiliar, se realiza una presentación de los requerimientos (http://prezi.com/hoalrbvui3xx/soporte-historia-clinica/), con el objetivo de poner en común acuerdo a las partes, cosa que en etapas anteriores al proyecto no se había logrado. Esta reunión dejó buenos comentarios hacia los requerimientos y sólo algunas consideraciones a tener en cuenta; lo más importante es que se logró poner en común acuerdo a los directivos de la clínica. 8.1.2. Especificación de Requerimientos El reporte de Historia Clínica Completa se realizará teniendo en cuenta toda la información registrada en el SIIS, desde el primer y último ingreso del paciente a la Clínica. El reporte de la Epicrisis se realizará cómo resumen teniendo en cuenta la información registrada en el SIIS respecto a un ingreso del paciente. Se debe garantizar un sólo encabezado por cada reporte generado. El reporte debe cumplir con las normas mínimas legales establecidas. La impresión de los reportes se hará en orden cronológico. La estructura debe de ser ordenada de manera que se haga fácil la lectura y el seguimiento del reporte a través del SIIS. El tiempo de impresión además de rápido, debe ser proporcional al tamaño del mismo. Tabla 3. Especificación de los requerimientos Fuente: elaboración propia Requerimiento El reporte de Historia Clínica Completa se realizará teniendo en cuenta toda la información registrada en el SIIS, desde el primer y último ingreso del paciente a la Clínica. El reporte de la Epicrisis será el resumen de la información registrada en el SIIS respecto a un ingreso del paciente a la Clínica. Se debe garantizar un sólo encabezado por cada reporte generado. El reporte debe cumplir con las normas mínimas legales establecidas La impresión de los reportes se hará en orden cronológico. La estructura debe de ser ordenada de manera que se haga fácil la lectura y el seguimiento del reporte a través del SIIS. El tiempo de impresión además de rápido, debe ser proporcional al tamaño del mismo. Ponderación (%) Clasificación 25 Funcional 25 Funcional 10 Funcional 10 Funcional 10 Funcional 10 No funcional 10 No Funcional 8.1.3. Diseño de los Reportes La herramienta utilizada para el diseño de los reportes tanto para la Historia Clínica Completa cómo la de Epicrisis se llevó a cabo en la herramienta de diseño de interfaces Pencil. Diseño de la Historia Clínica Completa Ilustración 4. Diseño de la Historia Clínica Completa Fuente: elaboración propia Diseño de Historia Clínica Epicrisis Ilustración 5. Diseño de Historia Clínica Epicrisis Fuente: elaboración propia 8.1.4. Construcción de los SQL para los Reportes y Subreportes Cada reporte tiene una estructura diferente, a continuación se mostrará la el orden jerárquico de cada reporte. Estructura de los Reportes de Historia Clínica Ilustración 6. Estructura de los Reportes de Historia Clínica Fuente: elaboración propia SQL de los Reportes de Historia Clínica Completa Ingresos Ingresos por Servicio Atenciones Grupos Detalles de grupo Signos Vitales Ordenes Administración de Medicamentos Formulación Intra-Hospitalaria Recomendaciones de Manejo Detalles Grid Epicrisis Ingresos por Servicio - Epicrisis Atenciones - Epicrisis Grupos - Epicrisis Egreso Ordenes Solicitadas 8.1.5. Implementación y ejecución de los reportes Para realizar la implementación de los reportes en el Sistema de Información Integral de Salud (SIIS), se modificaran las clases que ejecutan las Historias Clínicas, actualmente se generan en un archivo HTML y son mostradas en un Navegador. La idea inicial es cambiar los métodos de ejecución con el objetivo de que la clase llame los Reportes desarrollados en la Herramienta iReport. La herramienta iReport me genera dos archivos por cada reporte construido un .jrxml (Reporte) y un .jasper(Reporte compilado). Desde la clase que ejecuta las Historias Clínicas, se agregara un método el cual realiza el llamado del archivo Jasper. Clase IngresosClinica.java public static void generarReporteHCCompleta(String codBene) { try { String archivo = "HC_Completa.jasper"; System.out.println("Cargando desde: " + archivo); ir (archivo == null) { System.out.println("No se encuentra el archivo."); } //este es el parámetro, se pueden agregar más parámetros basta con poner mas parametro.put Map parametro = new HashMap(); parametro.put("Codigo_Beneficiario", codBene); //Reporte diseñado y compilado con iReport // JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, HisCliFacade.getFacade().getConn().getConnection()); JasperPrint jasperPrint = JasperFillManager.fillReport(archivo, parametro, HisCliFacade.getFacade().getConn().getConnection()); //Se lanza el Viewer de Jasper, no termina aplicación al salir JasperViewer jviewer = new JasperViewer(jasperPrint, false); jviewer.setTitle("HISTORIA CLÍNICA"); jviewer.setVisible(true); // JasperPrintManager.printReport(jasperPrint, false); } catch (Exception j) { System.out.println("Mensaje de Error:" + j.getMessage()); j.printStackTrace(); } } Impresión de la Historia Clínica Completa desde el SIIS Ilustración 7. Impresión de la Historia Clínica Completa desde el SIIS Fuente: elaboración propia Clase IngresosXServicio.java public static void generarReporteEpicrisis(String codIngreso) { try { String archivo = "HC_Epicrisis.jasper"; System.out.println("Cargando desde: " + archivo); if (archivo == null) { System.out.println("No se encuentra el archivo."); } //este es el parámetro, se pueden agregar más parámetros basta con poner más parametro.put Map parametro = new HashMap(); parametro.put("Numero_Ingreso", codIngreso); //Reporte diseñado y compilado con iReport // JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, HisCliFacade.getFacade().getConn().getConnection()); JasperPrint jasperPrint = JasperFillManager.fillReport(archivo, parametro, HisCliFacade.getFacade().getConn().getConnection()); //Se lanza el Viewer de Jasper, no termina aplicación al salir JasperViewer jviewer = new JasperViewer(jasperPrint, false); jviewer.setTitle("EPICRISIS"); jviewer.setVisible(true); // JasperPrintManager.printReport(jasperPrint, false); } catch (Exception j) { System.out.println("Mensaje de Error:" + j.getMessage()); j.printStackTrace(); } } Impresión de las Historia Clínica Epicrisis desde el SIIS Ilustración 8. Impresión de las Historia Clínica Epicrisis desde el SIIS Fuente: elaboración propia 8.2. SEGUNDA ETAPA – PLATAFORMA WEB Para esta segunda etapa se definen los requerimientos de la plataforma web, estos requerimientos son implementados en un prototipo no funcional, el cual es presentado a los directivos de la clínica, para su aprobación. El prototipo obtuvo el visto bueno y se da inicio a la etapa de desarrollo. A continuación se presenta el prototipo con la descripción de los casos de uso, y cómo interactúan entre sí. Árbol de páginas Inicio Mi cuenta BuscarFactura EstadoFactura1 EstadoFactura2 EstadoFactura3 Inicio Ilustración 9. Pantalla de Inicio Tabla 4. Interacción pantalla Inicio Fuente: elaboración propia Nota 1 Etiqueta Ingresar - login Interacción Click: Caso 1: Muestra la página Mi cuenta Mi cuenta Ilustración 10. Pantalla Mi cuenta Tabla 5. Interacción pantalla Mi cuenta Fuente: elaboración propia Nota 1 2 3 4 5 6 7 8 Interacción Click: Caso 1: Muestra la página de inicio Click: Caso 1: Muestra el estado de la factura No.1 Click: Caso 1: Muestra el estado de la factura No.2 Click: Caso 1: Muestra el estado de la factura No.3 Click: Caso 1: Muestra el estado de la factura No.1 Click: Caso 1: Muestra el estado de la factura No.2 Click: Caso 1: Muestra el estado de la factura No.3 Click: Caso 1: Muestra la página BuscarFactura Buscar Factura Ilustración 11. Pantalla Buscar Factura Tabla 6. Interacción pantalla Buscar factura Fuente: elaboración propia Nota 1 2 3 Interacción Click: Caso 1: Muestra la página de inicio Click: Caso 1: Muestra la página Mi cuenta Click: Caso 1: Busca la Factura relacionada Estado de las facturas Ilustración 12. Pantalla Estado de las Facturas Tabla 7. Interacción pantalla Estado de las facturas Fuente: elaboración propia Nota 1 2 3 4 5 6 7 8 9 Interacción Click: Caso 1: Muestra la página de inicio Click: Caso 1: Muestra la página Mi cuenta Click: Caso 1: Muestra el estado de la facturas Click: Caso 1: Muestra el estado de la facturas Click: Caso 1: Muestra el estado de la facturas Click: Caso 1: Muestra el estado de la facturas Click: Caso 1: Muestra el PDF de la EPICRISIS en relación Click: Caso 1: Muestra la página BuscarFactura Click: Caso 1: Permite guardar todos los soportes en una carpeta .zip 9. CONCLUSIONES Se mejoró considerablemente el orden y la estructura de la información mostrada en las Historias Clínicas con respecto al proceso anterior, además visualmente es más agradable al usuario lo que facilita la revisión de las mismas. El Reporte brinda la posibilidad de guardar las Historias Clínicas en diferentes formatos, de los que se destacan .PDF y .DOCX, lo que optimiza el tiempo utilizado por los usuarios para la impresión de dichos documentos. Es decir, antes el documento se construía manualmente, ahora se hace automáticamente. Todos los detalles y observaciones que arrojó esta primera etapa, llevan a la conclusión de que los objetivos trazados para la primera etapa se cumplieron con satisfacción. Se utilizó como lenguaje de programación PHP, porque se adapta a los requerimientos y al tipo de desarrollo, en este caso Web. Debido al auge de herramientas que facilitan la programación, se decide utilizar un Framework de desarrollo Web basado en PHP; Symfony ha tenido buena aceptación por parte de usuarios programadores de PHP puro, cada vez son más los usuarios que migran a esta herramienta y lo más importante actualmente existen sitios web de alta complejidad desarrollados en Symfony. Fueron más las ventajas que las desventajas de desarrollar el sitio web con esta herramienta, no cabe duda que los Framework son el futuro de la programación. Al final se entregó la Primera versión del sitio web, desarrollado todo en Symfony. 10. RECOMENDACIONES Al inicio de cualquier proyecto es importante definir y especificar los requerimientos, ya que a partir de ellos se define la estructura y el diseño de la aplicación, teniendo como base unos requerimientos bien definidos se evita que en el transcurso del desarrollo cambien circunstancialmente. Las organizaciones deben tratar de evitar que los desarrollos se conviertan en productos a corto plazo, es importante adoptar metodologías de desarrollo para evitar problemas que en últimas alargan el ciclo de vida del software, se obtiene mejores resultados de un software que se apoya en una buena metodología que otro que no lo hace. Debe de existir mejor retroalimentación al momento de desarrollar un producto de software, para la organización es muy difícil debido a la cantidad de procesos que se manejan, pero documentar los procesos evita que el rango de aprendizaje sea tan extenso. Cabe aclarar que el desarrollo de la plataforma web se hizo totalmente en Symfony 2.0, Framework que soporta PHP. Debido al tiempo tan corto de desarrollo se entrega poca documentación de la plataforma, por lo que futuros desarrollos o evoluciones del sitio estarán sujetos al conocimiento del desarrollador. 11. REFERENCIAS BIBLIOGRAFICAS BuenasTareas.com. (2014). Buenas Tareas: Inspirando Mejores Calificaciones. Recuperado el Noviembre de 2013, de http://www.buenastareas.com/ensayos/La-Plataforma-Web/527521.html Fernandez Alarcón, V. (2006). Desarrollo de Sistemas de Información: Una Metodología Basada en el Modelado (Primera Edición ed.). Barcelona: Ediciones UPC. Groussard, T. (2012). JAVA 7: Los Fundamentos del Lenguaje Java. Ediciones ENI. Jaspersoft Corporation. (2000 - 2014). Jaspersoft Community: The Intelligence Inside. Recuperado el Octubre de 2013, de http://community.jaspersoft.com/project/ireport-designer Nevado Cabello, M. V. (s.f.). Introducción a las Bases de Datos Relacionales. Madrid: Visión Libros. Pressman, R. (2005). Ingeniería del Software: Un Enfoque Práctico (Sexta Edición ed.). (I. Editores, Ed.) McGraw Hill.