Download DSpace de la Universidad Catolica de Cuenca

Document related concepts
no text concepts found
Transcript
UNIVERSIDAD CATÓLICA DE
CUENCA
UNIDAD ACADÉMICA DE INGENIERÍA DE SISTEMAS,
ELÉCTRICA Y ELECTRÓNICA
CARRERA DE INGENIERÍA DE SISTEMAS
SOLUCIÓN INFORMÁTICA DE NUTRICIÓN INFANTIL: MÓDULO DE
EXPEDIENTES INFANTILES.
TRABAJO DE TESIS PREVIA A LA OBTENCIÓN DEL TÍTULO DE INGENIERO DE SISTEMAS
AIDA DEL ROCIO TENEZACA CAGUANA
[email protected]
Director: Ing. Leopoldo Pauta A.
2014
DECLARACIÓN
Yo, Aida del Rocío Tenezaca Caguana, declaro bajo juramento que el trabajo aquí descrito es
de mi autoría; que no ha sido previamente presentada para ningún grado o calificación profesional;
y, que he consultado las referencias bibliográficas que se incluyen en este documento.
La Universidad Católica de Cuenca puede hacer uso de los derechos correspondientes a este trabajo,
según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y la normatividad
institucional vigente.
Aida del Rocío Tenezaca Caguana
-i-
CERTIFICACIÓN
Certifico que el presente trabajo fue desarrollado por Aida del Rocío Tenezaca Caguana, bajo
mi supervisión.
Ing. Leopoldo Pauta Ayabaca
DIRECTOR
- ii -
AGRADECIMIENTOS
En primer lugar a Dios por haberme guiado por el camino de la felicidad hasta ahora en cumplir
una de las metas planteadas en mi vida; en segundo lugar a cada uno de los que son parte de mi
familia a mi ESPOSO Xavier Munzón que es el que me ha ayudado en los momentos más difíciles
de mi carrera, mi amigo el que está en esos malos y buenos momentos , mi HIJA Mayte Munzón la
que me da las fuerzas para seguir adelante por la que hago todo esto mi pedazo de vida, la que se ha
esforzado por comprender que su madre tiene que estudiar para darle un mejor futuro, a mi PADRE
es el que me apoyado con sus consejos y su frase que desde niño me la ha dicho “Quiero ver a mis
hijos hechos unos profesionales”, a mi MAMA que es un ejemplo a seguir la mujer más valiosa que
Dios me ha dado, la que me ayudado a cuidar a mi hija estos 5 años de estudio gracias mami , a mis
hermanos que siempre ha estado hay para apoyarme.
A todos ellos espero que en este momento se sientan orgullos de tener una esposa, madre, hija y
hermana.
Rocío Tenezaca C.
- iii -
DEDICATORIA
Gracias a esas personas importantes en mi vida, que siempre estuvieron listas para brindarme toda
su ayuda, en todo momento que los he necesitado en el transcurso de mi carrera, ahora me toca
regresar un poquito de todo lo inmenso que me han otorgado. Con todo mi cariño está tesis se las
dedico a ustedes:
Mi esposo Xavier
Papá Luis
Mamá Aida
Hermanos Gabriela y Efraín
Y nuestra pequeña hija Mayte
- iv -
ÍNDICE DE CONTENIDOS
DECLARACIÓN................................................................................................................................................................. i
CERTIFICACIÓN .............................................................................................................................................................. ii
AGRADECIMIENTOS .....................................................................................................................................................iii
DEDICATORIA ................................................................................................................................................................ iv
ÍNDICE DE CONTENIDOS .............................................................................................................................................. v
LISTA DE FIGURAS .....................................................................................................................................................viii
LISTA DE TABLAS ......................................................................................................................................................... xi
LISTA DE ANEXOS ....................................................................................................................................................... xii
RESUMEN ......................................................................................................................................................................xiii
ABSTRACT .................................................................................................................................................................... xiv
INTRODUCCIÓN. ............................................................................................................................................................. 1
CAPITULO I: GENERALIDADES ................................................................................................................................... 2
1.1 DEFINICIÓN DEL PROBLEMA ............................................................................................................................. 2
1.2 MARCO CONCEPTUAL DEL PROBLEMA .......................................................................................................... 2
1.3 PLAN DEL PROYECTO .......................................................................................................................................... 3
1.4 CONCEPTO DE LA METODOLOGIA R.U.P. .......................................................................................................... 4
1.4.1 FUNCIONAMIENTO DE LA METODOLOGIA R.U.P.......................................................................................... 4
1.5 PROCESO DE DESARROLLO DEL SOFTWARE.................................................................................................... 5
1.5.1. ADAPTAR EL PROCESO: ............................................................................................................................... 5
1.5.2. EQUILIBRAR PRIORIDADES: ...................................................................................................................... 6
1.5.3. DEMOSTRAR VALOR ITERATIVAMENTE: .............................................................................................. 6
1.5.3.1 Colaboración entre equipos: .............................................................................................................................. 6
1.5.3.2 Elevar el nivel de abstracción: .......................................................................................................................... 6
1.5.3.3 Enfocarse en la calidad: .................................................................................................................................... 6
1.5.3.4 Fundamentos del Enfoque orientado a Objetos ................................................................................................. 6
1.6 DESARROLLO DE COMPONENTES ....................................................................................................................... 8
1.6.1 CARACTERÍSTICAS DE CAMPO: ................................................................................................................ 8
1.7 ESTADO DEL ARTE .................................................................................................................................................. 8
1.7.1 FASES DE DESARROLLO DE UN SISTEMA INFORMÁTICO: ................................................................ 9
1.7.1.1 Etapa I: Análisis de los requisitos del software: ....................................................................................... 9
1.7.1.2 Etapa II: Diseño: .................................................................................................................................... 10
1.7.1.3 Etapa III: Generación de Código: .......................................................................................................... 10
1.7.1.4 Etapa IV: Pruebas: ................................................................................................................................. 10
1.7.1.5 Etapa V: Mantenimiento. ....................................................................................................................... 11
1.7 DESCRIPCIÓN Y SUSTENTACIÓN DE LA SOLUCIÓN ................................................................................... 11
CAPITULO II: ANÁLISIS............................................................................................................................................... 12
-v-
2.1 METODOLOGÍA APLICADA PARA EL DESARROLLO DE LA SOLUCIÓN ................................................. 12
2.1.1 IDENTIFICACIÓN DE REQUERIMIENTOS ....................................................................................................... 12
2.1.1.1 Realizar un análisis de requisitos de la solución informática de nutrición infantil: Módulo de expedientes
infantiles. 12
2.1.1.1.1 Reconocimiento del problema...................................................................................................................... 12
2.1.1.2 Requerimientos funcionales ............................................................................................................................ 19
2.1.1.3 Requerimientos no funcionales ....................................................................................................................... 19
2.1.1.3.1 Requerimientos del Producto ....................................................................................................................... 19
2.1.1.3.2 Requerimientos Externos ............................................................................................................................. 20
2.1.2 META DEL SISTEMA INFORMÁTICO DE NUTRICIÓN INFANTIL .............................................................. 20
2.2 ANÁLISIS DE LA SOLUCIÓN ................................................................................................................................ 20
2.2.1 MODELO DEL NEGOCIO ............................................................................................................................... 20
2.2.2 EVALUAR EL CENTRO DE SALUD DONDE SE APLICARÁ EL SISTEMA DE NUTRICIÓN INFANTIL
SINI……… ...................................................................................................................................................................... 20
A.
Comprensión inicial del dominio del, SINI para centros de salud de la Ciudad de Cuenca en el área de nutrición
infantil………................................................................................................................................................................... 22
B.
Modelado del negocio inicial del SINI para centros de salud de la Ciudad de Cuenca en el área de nutrición
infantil……....................................................................................................................................................................... 22
C.
Caso de uso específico SINI, módulo de expedientes infantiles. .................................................................... 26
D.
Tarjeta de descripción: Caso de uso específico expedientes infantiles ........................................................... 28
E.
Diagrama de clases del Sistema ...................................................................................................................... 31
F.
Modelo entidad relación, Sistema de Nutrición Infantil: Módulo de Expedientes infantiles .......................... 32
G.
Diagrama de colaboración del sistema SINI ................................................................................................... 32
H.
Diagrama de actividades del SINI ................................................................................................................... 33
CAPITULO III: DISEÑO ................................................................................................................................................. 34
3.1 ARQUITECTURA DE LA SOLUCIÓN ................................................................................................................. 34
3.2 ARQUITECTURA DE LA INFORMACIÓN ............................................................................................................ 34
3.2.1 ARQUITECTURA DE INFORMACIÓN EN LAS FASES DEL PROCESO DE DESARROLLO DE
SOFTWARE: ................................................................................................................................................................... 35
3.2.2 FASE DE INICIO DE LA ARQUITECTURA DE LA INFORMACIÓN ..................................................... 36
3.2.3 FASE DE CONSOLIDACIÓN DE LA ARQUITECTURA DE LA INFORMACIÓN ................................. 38
3.2.4 FASE DE LA VALIDACIÓN DE LA ARQUITECTURA DE LA INFORMACIÓN .................................. 39
3.2.5 ROLES DEL PROCESO ................................................................................................................................ 40
3.3 DISEÑO DE LA INTERFAZ GRÁFICA................................................................................................................ 40
CAPITULO IV: CONSTRUCCIÓN Y PRUEBAS. ........................................................................................................ 54
4.1 CONSTRUCCIÓN .................................................................................................................................................. 54
4.2 PRUEBAS ............................................................................................................................................................... 66
OBSERVACIONES, CONCLUSIONES Y RECOMENDACIONES ............................................................................. 68
A.
Observaciones: las siguientes observaciones después de haber concluido el proyecto son las siguientes ...... 68
- vi -
B.
Conclusiones: Al finalizar este trabajo teórico práctico, puedo concluir con lo siguiente: ............................. 68
RECOMENDACIONES Y TRABAJOS A FUTURO ..................................................................................................... 69
A.
Recomendaciones:........................................................................................................................................... 69
B.
Trabajos Futuros: ............................................................................................................................................ 69
REFERENCIAS BIBLIOGRÁFICAS. ............................................................................................................................ 70
ANEXOS .......................................................................................................................................................................... 72
ANEXO A: FORMTO DE LA ENCUESTA REALIZADA A LOS INFANTES DEL 10 AL 14 DE OCTUBRE, EN EL
HOSPITAL VICENTE CORRAL MOSCOSO DE LA CIUDAD DE CUENCA. .......................................................... 73
ANEXO B: REPORTE DE LAS DIETA ASIGNADA AL PACIENTE ......................................................................... 76
ANEXO C: CODIGO FUENTE DIETA.JAVA ............................................................................................................... 77
ANEXO D: CODIGO FUENTE DE HISTORIAL.JAVA .............................................................................................. 89
ANEXO E: CODIGO FUENTE DE NUTRICION.JAVA ............................................................................................... 94
ANEXO F: CODIGO FUENTE DE PACIENTE.JAVA................................................................................................ 110
ANEXO G: CODIGO FUENTE DE PRINCIPAL.JAVA .............................................................................................. 125
ANEXO H: CÓDIGO FUENTE DE LAS VARIABLES DETALLE DIETA CLASS ................................................ 137
ANEXO D: CODIGO FUENTE DE HISTORIAL.JAVA ............................................................................................ 100
ANEXO E: CODIGO FUENTE DE NUTRICION.JAVA ............................................................................................. 107
ANEXO F: CODIGO FUENTE DE PACIENTE.JAVA................................................................................................ 128
ANEXO G: CODIGO FUENTE DE PRINCIPAL.JAVA .............................................................................................. 148
ANEXO H: CODIGO FUENTE DE LAS VARIABLES DETALLE DIETA CLASS ................................................ 164
- vii -
LISTA DE FIGURAS
Fig. 1 Porcentaje de desnutrición en niños y niñas menores de cinco años en las dos últimas décadas………………………………….………. 2
Fig. 2 Etapas metodológicas de un modelo espiral para el desarrollo de un SI…………………………………………………………………… 3
Fig. 3 Metodología y fases aplicadas al SINI (Sistema de Nutrición Infantil)……………………………………………………...…………….. 5
Fig. 4 Representación de una actividad en un modelo UML……………………………………………………………………………………… 10
Fig. 5 Representación de un actor en un modelo UML…………………………………………………………………………………………… 10
Fig. 6 Cuadro estadístico de la tabulación de la pregunta número uno, ¿Eres Un Niño O Una Niña?.................................................................... 16
Fig. 7 Cuadro estadístico de la tabulación de la pregunta número 2, ¿Con Qué Frecuencia Sueles Come Fruta?.................................................. 17
Fig. 8 Cuadro estadístico de la tabulación de la pregunta número tres, ¿con qué frecuencia sueles comer ensalada, verduras crudas o ralladas?
(zanahoria, remolacha, etc)…………………………………… ........................................................................………………………………….. 17
Fig. 9 Cuadro estadístico de la tabulación de la pregunta número cuatro, ¿Con Qué Frecuencia Suele Comer Verduras Cocidas?......................
17
Fig. 10 Cuadro estadístico de la tabulación de la pregunta número cinco, ¿Cuáles De Las Siguientes Frutas Te Gustan?.................................... 18
Fig. 11 Cuadro estadístico de la tabulación de la pregunta número seis, ¿Crees Que Comes Mucha O Poca Fruta?.............................................. 18
Fig. 12 Cuadro estadístico de la tabulación de la pregunta número siete, ¿Hay Fruta Que Te Guste Normalmente En Casa?............................... 18
Fig. 13 Cuadro estadístico de la tabulación de la pregunta número ocho, ¿Te Preparan/S En Casa Trozos De Fruta Para Comer Entre Horas?
............................................................................................................................. ..................................................................................................... 19
Fig. 14 Cuadro estadístico de la tabulación de la pregunta número nueve, ¿Llevas Normalmente Fruta Al Colegio?........................................... 19
Fig. 15 Cuadro estadístico de la tabulación de la pregunta número diez, ¿Cuáles De Las Siguientes Verduras Frutas Te Gustan O Cuáles No
Te Gustan? .................................................................................................................. ............................................................................................. 19
Fig. 16 Cuadro estadístico de la tabulación de la pregunta número once, ¿Hay Verdura Que Te Guste Normalmente En Casa?.......................... 20
Fig. 17 El caso de uso administración de usuarios, respaldos y auditorias, del modelo de negocios inicial del SINI…………………............
Fig. 18 El caso de uso expedientes infantiles, del modelo de negocios inicial del SINI………………………………………………………….
24
Fig. 19 El caso de uso diseño de dietas, del modelo de negocios inicial del SINI. ...............................................................................................
24
Fig. 20 La descripción del caso de uso administración de usuarios, respaldos y auditorias, del modelo de negocios inicial del SINI………..
25
24
Fig. 21 La descripción del caso de uso Expedientes Infantiles, del modelo de negocios inicial del SINI………………………………………... 25
Fig. 22 La descripción del caso de uso Diseño de Dietas, del modelo de negocios inicial del SINI……………………………………………... 26
Fig. 23 Diagrama de caso de uso del modelo de negocios inicial del SINI………….............................................................................................. 26
Fig. 24 Diagrama de caso de uso específico, módulo de expedientes infantiles. .................................................................................................... 27
Fig. 25 Fig.25 Caso de uso específico del sistema de nutrición, registro datos del paciente…………………………………………….....……
28
Fig.26 Caso de uso específico del sistema de nutrición, registro de hábitos del paciente………………………………………………………... 28
Fig.27 Caso de uso específico del sistema de nutrición, registro de dietas del paciente………………………………………………………….
29
Fig. 28 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: Ingreso datos del paciente…….. 29
Fig. 29 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: visualizar dietas del paciente…..
30
Fig. 30 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: registrar hábitos del paciente…..
30
- viii -
Fig.31 Tarjeta de descripción reporte de dietas de los pacientes………………………………………………………………………………….
31
Fig.32 Tarjeta de descripción reporte nutricional de los pacientes………………………………………………………………………………
31
Fig.33 Tarjeta de descripción reporte hábitos tanto físicos como alimenticios de los pacientes………………………………………………….
32
Fig.34 Diagrama de clase general del sistema nutriciona.......................................................................................................................................
32
Fig. 35 Modelo de entidad relación del sistema informático de nutrición infantil SINI, Modulo de expedientes infantiles …….........................
Fig. 36 Diagrama de colaboración que indican las clases para la realización del caso de uso específico, módulo de expedientes
infantiles…………………………………………………………………………………………………………………………………………...
33
Fig.37 Diagrama de actividades general del sistema nutricional ……………………………………………………………….……………......
34
Fig. 38 Relación entre las fases del proceso de AI y los flujos de trabajo de RUP………………………………………………………………
36
33
Fig. 39 Actividad que se desarrolla en el proceso………………………………………………………………………………………………… 36
Fig. 40 Trabajador del proceso que desarrolla una o varias actividades………………………………………………………………………….. 36
Fig. 41 Relación entre actividades, desarrollador y elementos de la fase de inicio del proceso de AI…………………………………………..
38
Fig. 42 Relación entre actividades, desarrolladores y elementos de la fase de consolidación del proceso de AI……........................................... 39
Fig. 43 Relación entre actividades, desarrolladores y elementos de la fase de validación del proceso de AI……………………………………. 40
Fig.44 Menú principal revisado del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del sistema. Establecido. 42
Fig. 45. Icono del pacientes……………………………………………………………………………………………………………………….
Fig. 46. Icono del dietas…………………………………………………………………………………………………………………………..
Fig. 47. Icono del nutricion……………………………………….………………………………………………………………………………
Fig.48. Icono del historial…………………………………………………………………………………………………………………………
Fig.49 Iconos de operaciones…………………………………………………………………….……………………………………………….
42
42
43
43
43
Fig. 50 Menú Principal icono “PACIENTE” del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del sistema.
…………………………………………………………………………………………………………………………………………………….. 44
Fig. 51 Módulo de expedientes infantiles datos del paciente……………………………………………………………………………………. 44
45
Fig. 52 Tabla de registro de pacientes. ..............................................................................................................................
Fig. 53 Menú Principal Pestaña “DIETAS” del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del
sistema. …………………………………………………………………………………………………………………………………………… 45
Fig. 54 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI……………………………………………….……
46
Fig.55 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI “MANEJO DE DIETAS DEL PACIENTE”.…….
46
Fig. 56 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI “REGISTRO DE DIETAS”……………………… 47
Fig. 57 Módulo de expedientes infantiles del sistema: Hábitos del paciente del sistema SINI...............................................................................
47
Fig. 58 Módulo de expedientes infantiles; hábitos, donde el paciente registra sus hábitos alimenticio y físicos…................................................ 48
Fig. 59 Módulo de expedientes infantiles; hábitos, hábitos alimenticios de los pacientes……………….............................................................. 48
Fig. 60 Tablas de hábitos con sus respectivas equivalencias calóricas....................................................................................................................
49
Fig. 61 Interfaz del hábito físico del paciente en el sistema de expedientes infantiles SINI...................................................................................
Fig. 62 Interfaz del historial del paciente………………………………………………………………………………………………………….
Fig. 63 Registro de avances del paciente………………………………………………………………………………………………………….
Fig. 64 Estadistico del avance del paciente en tratamiento nutricional……………………………………………………………………………
Fig. 65 Ingresar un nuevo paciente………………………………………………………………………………………………………………..
49
50
50
51
51
Fig. 66 Visualizar un nuevo paciente……………………………………………………………………………………………………………..
52
Fig. 67 Visualizar un nuevo paciente……………………………………………………………………………………………………………..
52
Fig. 68 Icono de ELIMINAR a un paciente………………………………………………………………………………………………………. 53
Fig. 69 Icono LIMPIAR los datos del paciente para poder ingresar uno nuevo…………………………………………………………………..
53
Fig. 70 Elegir un paciente para poder registrar las medidas nuevas……………………………………………………………………………… 54
Fig. 71 Imagen utilizada en los formularios que maneja usuarios de SINI. ……………………………………………………………………… 55
Fig. 72 Formulairo dietas. Java diseño……………………………………………………………………………………………………………. 56
Fig. 73 Textfield para ingreso de informacion personal del paciente……………………………………………………………………………..
56
Fig. 74 Textfield para ingreso de informacion de la dieta del paciente…………………………………………………………………………… 57
- ix -
Fig. 75 Tabla de dietas para el paciente…………………………………………………………………………………………………………… 57
Fig. 76 Tabla detalle de dietas del paciente……………………………………………………………………………………………………….. 57
Fig. 77 button del formulario de dietas.java………………………………………………………………………………………………………. 58
Fig. 78 Diseño del formulario de historial………………………………………………………………………………………………………… 58
Fig. 79 Textfield del formulario historial.java…………………………………………………………………………………………………….. 58
Fig. 80 Table del formulario historial.java………………………………………………………………………………………………………... 59
Fig. 81 Button del formulario historial.java……………………………………………………………………………………………………….
59
Fig. 82 Diseño del formulario de los habitos……………………………………………………………………………………………………… 59
Fig. 83 Textfiel del formulario nutricion.java…………………………………………………………………………………………………….. 60
Fig. 84 Button del formulario nutricion.java……………………………………………………………………………………………………... 60
Fig. 85 Tables del formulario nutricion.java……………………………………………………………………………………………………… 61
Fig. 86 Pannel del formulario nutricion.java……………………………………………………………………………………………………… 62
Fig. 87 Formularios de pacientes………………………………………………………………………………………………………………….. 62
Fig. 88 Textfield de pacientes.java………………………………………………………………………………………………………………
63
Fig. 89 Button de pacientes.java…………………………………………………………………………………………………………………
63
Fig. 90 Tables de pacientes.java…………………………………………………………………………………………………………………. 63
Fig. 91 Formulario principal que contiene a los otros formularios……………………………………………………………………………….. 64
Fig. 92 Button del formularios principal.java……………………………………………………………………………………………………..
64
Fig. 93 Deshtopannel del formularios principal.java……………………………………………………………………………………………… 65
Fig. 94 paquetes del sistema………………………………………………………………………………………………………………………. 66
-x-
LISTA DE TABLAS
Tabla I: Resultados de la encuesta aplicada a los infantes del Hospital Vicente Corral Moscoso De La Ciudad De
Cuenca……………………………………………………………………………………………………………………… 13
Tabla II: Matriz De Pruebas Aplicadas Al Sistema informático de nutrición infantil……………………………………
- xi -
68
LISTA DE ANEXOS
ANEXOS .......................................................................................................................................................................... 73
ANEXO A: FORMATO DE LA ENCUESTA REALIZADA A LOS INFANTES DEL 10 AL 14 DE OCTUBRE DE
2013, EN EL HOSPITAL VICENTE CORRAL MOSCOSO DE LA CIUDAD DE CUENCA, ECUADOR. ............... 74
Anexo B: REPORTE DE MÉDICOS ESPECIALISTAS QUE GENERA SINI. ............................................................ 77
ANEXO C: CODIGO FUENTE DE DIETAS.JAVA ...................................................................................................... 78
ANEXO D: CODIGO FUENTE DE HISTORIAL.JAVA .............................................................................................. 95
ANEXO E: CODIGO FUENTE DE NUTRICION.JAVA ............................................................................................. 102
ANEXO F: CODIGO FUENTE DE PACIENTE.JAVA................................................................................................ 124
ANEXO G: CODIGO FUENTE DE PRINCIPAL.JAVA .............................................................................................. 144
ANEXO H: CODIGO FUENTE DE LAS VARIABLES DETALLE DIETA CLASS ................................................ 161
- xii -
RESUMEN
Este trabajo de investigación tiene como finalidad ser un aporte tecnológico en el área de nutrición infantil, ayudando
en el control continuo de los infantes que presenten sobrepeso, debido a que en la Ciudad de Cuenca-Ecuador existen
hospitales y centros de salud, en el área de pediatría y nutrición infantil, que utilizan sistemas informáticos que permiten
gestionar: procesos de control de peso, crecimiento y nutrición infantil. Los sistemas informáticos soportan la gestión de
estos procedimientos, en todas las fases de crecimiento de los niños y niñas, reduciendo tiempos en consultas de
historiales clínicos de pacientes. El SINI (sistema informático de nutrición infantil) propuesto en este trabajo teórico
práctico, debe cumplir estos propósitos y contar con los siguientes módulos: Administración de usuarios, Respaldos y
auditorias, expedientes infantiles, diseño de dietas y reportes, para así lograr el objetivo planteado.
Palabras clave: sistemas de información, sistema informático de nutrición infantil (SINI), expedientes infantiles,
expedientes infantiles, respaldos, reportes.
- xiii -
ABSTRACT
This research is intended to be a technological contribution in the area of childhood nutrition, assisting in the
continuous monitoring of infants presenting overweight, because there are hospitals and health centers in the city of
Cuenca, Ecuador, in the area of pediatrics and child nutrition, using computer systems that allow you to manage: process
control weight, infant growth and nutrition. Computer systems support the management of these procedures at all stages
of growth in children, reducing query times from clinical patient records. The SINI (IT system, child nutrition) proposed
in this practical theoretical work must meet these goals and have the following modules: User management, backup and
audits, infant records, and reports design diets in order to achieve the stated objective.
Keywords: information systems, child nutrition information system (sini), children's records, childhood records,
backups, reports.
- xiv -
INTRODUCCIÓN.
Los sistemas informáticos (SI), han evolucionado y se han adaptado a los procesos de cualquier tipo de empresa.
Sin embargo para su desarrollo se toma en cuenta dos aspectos muy importantes como técnicas de análisis, diseño y
desarrollo, hoy en día existen avances que cambian la estructura ordinaria de elaborar un sistema informático (SI),
radicando su cambio de un sistema centralizado a un sistema basado en flujos de trabajo.
En el área de la salud pueden usarse los sistemas informáticos adaptándose a los procesos realizados para el
correcto control de peso en los infantes se propone el sistema informático de nutrición infantil (SINI), que busca
sistematizar los procesos del control de peso en los infantes, ofrecer menús diarios para el control de peso de los
infantes, gestión de pacientes, historia clínica de los pacientes, respaldos y auditorias, procesos que permitirá reducir
el sobre peso en la comunidad infantil de la Ciudad de Cuenca.
Es fundamental que un (SINI) evolucione a un sistema que cubra en su totalidad los procesos realizados en el
control del peso en los infantes. El contenido de la información que manejan los centros de salud en el área de nutrición
infantil son factores importantes a considerar para determinar los procesos que debe satisfacer la aplicación de
software. El contenido al que se refiere es toda la información de entrada y salida de todos los procesos internos que
manejen los centros de salud. Por ejemplo los procesos de control de peso en los infantes, menús para las dietas,
manejo de historiales clínicos, etc. Los procesos deben ser claros para poder estructurar la base de datos que permitirá
almacenar la información, y así poder generar informes, realizar auditorías y respaldos del sistema informático (SI)
que producirá órdenes concretas en rápida sucesión.
-1-
CAPITULO I: GENERALIDADES
1.1 DEFINICIÓN DEL PROBLEMA
La desnutrición infantil en el Ecuador es un problema que tiene múltiples causas entre las que se encuentra el
acceso a los alimentos y su preparación, acceso a servicios básicos, poder adquisitivo de la familia, entorno saludable,
acceso a servicios de salud, así como la generación de capacidades y conocimientos relacionados a alimentación y
nutrición en los responsables de los menores de cinco años [1].
Porcentaje de desnutrIción
en el Ecuador
45%
40%
35%
30%
25%
20%
15%
10%
5%
0%
1990
2011
Fig. 1 Porcentaje de desnutrición en niños y niñas menores de cinco años en las dos últimas décadas [1]
Los centros de salud tanto públicos como privados, no disponen de un sistema informático que permita la gestión
de procesos en el área de nutrición infantil y sea un apoyo para sus especialistas de esta área, permitiéndoles mantener
un control detallado de sus pacientes, de esta manera los sistemas informáticos serian un aporte tecnológico para la
reducción del porcentaje de desnutrición y sobre peso en los infantes de la Ciudad de Cuenca-Ecuador.
1.2 MARCO CONCEPTUAL DEL PROBLEMA
Analizar los procesos de gestión internos del área de nutrición infantil, como estrategia para la adaptación del SINI
en un centro de salud de la Ciudad de Cuenca.
En la actualidad debido a los avances tecnológicos, los centros de salud se han visto en la necesidad de la
adaptación de sistemas informáticos que permitan agilitar procesos de gestión interna en las diferentes áreas de la
salud, sin embargo en los centros de salud de la Ciudad de Cuenca-Ecuador, el área de nutrición infantil no dispone
de un sistema informático, por ello se propone el desarrollo de un SINI son las siglas de sistema informático de
nutrición infantil.
Un SINI sistema informático de nutrición infantil, está enfocado a responsables de centros de salud, escuelas
infantiles y guarderías que deseen sumarse a un sistema que les proporciona una solución completa para la
alimentación de los infantes y que, a la excelencia nutricional y sanitaria, une ventajosas oportunidades para aportar
-2-
una calidad global a la gestión de su centro, reduciendo el índice de desnutrición y aumentando, además, su
rentabilidad [2]. De esta manera es posible manejar todos los procesos para lograr disminuir la desnutrición en los
infantes, agilitando tiempos de respuesta y soluciones nutricionales para la alimentación diaria, acorde a las edades de
los niños y niñas que padecen esta enfermedad.
La investigación se justifica por que la solución informática SINI, se desarrolla de acuerdo a las necesidades de
los centros de salud en el área de nutrición infantil, el desarrollo se fundamenta en el modelo R.U.P. Este es un modelo
que permitirá retroalimentar las fases de desarrollo permitiendo de esta manera ir ajustando la solución informática a
los procesos internos que se llevan a cabo en los centros de salud.
1.3 PLAN DEL PROYECTO
El plan del proyecto según lo establecido por [3], se elabora por etapas metodológicas. La metodología aplicada
para el desarrollo de la solución informática SINI, es R.U.P. sus siglas en inglés rational unified process, traducido al
español como proceso unificado de racional.
1.3.1 MODELO DE DESARROLLO
Según [3], las etapas metodológicas a llevar a cabo para el desarrollo de sistemas de información, se establecen de
la siguiente manera: Análisis, diseño, codificación, prueba, mantenimiento.
Fig. 2 Etapas metodológicas de un modelo espiral para el desarrollo de un SI [3].
1.3.2 FASES METODOLÓGICAS DE DESARROLLO DE UN MODELO ESPIRAL
1.3.2.1 Fase de inicio
En el proceso de desarrollo del sistema informático se lleva a cabo la fase de inicio, durante se cumple esta fase
las iteraciones se centran con mayor énfasis en las actividades de modelamiento del negocio y sus requerimientos. En
esta fase también se enfocan hacia la comprensión del problema y la tecnología a usar, la delimitación del ámbito del
proyecto, la eliminación de los riesgos críticos y al establecimiento de una línea base para la arquitectura,
-3-
En esta fase se cumplen los procesos de modelamiento del sistema informático, también se lleva a cabo las
actividades de requerimientos del software.
1.3.2.2 Fase de elaboración
Durante la fase de elaboración, las iteraciones se centran al desarrollo del diseño de la base (línea base) de la
arquitectura, centralizan más los flujos de trabajo de los requisitos del sistema informático, modelo del negocio (centro
de salud, área de nutrición infantil), su refinamiento, análisis, diseño y una parte de implementación orientada a la
base (línea base), de la arquitectura para la construcción del sistema informático.
1.3.2.3 Fase de construcción
Durante esta fase de construcción, se llevará a cabo la construcción del producto (sistema informático de nutrición
infantil), por medio de una serie de iteraciones para las cuales se seleccionan algunos Casos de Uso, se redefinen el
análisis y diseño, y se procede a su implantación y pruebas.
En esta fase se realiza una pequeña cascada para cada ciclo, se realizan tantas iteraciones hasta que se termine la
nueva implementación del producto, y sus versiones.
1.3.2.4 Fase de transición
Una de las etapas de finalización del sistema informático se tiene la fase de transición, durante esta fase se busca
garantizar que se tiene un producto preparado para su entrega al usuario final o comunidad de usuarios, con sus
requerimientos y listo para automatizar todos sus procesos internos, de forma eficaz y eficientemente.
1.4 CONCEPTO DE LA METODOLOGIA R.U.P.
De acuerdo con al autor de [4], el Proceso Racional Unificado es un proceso de desarrollo de software y junto con
el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis,
implementación y documentación de sistemas orientados a objetos.
El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al
contexto y necesidades de cada organización. Originalmente se diseñó un proceso genérico y de dominio público, el
Proceso unificado, y una especificación más detallada, el Rational Unified Process, que se vendiera como producto
independiente.
1.4.1 FUNCIONAMIENTO DE LA METODOLOGIA R.U.P.
R.U.P. según [5], Es un proceso de ingeniería de software que suministra un enfoque para asignar tareas y
responsabilidades dentro de una organización de desarrollo, para nuestro caso práctico en un centro de salud en el
área de nutrición infantil. Su objetivo es asegurar la producción de software de alta calidad que satisfaga la necesidad
del usuario final (especialista, nutricionista infantil), dentro de un tiempo y presupuesto previsible.
Esta metodología de desarrollo iterativo está enfocada hacia “los casos de uso, manejo de riesgos y el manejo de
la arquitectura”, en las diferentes etapas de desarrollo del sistema informático.
El R.U.P. mejora la productividad del equipo ya que permite que cada miembro del grupo sin importar su
responsabilidad específica acceda a la misma base de datos de conocimiento. Esto hace que todos compartan el mismo
lenguaje, la misma visión y el mismo proceso acerca de cómo desarrollar software [5].
-4-
Fig. 3 Metodología y fases aplicadas al SINI (Sistema de Nutrición Infantil) [5].
Es de gran importancia considerar los riesgos, que pueden darse durante el desarrollo del sistema informático,
como el tiempo de culminación del sistema informático, la adaptación de los procesos al sistema informático, la
adaptación del usuario final con el sistema, requerimientos funcionales y no funcionales no compatibles, con el
software, etc. Debe existir y se debe tener clara la política de seguridad sobre el manejo de la información, el sistema
no es tangible por lo tanto debe garantizarle al usuario final su funcionabilidad, adaptabilidad, y seguridad e integridad
en la información que maneje.
Las fases que utiliza la metodología de desarrollo de software R.U.P., indican como deben ser realizadas las
actividades dentro de cada etapa de desarrollo, combina el empleo de unos modelos o representaciones gráficas junto
con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede
ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho
cuidado al momento de querer cambiar una técnica por otra [6].
1.5 PROCESO DE DESARROLLO DEL SOFTWARE
Según el Autor [4], R.U.P. está basado en seis procesos que son los siguientes:
1.5.1. ADAPTAR EL PROCESO:
El proceso deberá adaptarse a las necesidades del cliente ya que es muy importante interactuar con él. Las
características propias del proyecto u organización. El tamaño del mismo, así como su tipo o las regulaciones que lo
condicionen, influirán en su diseño específico. También se deberá tener en cuenta el alcance del proyecto en un área
subformal.
-5-
1.5.2. EQUILIBRAR PRIORIDADES:
Los requisitos de los diversos participantes para el desarrollo de la aplicación, pueden ser diferentes,
contradictorios o disputarse recursos limitados. Debe encontrarse un equilibrio que satisfaga los deseos de todos. Ya
que gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro, mientras se desarrolla la aplicación
informática.
1.5.3. DEMOSTRAR VALOR ITERATIVAMENTE:
Los proyectos se entregan, aunque sea de un modo interno, en etapas iteradas. En cada iteración se analiza la
opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto así como también
los riesgos involucrados, para el sistema de nutrición infantil, SINI.
1.5.3.1
Colaboración entre equipos:
El desarrollo de software no lo hace una única persona sino múltiples equipos. Debe haber una comunicación
fluida para coordinar requisitos, desarrollo, evaluaciones, planes, resultados, etc.
1.5.3.2
Elevar el nivel de abstracción:
Este principio dominante motiva el uso de conceptos reutilizables tales como patrón del software, lenguajes 4GL 1
o marcos de referencia (frameworks2) por nombrar algunos. Esto evita que los ingenieros de software vayan
directamente de los requisitos a la codificación de software a la medida del cliente, sin saber con certeza qué codificar
para satisfacer de la mejor manera los requisitos y sin comenzar desde un principio pensando en la reutilización del
código.
1.5.3.3
Enfocarse en la calidad:
El control de calidad no debe realizarse al final de cada iteración, sino en todos los aspectos de la producción. El
aseguramiento de la calidad forma parte del proceso de desarrollo y no de un grupo independiente.
1.5.3.4
Fundamentos del Enfoque orientado a Objetos
El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la base de todo desarrollo
orientado a objetos. Estos principios son: la Abstracción, el Encapsulamiento, la Modularidad y la
Herencia.
i) Fundamento 1: Abstracción:
Es el principio de ignorar aquellos aspectos de un fenómeno observado que no son relevantes, con el
objetivo de concentrarse en aquellos que sí lo son. Una abstracción denota las características esenciales
de un objeto (datos y operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto
1
2
4GL, lenguaje de cuarta generación, dan lugar a un lenguaje de programación de alto nivel
Framework, es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular.
-6-
correcto de abstracciones de un determinado dominio, es el problema central del diseño orientado a
objetos.
Los mecanismos de abstracción son usados en el EOO 3 para extraer y definir del medio a modelar,
sus características y su comportamiento. Dentro del EOO son muy usados mecanismos de abstracción:
la Generalización, la Agregación y la clasificación.
• La generalización es el mecanismo de abstracción mediante el cual un conjunto de clases de objetos
son agrupados en una clase de nivel superior (Superclase), donde las semejanzas de las clases
constituyentes (Subclases) son enfatizadas, y las diferencias entre ellas son ignoradas. En consecuencia,
a través de la generalización, la superclase almacena datos generales de las subclases, y las subclases
almacenan sólo datos particulares. La especialización es lo contrario de la generalización. Por ejemplo;
La clase Médico es una especialización de la clase Persona, y a su vez, la clase Pediatra es una
especialización de la superclase Médico.
• La agregación es el mecanismo de abstracción por el cual una clase de objeto es definida a partir
de sus partes (otras clases de objetos). Mediante agregación se puede definir por ejemplo un computador,
por descomponerse en: la CPU, la ULA, la memoria y los dispositivos periféricos. El contrario de
agregación es la descomposición.
• La clasificación consiste en la definición de una clase a partir de un conjunto de objetos que tienen
un comportamiento similar. La ejemplificación es lo contrario a la clasificación, y corresponde a la
instanciación de una clase, usando el ejemplo de un objeto en particular.
ii) Fundamento 2: Encapsulamiento:
Es la propiedad del EOO que permite ocultar al mundo exterior la representación interna del objeto.
Esto quiere decir que el objeto puede ser utilizado, pero los datos esenciales del mismo no son conocidos
fuera de él. La idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. Permite
el ocultamiento de la información separando el aspecto correspondiente a la especificación de la
implementación; de esta forma, distingue el "qué hacer" del "cómo hacer". La especificación es visible
al usuario, mientras que la implementación se le oculta.
iii) Fundamento 3: Modularidad:
Es la propiedad que permite tener independencia entre las diferentes partes de un sistema. La
modularidad consiste en dividir un programa en módulos o partes, que pueden ser compilados
separadamente, pero que tienen conexiones con otros módulos. En un mismo módulo se suele colocar
clases y objetos que guarden una estrecha relación. El sentido de modularidad está muy relacionado con
el ocultamiento de información.
iv) Fundamento 4: Herencia:
Es el proceso mediante el cual un objeto de una clase adquiere propiedades definidas en otra clase
que lo preceda en una jerarquía de clasificaciones. Permite la definición de un nuevo objeto a partir de
otros, agregando las diferencias entre ellos (Programación Diferencial), evitando repetición de código y
permitiendo la reusabilidad.
3
EOO, son las siglas de Enfoque Orientado a Objetos.
-7-
Las clases heredan los datos y métodos de la superclase. Un método heredado puede ser sustituido
por uno propio si ambos tienen el mismo nombre. La herencia puede ser simple (cada clase tiene sólo
una superclase) o múltiple (cada clase puede tener asociada varias superclases). La clase Docente y la
clase Estudiante heredan las propiedades de la clase Persona (superclase, herencia simple). La clase
Preparador (subclase) hereda propiedades de la clase Docente y de la clase Estudiante (herencia
múltiple).
v) Fundamento 5: Polimorfismo:
Es una propiedad del EOO que permite que un método tenga múltiples implementaciones, que se
seleccionan en base al tipo objeto indicado al solicitar la ejecución del método. El polimorfismo
operacional o sobrecarga operacional permite aplicar operaciones con igual nombre a diferentes clases
o están relacionados en términos de inclusión. En este tipo de polimorfismo, los métodos son
interpretados en el contexto del objeto particular, ya que los métodos con nombres comunes son
implementados de diferente manera dependiendo de cada clase.
1.6 DESARROLLO DE COMPONENTES
R.U.P. divide el proceso de desarrollo en cuatro fases, dentro de las cuales se realizan varias iteraciones en número
variable según el proyecto y en las que se hace un mayor o menor hincapié en las distintas actividades para el desarrollo
de la solución informática de nutrición infantil.
1.6.1
CARACTERÍSTICAS DE CAMPO:
El RUP según el autor de [4], es un producto de Rational 4(IBM5). Se caracteriza por ser iterativo e incremental,
estar centrado en la arquitectura y guiado por los casos de uso. Incluye artefactos (que son los productos tangibles del
proceso como por ejemplo, el modelo de casos de uso, el código fuente, etc.) y roles (papel que desempeña una persona
en un determinado momento, una persona puede desempeñar distintos roles a lo largo del proceso), que tiene por
características de campo, las siguientes:
o
o
o
o
o
o
o
o
Forma disciplinada de asignar tareas y responsabilidades (quién hace qué, cuándo y cómo).
Pretende implementar las mejores prácticas en Ingeniería de Software.
Desarrollo iterativo.
Administración de requisitos.
Uso de arquitectura basada en componentes.
Control de cambios.
Modelado visual del software.
Verificación de la calidad del software.
1.7 ESTADO DEL ARTE
Adoptando la metodología de desarrollo propuesto por [3], es necesario analizar la información de los procesos
internos que los centros de salud en el área de nutrición infantil en la actualidad y las tendencias. El estado de arte de
la solución las fases metodológicas para el desarrollo del sistema informático, integran los siguientes módulos:
4
5
Rational, Software es actualmente conocida como una familia de software de IBM
IBM, International Business Machines es una empresa multinacional estadounidense de tecnología
-8-




