Logo Studenta

u281938

¡Este material tiene más páginas!

Vista previa del material en texto

Generación de interfaces gráficas
basadas en descriptores XML
Juan Erasmo Gómez Morantes
Universidad de los Andes
Facultad de Ingenieŕıa
Departamento de Ingenieŕıa de Sistemas y Computación
Bogotá, D.C.
1 de febrero de 2007
Generación de interfaces gráficas
basadas en descriptores XML
Juan Erasmo Gómez Morantes
Trabajo de Grado para optar al titulo de Ingeniero de Sistemas y
Computación
Asesora:
Dra CLAUDIA LUCIA JIMENEZ GUARIN
Universidad de los Andes
Facultad de Ingenieŕıa
Departamento de Ingenieŕıa de Sistemas y Computación
Bogotá, D.C.
1 de febrero de 2007
A mi padre y a mi madre.
1
AGRADECIMIENTOS
Agradezco profundamente a:
Claudia Jimenez, asesora de este trabajo, por su orientación, paciencia y confi-
anza a lo largo de este proyecto.
Marcela Hernandez, directora del proyecto de investigación, por brindarnos la
oportunidad de participar en el.
Sergio Daniel Moreno, Camilo Jimenez y Julian Grijalba por su colaboración,
trabajo e ideas dentro del proyecto.
Los personajes del Z-115 por ayudarme en este proceso y por el buen ambi-
ente de trabajo que crearon.
A Luis Felipe Uriza y Angela Iragorri por su invaluable colaboración y aporte
no solo a este trabajo, sino a todo el proyecto.
2
Índice
1. Introducción 6
2. Objetivos 7
2.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Objetivos espećıficos . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Antecedentes del proyecto 8
3.1. Modelo general de datos . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Descriptores de información y relaciones . . . . . . . . . . . . . . 10
3.3. Arquitectura general del sistema . . . . . . . . . . . . . . . . . . 10
4. Diseño de la solución 12
4.1. Requerimientos del sistema . . . . . . . . . . . . . . . . . . . . . 12
4.2. Decisiones de diseño . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1. Decisiones de interacción . . . . . . . . . . . . . . . . . . 14
4.2.2. Correspondencia visual entre entidades y elementos gráficos 14
4.2.3. Generación automática de la interfaz . . . . . . . . . . . . 15
4.3. Modelo de arquitectura de la capa de interfaz . . . . . . . . . . . 16
4.4. Modelo de clases de la capa de interfaz . . . . . . . . . . . . . . . 17
5. Módulo de consultas 19
5.1. Consideraciones de diseño . . . . . . . . . . . . . . . . . . . . . . 19
5.1.1. Consideraciones de funcionalidad . . . . . . . . . . . . . . 19
5.1.2. El formato de definición . . . . . . . . . . . . . . . . . . . 20
5.2. Tipo de consultas soportadas . . . . . . . . . . . . . . . . . . . . 20
5.2.1. Formato de consultas . . . . . . . . . . . . . . . . . . . . 20
5.2.2. Datos multivalor . . . . . . . . . . . . . . . . . . . . . . . 22
5.2.3. Formas de despliegue de los resultados . . . . . . . . . . . 22
5.3. Diseño del módulo . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6. Implementación de la solución 25
6.1. Base tecnológica . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2. Implementación de componentes visuales . . . . . . . . . . . . . . 25
6.2.1. Representación gráfica de un examen . . . . . . . . . . . . 26
6.2.2. Representación gráfica de los campos . . . . . . . . . . . . 26
6.2.3. Los diferentes tipos de campos . . . . . . . . . . . . . . . 27
7. Análisis de resultados 31
8. Conclusiones y trabajo futuro 32
Apendices 35
A. Ejemplo de archivo de definición de información 35
3
B. Ejemplo de archivo de relaciones 38
4
Índice de figuras
1. Modelo de datos general manejado por los expertos . . . . . . . . 9
2. Arquitectura general del sistema . . . . . . . . . . . . . . . . . . 10
3. Menú de acciones del sistema . . . . . . . . . . . . . . . . . . . . 14
4. Ejemplos de diálogos de interacción . . . . . . . . . . . . . . . . . 15
5. Arquitectura general de la capa de interfaz . . . . . . . . . . . . 16
6. Modelo de clases de la capa de interfaz . . . . . . . . . . . . . . . 17
7. Modelo de datos multivalor . . . . . . . . . . . . . . . . . . . . . 22
8. Formas de despliegue de los resultados de una consulta . . . . . . 23
9. Diagrama de clases referente al módulo de consultas . . . . . . . 23
10. Representación gráfica de un examen . . . . . . . . . . . . . . . . 26
11. Representación gráfica de un campo . . . . . . . . . . . . . . . . 27
12. Ingreso de una fecha . . . . . . . . . . . . . . . . . . . . . . . . . 27
13. Ingreso de un dato enumerable . . . . . . . . . . . . . . . . . . . 28
14. Ingreso de un campo tipo rango . . . . . . . . . . . . . . . . . . . 28
15. Despliegue de un campo tipo rango . . . . . . . . . . . . . . . . . 29
16. Gráfica representativa de un rango . . . . . . . . . . . . . . . . . 29
17. Forma de ingreso y despliegue de un dato de valor absoluto . . . 30
18. Ingreso de un campo de archivo . . . . . . . . . . . . . . . . . . . 30
5
1. Introducción
Al trabajar en proyectos de investigación interdiciplinarios, uno de los prin-
cipales retos es tener una comunicación efectiva entre las diferentes disciplinas
que se ven involucradas en este proceso. Esto incluye el uso de lenguaje y formas
de expresión propias de cada disciplina. Otro de los retos es manejar de manera
adecuada la evolución propia de proyectos investigativos que tienen que adaptar
sus procesos a los resultados parciales que la investigación vaya arrojando.
Dentro del grupo de investigación de bioingenieria de la Universidad de
los Andes se desarrolla el proyecto de investigación llamado “Estudio de la
hemodinámica a través de una estenosis de la bifurcación de la arteria carótida
y su influencia en las observaciones cĺınicas. Parte II: Integración del análisis
de imágenes médicas y hemodinámico para la toma de decisiones en pacientes
con enfermedad arterioesclerótica carotidea” en el que estos dos retos son de
suma importancia y se podŕıa decir que de su adecuado manejo dependen la
calidad de resultados que arroje la investigación. Este proyecto esta enmarcado
dentro de los proyectos Colciencias código 12040416468 y CIFI 65 [UAN+04]
[Pro] [ANU+05].
El objetivo de este trabajo es, construir un sistema de información en el cual
la especificación de requerimientos funcionales y no funcionales gira en torno
a la inserción y el despliegue de información simple. El problema es que dicha
información no es estable y muchas veces no se conoce.
Para solucionar esto se propuso una herramienta que desacopla totalmente
los requerimientos funcionales de la información que se quiere manejar con la
aplicación. Este trabajo fue empezado por Julian Eduardo Grijalba [Gri06] y
complementado por los miembros del grupo de investigación en el contexto de los
proyectos citados[JGJ+06]. Lo que se pretende con esta aplicación es permitir a
los expertos definir la información que les es necesario manejar y de esta forma
agilizar el proceso evolutivo del software. Adicional a esto, la aplicación permite
la definición de consultas complejas que se ejecutan sobre los datos almacenados
en esta y que también pueden ser modificadas por los expertos sin que esto tenga
mayores implicaciones sobre el software desarrollado.
El proceso de generación y evolución de la aplicación gira en torno a un
archivo de definición de datos en el que los expertos definen las entidades que
para ellos sean relevantes, un archivo de relaciones en el que los expertos definen
las relaciones entre las entidades previamente definidas y varios archivos de
consultas en el que los expertos definen las consultas que consideren relevantes
dentro del contexto de la investigación.
6
2. Objetivos
2.1. Objetivo General
Construir un ambiente gráfico que permita la inserción y el despliegue de
datos y la navegación a través de los mismos desacoplando totalmente estos
requerimientos de la definición de la información manejada por el sistema.
2.2. Objetivos espećıficos
Desarrollar una interfaz gráfica de acuerdo con los descriptores de infor-
mación y de relaciones que definenal sistema.
Hacer uso de las mejores practicas de reutilización y patrones de diseño
para la generación dinámica de la interfaz.
Diseñar gráficamente la interfaz para que sea intuitiva, amigable y fácil de
manejar.
7
3. Antecedentes del proyecto
En su primera versión la aplicación se desarrolló en dos frentes. Por un
lado se desarrolló la capa de interfaz [Gri06] y por otro lado se desarrollaron las
capas de control y persistencia. Esto resultó en dos componentes que aun cuando
cumpĺıan con los requerimientos definidos para la versión estaban aislados. Aśı,
la primera labor fue tratar de integrar estas dos partes; El componente que
incluye las capas de control y persistencia fue desarrollado por Camilo Jimenez
y Sergio Moreno.
Durante este proceso se encontraron algunos problemas que hicieron muy
dif́ıcil la integración. Se vio que los componentes no eran compatibles, ya que
usaban protocolos diferentes para tratar de comunicarse el uno con el otro.
Los supuestos que se teńıan a la hora de desarrollar la primera versión dejaron
de ser ciertos, y se hicieron modificaciones sobre el modelo de datos que no
eran soportadas por el sistema. También se encontraron decisiones de diseño de
la interfaz muy acopladas que haćıan dif́ıcil modificar el sistema para que se
ajustara a los nuevos supuestos y al nuevo modelo de datos.
Estos problemas llevaron al rediseño del sistema, reutilizando los compo-
nentes que nos eran útiles, pero proponiendo una nueva arquitectura que se
ajustara a las necesidades manifestadas por los expertos. Esto incluye modifi-
caciones en la representación gráfica de las entidades, cambios profundos en la
navegabilidad de la interfaz y un nuevo modelo de datos (se modifico la forma
de definir las entidades).
El componente de consultas, que se encontraba implementado parcialmente,
fue descartado debido a lo dif́ıcil que resultaba definir una consulta en el for-
mato que se adopto en ese momento. Este formato fue reemplazado por uno
más simple que bajaba la dificultad y el tiempo requerido para la definición de
consultas por parte de los expertos.
3.1. Modelo general de datos
En la figura 1 se muestra el modelo de datos general utilizado por los expertos
para el proyecto Colciencias que enmarca este trabajo.
En este modelo se ve que un paciente puede tener muchas series de imágenes
diagnosticas, y cada una de estas series puede tener una instancia de cada exa-
men (IACID, AngioResonancia, ASD, ...). Cada uno de estos exámenes puede
tener asociado el diagnóstico de muchas placas, lo cual corresponde a indi-
cios de estenosis en la arteria carótida. Es importante resaltar que las placas
se definen independientemente dando como resultado unidades de información
8
Figura 1: Modelo de datos general manejado por los expertos
heterogéneas aśı se estén refiriendo al mismo concepto.
En este contexto, un examen corresponde a los resultados de un método
diagnóstico dentro de los varios métodos considerados para el proyecto.
Un paciente también puede tener otros exámenes como Análisis cĺınico, Re-
sultados de laboratorio, Reporte estructural, etc. Estos exámenes, que no de-
penden de una serie, no tiene asociado el diagnóstico de placas.
Todos los exámenes están compuestos por campos que pueden ser del tipo
texto, fecha, numero entero, numero real o booleano. Existen campos que pueden
ser complejos como enumeraciones, rangos y valores absolutos.
Cabe anotar que este modelo es muy inestable, ya que depende del avance
del proyecto de investigación, y tiene que ajustarse a las necesidades que van
surgiendo en el desarrollo del proyecto y de ah́ı la importancia de desacoplar
esta información de los requerimientos funcionales y no funcionales del sistema.
9
3.2. Descriptores de información y relaciones
Los descriptores se escribieron usando un formato XML definido por el grupo
de investigación.
Este formato tiene como primer objetivo la facilidad de escritura e inter-
pretación, permitiendo aśı que los expertos (no necesariamente ingenieros) puedan
entender y modificar estos descriptores para ajustarlos a sus necesidades.
Dentro del contexto del proyecto, un examen es considerado como una
entidad que es, a su ves, un conjunto de campos. El archivo descriptor de
información puede ser visto como un conjunto de exámenes.
El descriptor de información contiene la definición de las entidades a manejar
(series, exámenes, campos y placas) en cuanto a su definición, las restricciones
semánticas, de integridad y su forma de visualización. Un ejemplo de este de-
scriptor se encuentra en el apéndice A.
El descriptor de relaciones también está escrito en un formato XML. Su
función es definir las dependencias que existen entre las diferentes entidades y
la forma de identificar los exámenes. Un examen puede tener un identificador
generado o se puede usar uno de los campos que lo componen como identificador.
Un ejemplo de este descriptor se encuentra en el apéndice B.
3.3. Arquitectura general del sistema
Figura 2: Arquitectura general del sistema
10
El sistema esta construido usando una arquitectura multinivel; Dentro de
esta arquitectura se definen 3 capas que son:
Interfaz
Control
Persistencia
Capa de interfaz La capa de interfaz es la encargada de manejar la in-
teracción con el usuario; Se puede ubicar en la figura 2 como el componente
GUIDynamicClient.
Capa de control Esta capa es la encargada de ofrecer los servicios que
cumplen con los requerimientos funcionales y no funcionales de la aplicación,
también esta encargada de mediar entre las capas de interfaz y persistencia; Se
puede ubicar en la figura 2 como el componente carotidaFacadeBean.
Capa de persistencia La capa de persistencia es la encargada del manejo de
la base de datos del sistema; Se puede ubicar en la figura 2 como el componente
carotidaHibernate.
En la figura 2 se puede observar un componente llamado carotidaGenerator
el cual es el encargado de la generación de las capas de control y persistencia a
partir de los archivos descriptores del sistema.
Si bien el sistema de información descrito en esta arquitectura es generado
con este software, este trabajo se centra en la capa de interfaz.
11
4. Diseño de la solución
El principal problema que se soluciona con esta aplicación es el costo de
mantener un sistema en el que la definición de la información manejada cambia
constantemente.
Este problema se manifestó dentro del proyecto de investigación que enmarca
este trabajo de muchas formas:
Es necesario introducir nuevos exámenes, que le den a los expertos ele-
mentos de juicio para seguir con la investigación.
La cantidad de campos que describen a algunos exámenes hace necesario
que estos sean divididos en múltiples exámenes.
Es necesario agregar nuevos campos a un examen, modificar los campos
existentes o eliminar algunos capos a medida que los expertos lo consideren
necesario.
La definición de los campos es muy volátil en cuanto a restricciones semánti-
cas, nombre o tipo de dato a manejar.
La solución propuesta consiste en definir la información a manejar y sus
relaciones en archivos XML y a partir de estos archivos, generar una aplicación
que cumpla con los requerimientos que los expertos han manifestado.
En este capitulo no se tratara el tema del modulo de consultas ya que este
esta cubierto en la sección 5
4.1. Requerimientos del sistema
Los requerimientos funcionales de la aplicación se basan en 3 operaciones
básicas:
Inserción de información: El sistema permite la inserción de información
tomando en cuenta la definición que de esta han hecho los expertos.
El ingreso de información de un examen se hace de manera independiente
al ingreso de otros y el sistema mantiene todas las restricciones de integridad
definidas en los archivos de definición de información y relaciones.
12
Despliegue de información: El sistema de información permite el despliegue
de la información ingresada porlos usuarios. Esto lo hace desplegando los
exámenes de forma completa y de ser necesario, las placas asociadas con es-
tos. Este requerimiento no debe confundirse con el requerimiento de realización
de consultas, el cual sera expuesto a continuación.
Definición y realización de consultas: El sistema permite que los exper-
tos definan las consultas que ellos consideren necesarias para el desarrollo de la
investigación usando la información consignada en los archivos de definición de
información y relaciones; el sistema está en capacidad de procesar estas consul-
tas y desplegar los resultados de las mismas sin que se tenga que modificar la
aplicación.
Persistencia de consultas: Las consultas definidas por los expertos son per-
sistentes en forma de archivos de texto que pueden ser cargados a la aplicación
al momento de realizar la consulta.
Los requerimientos no funcionales son los que se esperan en cualquier sistema
de información de alto nivel y son expuestos a continuación.
Distribución: El sistema permite que múltiples usuarios hagan uso de este al
mismo tiempo, esto permite el reparto de tareas dentro del grupo de expertos.
Interfaz gráfica: El sistema interactúa con el usuario a través de una in-
terfaz gráfica poniendo a disposición del usuario todos los elementos gráficos
necesario para representar las entidades consignadas en el archivo de definición
de información.
Persistencia de Base de Datos: El sistema usa un sistema manejador de
bases de datos (SMBD) relacional encargado de la persistencia de la base de
datos de la aplicación1.
Transaccionalidad: El sistema opera de manera transaccional garantizando
aśı la integridad de las operaciones que se realicen sobre la base de datos de la
aplicación.
1En este punto el autor considera importante resaltar la diferencia entre base de datos
y sistema manejador de bases de datos. Una base de datos es un conjunto de información,
mientras que un sistema manejador de bases de datos es la tecnoloǵıa que se encarga de
manejar este información
13
Es importante resaltar que ninguno de los requerimientos expuestos en esta
sección están atados al modelo de datos del sistema (ver figura 1 en la pagina
9). Esto hace que el modelo pueda ser cambiado sin afectar el cumplimiento de
los requerimientos.
4.2. Decisiones de diseño
Dentro del estudio del problema y la solución se tomaron decisiones de
diseño. Conocer estas decisiones es vital para entender el sistemas ya que sobre
ellas se basa el desarrollo de la aplicación.
4.2.1. Decisiones de interacción
La interacción del sistema se diseño alrededor del menú de acciones dentro
de la interfaz gráfica y el uso de diálogos.
Figura 3: Menú de acciones del sistema
Cada una de estas acciones lleva al usuario a una pantalla en la que puede
llevar a cabo la operación deseada. Ejemplos de estas pantallas pueden encon-
trarse en al sección 6.2.
Cuando se trata con entidades multivalor (relaciones uno-a-muchos o muchos-
muchos) la navegación se hace de manera secuencias usando diálogos.
4.2.2. Correspondencia visual entre entidades y elementos gráficos
Cada entidad tiene un elemento gráfico que lo representa gráficamente. Esto
se cumple tanto para exámenes como para campos y placas; lo cual implica
14
Figura 4: Ejemplos de diálogos de interacción
que si una entidad es un conjunto de otras (por ejemplo, un examen es un
conjunto de campos) su elemento gráfico correspondiente sera una composición
de elementos que representan otras entidades.
Hay ciertas entidades que permiten interacción con el usuario, por ejemplo,
un campo de rango permite ver una gráfica que ubica el valor seleccionado
dentro de los rango validos especificados para el campo.
4.2.3. Generación automática de la interfaz
Para efectos de generación de la interfaz se decidió diseñar elementos genéri-
cos que pudieran representar cualquier entidad definida dentro del archivo de
definición de información.
Para este fin se construyen abstracciones que representan las entidades en
términos de su descripción y abstracciones que representan sus elementos gráfi-
cos correspondientes. En el caso de los elementos gráficos se incluye una es-
tructura de herencia profunda que ofrece facilidades de mantenimiento y cortos
tiempos de desarrollo.
Para la instanciación de los elementos gráficos se implementa un patrón
factory[GHJV95] que desacopla el proceso de relacionar entidades y elementos
gráficos.
15
Figura 5: Arquitectura general de la capa de interfaz
4.3. Modelo de arquitectura de la capa de interfaz
La figura 5 muestra la arquitectura general de la capa de interfaz.
El paquete interface es el encargado del diseño de la visualización. En el
se encuentran definidos todos los paneles que representan los diferentes tipos de
campos, los elementos gráficos referentes a los exámenes y a las placas y todo el
manejo de interacción con el usuario. Para definir la forma de visualizar los cam-
pos, placas y exámenes este paquete se comunica con el paquete descriptors
ya que este es el responsable de mantener esta información.
El paquete descriptors es el encargado de mantener el modelo de un exa-
men, un campo o una placa como unidad de información y de manera general
(no confundir esto con representación directa del modelo presentado en la sec-
ción 3.1). Esta información es producto del procesamiento del descriptor de
información, lo cual es tarea del paquete parser.
El paquete parser procesa el archivo XML descriptor de información para
producir la estructura de datos que representa la información plasmada en este
archivo.
16
Toda la comunicación con la capa de control esta concentrada en el paquete
facade. Este es el encargado de hacer las peticiones a la capa de control después
de recibir la orden desde el paquete interface.
El paquete exceptions contiene las excepciones usadas para manejo de error
dentro de la aplicación y el paquete util contiene clases utilitarias que soportan
procesos principalmente de manejo de archivos de configuración.
4.4. Modelo de clases de la capa de interfaz
Figura 6: Modelo de clases de la capa de interfaz
La figura 6 muestra el modelo de clases de la capa de interfaz.
17
Dentro de este se pueden ver todos los elementos gráficos usados para la
visualización de la información. Estos elementos se encuentran en el paquete
interfaz.
A continuación se describen las clases principales y sus responsabilidades.
PanelCampo y PanelFactory Estas clases son las principales responsables
del manejo gráfico de los campos.
PanelCampo representa la abstracción de la cual heredan todas las representación
de campo necesarias para visualizar las unidades de información propuestas.
PanelFactory es la clase encargada de instanciar los paneles en forma correcta.
PanelDespliegueExamen y PanelIngresoExamen Estas clases son las en-
cargadas de organizar los campos (representados por instancias de la clase
PanelCampo) pertenecientes a un examen dentro de un panel que es la rep-
resentación gráfica del examen.
InterfazAplicacion Esta clase es la clase ejecutable.
En ella se encierra gran parte del manejo de interacción con el usuario.
Los descriptores Todas las clases en el paquete descriptores son impor-
tantes. Estas modelan las entidades(examen, campos y placa) como unidades de
información. Su importancia radica en que esta estructura de datos es la base
para la generación de la interfaz gráfica.
Parser La clase parser es la encargada de dirigir el procesamiento del archi-
vo de definición de información y generar, apoyándose en el paquete descriptores,
la estructura de datos que representa al al archivo.
BussinesDelegate Esta clase sirve como puente de comunicación entre las
capas de interfaz y control. Se encarga también de validar que la comunicación
entre estas capas se haga de forma correcta.
18
5. Módulo de consultas
Dentro del proceso de investigación en cual se enmarca este trabajo secon-
templa la recopilación de datos con el objetivo de usar el conocimiento de los ex-
pertos para correlacionar las diferentes variable que conforman el cuadro cĺınico
de los pacientes estudiados en búsqueda de resultados que puedan llevar a la
formulación de una hipótesis.
Para esto es necesario que los expertos estén en capacidad de definir difer-
entes consultas que les permitan obtener resultado significativos dentro de la
investigación. El proceso de definición de consultas es simple y no esta atado al
modelo de datos general del proyecto.
5.1. Consideraciones de diseño
Al diseñar el módulo de consultas se tiene que tener en cuenta muchos as-
pectos tanto funcionales como técnicos que resultan de vital importancia para
que el módulo de consultas de el apoyo investigativo que los expertos esperan
de el. Los aspectos más importantes de este diseño se muestran a continuación.
5.1.1. Consideraciones de funcionalidad
Los principales requerimientos funcionales del módulo de consultas son:
Permite consultas paralelas El módulo permite el despliegue de más de
una consulta al tiempo.
Condiciones de filtro de las consultas Las consultas aceptan más de una
condición lógica de filtrado. Estas condiciones son igualdad, desigualdad, mayor
que y menor que.
Soporta diferentes formas de despliegue El módulo soporta diferentes
formas de mostrar los resultados de las consultas. Estas formas son tabla, gráfica
de barras, gráfica de dispersión y modo por defecto.
Cruce de información El módulo permite cruzar la información de más de
un examen.
19
Proyección de consultas En la definición de consultas se permite hacer
proyecciones sobre los campos de los exámenes seleccionados para hacer la con-
sulta. Esto se hace para que se muestren en pantalla solo los campos que el
usuario considere necesarios para la consulta.
5.1.2. El formato de definición
En vista de que las personas encargadas de definir las consultas no necesari-
amente tienen experiencia en este campo el formato de definición de consultas
es simple y carece de elementos técnicos que puedan confundir al usuario.
Las consultas son escritas en archivos de texto siguiendo el esquema de un
archivo de propiedades de la plataforma Java2. El usuario puede cargar estos
archivos en el sistema en cualquier momento.
5.2. Tipo de consultas soportadas
Las consultas que soporta el sistema son cruces de información básicos que
pueden ser filtrados con condiciones sobre los valores de los campos. Estas condi-
ciones se pueden aplicar contra valores estáticos o sobre valores de otros campos.
Las condiciones que soporta el módulo de consultas son:
igualdad (=)
diferencia (!=)
mayor que (>)
menor que (<)
De ser necesario, el sistema permite la definición de múltiples condiciones en
una consulta. En este caso las consultas se encaden en forma normal conjuntiva
plena[Men97, pagina 30].
5.2.1. Formato de consultas
titulo=<titulo>
como=<formato de salida>
que=<examen>.<campo>, <examen2>.<campo>
2para más información ver http://java.sun.com/javase/6/docs/api/java/util/Properties.html
20
donde=<examen>, <examen2>
CF0=<examen>.<campo>,=,<examen>.<examen2>.<campo>
C0=AND
CF1=<examen>.<campo>,=,<examen>.<examen2>.<campo>
El formato de consultas está conformado principalmente por 5 partes iden-
tificadas con etiquetas de propiedades.
titulo En esta etiqueta se especifica el titulo de la consulta.
como En esta etiqueta se especifica la forma en que se muestran los resultados
de la consulta.
Para más información sobre formatos de despliegue de consultas pase a la sección
5.2.3
que En esta etiqueta se especifica la proyección sobre los datos de la consulta.
Esto se hace especificando cuáles campos, y de cuál examen, se quieren desplegar
en los resultados. Si se hace algo de la forma <examen>.* se muestra toda la
información de dicho examen.
donde En esta parte se especifica el(los) examen(es) sobre los que se quiere
hacer la búsqueda.
Condiciones Las condiciones se especifican en etiquetas del tipo CFi donde
i es un consecutivo que empieza en 0.
Es posible especificar más de una condición y estas se encadenan en forma
normal conjuntiva, usando tags del tipo Cj como conectores (un conector puede
ser AND u OR). j es un consecutivo que empieza en 0 y se usa para unir las
condciones CF(j/2) y CF(j/2 + 1)
Por ejemplo, las condiciones
CF0=<examen>.<campo>,=,<examen>.<examen2>.<campo>
C0=AND
CF1=<examen>.<campo>,=,<examen>.<examen2>.<campo>
CF2=<examen>.<campo>,=,<examen>.<examen2>.<campo>
C1=OR
CF3=<examen>.<campo>,=,<examen>.<examen2>.<campo>
21
Son equivalentes a (CF0 ∧ CF1) ∧ (CF2 ∨ CF3).
5.2.2. Datos multivalor
Uno de los principales problemas afrontados en el diseño del módulo son los
datos multivalor ya que su navegacion es ficil de implementar dentro de la capa
de control cuando se cuentan con elementos estructurados en más de dos niveles
como se muestra en la grafica 7.
Figura 7: Modelo de datos multivalor
Para solucionar este problema el módulo de consultas soporta notación punto
profunda permitiendo hacer cosas del tipo
<examen>.<examen2>.<examen3>.<campo de examen3>
Esto le permite al usuario definir condiciones lógicas de filtrado sobre los
datos que se encuentran en el fondo de la jerarqúıa de información.
5.2.3. Formas de despliegue de los resultados
Los formatos de despliegue de resultados soportados por la aplicación son:
tabla: En este formato los resultados de la consulta se despliegan en una
tabla en la que existe una columna por cada campo especificado en la
parte que del archivo de consultas.
grafica: En este formato se muestra la gráfica que mejor se ajuste a los
campos especificados en la parte que del archivo de consultas. Si el que es
un campo de enumeración o rango se mostrara una gráfica de barras. Si
el que son dos campos con valores numéricos se mostrara una gráfica de
dispersión con todos los puntos retornados por la consulta.
22
normal: En este formato los resultados se muestran de la misma manera
en que se muestran los exámenes fuera del módulo de consultas. Se agregan
botones de apoyo para la navegación de resultados.
Figura 8: Formas de despliegue de los resultados de una consulta
5.3. Diseño del módulo
La gráfica 9 muestra la parte del diagrama de clases del sistema referente al
módulo de consultas.
Figura 9: Diagrama de clases referente al módulo de consultas
La clase central es DesktopConsulta ya que esta es la encargada del manejo
de interacción con el usuario. Esta clase se comporta como un desktop, lo que sig-
nifica que permite desplegar mucho elementos al mismo tiempo y tratarlos como
si estos fueran ventanas internas (permite minimizar, restaurar y maximizar).
Las clases FrameConsultaGrafica, FrameConsultaTabla y FrameConsultaCampos
se usan para representar los diferentes tipos de formato de salida soportados por
23
el sistema. La comunicación con la clase BusinessDelegate (véase sección 4.4
en la pagina 17) es responsabilidad de cada una de esta clases.
El modulo de control toma los archivos de definición de consultas y los pasa
por un proceso de parsing para que puedan ser procesador por Hibernate.
No sobra recordar que este trabajo se limita a la capa de interfaz del sis-
tema, y por lo tanto no se hacen comentarios acerca de el procesamiento de las
consultas, lo cual es responsabilidad de la capa de control.
24
6. Implementación de la solución
Las decisiones de implementación juegan un papel muy importante el de-
sempeño del sistema y en su capacidad evolutiva. Es por eso que es importante
hablar de los detalles más relevantes de la implementación del sistema incluyen-
do algo de información sobre las capas de control y persistencia.
6.1. Base tecnológica
Las 3 capas del sistema están desarrollas en java 5.0.
El sistema basa sus capas de control y persistencia en tecnoloǵıas EJB
3.0[Sun06] de Sun Microsystems y en Hibernate 3.2[JBoa].
La tecnoloǵıa EJB 3.0 se usa para cumplircon el requerimiento de distribu-
ción, mientras que Hibernate se encarga de toda la persistencia del sistema,
incluyendo el procesamiento de consultas.
Estas capas corren sobre un servidor de aplicaciones JBoss 4.0.4.GA[JBob].
La base de la capa de interfaz es Java Swing[Sun05] el cual pertenece al
JFC[Sun] (Java Fundation Classes). Se toma esta decisión basándonos en la
facilidad de uso de Swing y el conocimiento previo que se tiene de esta tec-
noloǵıa[Gri06, Sección 4.3].
Para el despliegue de calendarios y fechas se usa JCalendar[Toe06], el cual es
un componente gráfico externo a Swing que tiene un esquema de licenciamiento
GPL[Fre91] (General Public Licence)
El modulo de consultas se desarrolla apoyándose en gran medida en JFreeChart
[Gil06] [Gil05] [Gri06, Sección 4.2], que es usado para generar las gráficas de bar-
ras y de dispersión que se usan para desplegar los resultados de las consultas.
JFreeChart también tiene licenciamiento GPL.
6.2. Implementación de componentes visuales
A continuación se muestra la forma en que se implementan visualmente cada
una de las entidades involucradas en el sistema.
25
6.2.1. Representación gráfica de un examen
Un examen se representa gráficamente como una pestaña:
Figura 10: Representación gráfica de un examen
En la gráfica se muestran todos los exámenes definidos por los expertos, y solo
se muestran los campos del examen seleccionado. En este caso es Información
Paciente3.
En examen es representado por una pestaña con el nombre del examen.
Dentro del panel del examen están los paneles que representan a cada uno de
los campos que conforman el examen.
6.2.2. Representación gráfica de los campos
Un campo se representa por un panel simple. En el borde del panel se escribe
el nombre del campo.
En la figura 11 se resalta el campo “genero” dentro del examen “Información
Paciente”.
Dependiendo del tipo de información que maneje el campo su representación
puede variar. Esto hace necesario incluir elementos gráficos como calendarios,
listas y gráficas para representar los diferentes tipo de información con los que
estamos lidiando.
3Para ver la definición de este exámen pase al apéndice A
26
Figura 11: Representación gráfica de un campo
6.2.3. Los diferentes tipos de campos
Campos tipo fecha La figuras 12 muestra el diseño de visualización de un
campo que representa una fecha. Inicialmente el campo se ve como un cuadro
de texto normal, pero al hacer click en el icono de calendario se despliega un
componente visual que permite escoger la fecha de una forma más interactiva.
Figura 12: Ingreso de una fecha
El despliegue se hace con un cuadro de texto simple que indica la fecha
ingresada en el sistema.
27
Campos tipo enumeración Un campo de enumeración es representado por
una lista en la cual cada item representa una de las opciones definidas en el
archivo de definición de información por parte de los expertos.
La figura 13 muestra el diseño visual de un campo que exprese informa-
ción enumerada. Este tipo de campo es útil para información con una cantidad
discreta de opciones tales como genero, estado civil, etc.
Figura 13: Ingreso de un dato enumerable
El despliegue de este tipo de campos se hace con un cuadro de texto simple
indicando la opción ingresada por en el sistema.
Campos tipo rango Los campos de tipo rango se muestran, al momento
del ingreso de información, con una lista similar a la de los campos de enu-
meraciones. Cada item en la lista representa uno de los rangos definidos por los
expertos y se muestra la descripción del rango y los valores de sus limites.
Figura 14: Ingreso de un campo tipo rango
La información de campos tipo rango se despliegan en un cuadro de texto
28
Figura 15: Despliegue de un campo tipo rango
Figura 16: Gráfica representativa de un rango
simple como lo muestra la figura 15. Al hacer click en el botón Ver grafico se
muestra una gráfica que representa todos los rangos definidos para ese campo y
ubica el dato actual en los estos rangos tal y como lo muestra la figura 16. Los
colores de los rangos son definidos por el experto.
Campos tipo valor absoluto Los campos de valor absoluto se muestran,
en despliegue e ingreso, con cuadros de campos simples. Ademas de esto se
muestran los limites aceptados para el valor a ingresar y las unidades del dato.
Campos para archivos Los campos de archivos se muestran, en ingreso, con
un cuadro de texto simple y un botón que da la opción de buscar el archivo a
ingresar. En despliegue estos campos se muestran con un cuadro de texto simple
con la ruta del archivo guardado.
Campos generales Para la representación de campos generales o que no se
ajusten a ninguno de los tipos de campos anteriormente descritos se usa un
29
Figura 17: Forma de ingreso y despliegue de un dato de valor absoluto
Figura 18: Ingreso de un campo de archivo
cuadro de texto simple tanto en ingreso como en despliegue.
30
7. Análisis de resultados
El sistema construido es un sistema capas de adaptarse a las necesidades
informáticas expresadas por los expertos de forma ágil cumpliendo aśı su ob-
jetivo principal. Con esto se logra dar una mayor libertad a los expertos a la
hora de modificar la definición de la información que manejan y se brinda una
gran flexibilidad a la hora de correlacionar esta información con el modulo de
consultas. Pese a esto los expertos expresaron dificultades durante el proceso de
normalización de la información.
El modulo de consultas y la facilidades de definición de consultas que este
brinda son de gran ayuda en procesos investigativos. El éxito de este modulo
radica en la gran cantidad de formas y tipos consultas que soporta, aun cuando
esto agregue complejidad al formato de definición de consultas.
El formato de consultas resulta, en un principio, un poco confuso para los
expertos, pero su manejo se hace sencillo una vez se haya superado la curva de
aprendizaje y se tenga un poco de practica en este.
Sin embargo, decisiones de diseño e implementación apresuradas a causa de
la premura del tiempo hacen que la aplicación sea dif́ıcil de adaptar a contextos
ajenos al que se maneja dentro del proyecto. Es notable la poca flexibilidad
que tiene el archivo de definición de información y no se brinda ninguna fun-
cionalidad para definir vista o pantallas sobre la información definida. tampoco
se soportan modificaciones sobre la interfaz gráfica del sistema o perfiles de
usuarios.
Todo esto debe tomarse en cuenta para una futura versión del sistema.
31
8. Conclusiones y trabajo futuro
Este trabajo demuestra que es factible construir software en el que se de-
sacopla totalmente la información o el modelo de datos a manejar de los requer-
imientos funcionales y no funcionales del sistema.
Es importante modelar el software como concepto para poder encontrar los
puntos de acople entre el modelo de datos y los requerimientos funcionales para
aśı poder aislarlos y hacer que el modelo sea reemplazable sin afectar el resto
de la aplicación. Todo esto debe concentrarse en cierto tipo de aplicaciones
y cierto tipo de requerimientos funcionales para lograr tener una base solida
sobre la que se puedan agregar nuevas funcionalidades y soportar nuevo tipo de
requerimientos y entidades.
Para una futura versión es importante tener en cuenta los siguientes puntos:
Modela el software como concepto.
Evaluar la posibilidad de integrar de manera incremental nuevos requer-
imientos al software
Separar la definición de entidades de la definición de vistas o perspectivas
sobre estas entidades.
Usar un formato de definición de entidades más flexible y, de ser posible,
que sea un estándar abierto.
Definir una arquitectura que haga fácil el proceso de agregar un nuevo
tipo de requerimiento o entidad.
Explorar la posibilidad de hacer que el sistema sea una aplicación web
32
Referencias
[ANU+05] J.A. Arias, E.M. Nieto, L.F. Uriza, M. Hernández Hoyos
y J.C. Briceño. Effectof stenosis severity and blood viscosity
on platelet activation index: a computacional study on a 2d carotid
bifurcation. En “Summer Bioengineering Conference”, Colorado,
USA (Junio 2005).
[Fre91] Free Software Fundation. “GNU General Public License” (1991).
http://www.gnu.org/copyleft/gpl.html.
[GHJV95] Erich Gamma, Richard Helm, Ralph Johnson y John Vlis-
sides. “Design Patterns: Elements of Reusable Object-Oriented
Software”. Addison-Wesley Professional Computing Series. Addison-
Wesley (1995).
[Gil05] David Gilbert. “The JFreeChart Developer Guide” (2005).
[Gil06] David Gilbert. “JFreeChart” (2006).
[Gri06] Julian Eduardo Grijalba. Desarrollo de una interfaz dinamica
basada en descriptores. Universidad de los Andes (2006).
[JBoa] JBoss organization. “Hibernate”. http://www.hibernate.org/.
[JBob] JBoss organization. “JBoss application server”.
http://labs.jboss.com/portal/jbossas/?prjlist=false.
[JGJ+06] Claudia Jimenez, Julian Grijalba, Camilo Jimenez,
Sergio Moreno y Juan Gómez. Software construc-
tion for evolving systems with incomplete information def-
inition. En “XML conference 2006” (Noviembre 2006).
http://2006.xmlconference.org/proceedings/155/slides-jimenez.pdf.
[Men97] E. Mendelson. “Introduction to Mathematical Logic”. Chapman
and Hall, 4ta edición (1997).
[Pro] Proyecto de investigación ECOS. “Análisis interactivo y almace-
namiento distribuido de imágenes médicas 3D”. Proyecto europeo
código C03S02 2004.
[Sun] Sun Microsystems. “Java Fundation Classes”.
http://java.sun.com/products/jfc/reference/index.html.
[Sun05] Sun Microsystems. “Swing. Java Fundation Classes” (2005).
http://java.sun.com/javase/6/docs/technotes/guides/swing/index.html.
[Sun06] Sun Microsystems. “EJB 3.0 Technology FAQ” (2006).
http://java.sun.com/javaee/overview/faq/ejb.jsp.
33
[Toe06] Kai Toedter. “JCalendar” (2006).
http://www.toedter.com/en/jcalendar/.
[UAN+04] L.F. Uriza, J.A. Arias, E.M. Nieto, M. Hernández Hoyos y
J.C. Briceño. Desarrollo de un modelo computacional para estudio
de la enfermedad artiosclerótida carot́ıdea. En “XXXIX Congreso
Nacional de Radioloǵıa”, Cartagena, Colombia (Octubre 2004).
34
Apendices
A. Ejemplo de archivo de definición de informa-
ción
<Paciente>
<Serie>
<Examen nombre=‘‘Informacion Serie’’>
<campo nomcampo=‘‘Descripcion’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>texto</tipocampo>
</campo>
<campo nomcampo=‘‘Fecha realizacion’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>fecha</tipocampo>
</campo>
<campo nomcampo=‘‘Fecha ingreso’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>fecha</tipocampo>
</campo>
<campo nomcampo=‘‘Ubicacion’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>archivo</tipocampo>
</campo>
<campo nomcampo=‘‘Tipo’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>texto</tipocampo>
<tipovalor>
<enumeracion>
<valores>
<valor>0</valor>
<significado>EcoDoppler</significado>
</valores>
<valores>
<valor>1</valor>
<significado>ASD</significado>
</valores>
<valores>
<valor>2</valor>
<significado>AngioResonancia</significado>
</valores>
<valores>
<valor>3</valor>
<significado>AngioEscanografı́a</significado>
</valores>
<valores>
<valor>4</valor>
35
<significado>Eco Modo B</significado>
</valores>
</enumeracion>
</tipovalor>
</campo>
</Examen>
</Serie>
</Examen>
<Examen nombre=‘‘Informacion paciente’’>
<campo nomcampo=‘‘Fecha nacimiento’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>fecha</tipocampo>
</campo>
<campo nomcampo=‘‘Genero’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>booleano</tipocampo>
<tipovalor>
<enumeracion>
<valores>
<valor>0</valor>
<significado>Femenino</significado>
</valores>
<valores>
<valor>1</valor>
<significado>Masculino</significado>
</valores>
</enumeracion>
</tipovalor>
</campo>
<campo nomcampo=‘‘Nombre’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>texto</tipocampo>
</campo>
</Examen>
<Examen nombre=‘‘Laboratorios’’>
<campo nomcampo=‘‘Fecha ingreso’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>fecha</tipocampo>
</campo>
<campo nomcampo=‘‘Fecha realizacion’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>fecha</tipocampo>
</campo>
<campo nomcampo=‘‘Tension arterial sistolica’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>entero</tipocampo>
<tipovalor>
<rango limINF=‘‘0’’ limSUP=‘‘300’’ ejeX=‘‘mm Hg’’ ejeY=‘‘’’>
<valoresRango>
<valorRango>120</valorRango>
<significadoRango>Normal</significadoRango>
36
<colorRango>GREEN</colorRango>
</valoresRango>
<valoresRango>
<valorRango>140</valorRango>
<significadoRango>Prehipertension</significadoRango>
<colorRango>YELLOW</colorRango>
</valoresRango>
<valoresRango>
<valorRango>160</valorRango>
<significadoRango>HTA estadio 1</significadoRango>
<colorRango>ORANGE</colorRango>
</valoresRango>
<valoresRango>
<valorRango>259</valorRango>
<significadoRango>HTA estadio 2</significadoRango>
<colorRango>RED</colorRango>
</valoresRango>
</rango>
</tipovalor>
</campo>
<campo nomcampo=‘‘Tension arterial diastolica’’>
<descripcioncampo/>
<obligatorio>si</obligatorio>
<tipocampo>entero</tipocampo>
<tipovalor>
<rango limINF=‘‘0’’ limSUP=‘‘200’’ ejeX=‘‘mm Hg’’ ejeY=‘‘’’>
<valoresRango>
<valorRango>80</valorRango>
<significadoRango>Normal</significadoRango>
<colorRango>GREEN</colorRango>
</valoresRango>
<valoresRango>
<valorRango>90</valorRango>
<significadoRango>Prehipertension</significadoRango>
<colorRango>YELLOW</colorRango>
</valoresRango>
<valoresRango>
<valorRango>100</valorRango>
<significadoRango>HTA estadio 1</significadoRango>
<colorRango>ORANGE</colorRango>
</valoresRango>
<valoresRango>
<valorRango>200</valorRango>
<significadoRango>HTA estadio 2</significadoRango>
<colorRango>RED</colorRango>
</valoresRango>
</rango>
</tipovalor>
</campo>
</Examen>
</Paciente>
37
B. Ejemplo de archivo de relaciones
<configrelaciones>
<identificadores>
<identificador nombreExamen=‘‘Informacion Serie’’ tipo=‘‘autogenerado’’/>
<identificador nombreExamen=‘‘Analisis Clinico’’ tipo=‘‘autogenerado’’/>
<identificador nombreExamen=‘‘AngioEscanografia’’ tipo=‘‘autogenerado’’/>
</identificadores>
<relaciones>
<relacion nombreExamen=‘‘Informacion paciente’’>
<one-to-many nombreExamenDestino = ‘‘Analisis Clinico’’ columnaOrigen = ‘‘cedulaçolumnaDestino
= ‘‘idPaciente’’/>
</relacion>
<relacion nombreExamen=‘‘Informacion paciente’’>
<one-to-many nombreExamenDestino=‘‘AngioEscanografia’’ columnaOrigen=‘‘cedula’’
columnaDestino=‘‘idPaciente’’/>
</relacion>
<relacion nombreExamen = ‘‘Informacion Serie’’>
<one-to-many nombreExamenDestino=‘‘AngioEscanografia’’ columnaOrigen=‘‘fecharealizacion’’
columnaDestino=‘‘fecharealizacion’’/>
</relacion>
</relaciones>
</configrelaciones>
38

Continuar navegando