Administración de usuarios, respaldos y auditorias.
Expedientes infantiles.
Diseño de dietas.
Reportes.
El desarrollo de solución informática se constituye en el desarrollo de estos módulos que son los más relevantes y
que se han visto necesarios para un SINI sistema informático de nutrición infantil.
1.7.1
FASES DE DESARROLLO DE UN SISTEMA INFORMÁTICO:
1.7.1.1 Etapa I: Análisis de los requisitos del software:
Pressman establece que la tarea del análisis de requisitos es un proceso de descubrimiento, refinamiento,
modelado y especificación. Se refina en detalle el ámbito del software, y se crean modelos de los
requisitos de datos, flujo de información y control, y del comportamiento operativo. Se analizan
soluciones alternativas y se asignan a diferentes elementos del software. El análisis de requisitos permite
al desarrollador o desarrolladores especificar la función y el rendimiento del software, indica la interfaz
del software con otros elementos del sistema y establece las restricciones que debe cumplir el software
[3].
El análisis de requisitos del software puede dividirse en cinco áreas de esfuerzo, que son:
1. Reconocimiento del problema. Reconocer los elementos básicos del problema tal y como los
perciben los usuarios finales del sistema informático [3], en nuestro caso los médicos tratantes.
2. Evaluación y síntesis. Definir todos los objetos de datos observables externamente, evaluar el flujo y
contenido de la información, definir y elaborar todas las funciones del software, entender el
comportamiento del software [3], en el contexto de acontecimientos que afectan al sistema informático
de nutrición infantil.
3. Modelado. Crear modelos del sistema informático de nutrición infantil, con el fin de entender mejor
el flujo de datos y control, el tratamiento funcional y el comportamiento operativo y el contenido de la
información [3].
El modelado del negocio está basado en diagramas del flujo, adaptados para crear gráficos que el
cliente puede entender lo que el programador quiere hacer antes de realizar el software o el proyecto a
futuro, este es de muy fácil lectura.
Aquí intervienen los siguientes elementos:
La actividad: es la que nos indica el trabajo que se va a realizar como esta en la Fig. 15,
actividad
Fig. 4 Representación de una actividad en un modelo UML
-9-
El actor: son los que van a intervenir en el proceso del flujo software, es el rol que va a tener el
usuario, esta se representa en la Fig. 16,
actor
Fig. 5 Representación de un actor en un modelo UML
4. Especificación. Realizar la especificación formal [3], del sistema informático de nutrición infantil.
5. Revisión. Un último chequeo general de todo el proceso [3].
1.7.1.2 Etapa II: Diseño:
Según [3], el diseño del software es realmente un proceso de muchos pasos pero que se clasifican dentro
de uno mismo. La actividad del diseño se refiere al establecimiento de las estructuras de datos, la
arquitectura general del software, representaciones de interfaz y algoritmos. El proceso de diseño traduce
requisitos en una representación de software.
El diseño de datos esencialmente se encarga de transformar el modelo de dominio de la información
creado durante el análisis.
1.7.1.3 Etapa III: Generación de Código:
Durante la generación del código se traduce el diseño, en una forma entendible para la computadora. La
generación de código se refiere tanto a la parte de generación de los ambientes virtuales, como a la parte
en la cual se añadirá comportamiento a estos ambientes. El comportamiento de las escenas virtuales es
decir, su funcionalidad, se puede construir a través de algún otro lenguaje de programación, como clases
Java6 o scripts especificados en JavaScript 7. Todas estas actividades implican generar código, para un
sistema informático.
1.7.1.4 Etapa IV: Pruebas:
6
Java Es un lenguaje de programación y la primera plataforma informática creada por Sun Microsystems en 1995.
JavaScript es un lenguaje de programación interpretado, orientado a objetos, basado en prototipos, imperativo, débilmente
tipado y dinámico.
7
- 10 -
Una vez desarrollado el sistema informático de nutrición infantil, se da inicio a las pruebas del software,
de acuerdo a [3], el proceso de pruebas se centra en los procesos lógicos internos del software,
asegurando que todas las sentencias se han comprobado, y en los procesos externos funcionales, es decir,
la realización de las prueba para la detección de errores. En nuestro caso del SINI, es necesario tener la
fase de pruebas del sistema tanto para la parte funcional del software, como para la parte aplicativa del
mismo.
Es muy importante que durante el proceso de desarrollo del SINI, no se pierda el contacto con los
usuarios finales que manejaran el software, de esta manera los objetivos de proyecto se mantendrán
vigentes y se tendrá una idea clara de los aspectos que tienen que probarse durante el periodo de pruebas.
1.7.1.5 Etapa V: Mantenimiento.
Un sistema informático no es estático, tiene que realizarse cambios con frecuencia conforme el usuario
final de la aplicación lo requiera, ya sea por el cambio interno de los procesos, o porque la aplicación
requiera mantenimiento, en sus bases de datos, interfaz, etc. Mediante la documentación apropiada del
software se pueden presentar las vías para dicho mantenimiento y modificaciones del mismo.
1.7 DESCRIPCIÓN Y SUSTENTACIÓN DE LA SOLUCIÓN
Los cambios tecnológicos se han dado radicalmente en las formas y maneras de producir y distribuir información,
para la creación de menús alimenticios, controlar el peso en los niños y niñas, y así reducir la obesidad en los mismos,
sin embargo no existe un control continuo para acabar con ello. Por este motivo se propone un sistema informático de
nutrición infantil que permite automatizar todos los procesos permitiendo simplificar el trabajo del nutricionista
especialista, al momento de emitir recetas, controlar el historial de sus pacientes, realizar diagnósticos a corto y largo
plazo, etc.
Según [7], Un SINI sistema informático de nutrición infantil, almacena, procesa y presenta la información previa,
la actual generada por el enfermo y la necesaria a utilizar para el diagnóstico y la prescripción dietética en una unidad
de nutrición, incluyendo fundamentalmente: ficheros de datos bromatológicos y tablas de valores ideales; filiación de
pacientes, con medidas antropométricas y pruebas clínicas; datos de nutrientes, alimentos, platos, menús y dietas para
la calibración y elaboración de dietas, consultas dietéticas y generación automática de dietas; realización de encuestas
dietéticas, tanto individuales como para grandes grupos de población; estudio del estado nutricional para orientar el
tipo de dieta y guías para el diagnóstico y tratamiento de los estados patológicos nutricionales, puede ser aplicado por
su enorme versatilidad y la gran especialización de sus contenidos, en los entornos más diversos: pautas nutricionales
especiales para las patologías susceptibles de incidencia dietas equilibradas de hostelería, dietas correctoras de estados
patológicos (obesidad, anorexia), hasta atender científicamente las nutriciones enterales más complejas y
condicionadas de los pacientes de unidades de cuidados intensivos o los sometidos a cirugías especialmente cruentas
con prolongados postoperatorios. El programa no solo calcula dietas personalizadas, sino que con fines de uso práctico
ha sido reagrupado en tres subsistemas: diagnostico, que incluye el estado nutricional, condiciones patológicas y
pruebas clínicas; tratamiento, que comprende las prescripciones dietéticas y la posibilidad de calibración de cualquier
petición viable; y finalmente el de entorno, destinado al almacenamiento de historias, emisión de informes, confección
de estadísticas, comunicación con los usuarios y apoyo a la enseñanza. Finalmente, a través de la información recogida
y centralizada, permite colaborar con gestión interna de los historiales clínicos de los pacientes.
- 11 -
CAPITULO II: ANÁLISIS
2.1 METODOLOGÍA APLICADA PARA EL DESARROLLO DE LA
SOLUCIÓN
La metodología aplicada para la solución informática SINI se describe a continuación:
2.1.1 IDENTIFICACIÓN DE REQUERIMIENTOS
Basados en la encuesta realizada a los niños en el hospital regional Vicente Corral Moscoso da como resultado que
estos tienen una bajo control de la nutrición también esto sucede por ritmo de vida acelerado en este siglo.
Para lo cual se realiza un sistema óptimo para así poder controlar la mala nutrición de los niños en la Ciudad de
Cuenca.
2.1.1.1 Realizar un análisis de requisitos de la solución informática de nutrición infantil:
Módulo de expedientes infantiles.
La fase de análisis de requisitos durante el desarrollo de la solución informática de nutrición infantil (SINI),
observará entre la definición del software a nivel sistema y el diseño del software. El análisis de requisitos permitirá
especificar las características operacionales del software (función, datos y rendimientos), indica la interfaz del
software con otros elementos del sistema y establece las restricciones que debe cumplir el software.
2.1.1.1.1 Reconocimiento del problema
Ecuador forma parte de un pequeño grupo de países latinoamericanos que reporta persistentemente altas tasas de
deficiencia nutricional infantil. Uno de cada cuatro niños, menores de cinco años de edad, padece de desnutrición
crónica, según el censo realizado por el INEC, en la provincia del Azuay, el 40.99% de niños tienen prevalencia de
desnutrición y el 0.07% sufren desnutrición crónica [8].
Para profundizar el estudio del problema en los infantes de la Ciudad de Cuenca, se ha visto la necesidad de realizar
una encuesta (Ver Anexo 1), que nos permitirá concluir el problema de sobrepeso y mal nutrición en los niños y niñas
de la Ciudad de Cuenca, Ecuador. Como se indica en la siguiente tabla.
Tabla I: Resultados de la encuesta aplicada a los infantes del Hospital Vicente Corral Moscoso de la Ciudad de Cuenca
Número
Pregunta
Opciones de Respuesta
1
¿ERES UN NIÑO O UNA NIÑA?
niño/ joven
40
niña/ joven
25
nunca
15
2-3 veces al mes
15
1 vez a la semana
10
2
¿CON QUÉ FRECUENCIA
SUELES COME FRUTA?
- 12 -
Respuestas
3
4
5
¿CON QUÉ FRECUENCIA
SUELES COMER ENSALADA,
VERDURAS CRUDAS O RALLADAS?
(ZANAHORIA, REMOLACHA, ETC)
¿CON QUÉ FRECUENCIA SUELE
COMER VERDURAS COCIDAS?
¿CUÁLES DE LAS SIGUIENTES
FRUTAS TE GUSTAN?
¿CREES QUE COMES MUCHA O
POCA FRUTA?
6
7
8
¿HAY FRUTA QUE TE GUSTE
NORMALMENTE EN CASA?
¿TE PREPARAN/S EN CASA
TROZOS DE FRUTA PARA COMER
ENTRE HORAS?
¿LLEVAS NORMALMENTE
FRUTA AL COLEGIO?
- 13 -
2-3 veces a la semana
11
todos los días
9
nunca
8
2-3 veces al mes
10
1 vez a la semana
15
2-3 veces a la semana
15
todos los días
12
nunca
2
2-3 veces al mes
20
1 vez a la semana
13
2-3 veces a la semana
15
todos los días
10
manzanas
10
plátanos
1
peras
2
naranjas
5
mandarinas
5
ciruelas
1
melocotones
0
melón
0
sandia
3
fresas
5
uvas
8
cerezas
8
kiwi
5
piñas
5
otros
2
muchísima fruta
25
mucha fruta
10
ni mucha, ni poca
5
poca fruta
10
muy poca fruta
10
sí, siempre
20
sí, la mayoría de los días
10
algunas veces
8
rara vez
12
sí, siempre
20
sí, la mayoría de los días
10
algunas veces
15
rara vez
12
nunca
3
sí, siempre
10
sí, la mayoría de los días
10
9
¿CUÁLES DE LAS SIGUIENTES
VERDURAS FRUTAS TE GUSTAN O
CUÁLES NO TE GUSTAN?
tomate
lechuga
acelgas
coles, berza
espinacas
puerros
cebolla
zanahorias
calabacín
otros
- 14 -
algunas veces
25
rara vez
15
nunca
10
gusta mucho
25
gusta poco
15
no le gusta nada
10
no la he probado
10
gusta mucho
10
gusta poco
10
no le gusta nada
25
no la he probado
25
gusta mucho
10
gusta poco
20
no le gusta nada
10
no la he probado
20
gusta mucho
15
gusta poco
15
no le gusta nada
15
no la he probado
15
gusta mucho
20
gusta poco
10
no le gusta nada
15
no la he probado
15
gusta mucho
15
gusta poco
20
no le gusta nada
15
no la he probado
10
gusta mucho
15
gusta poco
20
no le gusta nada
10
no la he probado
15
gusta mucho
15
gusta poco
15
no le gusta nada
10
no la he probado
20
gusta mucho
25
gusta poco
25
no le gusta nada
5
no la he probado
5
gusta mucho
15
gusta poco
15
no le gusta nada
10
no la he probado
20
10
11
12
¿HAY VERDURA QUE TE GUSTE
NORMALMENTE EN CASA?
¿POR QUÉ COMES FRUTA Y
VERDURA?
sí, siempre
25
sí, la mayoría de los días
15
algunas veces
10
rara vez
8
nunca
2
por qué me obligan mi madre y/o padre o en el
comedor del colegio
2
porque me gusta
28
por qué los demás lo comen
15
no lo se
15
si
10
no
50
EL PLAN DE CONSUMO DE
FRUTAS Y VERDURAS QUE SE
DESARROLLA EN TU COLEGIO
INCLUYE ACTIVIDADES COMO:
TALLERES DE COCINA, VISITAS A
EXPLOTACIONES AGRARIAS,
JUEGOS EN LÍNEA Y FOLLETOS
PARA LOS NIÑOS EN PÁGINAS WEB.
¿CREES QUE ESTAS ACTIVIDADES
TE AYUDAN A REFORZAR EL
CONSUMO DE FRUTA Y VERDURA
EN LOS NIÑOS?
De acuerdo a la tabla anterior, se indican a continuación el cuadro estadístico para cada pregunta:
40
30
20
10
0
1
2
¿ERES UN NIÑO O UNA NIÑA? Niño/ Joven
¿ERES UN NIÑO O UNA NIÑA? Niña/ Joven
¿CON QUÉ
FRECUENCIA
SUELES COME
FRUTA?
Fig. 6 Cuadro estadístico de la tabulación de la pregunta número uno, ¿ERES UN NIÑO O UNA NIÑA?
9
TODOS LOS DÍAS
2-3 VECES A LA SEMANA
1 VEZ A LA SEMANA
2-3 VECES AL MES
NUNCA
11
10
15
15
0
2
4
6
8
10
12
14
16
Series1
Fig. 7 Cuadro estadístico de la tabulación de la pregunta número 2, ¿CON QUÉ FRECUENCIA SUELES COMER FRUTA?
- 15 -
20
18
16
14
12
10
8
6
4
2
0
NUNCA
2-3 VECES
AL MES
1 VEZ A LA
SEMANA
2-3 VECES A
LA SEMANA
TODOS LOS
DÍAS
¿CON QUÉ FRECUENCIA SUELE COMER VERDURAS COCIDAS?
Series2
Fig. 8 Cuadro estadístico de la tabulación de la pregunta número tres, ¿CON QUÉ FRECUENCIA SUELES COMER ENSALADA,
VERDURAS CRUDAS O RALLADAS? (ZANAHORIA, REMOLACHA, ETC)
25
20
15
10
5
0
MUCHÍSIMA
FRUTA
MUCHA
FRUTA
NI MUCHA,
NI POCA
POCA FRUTA
MUY POCA
FRUTA
¿CREES QUE COMES MUCHA O POCA FRUTA?
Series2
Fig. 9 Cuadro estadístico de la tabulación de la pregunta número cuatro, ¿CON QUÉ FRECUENCIA SUELE COMER VERDURAS
COCIDAS?
- 16 -
20
15
10
5
0
SÍ, SIEMPRE
SÍ, LA MAYORÍA
DE LOS DÍAS
ALGUNAS VECES
RARA VEZ
¿HAY FRUTA QUE TE GUSTE NORMALMENTE EN CASA?
Series2
¿TE PREPARAN/S EN
CASA TROZOS DE
FRUTA PARA COMER
ENTRE HORAS?
Fig. 10 Cuadro estadístico de la tabulación de la pregunta número cinco, ¿CUÁLES DE LAS SIGUIENTES FRUTAS TE GUSTAN?
NUNCA
RARA VEZ
ALGUNAS VECES
SÍ, LA MAYORÍA DE LOS DÍAS
SÍ, SIEMPRE
0
Series2
5
10
15
20
Series1
Fig. 11 Cuadro estadístico de la tabulación de la pregunta número seis, ¿CREES QUE COMES MUCHA O POCA FRUTA?
25
15
10
10
SÍ, SIEMPRE
SÍ, LA MAYORÍA
DE LOS DÍAS
10
ALGUNAS
VECES
RARA VEZ
NUNCA
¿LLEVAS NORMALMENTE FRUTA AL COLEGIO?
Series2
Fig. 12 Cuadro estadístico de la tabulación de la pregunta número siete, ¿HAY FRUTA QUE TE GUSTE NORMALMENTE EN CASA?
- 17 -
25
20
15
10
0
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
GUSTA MUCHO
GUSTA POCO
NO LE GUSTA NADA
NO LA HE PROBADO
5
TOMATE
LECHUGA
ACELGAS COLES, BERZA ESPINACAS
PUERROS
CEBOLLA
ZANAHORIAS CALABACÍN
OTROS
¿CUÁLES DE LAS SIGUIENTES VERDURAS FRUTAS TE GUSTAN O CUÁLES NO TE GUSTAN?
Series1
Fig. 13 Cuadro estadístico de la tabulación de la pregunta número ocho, ¿TE PREPARAN/S EN CASA TROZOS DE FRUTA PARA
COMER ENTRE HORAS?
25
20
15
10
5
0
SÍ,
SIEMPRE
SÍ, LA
ALGUNAS
MAYORÍA
VECES
DE LOS
DÍAS
Series2
RARA VEZ
NUNCA
¿HAY VERDURA QUE TE GUSTE NORMALMENTE EN
CASA?
Series2
Fig. 14 Cuadro estadístico de la tabulación de la pregunta número nueve, ¿LLEVAS NORMALMENTE FRUTA AL COLEGIO?
- 18 -
30
25
20
15
10
5
0
POR QUE ME
OBLIGAN MI
MADRE Y/O
PADRE O EN EL
COMEDOR DEL
COLEGIO
POR QUE ME
GUSTA
POR QUE LOS
DEMÁS LO
COMEN
NO LO SE
¿POR QUÉ COMES FRUTA Y VERDURA?
Series1
Series2
Fig. 15 Cuadro estadístico de la tabulación de la pregunta número diez, ¿CUÁLES DE LAS SIGUIENTES VERDURAS FRUTAS TE
GUSTAN O CUÁLES NO TE GUSTAN?
50
10
1
2
EL PLAN DE CONSUMO DE FRUTAS Y VERDURAS QUE SE DESARROLLA EN TU COLEGIO INCLUYE
ACTIVIDADES COMO: TALLERES DE COCINA, VISITAS A EXPLOTACIONES AGRARIAS, JUEGOS EN LÍNEA
Y FOLLETOS PARA LOS NIÑOS EN PÁGINAS WEB. ¿CREES QUE ESTAS ACTIVIDADES TE AYUDAN A
REFO
EL PLAN DE CONSUMO DE FRUTAS Y VERDURAS QUE SE DESARROLLA EN TU COLEGIO INCLUYE
ACTIVIDADES COMO: TALLERES DE COCINA, VISITAS A EXPLOTACIONES AGRARIAS, JUEGOS EN LÍNEA
Fig. 16 Cuadro estadístico de la tabulación de la pregunta número once,
CASA?
¿HAY VERDURA QUE TE GUSTE NORMALMENTE EN
2.1.1.2 Requerimientos funcionales





El usuario podrá ingresar nuevos expedientes infantiles, editarlos o eliminarlos.
El sistema deberá proporcionar el acceso a expedientes infantiles.
A cada paciente se debe asignar un número de registro que servirá para el seguimiento continuo.
El sistema permitirá la búsqueda e impresión o consulta del historial de un determinado paciente.
El usuario podrá registrar solo pacientes menores a 12 años.
2.1.1.3 Requerimientos no funcionales
2.1.1.3.1 Requerimientos del Producto

Requerimientos de eficiencia: El sistema debe dar respuesta a consultas de historial de
pacientes en el menor tiempo posible.
- 19 -

Requerimientos de fiabilidad: El sistema debe garantizar la integridad en los datos de los
pacientes.

El sistema debe garantizar la información que presenta al usuario

Requerimientos de portabilidad: El sistema deberá poder ser instalado en diversos sistemas
operativos como Windows, Linux y Mac OS.

Requerimientos de usabilidad: El sistema debe incluir módulos que gestionen la información
de pacientes y su interfaz deberá ser amigable e intuitiva.

Requerimientos de usabilidad: El sistema debe estar a disposición del usuario las veinticuatro
horas del día los siete días de la semana.
2.1.1.3.2 Requerimientos Externos

Los requerimientos que se derivan de los factores externos al sistema de nutrición infantil y de
su proceso de desarrollo se han considerado los siguientes:

Las políticas de usos de sistemas informáticos para la gestión de pacientes de nutrición infantil
en el Hospital Vicente Corral Moscoso de la Ciudad de Cuenca, Ecuador.

El sistema no deberá revelar a los usuarios ajenos a él información de los demás pacientes.
2.1.2 META DEL SISTEMA INFORMÁTICO DE NUTRICIÓN INFANTIL
Todos sus Módulos debes estar en funcionamiento en un 100% y estar realizados todas las pruebas necesarias para
que sea de fácil uso para los especialistas en la nutrición infantil, debe también permitir la gestión de sus pacientes
eficientemente garantizando la integridad y fiabilidad de la información.
2.2 ANÁLISIS DE LA SOLUCIÓN
2.2.1 MODELO DEL NEGOCIO
El modelado del negocio es una parte esencial para el proceso del negocio para la realización del software, este
permite la captura del esquema general y cada uno de los procesos más importantes que gobierna el negocio [9].
2.2.2 EVALUAR EL CENTRO DE SALUD DONDE SE APLICARÁ EL SISTEMA DE
NUTRICIÓN INFANTIL SINI
La SINI se aplicará en los centros de salud que dispongan del área de nutrición infantil, en la Ciudad de Cuenca,
la propuesta tentativa es para aplicarlo en el área de nutrición infantil en el Hospital Vicente Corral Moscoso, que
es un hospital que carece de una solución informática para la automatización de estos sus procesos internos y
aportar positivamente para reducir la obesidad y la desnutrición en los infantes de nuestra Ciudad.
- 20 -
2.2.2.1 Qué es lo que quiere la organización del SINI
La organización (Hospital Vicente Corral Moscoso), quiere que los niños de la Ciudad de Cuenca tengan una
mejor nutrición y tener el control de esta, la cual conlleva también a tener un registro de estos para poder hacer el
control deseado a futuro.
2.2.2.2 Comprender la estructura de la organización
La Ciudad de Cuenca en los últimos años ha sufrido un cambio social, hoy en día los niños ya no comparten con
sus padres ya que ambos trabajan para poder mantener el hogar y los niños deben de conformarse con consumir comida
chatarra, por este motivo los infantes tienen muchos problemas en su nutrición.
En el 2011 el Ministerio de Salud Pública ha intervenido en varias ocasiones implementando departamentos de
nutrición, puesto que se ha visto en un alto grado la desnutrición crónica, deficiencia de micronutrientes, sobrepeso y
obesidad, son los principales problemas de los niños Ecuatorianos causados por una mala alimentación [10].
En el diario el tiempo se publicó una charla que brindo el CEDEI 8sobre la nutrición escolar la cual pretende que
varios estudiantes de Estados Unidos realicen actividades voluntarias en el área de nutrición de Cuenca para
concientizar a las familias sobre cómo llevar una mejor nutrición [11].
La anterior cocluye que la nutrición en la Ciudad de Cuenca es importante y que ya se tomado “cartas sobre el
asunto” mediante algunas instituciones como se indicó anteriormente.
Para llevar a cabo este objetivo se desarrolla el proceso que tiene como meta, utilizar las tecnologías de la
información para permitir tener un control y seguimiento eficiente en el proceso de reducción del sobre peso y
desnutrición en los infantes de la Ciudad de Cuenca-Ecuador.
2.2.2.3 Actores y casos de uso en el modelado del negocio
2.2.2.3.1 De los actores
Los actores que se identificaron para el SINI, módulo de expedientes infantiles son:
El paciente
El administrador
El nutricionista
2.2.2.3.2 Análisis de los actores
El paciente es uno de los actores primordiales ya que es el que va interactuar en todo momento indirectamente
con nuestro sistema ya que este no va a poder ingresar datos a este, esto va realizar el actor nutricionista, pero todos
los resultados serán enfocados a él para así mejorar su nutrición.
El médico nutricionista se define como el actor que va a interactuar con el sistema ya que es la persona que ingresa
los datos del paciente cuando se efectúa la cita médica, si no es la primera cita médica del paciente se podría obtener
un reporte del historial clínico previo el análisis médico, este actor médico es él que debe conocer todo el sistema
informático, para que el mismo le brinde de forma eficiente los resultados esperados.
2.2.2.3.3 Categorización de los actores
En primer lugar se encuentra el actor médico nutricionista ya que es el que interactuará directamente con el sistema
y en todo momento.
8
CEDEI, Centers For Interamerican Studies
- 21 -
En segundo lugar se tiene al actor paciente el sistema va contener todos los datos de este cargados en la base de
datos, es decir es el que a proporcionar la información para que el sistema entre en funcionamiento.
En tercer lugar está el actor administrador que es el que genera el turno e interactúa con el paciente aunque este no
está en contacto de ninguna manera con el sistema. Se diría que es un actor lejano.
2.2.2.3.4 Construcción del Modelado de los Casos de Uso del Negocio
A. Comprensión inicial del dominio del, SINI para centros de salud de la Ciudad de Cuenca en el área de
nutrición infantil.
Los centros de salud de la Ciudad de Cuenca, no poseen un sistema de nutrición infantil que permita controlar y
sistematizar los procesos internos que estos desarrollan día a día para disminuir el sobrepeso y la desnutrición en los
infantes. Debido a esta problemática se propone el desarrollo de la solución informática de nutrición infantil SINI,
que después de haber realizado un estudio de las necesidades de los infantes por desnutrición o sobrepeso a los centros
de salud, se concluye en que el SINI debe satisfacer las siguientes necesidades y cumplir los siguientes requerimientos:
1.
Los centros de salud disponen de varios especialistas en el área de nutrición infantil, que deben tener acceso
al sistema informático, además deben poder registrarse nuevos especialistas o permitir dar de baja a otros que
se retiren.
2.
En el área de nutrición infantil se debe tener el control de los pacientes desde que nacen hasta que pasen la
etapa de la infancia, se debe contar con el registro de todos los chequeos que el paciente se haga en todo ese
transcurso de tiempo, además de las recetas médicas, dietas y fichas de control emitidas por el especialista a
cargo.
3.
Los especialistas deben poder tener cuadros estadísticos y curvas de crecimiento de sus pacientes
4.
El centro hospitalario debe garantizar las dietas, menús y recetas emitidas por los especialistas basándose en
el SINI, de acuerdo a los parámetros de entrada que el mismo ingrese de su paciente.
5.
El centro hospitalario requiere que los datos sean fiables, y sean accesibles a los usuarios que lo necesiten.
6.
El centro hospitalario debe tener un sistema informático disponible durante todos los turnos en los que ofrezca
atención médica, a sus pacientes.
B. Modelado del negocio inicial del SINI para centros de salud de la Ciudad de Cuenca en el área de
nutrición infantil.
La parte correspondiente del modelo de negocios consiste en tres casos de uso:
1.
2.
3.
Administración de usuarios, respaldos y auditorias.
Expedientes infantiles.
Diseño de dietas
- 22 -
r
Fig. 17 El caso de uso Administración de Usuarios, Respaldos y Auditorias, del modelo de negocios inicial del SINI.
Fig. 18 El caso de uso Expedientes Infantiles, del modelo de negocios inicial del SINI.
Fig. 19 El caso de uso Diseño de Dietas, del modelo de negocios inicial del SINI.
- 23 -
Tarjetas de Descripción para cada Caso de Uso del Modelo de Negocio Inicial del SINI:
Fig. 20 La descripción del caso de uso Administración de Usuarios, Respaldos y Auditorias, del modelo de negocios inicial del SINI.
Fig. 21 La descripción del caso de uso Expedientes Infantiles, del modelo de negocios inicial del SINI.
- 24 -
Fig. 22 La descripción del caso de uso Diseño de Dietas, del modelo de negocios inicial del SINI.
En esta etapa inicial no se conoce detalles sobre los historiales clínicos de los pacientes, pero sin embargo el
módulo Expedientes Infantiles, es parte esencial para el modelo de negocio inicial.
Para abreviar los tres casos de uso anteriores, se combinan en el diagrama de casos de uso de la siguiente figura
23.
CASO DE USO GENERAL
ADMINISTRACION DEL
SISTEMA
EXPEDIENTES INFANTILES
ADMINISTRADOR
PACIENTE
DISEÑO DE DIETAS
NUTRICIONISTA
DISEÑO DE ALIMENTOS
Fig. 23 Diagrama de caso de uso del modelo de negocios inicial del SINI.
- 25 -
C. Caso de uso específico SINI, módulo de expedientes infantiles.
El caso de uso específico del sistema de nutrición infantil SINI (Fig. 24), módulo de expedientes infantiles
contempla la parte normal del escenario. En este escenario existe una persona a quien se le otorga un usuario
denominado “Súper Usuario” que es el nutricionista con privilegios de acceso a toda la plataforma informática, para
poder realizar el manejo del SINI.
Existen tres escenarios dentro de este módulo, como son los escenarios de:
a) Registrar los datos de los pacientes.
b) Registrar las dietas de los pacientes.
c) Registrar los hábitos de los pacientes.
El escenario de la registrar los datos de los pacientes, tiene el súper usuario quien tiene manejo a toda la información,
permitirá ingresar nuevos pacientes, eliminar pacientes o actualizarlos.
En el escenario de registrar las dietas de los pacientes, el sistema informático debe permitir asignar dietas nutricionales
a cada uno de los pacientes que se registran.
En el escenario de registrar hábitos de los pacientes, el sistema registra cada uno de los hábitos ya sean físicos o
alimenticios del paciente.
EXPEDIENTES INFANTILES
NUTRICIONISTA
Registrar los datos del paciente
PACIENTE
Registrar la dietas del paciente
Ingreso los habitos del paciente
Fig. 24 Diagrama de caso de uso específico, módulo de expedientes infantiles.
- 26 -
REGISTRAR DATOS DEL PACIENTE
Ingreso datos del paciente
PACIENTE
NUTRICIONISTA
Reporte estadistico nutricional
Fig.25 Caso de uso específico del sistema de nutrición, registro datos del paciente.
REGISTRO DE DIETAS DEL PACIENTE
NUTRICIONISTA
Visualizacion de dietas del
paciente
PACIENTE
Reporte de la dietas calorias
Fig.26 Caso de uso específico del sistema de nutrición, registro de hábitos del paciente.
- 27 -
REGISTRO DE HABITOS DEL PACIENTE
NUTRICIONISTA
Ingreso los habitos del paciente
PACIENTE
Reporte del habitos fisicos
Reporte habitos alimenticios
Fig.27 Caso de uso específico del sistema de nutrición, registro de dietas del paciente.
D.
Tarjeta de descripción: Caso de uso específico expedientes infantiles
Fig. 28 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: Ingreso datos del paciente.
- 28 -
Fig. 29 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: visualizar dietas del paciente.
Fig. 30 Tarjeta de descripción para el diagrama de caso de uso específico, módulo de expedientes infantiles: registrar hábitos del paciente.
- 29 -
Tarjeta de descripción Caso de uso específico Registro de Dietas de los pacientes
Fig.31 Tarjeta de descripción reporte de dietas de los pacientes
Tarjeta de descripción caso de uso específico Registro de datos del Paciente
Fig.32 Tarjeta de descripción reporte nutricional de los pacientes
- 30 -
Tarjeta de descripción del caso de uso específico registro de Hábitos del paciente
Fig.33 Tarjeta de descripción reporte hábitos tanto físicos como alimenticios de los pacientes
E.
Diagrama de clases del Sistema
Fig.34 Diagrama de clase general del sistema nutricional
- 31 -
F.
Modelo entidad relación, Sistema de Nutrición Infantil: Módulo de Expedientes infantiles
Fig. 35 Modelo de entidad relación del sistema informático de nutrición infantil SINI, Modulo de expedientes infantiles .
G.
Diagrama de colaboración del sistema SINI
REPORTE DE HABITOS : INTERFAZ
NUTRICION
transient
2: PROCESA LA OPERACION SELECCIONADA
6: BUSCAR DIETA( )
13: VISUALIZA HABITOS
10: DEVUELVE DATOS DE PACIENTE
5: ENVIA REQUERIMIENTO DE DIETA PARA EL PACIENTE
1: ENVIA DATOS DEL PACIENTE
: DIETAS
sequential
: DATOS
PACIENTE
sequential
INFRESA DATOS DEL PACIENTEDATOS
14: TRASFIERE LA INFORMACION AL PACIENTE
REPORTE DE HABITOS : INTERFAZ
NUTRICION
transient
: NUTRICIONISTA
9: REGRESA INFORMACION DEL PACIENTE
4: DEVUELVE INFOMACION REQUERIDA
8: BUSCAR DIETA REQUERIDA
7: REGRESA LA DIETA
3: ENVIA INFORMACION SI EL PACIENTE LO REQUIERE
DATOS QUE
PROPORCIONA
EL CLIENTE AL
NUTRICIONISTA
PACIENTE
12: VIZSUALIZA DIETA PACIENTE
11: DEVUELVE DATOS DEL PACIENTE
REPORTE DE HABITOS : INTERFAZ
NUTRICION
transient
: HABITOS
sequential
DESCRIPCION
DIETAS
Fig. 36 Diagrama de colaboración que indican las clases para la realización del caso de uso específico, módulo de expedientes infantiles.
- 32 -
H.
Diagrama de actividades del SINI
INTERFAZ SISTEMA
DE NUTRICION
: PACIENTE
BASE :
DIETAS
BASE : DATOS
PACIENTE
BASE :
HABITOS
: NUTRICIONISTA
1: REQUERE DATOS DELPACIENTE
2: PROPORCIONA LOS DATOS AL NUTRICIONISTA
3: INGRESA DATOS AL SISTEMA
4: DATOS ENVIADOS A PROCESO
5: PROCESA LA OPERACION
6: ACTUALIZACION DATOS
7: REQUIERE CEDULA
8: PROPORCIONA LA CEDULA
9: INGRESA DATOS AL SISTEMA
10: DATOS ENVIADOS PARA EL PROCESO
11: PROCESA LA INFORMACION
12: RECUPERA LA DIETA
13: PROCESA LA INFOMACION
14: ENVIA LA DIETA REQUERIDA
15: REQUIERO LA CEDULA
16: PROPORCIANA DATO REQUERIDO
17: INGRESA AL SISTEMA
18: RECUPERA LOS DATOS
19: PROCESA LOS DATOS DEL PACIENTE
20: VIZAULIZA LOS DATOS DEL PACIENTE
21: MUESTRA ITEMS DE HABITOS
22: REQUIERE HABITOS
23: PROPORCIANA LA INFORMACION
24: ENVIA INFORMACION PARA EL PROCESO
25: PROCESA LA INFORMACION
Fig.37 Diagrama de actividades general del sistema nutricional
- 33 -
CAPITULO III: DISEÑO
3.1ARQUITECTURA DE LA SOLUCIÓN
La arquitectura de la solución informática de nutrición infantil, sintetiza el código fuente del sistema informático
para satisfacer los requisitos del mismo. En el proceso de la arquitectura encapsula y define las áreas de solución
expresadas en conjunto y separadas por: problemas que son manejables, problemas conceptuales, y finalmente, por
proporciones realizables. Identifica y analiza una o más estrategias de aplicación a un nivel de detalle consistente
con el sistema técnico y comercial de los requisitos y posibles riesgos del desarrollo de la solución informática,
según [12].
De esta forma la arquitectura para una solución informática está definida, por todos sus requisitos que son el
conjunto de elementos para lo cual es sistema informático se desarrolla.
Los objetivos de plan arquitectónico de SINI son:
1.
2.
3.
4.
5.
Que la arquitectura como del hardware, el software, las interfaces, y comunicación, satisface los requisitos del
sistema informático.
Que la arquitectura del sistema informático es realizable.
Que la arquitectura seleccionada es basada en el criterio de la selección especificada, en la solución
informática.
Que la base para la verificación de los elementos del sistema informático está definido.
Que la base para la integración de los elementos del sistema informático está establecido.
Plan arquitectónico que las tareas del sistema informático de nutrición infantil, describen para el desarrollo del
sistema.
1. Evaluación de la planificación para el desarrollo de la solución informática.
2. Análisis de la interfaz de la solución informática.
3. Generación de código.
4. Sistema de integración para pruebas de SINI
5. Sistema calificación por el usuario de las pruebas de SINI
6. Sistema de mantenimiento de SINI
3.2 ARQUITECTURA DE LA INFORMACIÓN
La arquitectura de la información es uno de los pasos importantes ayudan a tener ordenado las fases de la
realización del software, por esto para el desarrollo de SINI en el módulo de expedientes infantiles, está estructurado
por los siguientes componentes:
- 34 -
3.2.1
ARQUITECTURA DE INFORMACIÓN EN LAS FASES DEL PROCESO
DE DESARROLLO DE SOFTWARE:
El objetivo del arquitecto de información será construir estructuras de información para que sean fáciles de
entender y utilizar. Para poder lograrlo, debe alinear las metas del negocio con los objetivos de los usuarios, según
[13].
En cada uno de los flujos de modelación del negocio y de captura de requisitos sería necesario que se involucre
al arquitecto de información, responsable del estudio de la audiencia a la cual va a estar dirigido el producto. Además
en esta etapa el arquitecto de información debe tener claro el negocio de la institución para la que se está realizando
el software.
En la imagen mostrada a continuación se puede apreciar la relación existente entre las fases del proceso propuesto
para desarrollar la Arquitectura con los flujos de trabajo de la metodología RUP, en dependencia de las actividades
que se llevan a cabo en cada uno de estos.
Fig. 38 Relación entre las fases del proceso de AI y los flujos de trabajo de RUP.
En el desarrollo de software, la metodología empleada, utiliza para representación los siguientes gráficos:
Fig. 39 Actividad que se desarrolla en el proceso, [12].
Fig. 40 Trabajador del proceso que desarrolla una o varias actividades, [12].
- 35 -
También se utiliza otros elementos para el proceso, que pueden ser: los documentos entregables, las plantillas o
ficheros salida de las herramientas y las técnicas que se utilizan.
En cada uno de los elementos que se utilizan van a tener flechas que representan si estas entrar a desarrollar las
diferentes actividades.
3.2.2
FASE DE INICIO DE LA ARQUITECTURA DE LA INFORMACIÓN
Para la fase inicial del proceso de desarrollo de nuestro software los integrantes del proyecto deben estar
involucrados en las tareas para que los desarrolladores puedan conocer el funcionamiento del consultorio de los
nutricionistas infantiles, y así realizar el levantamiento de los requisitos que debe cumplir el sistema informático de
nutrición infantil.
El proceso de la arquitectura de la información, se estudiará y analizará todo el material existente que se
encuentre asociado al proyecto tal como el Anexo 1, de manera que se pueda definir claramente el alcance y se
asegure que tanto los ejecutores del proyecto como los usuarios finales compartan las mismas definiciones,
principios, objetivos, metas y estrategias, planteadas para poder alcanzarlas.
También se realizara un estudio detallado de los usuarios que tendrá el sistema informático, para conocer sus
necesidades, características y expectativas. En esta fase se clasifican y organizan todos los contenidos de información
que serán usados, para esto se utilizan técnicas de recopilación de información como entrevistas, encuestas, y otras
técnicas cuantitativas como el Card Sorting10, y el análisis de secuencia.
En la fase inicial nosotros los desarrolladores del proyecto, en la arquitectura de la información, centramos
nuestro trabajo tal como se indica en la fig. 41.
- 36 -
Fig. 41 Relación entre actividades, desarrollador y elementos de la fase de inicio del proceso de AI, [12].
- 37 -
3.2.3 FASE DE CONSOLIDACIÓN
INFORMACIÓN
DE
LA
ARQUITECTURA
DE
LA
En la etapa de desarrollo de software, es donde los desarrolladores se centran en analizar qué hacer y cómo hacerlo,
en esta etapa también se realiza el modelo del sistema a construir y se define la arquitectura del mismo, aquí es donde
la arquitectura de la información desarrolla su fase de consolidación, especificando la estructuración de los contenidos
de información e introduciéndose en el diseño inicial del producto.
En esta fase se hace la definición general o de alto nivel de la AI. Se asignan los nombres o etiquetas más acertados
y relacionados entre sí a cada sección, conformando el esquema de contenidos definitivo. Se definen las directrices
generales de la estructura y organización de la información, [12].
En esta fase los desarrolladores se enfocarán para elaborar el conjunto de actividades y artefactos como se
representan en la fig.42.
Fig. 42 Relación entre actividades, desarrolladores y elementos de la fase de consolidación del proceso de AI, [12].
- 38 -
3.2.4 FASE DE LA
INFORMACIÓN
VALIDACIÓN
DE
LA
ARQUITECTURA
DE
LA
Una vez terminadas todas las actividades de la arquitectura de la información, es posible la generación del primer
prototipo9 del sistema informático, este prototipo es sometido a una revisión detallada para evaluar que efectivamente
cumplirá con los requerimientos planteados.
El desarrollador revisa si el proyecto está cumpliendo los objetivos, haciendo para esto pruebas con los usuarios
especialistas nutricionistas que permiten, anticipar el comportamiento real del sistema informático y podemos medir
la satisfacción de los mismos.
En esta fase el desarrollador implementa las actividades y elementos, que se indican en la Fig. 43.
Fig. 43 Relación entre actividades, desarrolladores y elementos de la fase de validación del proceso de AI, [12].
9
Prototipo: Proyecto funcionando previo al producto final.
- 39 -
3.2.5 ROLES DEL PROCESO
Según [13], para desarrollar todas las actividades y elementos presentados, el equipo de arquitectura de la
información sea interdisciplinario, ya que está integrado por profesionales de varias áreas como la nutrición y salud
nutricional, comunicación social e informática. Cada uno de estos jugará un papel fundamental para lograr una
arquitectura informática robusta y útil. La relación persona-rol no tiene que ser necesariamente de uno a uno,
pudiendo una persona desempeñar más de un rol siempre que estos no trabajen en la misma fase. A continuación
se explican brevemente los roles propuestos.
Compilador de Información: Este será el encargado de desarrollar un conjunto de actividades que le
permitirán recopilar toda la información necesaria para establecer las todas las bases que servirán como guía para el
desarrollo de la arquitectura de la información. Deberá conocer los principales usuarios directos de la organización.
Analista de Contenidos: Se encargará de cumplir un conjunto de técnicas que le permitirán descubrir
y diagnosticar las necesidades de información de la comunidad a la cual sirve. Debe poseer un conjunto de
habilidades como: visión global de todos los elementos de información y su integración, alto conocimiento de las
técnicas de categorización de la información, buena comunicación y poder de síntesis, capacidad de obtener
evidencias del conjunto de información e inferir conclusiones, identificar conexiones entre ideas, y ser receptivo a
las necesidades de otras personas.
Arquitecto de Información: El arquitecto es el responsable de llevar a cabo las actividades encaminadas a
lograr una organización óptima de los contenidos de información que se presentarán, así también la forma en que
estos serán mostrados a los usuarios. Evalúa, analiza, organiza, reelabora y presenta la información de manera que
tenga la máxima utilidad para sus destinatarios.
Ensamblador de Interfaz de Usuario: El papel fundamental del ensamblador será construir las pantallas de la
aplicación desde el punto de vista de la organización e interacción de la información, siguiendo en todo
momento las pautas recomendadas en el proceso para garantizar la accesibilidad y usabilidad de la aplicación. Como
resultado de su trabajo se obtiene un boceto gráfico de la estructura informacional de la aplicación que servirá
posteriormente como guía a los diseñadores y desarrolladores del proyecto. Específicamente realiza su trabajo
durante la fase de consolidación del proceso.
Evaluador de Contenidos: Su tarea será garantizar que el producto final sea fácil de utilizar y comprender,
que permita un alto nivel de accesibilidad independientemente de las características particulares de cada usuario y
del dispositivo usado para hacerlo. Emitirá criterios que evaluarán y permitirán corregir los errores encontrados en
relación con estos aspectos, logrando satisfacer las necesidades de los usuarios. Realiza su labor durante la fase de
validación.
3.3DISEÑO DE LA INTERFAZ GRÁFICA
En la interfaz gráfica del sistema de nutrición infantil, SINI, la fig. 44, presenta la interfaz del menú principal,
que comprende todos los componentes del módulo de expedientes infantiles del sistema.
- 40 -
Fig.44 Menú principal revisado del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del sistema. Establecido.
Los iconos que tenemos en el sistema de expedientes infantiles es el siguiente:
Paciente: Donde se registra todos los datos del paciente que se atienden en el area de nutricion, se los a identificar
en el sistema como lo indica en la figura 45.
Fig. 45. Icono del pacientes
Dietas: Donde se obtiene un registro de las dietas del paciente y se lo representa en la figura 46.
Fig. 46. Icono del dietas
Nutricion: Registro de habitos alimenticios y fisicos del paciente y en es sistema se lo representa en la figura 47.
Fig. 47. Icono del nutricion
- 41 -
Historial: Donde se obtiene el estadistico del paciente para ver como esta su avance en el tratamiento de nutricion
y se lo indica en la figura 48.
Fig.48. Icono del historial
Botones de Registro: Se encuentran los botones para realizar operaciones en cada uno de nuestros procesos y se los
reprenta en el sistema con los iconos que indica la figura 49.
Fig.49 Iconos de operaciones
Módulo de expedientes infantiles del sistema; datos del paciente: Como se indica en la figura 50, el icono “Paciente”
permite ingresar nuevos pacientes, buscar un paciente y eliminar.
- 42 -
Fig. 50 Menú Principal icono “Paciente” del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del sistema.
Módulo de expedientes infantiles del sistema; datos de los pacientes: Como se indica en la fig. 51, la interfaz para
ingresar pacientes y tener de estos un registro es donde vamos a tener los siguientes datos que ingresar; cedula,
nombres, apellidos, fecha de nacimiento, teléfono, dirección, la información física del paciente en la cual vamos a
tener la talla que va a ser ingresada en centímetro y el peso que realizar ingresado en kilogramos.
También en este ya teniendo registrado al paciente y en una nueva consulta va a poder ingresar las nuevas tallas
y pesos del paciente para así poder tener un registro de este. Por ultimo vamos a tener un registro de los pacientes
que se van ingresando que se va a mostrar en una tabla como se indica en la figura 52.
Fig. 51 Módulo de expedientes infantiles datos del paciente
- 43 -
Fig. 52 Tabla de registro de pacientes
Módulo de expedientes Infantiles del sistema; dietas del paciente: Como se indica en la fig. 53, el icono “Dietas” la
cual tiene dos pestañas, la pestaña del “manejo de dietas del paciente”, la otra pestaña que es para el registro de
dietas.
Fig. 53 Menú Principal Pestaña “DIETAS” del sistema informático de nutrición infantil SINI, módulo de expedientes infantiles del
sistema.
- 44 -
Módulo de expedientes infantiles del sistema; dietas del paciente: Como se indica en la figura. 54, la cual se
indica dos interfaces la primera “manejo de dietas del paciente” que se indica en la figura 55. Esta interfaz sirve
para recuperar la dieta que el paciente va a tener en el tratamiento aquí solo ingresamos el número de cedula y se
recupera los datos de este, y las calorías que va a consumir en su dieta, para las calorías genera un cálculo interno
con el peso y la talla del paciente. En la según interfaz como se indica en la figura56. Sirve para el registro de una
dieta la cual vamos a ingresar el código de la dieta, es decir el número de dieta que se guarda, las calorías que va a
tener esta dieta, luego ingresamos la dieta eligiendo si esta es desayuno , medio día, almuerzo, media tarde y
merienda. Finalmente guardamos para así tener más dietas registradas.
Fig. 54 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI.
Fig.55 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI “manejo de dietas del paciente”.
- 45 -
Fig. 56 Módulo de expedientes infantiles del sistema, dietas del paciente del sistema SINI “registro de dietas”
En el módulo de expedientes infantiles: Dietas del paciente, se tiene un reporte de la dieta la misma que se va a
poder imprimir para que el paciente se pueda llevar esta a su casa y se pueda seguir con el tratamiento ya sea mensual
semanal o diaria según las especificaciones del nutricionista. A continuación se indica el reporte que se indica de la
dieta del paciente esto se encuentra en el ANEXO B.
Módulo de expedientes Infantiles del sistema; hábitos del paciente: Como se indica en la fig. 57, el icono “Nutrición”
la cual contiene los hábitos alimenticios y los hábitos físicos que el paciente tiene los cuales se pueden eliminar,
actualizar ingresar uno nuevo.
Fig. 57 Módulo de expedientes infantiles del sistema: Hábitos del paciente del sistema SINI
Módulo de expedientes infantiles del sistema; hábitos del paciente: Como se indica en la figura 58, la cual
contiene dos pestañas, la una es para registrar los “hábitos alimenticios” y en la otra pestaña se registran los “hábitos
- 46 -
físicos” los cuales vamos a poderlos modificar, eliminar y creara nuevos alimentos para poder elegir en un futuro
nuevos hábitos alimenticios en el sistema de nutrición
Fig. 58 Módulo de expedientes infantiles; hábitos, donde el paciente registra sus hábitos alimenticio y físicos.
Como anteriormente se había indicado la interfaz de hábitos tiene dos pestañas el primero es de “habitos alimeticios”
que se indica en la figura 59, este se divide en dos partes la cual registramos el número de cedula del paciente y
mostramos los datos de este, luego elegimos de los hábitos que se presentan en la parte derecha de la interfaz luego
guardamos los hábitos del paciente, en la tabla que se indica en la fig. 60 se registran nuevos hábitos alimenticios para
asignarle a paciente.
Fig. 59 Módulo de expedientes infantiles; hábitos, hábitos alimenticios de los pacientes
- 47 -
Fig. 60 Tablas de hábitos con sus respectivas equivalencias calóricas.
En la segunda pantalla tenemos los hábitos físicos que tiene el paciente en el cual también ingresamos el número
de cedula y se recuperan todos los datos de este, luego ingresamos el número del hábito físico del paciente, la fecha
de ingreso del hábito, y la frecuencia, en caso de la frecuencia es muy importante que se ingrese debido a que con
esta podemos tener el hábito físico y su frecuencia para ver en el transcurso del tratamiento este aumenta o disminuye,
esto se indica en la figura 61.
Fig. 61 Interfaz del hábito físico del paciente en el sistema de expedientes infantiles SINI.
Módulo de expedientes infantiles del sistema;historial del paciente: Como se indica en la figura 63, indica los
estadísticos nos indica el avance que ha tenido en el transcurso del tratamiento, en el cual ingresamos la cedula del
paciente la misma que recupera los datos del paciente, y también un estadístico del avance de este..
- 48 -
Fig. 62 Interfaz del historial del paciente
En el historial del paciente tenemos que ingresar la cedula del paciente y los datos de este se recuperan, también se
indica los registros que ha tenido este como se indica en la figura 63.
Fig. 63 Registro de avances del paciente
En esta interfaz también indica un estadístico del paciente para poder ver los avances de una manera más
- 49 -
dinámica y así poderle indicar al paciente que es lo que está mal o que está en excelente condiciones su tratamiento
como lo indica en la figura 64.
Fig. 64 Estadistico del avance del paciente en tratamiento nutricional
A continuacion vamos a indicar cada uno de los botones de operaciones que hay en el sistema SINI expedientes
infantiles, al momento que estamos en la interfaz del “Paciente” el icono “Nuevo” como se indica en la figura 65 el
formulario queda limpio para poder ingresar un nuevo paciente.
Fig. 65 Ingresar un nuevo paciente
- 50 -
Luego tenemos el icono “Visualizar” que al momento de ingresar la cedula presionamos clic en el icono y recupera
los datos del paciente, tal como se indica en la figura 66.
Fig. 66 Visualizar un nuevo paciente
Tenemos a continuacion el icono “Guardar” el cual se utiliza para guardar datos de un paciente nuevo y asi poderlo
regitrar esto indica en la figura 67.
Fig. 67 Visualizar un nuevo paciente
Al momento que el paciente se registro erroneamente muchos de datos a este le podemos eliminar dando click
en el icono “Eliminar” y se elimina el paciente, asi lo mostramos en la figura 68.
- 51 -
Fig. 68 Icono de Eliminar a un paciente
Luego tenemos el icono de “limpiar” que al momento de dar click sobre este, se limpia los items para poder
nuevamente ingresar otro paciente, y asi lo podemos vizualizar en la figura 69.
Fig. 69 Icono “Limpiar” los datos del paciente para poder ingresar uno nuevo.
Al momento que se ha registrado a los pacientes y en una nueva consulta podemos recuperar los datos de este
y poder ingresar los nuevas medidas del paciente para asi poder tener un registro en base de datos esto podemos
observar en la figura 70.
- 52 -
Fig. 70 Elegir un paciente para poder registrar las medidas nuevas
- 53 -
CAPITULO IV: CONSTRUCCIÓN Y PRUEBAS.
4.1 CONSTRUCCIÓN
El sistema informático de nutrición infantil, SINI, está desarrollado bajo el lenguaje de programación java, y se ha
establecido los siguientes paquetes:
El sistema informático de nutrición infantil, SINI, está desarrollado bajo el lenguaje de programación java, y se
ha establecido los siguientes paquetes:
Paquete imágenes: aquí se encuentra todas las imágenes que se tienen en el sistema se indican en la figura 71.
Fig. 71 Imagen utilizada en los formularios que maneja usuarios de SINI.
- 54 -
Paquete medico GUI; en los cuales tenemos las interfaces del módulo expedientes infantiles del sistema SINI,
tenemos los formularios java que son los siguientes:
Dietas.java
Historial.java
Nutrición.java
Pacientes.java
Principal.java
Dietas.java: en las que registramos las dietas del paciente tenemos el formulario en la figura 72 se indica el diseño
del mismo.
Fig. 72 Formulairo dietas. Java diseño
El codigo fuente del formulario dietas se encuentra en el ANEXO C.
Lo que se diseño en dietas.java son los textfield para ingesar la cedula, poder recurer los nombres, apellidos,
ingresar la fecha de nacimiento como se mestra en la figura 73, tambien utilizamos textfield para recupera e ingresar
la informacion de la dieta como lo muetsra en la figura 74.
Fig. 73 Textfield para ingreso de informacion personal del paciente
- 55 -
Fig. 74 Textfield para ingreso de informacion de la dieta del paciente
Diseñamos se utiliza tables los cuales indican las dietas que el paciente puede consumir en su tratamiento así
indica en la figura 75. Y la tabla de visualiza el detalle de la dieta que el paciente va a consumir esto se diseñó como
se indica en la figura 76.
Fig. 75 Tabla de dietas para el paciente
Fig. 76 Tabla detalle de dietas del paciente
- 56 -
Finalizamos este formulario con el diseño de button que nos sirven para recuperar los datos del paciente y poder
imprimir la dieta del paciente se indican estos botones en la figura 77.
Fig. 77 button del formulario de dietas.java
Historial.java este es el formulario donde diseñamos y programamos para poder ver el historial del avance del
paciente en su tratamiento de nutrición, a continuación se indica el diseño del formulario de historial en la figura 78.
Fig. 78 Diseño del formulario de historial
En el diseño de este formulario utilizamos textfield para los datos del paciente como se lo indica en la figura 79.
Table para mostrar los avances del paciente que ha tenido en su tratamiento se visualiza en la figura 80 y un button
para poder ver datos estadísticos del paciente como se lo ve en la figura 81.
Fig. 79 Textfield del formulario historial.java
- 57 -
Fig. 80 Table del formulario historial.java
Fig. 81 Button del formulario historial.java
El código fuente del formulario historial se lo encuentra en el ANEXO D.
Nutricion.java en este formulario se diseña y programar para ingresar de manera eficaz los hábitos del paciente se
indica en la figura 82.
Fig. 82 Diseño del formulario de los habitos
- 58 -
En este formulario se utilizan las herramientas tales como textfields para recuperar los datos del paciente, también
para ingresar los hábitos físico como alimenticios del paciente como se indica en la figura 83, luego los buttons que
son utilizados para guardar los hábitos físicos y alimenticios del paciente esto se visualiza en la figura 84, los tables
son utilizados para tener un registro de los hábitos físicos y alimenticios del paciente veremos esto en la figura 85 y
en la figura 86 están los pannels son utilizados para dividir el ingreso de los hábitos físicos de los hábitos alimenticios.
Fig. 83 Textfiel del formulario nutricion.java
Fig. 84 Button del formulario nutricion.java
- 59 -
Fig. 85 Tables del formulario nutricion.java
- 60 -
Fig. 86 Pannel del formulario nutricion.java
El código fuente del formulario nutrición se lo encuentra en el ANEXO E.
Pacientes.java; en este formulario es donde diseñamos y programamos para ingresar y tener registros de cada uno
de los pacientes, el diseño realizado se lo presenta en la figura 87.
Fig. 87 Formularios de pacientes
En este formulario se utilizan las herramientas tales como textfields para recuperar los datos del paciente, también
para ingresarlas medidas del paciente es decir talla y peso del paciente como se indica en la figura 88, luego los buttons
que son utilizados para guardar los datos personales del paciente y para registrar la talla y peso del paciente esto se
visualiza en la figura 89, los tables son utilizados para tener un registro de los pacientes que se registran en el sistema
veremos esto en la figura 90.
- 61 -
Fig. 88 Textfield de pacientes.java
Fig. 89 Button de pacientes.java
Fig. 90 Tables de pacientes.java
- 62 -
El código fuente del formulario paciente se lo encuentra en el ANEXO F.
Principal.java aquí diseñamos y desarrollamos la interfaz que el nutricionista va a interactuar esta se indica en la
figura 91.
Fig. 91 Formulario principal que contiene a los otros formularios
En este formulario se utilizan las herramientas tales buttons que son utilizados para ingresar a cada uno de los
formularios que anteriormente se describe, también hay para que en los formularios se realicen acciones como nuevo,
eliminar, guardar, etc. esto se visualiza en la figura 92, el Deshtopannel son utilizados para visualizar los formularios
veremos esto en la figura 93.
Fig. 92 Button del formularios principal.java
- 63 -
Fig. 93 Desktopannel del formularios principal.java
El código fuente del formulario principal se lo encuentra en el ANEXO G.
Paquete controlador: donde se tiene las siguientes clases:
Controlador_Detalle_Dieta$2.class
Controlador_Detalle_Dieta$1.class
Controlador_Detalle_Dieta.class
Controlador_Detalle_Dieta$3.class
Controlador_Dieta$2.class
Controlador_Dieta$1.class
Controlador_Dieta$3.class
Controlador_Dieta.class
Controlador_Dietas.class
Controlador_Equivalente$1.class
Controlador_Equivalente$2.class
Controlador_Habito.class
Controlador_Equivalente.class
Controlador_Habito_Alimenticio$1.class
Controlador_Habito_Alimento$1.class
Controlador_Habito_Alimenticio.class
- 64 -
Controlador_Habito_Fisico$1.class
Controlador_Habito_Alimento.class
Controlador_Habito_Fisico.class
Controlador_Paciente$1.class
Controlador_Paciente$3.class
Controlador_Paciente$2.class
Controlador_Paciente.class
Controlador_Registro_Tallas$1.class
Controlador_Registro_Tallas$3.class
Controlador_Registro_Tallas$2.class
Controlador_Registro_Tallas.class
Controlador_Reporte.class
Aquí tenemos registradas todas la clases para las conexiones con la base de datos, a continuación mostraremos un
ejemplo de código fuente la clase detalle dieta.class se encontrara en el ANEXO H.
Paquete de negocio: que es donde se programa a cada una de las variables que vamos a utilizar para guardar los
datos en cada una de las tablas son las siguientes.
Detalle_Dieta.class
Habito_Alimenticio.class
Dieta.class
Dietas.class
Habito_Alimento.class
Registro_Tallas.class
Reporte.class
Equivalente.class
Habito_Fisico.class
Tiempo_Dieta.class
Mostramos en el ANEXO H código fuente de detalle dieta.class
Por último indicamos en la figura 94 los paquetes que anteriormente describimos.
- 65 -
Habito.class
Paciente.class
Fig. 94 paquetes del sistema
4.2 PRUEBAS
De acuerdo al modelo de desarrollo empleado en este proyecto, la fase de pruebas del sistema informático se
establece una vez que se tiene listo el prototipo del sistema informático.
¿Qué buscamos al realizar las pruebas del sistema informático?
1.
Probar si el sistema cumple los resultados esperados.
2.
Los usuarios podrán testear el sistema informático, y dar su criterio al desarrollador.
3.
Crear una matriz de resultados de las pruebas y analizarlos detenidamente.
4.
Las pruebas deben realizarse con entradas inválidas e inesperadas así como las válidas y esperadas.
5.
El sistema deberá ser probado de dos maneras: primero probarlo como esperamos que este funcionando, y
segundo probarlo como creemos que no podría estar funcionando.
6.
La posibilidad de encontrar errores en el sistema debe ser, asumida con responsabilidad.
Una vez finalizado el sistema informático SINI, se realizaron las siguientes pruebas:
 Test Unitarios

Test de Funcionalidad

Test de Sistema

Test de Aceptación

Test de Instalación
Tabla II: Matriz de Pruebas Aplicadas al Sistema Informático de Nutrición Infantil
TEST
Unitario
Integración
Funcionalidad
OBJETIVO
Detectar errores en
los datos, lógica,
algoritmos.
Detectar errores de
interfaces y
relaciones entre
componentes.
Detectar errores en
la implementación
de requisitos.
PRUEBAS APLICADAS
PARTICIPANTES AMBIENTE
Programador
Desarrollo
MÉTODO UTILIZADO
Caja Blanca.
Programador
Desarrollo
Funcional
Analista
Desarrollo
Funcional
- 66 -
Sistema
Aceptación
Detectar fallas en
el cubrimiento de
los
requerimientos.
Detectar Fallos
en la
implementación
del sistema
Analista
Desarrollo
Analista, Usuario
Final
Productivo
Funcional
--------------------
Métodos utilizados para realizar las pruebas del sistema informático, SINI:
Caja blanca:
1.
2.
3.
4.
Ingresamos valores en cada uno de los en cada formulario relacionando a un paciente en cada uno de
estos,ejp:
Ingresamos su número de cédula del paciente y recupere los datos correctos de este; su nombres y sus
apellidos que es lo que se recupera en todos los formularios.
Cuando actualizamos los datos del paciente como la dirección, el teléfono estos se actualicen correctamente
Que las dietas se recuperen correctamente con el rango de dietas que tiene el paciente.
Que el desarrollo del tratamiento del paciente este de acuerdo con los estadísticos, que se nos visualice.
Funcional: como se indica en la figura 95 para realizar un diseño de pruebas funcional según [13].
Fig. 95 Entradas i salidas del procesos de diseño en casos de prueba, según [13].
Entones se realiza lo siguente:
1.
2.
3.
4.
Se ideintifica cada unos de los escenarios que vamos a utilizar y que ya lo describimos anteriormente.
Se revisa si los escenarios son redundantes y los elimina.
Analiza cada uno de los escenarios y se documenta cada uno de ellos.
Finamente se evalua si los escenarios esta correctamente ejecutados.
- 67 -
OBSERVACIONES, CONCLUSIONES Y RECOMENDACIONES
A.
Observaciones: las siguientes observaciones después de haber concluido el proyecto son las siguientes:

El proyecto ha sido difícil concluirlo en menos tiempo ya que la información que se requiere no es fácil
obtenerla, en la parte de salud aún no se ha tomado en cuenta un control de nutrición.

El sistema informático está compuesto por tres módulos: Módulo de gestión del sistema, Módulo de
expedientes infantiles y Módulo de menús de dietas; el Módulo de expedientes infantiles del sistema se
elaboró con prototipos de los dos módulos restantes, para de esta forma realizar las pruebas del
sistema informático.

El sistema informático guarda su información en una base de datos creada en VERSANT que es un motor de
bases de datos con arquitectura designada al soporte Cliente/Servidor con acercamiento a la computación distribuida,
que no dispone de interfaz gráfica, solo es administrable mediante comandos, y es un archivo de texto plano.

El sistema informático puesto en producción, cuenta con un archivo ejecutable que puede ser instalado
en cualquier ordenador, siempre tomará como ruta de instalación “C:\SINI\”.
B.
Conclusiones: Al finalizar este trabajo teórico práctico, puedo concluir con lo siguiente:
a.
Este proyecto se ha basado en unos de los objetivos plan nacional del buen vivir que tienen el gobierno
actual, y s basa en el aporteal control de la nutricion ya que esta es una de las áreas fundamentales para
el bienestar de nuestra sociedad, controlando la inadecuada nutrición de nuestros infantes, ya que con
esto se disminuirá el consumismo exagerado de las comidas chatarras que en la actualidad se consume.
b.
El proyecto permitirá tener un control de dietas, expedientes infantiles, los avances del tratamiento del
paciente en el proceso de este, el cual permitirá ayudar a tener un mejor estilo de vida y una mejor
desarrollo nutricional en los niños de nuestra comunidad.
- 68 -
RECOMENDACIONES Y TRABAJOS A FUTURO
A. Recomendaciones:
a.
Se recomienda hacer uso del sistema informático dirigido a niños y niñas en el rango de edad de 0 a 5
años, debido a que los requerimientos tomados en cuenta para el desarrollo de la solución informática
han sido con especialistas dedicados a la nutrición infantes que se encuentran en este rango de edad.
b.
Para la ejecución del proyecto en otros centros de atención médica, se deberá realizar cambios en los
formularios, código fuente y estructura de las bases de datos, conforme sean las necesidades de los
centros de salud.
c.
Finalmente se recomienda que en el Modulo de expedientes infantiles, se utilice con los otros Módulos
del proyecto para tener mejores resultados.
B. Trabajos Futuros:

Ya que el proyecto SINI está enfocado a los niños y niñas menores a 5 años, un trabajo a futuro podría
incrementar el rango de los infantes.

La solución informática denominada SINI, en este trabajo teórico práctico es de ambiente escritorio, un
trabajo a futuro seria realizarlo en ambiente web.

Se debería en un futuro optimizar los módulos los cuales si se detallan más nos ayudarían a mejores
resultados, como realizar un Módulo de respaldos en Zip.

Concluyendo a futuro seria convertir el sistema informático SINI, en una aplicación multiplataforma, ya
actualmente está desarrollado para ser usado en el sistema operativo Windows XP, y Windows 7.
- 69 -
REFERENCIAS BIBLIOGRÁFICAS.
[
Telesur, «Telesur, señal informativa de latinoamérica,» Telesur, 16 Octubre 2013. [En línea]. Available:
http://www.telesurtv.net/articulos/2013/10/16/ecuador-busca-eliminar-la-desnutricion-infantil-hasta-20173875.html. [Último acceso: 20 Noviembre 2013].
[
NUTRICIÓN INFANTIL, «GBNUTRICION INFANTIL,» 13 ENERO 2012. [En línea]. Available:
http://www.gbnutricioninfantil.com/a-quien-nos-dirigimos.html. [Último acceso: 21 NOVIEMBRE 2013].
[
R. Pressman, Ingeniería del software: Ul enfoque de un profesional (5ta edición), Madrid: Concepción
Femández Madrid, 2002.
[
Thehorrors , «METODOLOGIA RUP,» 25 JULIO 2012.
http://mtdologiarup.blogspot.com/. [Último acceso: 22 NOVIEMBRE 2013].
[
A. FLORES, «EL DESARROLLO DE MI SOLUCIÓN INFORMÁTICA,» 24 MAYO 2012. [En línea].
Available:
http://alfredofloresyluisbastardo.blogspot.com/2012/05/metodologia-aplicada.html.
[Último
acceso: 22 NOVIEMBRE 2013].
[
UNIVERSIDAD DE MURCIA, «APUNTES DE INFORMÁTICA,» 13 OCTUBRE 2011. [En línea].
Available: http://www.um.es/docencia/barzana/IAGP/IAGP2-Metodologias-de-desarrollo.html#BM1. [Último
acceso: 22 NOVIEMBRE 2013].
[
DIALNET, «FUNDACIÓN DIALNET,» UNIVERSIDAD DE LA RIOJA, 17 ENERO 2013. [En línea].
Available: http://dialnet.unirioja.es/servlet/tesis?codigo=11271. [Último acceso: 21 NOVIEMBRE 2013].
[
D.
HOY,
«DIARIO
HOY,»
content/uploads/2011/05/erradicacion1.jpg.
[
Geoffrey Sparks, Sparx Systems, Australia, «CRAFTWARE.NET,» [En línea]. Available:
http://www.craftware.net/es/descargas/modelo_de_proceso_de_negocio.pdf.
[Último
acceso:
25
NOVIEMBRE 2013].
1]
2]
3]
4]
5]
6]
7]
8]
9]
[En
línea].
[En
Available:
línea].
Available:
http://i.hoy.ec/wp-
[
DIARIO EL TIEMPO, 2012. [En línea]. Available: http://www.eltiempo.com.ec/noticias-cuenca/8126910] msp-promueve-buena-nutricia-n/. [Último acceso: 25 NOVIEMBRE 2013].
[
e. tiempo, «tiempo,» 13 Mayo 2013. [En línea]. Available: http://www.eltiempo.com.ec/noticias11] cuenca/121494-cedei-auspicia-charla-de-nutricion-escolar/. [Último acceso: 25 10 2013].
[
NO SOLO USABILIDAD, «Arquitectura de Información en proyectos de desarrollo de software,» Revista
12] sobre
personas,
diseño
y
tecnología,
vol.
I,
p.
http://www.nosolousabilidad.com/articulos/ai_rup.htm#sthash.N2VVb0OR.dpuf, 2013.
[
L.
G.
Palacio,
«REDALYC,»
05
OCTUBRE
2009.
[En
línea].
13] http://www.redalyc.org/articulo.oa?id=75017199005. [Último acceso: 05 ENERO 2014].
Available:
[
E. F. L. T. A., «IAEN,» [En línea]. Available: http://repositorio.iaen.edu.ec/bitstream/24000/11/1/IAEN14] 010-2005.pdf.
[
INEC, «INEC,» [En línea].
15]
- 70 -
[
D. MERCURIO, «ECUADOR INMEDIATO,» 24 ENERO 2011. [En línea]. Available:
16] http://www.ecuadorinmediato.com/index.php?module=Noticias&func=news_user_view&id=142287&umt=el
_mercurio_azuay_mas_4_millones_para_desarrollo_infantil_en_azuay. [Último acceso: 26 JUNIO 2013].
[
COMMONS,
«WIKIMEDIA,»
17] http://commons.wikimedia.org/wiki/File:Rup_espanol.gif.
[En
línea].
Available:
[
craftware, «Una Introducción al UML,» craftware, 2006. [En línea]. Available:
18] http://www.craftware.net/es/descargas/modelo_de_proceso_de_negocio.pdf. [Último acceso: 15 Octubre
2013].
[
E. tiempo, «EL tiempo,» 23 Octubre 2011. [En línea]. Available: http://www.eltiempo.com.ec/noticias19] cuenca/81269-msp-promueve-buena-nutricia-n/. [Último acceso: 25 10 2013].
[
I. S. 1012-2004, «IEEE Standard for System and Software Verification and Validation,» IEEE Std 1012™20] 2012, p. 223, 2012.
[
IT-MENTOR,
«PRUEBAS
DE
SOFTWARE,»
IMT,
2013.
[En
21] http://materias.fi.uba.ar/7548/PruebasSoftware.pdf. [Último acceso: 7 ENERO 2014].
- 71 -
línea].
Available:
ANEXOS
- 72 -
ANEXO A: FORMTO DE LA ENCUESTA REALIZADA A LOS INFANTES DEL 10 AL
14 DE OCTUBRE, EN EL HOSPITAL VICENTE CORRAL MOSCOSO DE LA
CIUDAD DE CUENCA.
Número
1
Pregunta
Opciones de Respuesta
¿ERES UN NIÑO O UNA NIÑA?
Niño/ Joven
Niña/ Joven
nunca
¿CON QUÉ FRECUENCIA SUELES COME
FRUTA?
2-3 veces al mes
1 vez a la semana
2-3 veces a la semana
Todos los días
2
nunca
¿CON QUÉ FRECUENCIA SUELES COMER
ENSALADA, VERDURAS CRUDAS O
RALLADAS? (ZANAHORIA, REMOLACHA, ETC)
3
2-3 veces al mes
1 vez a la semana
2-3 veces a la semana
Todos los días
nunca
¿CON QUÉ FRECUENCIA SUELE COMER
VERDURAS COCIDAS?
2-3 veces al mes
1 vez a la semana
2-3 veces a la semana
Todos los días
4
manzanas
plátanos
peras
naranjas
mandarinas
ciruelas
¿CUÁLES DE LAS SIGUIENTES FRUTAS TE
GUSTAN?
melocotones
melón
sandia
fresas
uvas
cerezas
kiwi
piñas
otros
5
Muchísima fruta
Mucha fruta
¿CREES QUE COMES MUCHA O POCA
FRUTA?
Ni mucha, ni poca
Poca fruta
Muy poca fruta
- 73 -
Marque
su Repuesta
Sí, siempre
Sí, la mayoría de los días
¿HAY FRUTA QUE TE GUSTE
NORMALMENTE EN CASA?
Algunas veces
Rara vez
6
Sí, siempre
¿TE PREPARAN/S EN CASA TROZOS DE
FRUTA PARA COMER ENTRE HORAS?
Sí, la mayoría de los días
Algunas veces
Rara vez
Nunca
7
Sí, siempre
Sí, la mayoría de los días
¿LLEVAS NORMALMENTE FRUTA AL
COLEGIO?
Algunas veces
Rara vez
Nunca
8
gusta mucho
Tomate
gusta poco
no le gusta nada
no la he probado
gusta mucho
gusta poco
no le gusta nada
lechuga
no la he probado
gusta mucho
gusta poco
no le gusta nada
Acelgas
no la he probado
gusta mucho
¿CUÁLES DE LAS SIGUIENTES VERDURAS
FRUTAS TE GUSTAN O CUÁLES NO TE
GUSTAN?
gusta poco
Coles,
berza
no le gusta nada
no la he probado
gusta mucho
Espinacas
gusta poco
no le gusta nada
no la he probado
gusta mucho
Puerros
gusta poco
no le gusta nada
no la he probado
gusta mucho
gusta poco
no le gusta nada
cebolla
9
Zanahorias
- 74 -
no la he probado
gusta mucho
gusta poco
no le gusta nada
no la he probado
gusta mucho
gusta poco
no le gusta nada
Calabacín
no la he probado
gusta mucho
gusta poco
no le gusta nada
otros
no la he probado
Sí, siempre
Sí, la mayoría de los días
¿HAY VERDURA QUE TE GUSTE
NORMALMENTE EN CASA?
Algunas veces
Rara vez
Nunca
10
Por qué me obligan mi madre y/o
padre o en el comedor del colegio
¿POR QUÉ COMES FRUTA Y VERDURA?
Por qué los demás lo comen
No lo se
11
12
Porque me gusta
EL PLAN DE CONSUMO DE FRUTAS Y
VERDURAS QUE SE DESARROLLA EN TU
COLEGIO INCLUYE ACTIVIDADES COMO:
TALLERES DE COCINA, VISITAS A
EXPLOTACIONES AGRARIAS, JUEGOS EN
LÍNEA Y FOLLETOS PARA LOS NIÑOS EN
PÁGINAS WEB. ¿CREES QUE ESTAS
ACTIVIDADES TE AYUDAN A REFORZAR EL
CONSUMO DE FRUTA Y VERDURA EN LOS
NIÑOS?
- 75 -
Si
No
ANEXO B: REPORTE DE LAS DIETA ASIGNADA AL PACIENTE
- 76 -
ANEXO C: CODIGO FUENTE DIETA.JAVA
public class Dietas extends javax.swing.JInternalFrame {
private Controlador_Reporte reporte = new Controlador_Reporte();
private Reporte re = new Reporte();
private int cod = 0;
/**
* Creates new form Dietas
*/
public Dietas() {
initComponents();
}
////////////////////////////////////////////////////////////////////////////
public String getFechaActual() {
Date ahora = new Date();
SimpleDateFormat formateador = new SimpleDateFormat("dd-MM-yyyy");
return formateador.format(ahora);
}
////////////////////////////////////////////////////////////////////////////
public String getHoraActual() {
Date date = new Date();
DateFormat hourFormat = new SimpleDateFormat("HH:mm");
return hourFormat.format(date);
}
////////////////////////////////////////////////////////////////////////////
public String[][] reporte() {
String[][] array_reg = new String[detallesDieta.getRowCount()][detallesDieta.getColumnCount()];
int i = 0;
int j = 0;
for (i = 0; i < detallesDieta.getRowCount(); i++) {
for (j = 0; j < detallesDieta.getColumnCount(); j++) {
array_reg[i][j] = (String) detallesDieta.getValueAt(i, j);
}
}
return array_reg;
}
////////////////////////////////////////////////////////////////////////////
public void generarReporte() throws Exception {
cod = re.getCod() + 1;
re = new Reporte(cod);
reporte.Guardar(re);
String encabezado = "SISTEMA DE NUTRICION INFANTIL" + "\n" + "Reporte: Dieta Asignada " + "\n" + "\n" + "\n" + "\n" + "\n";
Font fuente = new Font(Font.getFamily("ARIAL"), 20, Font.BOLD);
String choro = "Fecha: " + getFechaActual() + "\n" + "Nombre:" + nombres.getText() + "\n" + "Apellido:" + apellidos.getText() + "\n"
+ "EL MENU NUTRICIONAL " + jTextField3.getText();
String[][] d = reporte();
Image imagen = Image.getInstance(("src\\imagenes\\images.jpg"));
imagen.setAlignment(Image.LEFT | Image.TEXTWRAP);
try {
Paragraph linea = new Paragraph(encabezado, fuente);
Phrase para = new Phrase(choro);
PdfPTable tabla = new PdfPTable(3);
tabla.setWidthPercentage(75);
- 77 -
Document documento = new Document(PageSize.LETTER);
String path = "REPORTE_DIETAS" + "_" + re.getCod() + ".pdf";
String file = "C:\\Dietas\\" + path;
/*A TRAVES DEL SIGUIENTE METODO (GETINSTANCE)Y UN FLUJO DE SALIDA DEL PAQUETE .IO ASOCIAMOS EL
DOCUMENTO DE ITEXT CON EL ARCHIVO DE JAVA*/
PdfWriter.getInstance(documento, new FileOutputStream(file));
/*DEFINIMOS LAS CELDAS QUE SERAN LOS ENCABEZADOS DE LA TABLA*/
PdfPCell celda1 = new PdfPCell(new Paragraph("CODIGO DIETA", FontFactory.getFont("arial", 10, Font.BOLD,
BaseColor.BLUE)));;
PdfPCell celda2 = new PdfPCell(new Paragraph("DESCRIPCION DIETA", FontFactory.getFont("arial", 10, Font.BOLD,
BaseColor.BLUE)));
PdfPCell celda3 = new PdfPCell(new Paragraph("DETALLE DEL DIA", FontFactory.getFont("arial", 10, Font.BOLD,
BaseColor.BLUE)));
/*AHORA A TRAVES DE UN FOR INSERTAREMOS EL CONTENIDO DEL ARREGLO EN LA TABLA*/
int limite = d.length + (3 - d.length);
for (int i = 0; i < d.length; i++) {
for (int j = 0; j < limite; j++) {
tabla.addCell(d[i][j]);
}
}
documento.add(tabla);
/*CERRAMOS EL DOCUMENTO*/
documento.close();
JOptionPane.showMessageDialog(null, "REPORTE CREADO SATISFACTORIAMENTE");
try {
File archivo = new File("C:\\Dietas\\" + path);
Desktop.getDesktop().open(archivo);
} catch (Exception e) {
e.printStackTrace();
}
/* LaunchApplication.execute(file);//IGNOREN ESTA LINEA DE CODIGO ES UNA DE MIS CLASES PARA PRUEBAS*/
} catch (DocumentException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
return;
} catch (IOException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
return;
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/imprimir.png"))); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion Personal"));
- 78 -
jLabel2.setText("Nombres:");
nombres.setEditable(false);
apellidos.setEditable(false);
jLabel10.setText("Apellidos:");
jLabel8.setText("Calorias");
jButton5.setText("Recuperar Dietas");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jLabel9.setText("Fecha de Nacimiento:");
jLabel13.setText("Edad:");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fechaNacimiento, javax.swing.GroupLayout.PREFERRED_SIZE, 158,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(edad, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addComponent(apellidos))
.addComponent(nombres, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE,
400, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(8, 8, 8)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(caloriasCalculadas, javax.swing.GroupLayout.PREFERRED_SIZE, 150,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButton5))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
- 79 -
.addComponent(nombres, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8)
.addComponent(caloriasCalculadas, javax.swing.GroupLayout.PREFERRED_SIZE, 20,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel10)
.addComponent(apellidos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5))
.addGap(9, 9, 9)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(fechaNacimiento, javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel9, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE,
20, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE,
20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(edad, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(14, Short.MAX_VALUE))
);
jLabel1.setText("Cedula:");
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Dietas Disponibles"));
jPanel3.setToolTipText("");
tablaDietas.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Codigo de Dieta", "Calorias"
}
));
tablaDietas.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tablaDietasMouseClicked(evt);
}
});
jScrollPane1.setViewportView(tablaDietas);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 385, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion de Dieta"));
jLabel4.setText("Calorias");
- 80 -
caloriasD.setEditable(false);
jLabel5.setText("Codigo de Dieta");
codigoD.setEditable(false);
codigoD.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
codigoDActionPerformed(evt);
}
});
jLabel3.setText("Tiempo");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(codigoD, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(caloriasD, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField3)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(codigoD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(caloriasD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(jLabel3)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Detalles de la Dieta"));
detallesDieta.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Id de Detalle", "Descripcion", "Tipo de Detalle"
}
));
jScrollPane3.setViewportView(detallesDieta);
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
- 81 -
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 325, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)))
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cedulaDieta, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 684,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 118,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cedulaDieta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
- 82 -
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jTabbedPane1.addTab("Manejo de Dietas de Paciente", jPanel5);
jLabel6.setText("Calorias para la Dieta:");
calorias_dieta.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
calorias_dietaActionPerformed(evt);
}
});
jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Ingreso de Detalles"));
jLabel7.setText("Descripcion:");
detalle.setColumns(20);
detalle.setRows(5);
jScrollPane2.setViewportView(detalle);
jLabel11.setText("Tipo:");
comboTipo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Desayuno", "Medio Dia", "Almuerzo", "Media
Tarde", "Merienda" }));
jButton3.setText("Agregar Detalle");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel11)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(comboTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 120,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jButton3))
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 390,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
- 83 -
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 136,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE)
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(comboTipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3))
.addContainerGap())
);
jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("Detalles Agregados"));
tablaDetalles.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Id", "Descripcion", "Tipo"
}
));
jScrollPane4.setViewportView(tablaDetalles);
javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 519, Short.MAX_VALUE)
.addContainerGap())
);
jPanel8Layout.setVerticalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 506, Short.MAX_VALUE)
.addContainerGap())
);
jLabel12.setText("Id de Dieta:");
jButton2.setText("Generar Dieta");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton4.setText("Buscar Dieta");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
- 84 -
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel12)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(id_dieta)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(calorias_dieta, javax.swing.GroupLayout.PREFERRED_SIZE, 175,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(calorias_dieta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12)
.addComponent(id_dieta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jTabbedPane1.addTab("Registro de Dietas", jPanel6);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedPane1)
.addContainerGap())
);
layout.setVerticalGroup(
- 85 -
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedPane1)
.addContainerGap())
);
pack();
}// </editor-fold>
private void codigoDActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
// TODO add your handling code here:
generarReporte();
} catch (Exception ex) {
Logger.getLogger(Dietas.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel temp = (DefaultTableModel) tablaDetalles.getModel();
Object nuevo[] = {temp.getRowCount() + 1, detalle.getText(), comboTipo.getSelectedItem()};
temp.addRow(nuevo);
detalle.setText("");
//tablaDetalles.repaint();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Controlador_Dieta d = new Controlador_Dieta();
Dieta d1 = new Dieta();
d1.setCodigo_dieta(id_dieta.getText());
d1.setCalorias(Float.parseFloat(calorias_dieta.getText()));
d.Guardar(d1);
id_dieta.setEnabled(false);
}
private void calorias_dietaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
Controlador_Dieta cd = new Controlador_Dieta();
if (cd.getDieta(id_dieta.getText()) != null) {
Dieta d = cd.getDieta(id_dieta.getText());
calorias_dieta.setText(Float.toString(d.getCalorias()));
id_dieta.setEnabled(false);
Controlador_Detalle_Dieta cdd = new Controlador_Detalle_Dieta();
List<Detalle_Dieta> ld = cdd.listarId(id_dieta.getText());
Listar(ld, tablaDetalles);
}
}
private void tablaDietasMouseClicked(java.awt.event.MouseEvent evt) {
Controlador_Detalle_Dieta cdd = new Controlador_Detalle_Dieta();
codigoD.setText(tablaDietas.getValueAt(tablaDietas.getSelectedRow(), 0).toString());
caloriasD.setText(tablaDietas.getValueAt(tablaDietas.getSelectedRow(), 1).toString());
List<Detalle_Dieta> ld = cdd.listarId(tablaDietas.getValueAt(tablaDietas.getSelectedRow(), 0).toString());
Listar(ld, detallesDieta);
- 86 -
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
recuperarDietas();
}
public boolean BuscarPaciente() throws ParseException {
Controlador_Paciente cp = new Controlador_Paciente();
if (cp.getMedico(cedulaDieta.getText()) != null) {
nombres.setText(cp.getMedico(cedulaDieta.getText()).getNombre());
apellidos.setText(cp.getMedico(cedulaDieta.getText()).getApellido());
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = cp.getMedico(cedulaDieta.getText()).getFecha_nacimiento();
Date date = formatter.parse(dateInString);
fechaNacimiento.setDate(date);
calcularEdad();
CalcularCalorias();
return true;
} else {
return false;
}
}
public void guardarDetalles() {
Controlador_Detalle_Dieta cdd = new Controlador_Detalle_Dieta();
Controlador_Dieta cd = new Controlador_Dieta();
for (int i = 0; i < tablaDetalles.getRowCount(); i++) {
Detalle_Dieta dd = new Detalle_Dieta();
dd.setCodigo_dieta(cd.getDieta(id_dieta.getText()));
dd.setCodigo_detalle(tablaDetalles.getValueAt(i, 0).toString());
dd.setDetalle((String) tablaDetalles.getValueAt(i, 1));
dd.setTipo_detalle((String) tablaDetalles.getValueAt(i, 2));
cdd.Guardar(dd);
}
}
public void Listar(List l, JTable tabla) {
DefaultTableModel temp = (DefaultTableModel) tabla.getModel();
for (int i = tabla.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Detalle_Dieta otroMed = new Detalle_Dieta();
otroMed = (Detalle_Dieta) l.get(i);
Object nuevo[] = {otroMed.getCodigo_detalle(), otroMed.getDetalle(), otroMed.getTipo_detalle()};
temp.addRow(nuevo);
}
tabla.setModel(temp);
}
public void ListarDietas(List l, JTable tabla) {
DefaultTableModel temp = (DefaultTableModel) tabla.getModel();
for (int i = tabla.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Dieta otroMed = new Dieta();
otroMed = (Dieta) l.get(i);
Object nuevo[] = {otroMed.getCodigo_dieta(), otroMed.getCalorias()};
temp.addRow(nuevo);
}
tabla.setModel(temp);
}
public void recuperarDietas() {
JOptionPane.showMessageDialog(null, "Recuperando Dietas");
Controlador_Dieta cd = new Controlador_Dieta();
- 87 -
List<Dieta> ld = cd.listarCalorias(caloriasCalculadas.getText());
ListarDietas(ld, tablaDietas);
}
public void calcularEdad() {
if (fechaNacimiento.getDate() != null) {
Date date = fechaNacimiento.getDate();
SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy");
String datetext = format2.format(date);
try {
Calendar birth = new GregorianCalendar();
Calendar today = new GregorianCalendar();
int age = 0;
int factor = 0;
Date birthDate = new SimpleDateFormat("dd-MM-yyyy").parse(datetext);
Date currentDate = new Date(); //current date
birth.setTime(birthDate);
today.setTime(currentDate);
if (today.get(Calendar.MONTH) <= birth.get(Calendar.MONTH)) {
if (today.get(Calendar.MONTH) == birth.get(Calendar.MONTH)) {
if (today.get(Calendar.DATE) > birth.get(Calendar.DATE)) {
factor = -1; //Aun no celebra su cumpleaños
}
} else {
factor = -1; //Aun no celebra su cumpleaños
}
}
age = (today.get(Calendar.YEAR) - birth.get(Calendar.YEAR)) + factor;
edad.setText(Integer.toString(age));
} catch (ParseException e) {
edad.setText("0");
}
} else {
edad.setText("0");
}
}
public void CalcularCalorias() throws ParseException {
//TMB = (10 x peso en kg) + (6,25 × altura en cm) - (5 × edad en años) + 5
//TMB = (10 x peso en kg) + (6,25 × altura en cm) - (5 × edad en años) - 161
Controlador_Registro_Tallas crt = new Controlador_Registro_Tallas();
List<Registro_Tallas> l = crt.listarTallas(cedulaDieta.getText());
Registro_Tallas rt = new Registro_Tallas();
rt.setFecha("01-ene-0000");
SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString1 = rt.getFecha();
Date date1 = formatter1.parse(dateInString1);
for (int i = 0; i < l.size(); i++) {
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = l.get(i).getFecha();
Date date = formatter.parse(dateInString);
if (date1.before(date)) {
rt = l.get(i);
}
}
double calorias = (10 * rt.getPeso()) + (6.25 * rt.getTalla()) - (5 * Integer.parseInt(edad.getText()));
caloriasCalculadas.setText(Double.toString(calorias));
System.out.println(rt.getPeso());
System.out.println(rt.getTalla());
}
}
- 88 -
ANEXO D: CODIGO FUENTE DE HISTORIAL.JAVA
public class Historial extends javax.swing.JInternalFrame {
/**
* Creates new form Historial
*/
public Historial() {
initComponents();
}
int edad;
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
cedulaPaciente = new javax.swing.JTextField();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
listAvance = new javax.swing.JTable();
jPanel12 = new javax.swing.JPanel();
jLabel12 = new javax.swing.JLabel();
primerNombre = new javax.swing.JTextField();
primerApellido = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
panelGraficoTorta = new javax.swing.JPanel();
btnAvance = new javax.swing.JButton();
lblTorta = new javax.swing.JLabel();
setBorder(null);
setClosable(true);
setTitle("Historal");
setToolTipText("");
setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/historial.png"))); // NOI18N
jLabel1.setText("Cedula:");
cedulaPaciente.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
cedulaPacienteKeyPressed(evt);
}
});
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Avance del Paciente"));
listAvance.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Cedula", "Fecha", "Talla", "Peso"
}
));
jScrollPane1.setViewportView(listAvance);
- 89 -
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 436, Short.MAX_VALUE)
.addContainerGap())
);
494,
jPanel12.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion Personal"));
jLabel12.setText("Nombres:");
jLabel13.setText("Apellidos:");
javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(
jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel12)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerNombre,
javax.swing.GroupLayout.PREFERRED_SIZE,
400,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(42, 42, 42)
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerApellido,
javax.swing.GroupLayout.PREFERRED_SIZE,
400,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(250, Short.MAX_VALUE))
);
jPanel12Layout.setVerticalGroup(
jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(primerNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(primerApellido,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(49, Short.MAX_VALUE))
);
panelGraficoTorta.setBorder(javax.swing.BorderFactory.createTitledBorder("Avance Paciente"));
btnAvance.setText("Ver Avance");
btnAvance.addActionListener(new java.awt.event.ActionListener() {
- 90 -
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAvanceActionPerformed(evt);
}
});
javax.swing.GroupLayout panelGraficoTortaLayout = new javax.swing.GroupLayout(panelGraficoTorta);
panelGraficoTorta.setLayout(panelGraficoTortaLayout);
panelGraficoTortaLayout.setHorizontalGroup(
panelGraficoTortaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelGraficoTortaLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelGraficoTortaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblTorta,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(panelGraficoTortaLayout.createSequentialGroup()
.addComponent(btnAvance)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
panelGraficoTortaLayout.setVerticalGroup(
panelGraficoTortaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelGraficoTortaLayout.createSequentialGroup()
.addComponent(lblTorta,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnAvance))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel12,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelGraficoTorta,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cedulaPaciente,
javax.swing.GroupLayout.PREFERRED_SIZE,
100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cedulaPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel12,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
- 91 -
Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(panelGraficoTorta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel2,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addContainerGap())
);
pack();
}// </editor-fold>
private void btnAvanceActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFreeChart barra = null;
DefaultCategoryDataset datos;
datos = new DefaultCategoryDataset();
for(int i =0; i<listAvance.getRowCount();i++){
int valor = (int)Double.parseDouble(listAvance.getValueAt(i, 3).toString());
datos.setValue(valor, listAvance.getValueAt(i, 1).toString(), "");
}
barra = ChartFactory.createBarChart3D("Estadistica Paciente", "Tiempo", "Peso", datos, PlotOrientation.VERTICAL, true, true, true);
BufferedImage graficoBarra = barra.createBufferedImage(panelGraficoTorta.getWidth(), panelGraficoTorta.getHeight());
lblTorta.setSize(panelGraficoTorta.getSize().getSize());
lblTorta.setIcon(new ImageIcon(graficoBarra));
panelGraficoTorta.updateUI();
}
private void cedulaPacienteKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
try {
BuscarPaciente();
RecuperarTallas();
} catch (ParseException ex) {
Logger.getLogger(Pacientes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void BuscarPaciente() throws ParseException {
if (cedulaPaciente.getText() != null) {
Controlador_Paciente cp = new Controlador_Paciente();
if (cp.getMedico(cedulaPaciente.getText()) != null) {
Paciente p = cp.getMedico(cedulaPaciente.getText());
cedulaPaciente.setText(p.getCedula());
primerNombre.setText(p.getNombre());
primerApellido.setText(p.getApellido());
}
}
}
public Paciente BuscarPacienteD() throws ParseException {
if (cedulaPaciente.getText() != null) {
Controlador_Paciente cp = new Controlador_Paciente();
if (cp.getMedico(cedulaPaciente.getText()) != null) {
- 92 -
Paciente p = cp.getMedico(cedulaPaciente.getText());
cedulaPaciente.setText(p.getCedula());
primerNombre.setText(p.getNombre());
primerApellido.setText(p.getApellido());
return cp.getMedico(cedulaPaciente.getText());
}
}else{
return null;
}
return null;
}
public void RecuperarTallas(){
if(cedulaPaciente!=null){
Controlador_Registro_Tallas crt = new Controlador_Registro_Tallas();
List<Registro_Tallas> l = crt.listarTallas(cedulaPaciente.getText());
DefaultTableModel temp = (DefaultTableModel) listAvance.getModel();
for (int i = listAvance.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Registro_Tallas otroMed = new Registro_Tallas();
otroMed = (Registro_Tallas) l.get(i);
Object nuevo[] = {otroMed.getPaciente().getCedula(), otroMed.getFecha(), otroMed.getTalla(), otroMed.getPeso()}; //esto es por las
tres columnas aunque puede variar
temp.addRow(nuevo);
}
listAvance.setModel(temp);
}
}
}
- 93 -
ANEXO E: CODIGO FUENTE DE NUTRICION.JAVA
public class Nutricion extends javax.swing.JInternalFrame {
/**
* Creates new form Nutricion
*/
public Nutricion() {
initComponents();
RecuperarEquivalentes();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setBorder(null);
setClosable(true);
setTitle("Nutricion");
setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/nutricion.png"))); // NOI18N
jLabel1.setText("Cedula:");
cedulaPaciente.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cedulaPacienteActionPerformed(evt);
}
});
cedulaPaciente.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
cedulaPacienteKeyPressed(evt);
}
});
jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("Registro de Habitos Alimenticios"));
- 94 -
habitosAlimenticios.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Cedula", "Id_Habito", "Fecha de Ingreso"
}
));
habitosAlimenticios.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
habitosAlimenticiosMouseClicked(evt);
}
});
jScrollPane2.setViewportView(habitosAlimenticios);
alimentosHabito.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Codigo", "Descripcion", "Calorias"
}
));
jScrollPane5.setViewportView(alimentosHabito);
javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 359, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 403, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
- 95 -
jPanel8Layout.setVerticalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
.addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Ingreso de Habitos Alimenticios"));
jLabel4.setText("Fecha de Ingreso:");
jLabel2.setText("Id Habito");
jButton3.setText("Guardar Habito");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(id_habitoa)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fechaIngreso, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(61, 61, 61)
.addComponent(jButton3)
.addContainerGap())
);
- 96 -
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jButton3))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jLabel2)
.addComponent(id_habitoa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(fechaIngreso, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Equivalentes Disponibles"));
resultadosBusqueda.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"", "Codigo", "Descripcion", "Calorias"
}
){
Class[] types = new Class [] {
java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
- 97 -
jScrollPane3.setViewportView(resultadosBusqueda);
jButton1.setText("Agregar Seleccionados");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton4.setText("Nuevo");
jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jButton4MouseClicked(evt);
}
});
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 173, Short.MAX_VALUE)
.addComponent(jButton1)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton4)
- 98 -
.addComponent(jButton1))
.addContainerGap())
);
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)))
.addContainerGap())
);
jTabbedPane1.addTab("Habitos Alimenticios", jPanel6);
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Ingreso de Habitos Alimenticios"));
- 99 -
jLabel6.setText("Fecha de Ingreso:");
jLabel7.setText("Frecuencia");
jLabel3.setText("Id Habito Fisico");
jButton2.setText("Agregar Habito Fisico");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(id_habitoF)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fechaIngreso2, javax.swing.GroupLayout.PREFERRED_SIZE, 298, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(frecuencia, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(183, 183, 183)
.addComponent(jButton2)
.addContainerGap())
);
jPanel5Layout.setVerticalGroup(
- 100 -
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(frecuencia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(fechaIngreso2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(id_habitoF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING)
);
jPanel9.setBorder(javax.swing.BorderFactory.createTitledBorder("Registro de Habitos Fisicos"));
habitosFisicos.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Codigo", "Fecha de Ingreso", "Frecuencia", "Descripcion"
}
));
jScrollPane4.setViewportView(habitosFisicos);
javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
jPanel9.setLayout(jPanel9Layout);
jPanel9Layout.setHorizontalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel9Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 1183, Short.MAX_VALUE)
.addContainerGap())
);
- 101 -
jPanel9Layout.setVerticalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Habitos Fisicos", jPanel7);
jPanel12.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion Personal"));
jLabel12.setText("Nombres:");
primerNombre.setEditable(false);
- 102 -
primerApellido.setEditable(false);
jLabel13.setText("Apellidos:");
javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12);
jPanel12.setLayout(jPanel12Layout);
jPanel12Layout.setHorizontalGroup(
jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel12)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(42, 42, 42)
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerApellido, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel12Layout.setVerticalGroup(
jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(primerNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(primerApellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(37, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
- 103 -
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanel12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cedulaPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(50, 50, 50)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cedulaPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTabbedPane1)
.addContainerGap())
);
pack();
}// </editor-fold>
private void cedulaPacienteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
- 104 -
private void cedulaPacienteKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
try {
BuscarPaciente();
ListarHabitosPaciente();
ListarFisicosPaciente();
} catch (ParseException ex) {
Logger.getLogger(Pacientes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {
Controlador_Equivalente ce = new Controlador_Equivalente();
Equivalente e = new Equivalente();
e.setCodigo_alimento(JOptionPane.showInputDialog("Codigo de Alimento"));
e.setDescripcion(JOptionPane.showInputDialog("Descripcion"));
e.setCalorias(Integer.parseInt(JOptionPane.showInputDialog("Calorias")));
ce.Guardar(e);
RecuperarEquivalentes();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (id_habitoa.getText() != null && fechaIngreso.getDate() != null) {
Controlador_Habito_Alimenticio cha = new Controlador_Habito_Alimenticio();
Controlador_Habito_Alimento chal = new Controlador_Habito_Alimento();
Controlador_Paciente cp = new Controlador_Paciente();
Habito_Alimenticio ha = new Habito_Alimenticio();
ha.setPaciente(cp.getMedico(cedulaPaciente.getText()));
ha.setId_habito(id_habitoa.getText());
ha.setFecha(fechaIngreso.getDate().toString());
cha.Guardar(ha);
DefaultTableModel temp = (DefaultTableModel) habitosAlimenticios.getModel();
for (int i = habitosAlimenticios.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
- 105 -
}
for (int i = 0; i < resultadosBusqueda.getRowCount(); i++) {
if (resultadosBusqueda.getValueAt(i, 0).equals(true)) {
Habito_Alimento hal = new Habito_Alimento();
hal.setHabito(ha);
Equivalente h = new Equivalente();
h.setCodigo_alimento(resultadosBusqueda.getValueAt(i, 1).toString());
h.setDescripcion(resultadosBusqueda.getValueAt(i, 2).toString());
h.setCalorias(Integer.parseInt(resultadosBusqueda.getValueAt(i, 3).toString()));
hal.setEquivalente(h);
chal.Guardar(hal);
}
}
} else {
JOptionPane.showMessageDialog(rootPane, "Ingrese un Id y/o fecha validos");
}
ListarHabitosPaciente();
}
private void habitosAlimenticiosMouseClicked(java.awt.event.MouseEvent evt) {
Controlador_Habito_Alimento cha = new Controlador_Habito_Alimento();
List<Habito_Alimento> l = cha.listarHabitoFisico((String) habitosAlimenticios.getValueAt(habitosAlimenticios.getSelectedRow(), 1));
DefaultTableModel temp = (DefaultTableModel) alimentosHabito.getModel();
for (int i = alimentosHabito.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Habito_Alimento otroMed = new Habito_Alimento();
otroMed = (Habito_Alimento) l.get(i);
Object nuevo[] = {otroMed.getEquivalente().getCodigo_alimento(), otroMed.getEquivalente().getDescripcion(),
otroMed.getEquivalente().getCalorias()}; //esto es por las tres columnas aunque puede variar
temp.addRow(nuevo);
}
}
- 106 -
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Controlador_Habito_Fisico caf = new Controlador_Habito_Fisico();
Controlador_Paciente cp = new Controlador_Paciente();
Habito_Fisico hf = new Habito_Fisico();
hf.setPaciente(cp.getMedico(cedulaPaciente.getText()));
hf.setDescripcion(JOptionPane.showInputDialog("Ingrese la Descripcion del Habito"));
hf.setFecha(fechaIngreso2.getDate().toString());
hf.setFrecuencia(frecuencia.getText());
hf.setId_habito(id_habitoF.getText());
caf.Guardar(hf);
ListarFisicosPaciente();
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
}
public void BuscarPaciente() throws ParseException {
if (cedulaPaciente.getText() != null) {
Controlador_Paciente cp = new Controlador_Paciente();
if (cp.getMedico(cedulaPaciente.getText()) != null) {
Paciente p = cp.getMedico(cedulaPaciente.getText());
cedulaPaciente.setText(p.getCedula());
primerNombre.setText(p.getNombre());
primerApellido.setText(p.getApellido());
}
}
}
public void Limpiar() {
cedulaPaciente.setText("");
primerNombre.setText("");
primerApellido.setText("");
fechaIngreso.setDate(null);
- 107 -
fechaIngreso2.setDate(null);
habitosAlimenticios.removeAll();
alimentosHabito.removeAll();
resultadosBusqueda.removeAll();
frecuencia.setText("");
habitosFisicos.removeAll();
}
public void RecuperarEquivalentes() {
if (cedulaPaciente != null) {
Controlador_Equivalente crt = new Controlador_Equivalente();
List<Equivalente> l = crt.listar();
DefaultTableModel temp = (DefaultTableModel) resultadosBusqueda.getModel();
for (int i = resultadosBusqueda.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Equivalente otroMed = new Equivalente();
otroMed = (Equivalente) l.get(i);
Object nuevo[] = {false, otroMed.getCodigo_alimento(), otroMed.getDescripcion(), otroMed.getCalorias()}; //esto es por las tres
columnas aunque puede variar
temp.addRow(nuevo);
}
resultadosBusqueda.setModel(temp);
}
}
public void ListarHabitosPaciente() {
Controlador_Habito_Alimenticio cha = new Controlador_Habito_Alimenticio();
List<Habito_Alimenticio> l = cha.listarHabito(cedulaPaciente.getText());
DefaultTableModel temp = (DefaultTableModel) habitosAlimenticios.getModel();
for (int i = habitosAlimenticios.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
- 108 -
Habito_Alimenticio otroMed = new Habito_Alimenticio();
otroMed = (Habito_Alimenticio) l.get(i);
Object nuevo[] = {otroMed.getPaciente().getCedula(), otroMed.getId_habito(), otroMed.getFecha()}; //esto es por las tres columnas
aunque puede variar
temp.addRow(nuevo);
}
habitosAlimenticios.setModel(temp);
}
public void ListarFisicosPaciente() {
Controlador_Habito_Fisico cha = new Controlador_Habito_Fisico();
List<Habito_Fisico> l = cha.listarHabitoFisico(cedulaPaciente.getText());
DefaultTableModel temp = (DefaultTableModel) habitosFisicos.getModel();
for (int i = habitosFisicos.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Habito_Fisico otroMed = new Habito_Fisico();
otroMed = (Habito_Fisico) l.get(i);
Object nuevo[] = {otroMed.getId_habito(), otroMed.getFecha(), otroMed.getFrecuencia(), otroMed.getDescripcion()};
temp.addRow(nuevo);
}
habitosFisicos.setModel(temp);
}
}
- 109 -
ANEXO F: CODIGO FUENTE DE PACIENTE.JAVA
public class Pacientes extends javax.swing.JInternalFrame {
/**
* Creates new form Pacientes
*/
public Pacientes() {
initComponents();
Listar();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jToolBar1 = new javax.swing.JToolBar();
jLabel1 = new javax.swing.JLabel();
cedulaPaciente = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
primerNombre = new javax.swing.JTextField();
fechaNacimiento = new com.toedter.calendar.JDateChooser();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
primerApellido = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
edad = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
telefono = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
- 110 -
direccion = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
listPacientes = new javax.swing.JTable();
jPanel4 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
talla = new javax.swing.JTextField();
peso = new javax.swing.JTextField();
jButton2 = new javax.swing.JButton();
jLabel10 = new javax.swing.JLabel();
id_registro = new javax.swing.JTextField();
jToolBar1.setRollover(true);
setBorder(null);
setClosable(true);
setTitle("Pacientes");
setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/paciente.png"))); // NOI18N
jLabel1.setText("Cedula:");
cedulaPaciente.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
cedulaPacienteKeyPressed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion Personal"));
jLabel2.setText("Nombres:");
primerNombre.setEditable(false);
jLabel4.setText("Fecha de Nacimiento:");
- 111 -
jLabel5.setText("Edad:");
primerApellido.setEditable(false);
jLabel8.setText("Apellidos:");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 206,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(primerApellido)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel5)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(fechaNacimiento, javax.swing.GroupLayout.PREFERRED_SIZE, 210,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(edad, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(26, 26, 26))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
- 112 -
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(primerNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addGap(37, 37, 37)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(primerApellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(fechaNacimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
.addComponent(edad, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))))
.addContainerGap(37, Short.MAX_VALUE))
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacion Domiciliaria"));
jLabel6.setText("Telefono:");
telefono.setEditable(false);
jLabel7.setText("Direccion:");
direccion.setEditable(false);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
- 113 -
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(telefono, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(direccion, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(telefono, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7)
.addComponent(direccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Listado de Usuarios"));
listPacientes.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Cedula", "Nombres", "Apellidos", "Fecha", "Direccion", "Telefono"
}
- 114 -
));
listPacientes.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
listPacientesMouseClicked(evt);
}
});
jScrollPane1.setViewportView(listPacientes);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 565, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 582, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Registro de Informacion Fisica"));
jLabel3.setText("Talla:");
jLabel9.setText("Peso:");
talla.setEditable(false);
peso.setEditable(false);
jButton2.setText("Registrar Medidas Actuales");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jLabel10.setText("Id:");
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
- 115 -
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel9))
.addComponent(jLabel10))
.addGap(9, 9, 9)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(peso)
.addComponent(talla, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
.addComponent(id_registro))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jButton2)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(14, 14, 14)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel10)
.addComponent(id_registro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(talla, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9)
- 116 -
.addComponent(peso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(jButton2))
.addContainerGap(12, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cedulaPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(cedulaPaciente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
- 117 -
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)))
);
pack();
}// </editor-fold>
private void listPacientesMouseClicked(java.awt.event.MouseEvent evt) {
try {
cedulaPaciente.setText((String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 0));
primerNombre.setText((String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 1));
primerApellido.setText((String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 2));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = (String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 3);
Date date = formatter.parse(dateInString);
fechaNacimiento.setDate(date);
direccion.setText((String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 4));
telefono.setText((String) listPacientes.getValueAt(listPacientes.getSelectedRow(), 5));
calcularEdad();
int seleccion = JOptionPane.showOptionDialog(
null,
"Informacion Recuperada",
"Eliga una Opcion",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, // null para icono por defecto.
new Object[]{"Modificar Paciente", "Registrar Medidas", "Ninguna Accion"}, // null para YES, NO y CANCEL
"opcion 1");
if (seleccion == 0) {
PermitirNuevo();
- 118 -
//Limpiar();
} else {
if (seleccion == 1) {
HabilitarMedidas();
}
}
} catch (ParseException ex) {
Logger.getLogger(Pacientes.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void cedulaPacienteKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
try {
BuscarPaciente();
calcularEdad();
} catch (ParseException ex) {
Logger.getLogger(Pacientes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(id_registro.getText()!=null && talla.getText()!=null && peso.getText()!=null){
Controlador_Registro_Tallas crt = new Controlador_Registro_Tallas();
Controlador_Paciente cp = new Controlador_Paciente();
Registro_Tallas rt = new Registro_Tallas();
rt.setPaciente(cp.getMedico(cedulaPaciente.getText()));
rt.setId_registro(id_registro.getText());
Date fechaA = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = formatter.format(fechaA);
rt.setFecha(dateInString);
rt.setPeso(Double.parseDouble(peso.getText()));
rt.setTalla(Double.parseDouble(talla.getText()));
crt.Guardar(rt);
BloquearMedidas();
- 119 -
Limpiar();
}
}
public void Limpiar() {
cedulaPaciente.setText("");
primerNombre.setText("");
primerApellido.setText("");
fechaNacimiento.setDate(null);
telefono.setText("");
direccion.setText("");
edad.setText("");
id_registro.setText("");
talla.setText("");
peso.setText("");
}
public void calcularEdad() {
if (fechaNacimiento.getDate() != null) {
Date date = fechaNacimiento.getDate();
SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy");
String datetext = format2.format(date);
try {
Calendar birth = new GregorianCalendar();
Calendar today = new GregorianCalendar();
int age = 0;
int factor = 0;
Date birthDate = new SimpleDateFormat("dd-MM-yyyy").parse(datetext);
Date currentDate = new Date(); //current date
birth.setTime(birthDate);
today.setTime(currentDate);
if (today.get(Calendar.MONTH) <= birth.get(Calendar.MONTH)) {
if (today.get(Calendar.MONTH) == birth.get(Calendar.MONTH)) {
if (today.get(Calendar.DATE) > birth.get(Calendar.DATE)) {
factor = -1; //Aun no celebra su cumpleaños
}
} else {
- 120 -
factor = -1; //Aun no celebra su cumpleaños
}
}
age = (today.get(Calendar.YEAR) - birth.get(Calendar.YEAR)) + factor;
edad.setText(Integer.toString(age));
} catch (ParseException e) {
edad.setText("0");
}
} else {
edad.setText("0");
}
}
public void GuardarPaciente() throws ParseException {
Paciente p = new Paciente();
if (ValidarDatos()) {
p.setCedula(cedulaPaciente.getText());
p.setNombre(primerNombre.getText());
p.setApellido(primerApellido.getText());
Date date = fechaNacimiento.getDate();
SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yyyy");
String fecha = format2.format(date);
p.setFecha_nacimiento(fecha);
p.setDireccion(direccion.getText());
p.setTelefono(telefono.getText());
Controlador_Paciente cp = new Controlador_Paciente();
cp.Guardar(p);
Limpiar();
Listar();
} else {
JOptionPane.showMessageDialog(null, "Complete todos los Datos");
}
}
public void PermitirNuevo() {
cedulaPaciente.setEditable(true);
primerNombre.setEditable(true);
- 121 -
primerApellido.setEditable(true);
direccion.setEditable(true);
telefono.setEditable(true);
}
public void HabilitarMedidas(){
id_registro.setEditable(true);
talla.setEditable(true);
peso.setEditable(true);
}
public void BloquearMedidas(){
id_registro.setEditable(false);
talla.setEditable(false);
peso.setEditable(false);
}
public void Bloquear() {
cedulaPaciente.setEditable(false);
primerNombre.setEditable(false);
primerApellido.setEditable(false);
direccion.setEditable(false);
telefono.setEditable(false);
}
public boolean ValidarDatos() {
if (cedulaPaciente.getText() != null
&& primerNombre.getText() != null
&& primerApellido.getText() != null
&& fechaNacimiento.getDate() != null
&& direccion.getText() != null
&& telefono.getText() != null) {
return true;
} else {
return false;
}
}
public void Listar() {
Controlador_Paciente cp = new Controlador_Paciente();
List<Paciente> l = cp.listar();
- 122 -
DefaultTableModel temp = (DefaultTableModel) listPacientes.getModel();
for (int i = listPacientes.getRowCount() - 1; i >= 0; i--) {
temp.removeRow(i);
}
for (int i = 0; i < l.size(); i++) {
Paciente otroMed = new Paciente();
otroMed = (Paciente) l.get(i);
Object nuevo[] = {otroMed.getCedula(), otroMed.getNombre(), otroMed.getApellido(), otroMed.getFecha_nacimiento(),
otroMed.getDireccion(), otroMed.getTelefono()}; //esto es por las tres columnas aunque puede variar
temp.addRow(nuevo);
}
listPacientes.setModel(temp);
}
public void BuscarPaciente() throws ParseException {
if (cedulaPaciente.getText() != null) {
Controlador_Paciente cp = new Controlador_Paciente();
if (cp.getMedico(cedulaPaciente.getText()) != null) {
Paciente p = cp.getMedico(cedulaPaciente.getText());
cedulaPaciente.setText(p.getCedula());
primerNombre.setText(p.getNombre());
primerApellido.setText(p.getApellido());
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = p.getFecha_nacimiento();
Date date = formatter.parse(dateInString);
fechaNacimiento.setDate(date);
direccion.setText(p.getDireccion());
telefono.setText(p.getTelefono());
int seleccion = JOptionPane.showOptionDialog(
null,
"Busqueda Exitosa",
"Eliga una Opcion",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, // null para icono por defecto.
new Object[]{"Modificar Paciente", "Registrar Medidas", "Ninguna Accion"}, // null para YES, NO y CANCEL
"opcion 1");
if (seleccion == 0) {
- 123 -
PermitirNuevo();
//Limpiar();
} else {
if (seleccion == 1) {
HabilitarMedidas();
}
}
} else {
if (JOptionPane.showConfirmDialog(null, "Desea Registrar un Nuevo Paciente?", "DATOS NO ENCONTRADOS",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
PermitirNuevo();
String cedula = cedulaPaciente.getText();
Limpiar();
cedulaPaciente.setText(cedula);
} else {
Limpiar();
}
}
} else {
JOptionPane.showMessageDialog(rootPane, "No Ingreso un Parametro de Busqueda");
}
}
public void Modificar() {
if (ValidarDatos()) {
Controlador_Paciente cp = new Controlador_Paciente();
Date date = fechaNacimiento.getDate();
SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yyyy");
String fecha = format2.format(date);
cp.Actualizar(cedulaPaciente.getText(),
primerNombre.getText(),
primerApellido.getText(),
direccion.getText(),
telefono.getText(),
fecha);
Limpiar();
Listar();
} else {
JOptionPane.showMessageDialog(rootPane, "Complete todos los Campos");
}
}
}
- 124 -
ANEXO G: CODIGO FUENTE DE PRINCIPAL.JAVA
public class Principal extends javax.swing.JFrame {
/**
* Creates new form Principal
*/
public Principal() {
JFrame.setDefaultLookAndFeelDecorated(true);
//SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.CremeSkin");
//SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.GreenMagicSkin");
SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.OfficeSilver2007Skin");
setExtendedState(JFrame.MAXIMIZED_BOTH);
initComponents();
}
Object p;
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Sistema de Control de Dietas");
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setState(1);
jToolBar1.setFloatable(false);
jToolBar1.setRollover(true);
btnPacientes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/paciente.png"))); // NOI18N
btnPacientes.setText("Pacientes");
btnPacientes.setFocusable(false);
btnPacientes.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnPacientes.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnPacientes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPacientesActionPerformed(evt);
}
});
jToolBar1.add(btnPacientes);
- 125 -
btnDietas.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/dieta.png"))); // NOI18N
btnDietas.setText("Dietas");
btnDietas.setFocusable(false);
btnDietas.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnDietas.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnDietas.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDietasActionPerformed(evt);
}
});
jToolBar1.add(btnDietas);
btnNutricion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/nutricion.png"))); // NOI18N
btnNutricion.setText("Nutricion");
btnNutricion.setFocusable(false);
btnNutricion.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnNutricion.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnNutricion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNutricionActionPerformed(evt);
}
});
jToolBar1.add(btnNutricion);
btnHistorial.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/historial.png"))); // NOI18N
btnHistorial.setText("Historial");
btnHistorial.setFocusable(false);
btnHistorial.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnHistorial.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnHistorial.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnHistorialActionPerformed(evt);
}
});
jToolBar1.add(btnHistorial);
javax.swing.GroupLayout jDesktopLayout = new javax.swing.GroupLayout(jDesktop);
- 126 -
jDesktop.setLayout(jDesktopLayout);
jDesktopLayout.setHorizontalGroup(
jDesktopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jDesktopLayout.setVerticalGroup(
jDesktopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 567, Short.MAX_VALUE)
);
jToolBar2.setFloatable(false);
jToolBar2.setOrientation(javax.swing.SwingConstants.VERTICAL);
jToolBar2.setRollover(true);
btnNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/nuevo.png"))); // NOI18N
btnNuevo.setText("Nuevo");
btnNuevo.setFocusable(false);
btnNuevo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnNuevo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnNuevo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNuevoActionPerformed(evt);
}
});
jToolBar2.add(btnNuevo);
btnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/buscar.png"))); // NOI18N
btnBuscar.setText("Visualizar");
btnBuscar.setFocusable(false);
btnBuscar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnBuscar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnBuscar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBuscarActionPerformed(evt);
}
});
jToolBar2.add(btnBuscar);
- 127 -
btnModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/modificar.png"))); // NOI18N
btnModificar.setText("Guardar");
btnModificar.setFocusable(false);
btnModificar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnModificar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnModificar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnModificarActionPerformed(evt);
}
});
jToolBar2.add(btnModificar);
btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/borrar.png"))); // NOI18N
btnEliminar.setText("Eliminar");
btnEliminar.setFocusable(false);
btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnEliminar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnEliminar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEliminarActionPerformed(evt);
}
});
jToolBar2.add(btnEliminar);
btnLimpiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/limpiar.png"))); // NOI18N
btnLimpiar.setText("Limpiar");
btnLimpiar.setFocusable(false);
btnLimpiar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnLimpiar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnLimpiar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLimpiarActionPerformed(evt);
}
});
jToolBar2.add(btnLimpiar);
- 128 -
btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/guardar.png"))); // NOI18N
btnGuardar.setText("Registrar");
btnGuardar.setFocusable(false);
btnGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnGuardar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGuardarActionPerformed(evt);
}
});
jToolBar2.add(btnGuardar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktop)
.addGroup(layout.createSequentialGroup()
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 425, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktop)
.addGroup(layout.createSequentialGroup()
- 129 -
.addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))))
);
pack();
}// </editor-fold>
private void btnPacientesActionPerformed(java.awt.event.ActionEvent evt) {
if (!(p instanceof Pacientes)) {
jDesktop.removeAll();
jDesktop.repaint();
p = new Pacientes();
try {
CentrarVentanaInterna((Pacientes) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
if (!((Pacientes) p).isVisible()) {
try {
CentrarVentanaInterna((Pacientes) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
}
}
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
if (p instanceof Dietas ) {
try {
if (((Dietas) p).BuscarPaciente()) {
} else {
if (!(p instanceof Pacientes)) {
jDesktop.removeAll();
jDesktop.repaint();
p = new Pacientes();
try {
- 130 -
CentrarVentanaInterna((Pacientes) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
if (!((Pacientes) p).isVisible()) {
try {
CentrarVentanaInterna((Pacientes) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
}
}
}
} catch (ParseException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
}
if (p instanceof Pacientes) {
try {
((Pacientes) p).BuscarPaciente();
} catch (ParseException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(p instanceof Historial){
try {
((Historial) p).BuscarPaciente();
((Historial) p).RecuperarTallas();
} catch (ParseException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private void btnDietasActionPerformed(java.awt.event.ActionEvent evt) {
- 131 -
if (!(p instanceof Dietas)) {
jDesktop.removeAll();
jDesktop.repaint();
p = new Dietas();
try {
CentrarVentanaInterna((Dietas) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
if (!((Dietas) p).isVisible()) {
try {
CentrarVentanaInterna((Dietas) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
}
}
}
private void btnNutricionActionPerformed(java.awt.event.ActionEvent evt) {
if (!(p instanceof Nutricion)) {
jDesktop.removeAll();
jDesktop.repaint();
p = new Nutricion();
try {
CentrarVentanaInterna((Nutricion) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
if (!((Nutricion) p).isVisible()) {
try {
CentrarVentanaInterna((Nutricion) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
- 132 -
}
} else {
}
}
}
private void btnHistorialActionPerformed(java.awt.event.ActionEvent evt) {
if (!(p instanceof Historial)) {
jDesktop.removeAll();
jDesktop.repaint();
p = new Historial();
try {
CentrarVentanaInterna((Historial) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
if (!((Historial) p).isVisible()) {
try {
CentrarVentanaInterna((Historial) p);
} catch (PropertyVetoException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
}
}
}
private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {
if (p instanceof Pacientes) {
((Pacientes) p).PermitirNuevo();
}
}
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {
if (p instanceof Pacientes) {
try {
((Pacientes) p).GuardarPaciente();
} catch (ParseException ex) {
Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
- 133 -
}
}
if (p instanceof Dietas) {
if (((Dietas) p).jTabbedPane1.getSelectedIndex() == 1) {
((Dietas) p).guardarDetalles();
}
}
}
private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
if (p instanceof Pacientes) {
((Pacientes) p).Limpiar();
}
if (p instanceof Nutricion) {
((Nutricion) p).Limpiar();
}
}
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {
if (p instanceof Pacientes) {
((Pacientes) p).Modificar();
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
- 134 -
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
public void CentrarVentanaInterna(JInternalFrame vent) throws PropertyVetoException {
Dimension desktopSize = this.jDesktop.getSize();
Dimension jInternalFrameSize = vent.getSize();
vent.setLocation((desktopSize.width - jInternalFrameSize.width) / 2,
(desktopSize.height - jInternalFrameSize.height) / 2);
this.jDesktop.add(vent);
vent.show();
vent.setMaximum(true);
}
}
- 135 -
ANEXO H: CODIGO FUENTE DE LA CLASSE DIETA.CLASS
package sistema.medico.controlador;
public class Controlador_Detalle_Dieta {
////////////////////////////////////////////////////////////////////////////.
ObjectContainer db = DataConnection.getInstance();
////////////////////////////////////////////////////////////////////////////
public void Guardar(Detalle_Dieta dd) {
db.store(dd);
db.commit();
JOptionPane.showMessageDialog(null, "Detalle Guardado");
}
////////////////////////////////////////////////////////////////////////////
public List<Detalle_Dieta> listar() {
@SuppressWarnings("UnusedAssignment")
List<Detalle_Dieta> dd = null;
dd = db.query(Detalle_Dieta.class);//Cojemos todos los registros
return dd;
}
////////////////////////////////////////////////////////////////////////////
public List<Detalle_Dieta> listarId(String codigo_dieta){
final String cod = codigo_dieta;
List<Detalle_Dieta> detalle = db.query(
new Predicate<Detalle_Dieta>() {
public boolean match(Detalle_Dieta e) {
return e.getCodigo_dieta().getCodigo_dieta().startsWith(cod);
}
});
return detalle;
}
////////////////////////////////////////////////////////////////////////////
public Detalle_Dieta getDetalle(final String codigo_detalle) {
@SuppressWarnings("UnusedAssignment")
List<Detalle_Dieta> ps = null;
ps = db.query(new Predicate<Detalle_Dieta>() {
@Override
public boolean match(Detalle_Dieta o) {
return o.getCodigo_detalle().toLowerCase().contains(codigo_detalle.toLowerCase());//convertimos todo a minúscula y
comparamos
}
}, new Comparator<Detalle_Dieta>() {
@Override
public int compare(Detalle_Dieta o1, Detalle_Dieta o2) {
return 0;
}
});
if (ps.size() == 0) {
//JOptionPane.showMessageDialog(null, "No Existe El Cliente");
return null;
} else {
return ps.get(0);
}
}
}
- 136 -
ANEXO H: CÓDIGO FUENTE DE LAS VARIABLES DETALLE DIETA CLASS
package sistema.medico.negocio;
public class Detalle_Dieta {
private Dieta codigo_dieta;
private String codigo_detalle;
private String detalle;
private String tipo_detalle;
public Detalle_Dieta() {
}
public Detalle_Dieta(Dieta codigo_dieta, String codigo_detalle, String detalle, String tipo_detalle) {
this.codigo_dieta = codigo_dieta;
this.codigo_detalle = codigo_detalle;
this.detalle = detalle;
this.tipo_detalle = tipo_detalle;
}
public Dieta getCodigo_dieta() {
return codigo_dieta;
}
public void setCodigo_dieta(Dieta codigo_dieta) {
this.codigo_dieta = codigo_dieta;
}
public String getCodigo_detalle() {
return codigo_detalle;
}
public void setCodigo_detalle(String codigo_detalle) {
this.codigo_detalle = codigo_detalle;
}
public String getDetalle() {
return detalle;
}
public void setDetalle(String detalle) {
this.detalle = detalle;
}
public String getTipo_detalle() {
return tipo_detalle;
}
public void setTipo_detalle(String tipo_detalle) {
this.tipo_detalle = tipo_detalle;
}
}
- 137 -