Академический Документы
Профессиональный Документы
Культура Документы
1
AGRADECIMIENTOS
A la Dra. Katherine Tovar, por ser la precursora de la idea que originó tema de este
trabajo.
prueba.
A mis amigos médicos cirujanos, sin ellos no hubiera podido encontrar la motivación
2
INDICE DE CONTENIDOS
AGRADECIMIENTOS .......................................................................................................... 2
INDICE DE CONTENIDOS................................................................................................... 3
SINOPSIS ............................................................................................................................ 7
INTRODUCCIÓN ................................................................................................................. 8
CAPÍTULO I ......................................................................................................................... 9
PLANTEAMIENTO DEL PROBLEMA ............................................................................... 9
OBJETIVOS.................................................................................................................... 12
ALCANCE Y LIMITACIONES.......................................................................................... 13
JUSTIFICACIÓN ............................................................................................................. 17
CAPÍTULO II ...................................................................................................................... 18
MARCO REFERENCIAL................................................................................................. 18
II.1. Cardiología ....................................................................................................... 18
II.1.1 Electrocardiograma ..................................................................................... 18
II.1.2 Electrocardiógrafo ....................................................................................... 18
II.1.3 Aurículas ..................................................................................................... 18
II.1.4 Ventrículos .................................................................................................. 18
II.1.5 Nodo Sinusal ............................................................................................... 19
II.1.6 Nodo Atrio-Ventricular (AV) ......................................................................... 19
II.1.7 Haz de His ................................................................................................... 19
II.1.8 Despolarización Cardíaca ............................................................................ 19
II.1.9 Repolarización Cardíaca ............................................................................. 19
II.1.10 Ondas y Segmentos P-Q, Q-R-S, S-T ....................................................... 20
II.1.11 Hipertrofia Ventricular ................................................................................ 21
II.1.12 Arritmia ...................................................................................................... 22
II.1.13 Fibrilación Auricular ................................................................................... 22
II.1.14 Fibrilación ventricular ................................................................................. 22
II.2 Procesamiento Digital de Imágenes ................................................................... 23
II.2.1 OPENCV (Opensource Computer Vision) ................................................... 23
II.2.2 Coordenada Cilíndrica HSV (Hue, Saturation, Value) .................................. 23
II.2.3 Dilatación y Erosión Morfológica .................................................................. 23
II.3 Android .............................................................................................................. 24
II.3.1 AsyncHttpClient ........................................................................................... 24
II.3.2 Camera 2 API .............................................................................................. 25
II.4 C++ .................................................................................................................... 25
3
II.4.1 LibFFI .......................................................................................................... 25
II.5 Ruby On Rails .................................................................................................... 26
II.6 RubyFFI ............................................................................................................. 26
II.7 PaperClip ........................................................................................................... 26
II.8 Active Model Serializers ..................................................................................... 27
II.9 Base de Datos ................................................................................................... 27
II.10 MySQL ............................................................................................................. 27
II.11 HTTP ............................................................................................................... 27
II.12 Application Program Interface (API) ................................................................. 28
II.13 Representational State Transfer (REST) .......................................................... 28
II.14 Servicios Web .................................................................................................. 28
II.15 Metodologías de desarrollo de software Ágiles ................................................ 29
II.16 Java ................................................................................................................. 29
II.17 Distancia Euclidiana ......................................................................................... 29
II.18 Inteligencia Artificial ......................................................................................... 29
II.19 Reconocimiento de Patrones ........................................................................... 30
II.20 Red Neuronal Artificial ..................................................................................... 30
CAPÍTULO III ..................................................................................................................... 33
MARCO METODOLÓGICO ............................................................................................ 33
CAPITULO IV ..................................................................................................................... 40
DESARROLLO ............................................................................................................... 40
1. Fase Investigación v1: .......................................................................................... 40
1.1 Realizar Investigación Primaria: ......................................................................... 40
1.2 Construir base empírica: .................................................................................... 41
1.3 Validar los resultados de la investigación: .......................................................... 41
1.4 ¿Existe un patrón?: ............................................................................................ 42
2. Fase Análisis v1: .................................................................................................. 43
2.1 Seleccionar información de la investigación: ................................................. 43
2.2 Discusión de los materiales seleccionados:................................................... 43
2.3 Derivar Perspectivas e Hipótesis Clave: ........................................................ 43
2.4 Validar distintas perspectivas y opciones ..................................................... 44
2.4.1 Iteración XP 1 (Construcción Librería) .................................................... 44
2.5 ¿Las perspectivas claves llevan a una conclusión?....................................... 49
3. Fase Investigación v2: .......................................................................................... 51
3.1 Discusión del Capítulo teórico: ..................................................................... 51
3.2 Realizar Investigación Primaria: .................................................................... 52
3.3 Construir base empírica: ............................................................................... 52
4
3.4 Validar los resultados de la investigación: ..................................................... 53
3.5 ¿Existe un patrón? ........................................................................................ 53
4. Fase Análisis v2: .................................................................................................. 54
4.1 Seleccionar información de la investigación: ................................................ 54
4.2 Discusión de los materiales seleccionados:................................................... 54
4.3 Derivar perspectivas e Hipótesis Clave: ........................................................ 55
4.4 Validar distintas perspectivas e hipótesis: ..................................................... 55
4.4.1 Iteración XP 2(Construcción Servidor): .................................................. 57
4.4.2 Iteración XP 3(Construcción App): ........................................................ 60
4.4.3 Iteración XP 4(Construcción App 2):...................................................... 64
4.4.4 Iteración XP 5(Integración Servidor, App, Librería): ............................... 68
4.4.5 Iteración XP 6 (Herramienta de reportes): ............................................. 71
4.5 ¿Las perspectivas claves llevan a una conclusión?....................................... 74
5. Fase Conclusión v2: ............................................................................................. 76
5.1 Discutir sobre las perspectivas clave: ............................................................ 76
5.2 Seleccionar Material que Lleva a la Conclusión ............................................ 76
5.3 Escribir conclusión ........................................................................................ 76
5.4 Validar conclusión con perspectivas clave .................................................... 77
5.5 ¿Las conclusiones responden las preguntas de la investigación? ................. 78
CAPÍTULO V ...................................................................................................................... 80
RESULTADOS ............................................................................................................... 80
CAPITULO VI ..................................................................................................................... 84
CONCLUSIONES Y RECOMENDACIONES .................................................................. 84
CONCLUSIONES ........................................................................................................ 84
RECOMENDACIONES ............................................................................................... 87
REFERENCIAS BIBLIOGRÁFICAS ................................................................................... 88
5
INDICE DE TABLAS, FIGURAS Y ECUACIONES
6
SINOPSIS
El diseño del sistema incluye una aplicación de servidor que utilizando servicios web
aplicación de servidor, además ésta aplicación de servidor se integra con la librería que
El trabajo fue realizado utilizando una mezcla entre una metodología de investigación y la
metodología XP para desarrollo ágil, la librería que implementa los algoritmos diseñados fue
fueron construidos utilizando el lenguaje Ruby On Rails y la aplicación móvil fue construida
7
INTRODUCCIÓN
La medicina es una ciencia que exige a sus practicantes, consultar y actualizar sus
conocimientos constantemente, pues su objetivo principal es utilizar todos los aprendizajes
médicos comprobados en virtud de mejorar la calidad de vida de los humanos. En este
sentido los avances médicos aseguran que el objetivo de esta ciencia se alcance
satisfactoriamente.
El presente Trabajo Especial de Grado busca resolver las incógnitas sobre la posibilidad
de facilitar la interpretación y diagnóstico de los electrocardiogramas, a través de la
implementación de una herramienta informática, que utiliza la visión de computadoras para
detectar patrones y arrojar resultados que apoyen la práctica médica.
8
CAPÍTULO I
murieron en el 2012 por ECV, muchas de estas muertes pueden ser evitadas disminuyendo
algunos factores que aumenten el riesgo, pero el diagnóstico de las mismas es crucial para
cardiovasculares.
El diagnóstico rápido y exacto de los pacientes que llegan a las salas de emergencia, es
crucial para poder atender sus necesidades y hacer todo lo posible para resolver la patología
que presentan. Muchas veces el personal de la salud doctores, enfermeras, entre otros, se
total del diagnóstico, pues muchas veces conocer el diagnóstico exacto puede tardar más
está leyendo. Incluso existe personal de la salud que no está capacitado para la lectura de
los electrocardiogramas por lo que deben esperar a que alguien capacitado lo realice.
eléctricas producidas por el corazón, estas ondas forman segmentos que se utilizan para
generar los diagnósticos. Las ondas que conforman un electrocardiograma son denominadas
9
P, Q, R, S y T, cada una de ellas es una elevación o una depresión en la onda debido a la
polarización y despolarización de las células del corazón, que hacen que ocurra la
“Estas ondas en condiciones normales generan los segmentos P-Q, Q-R-S y S-T, si este
orden está presente en el electrocardiograma se puede decir que existe un ritmo sinusal que
cada una analiza eléctricamente el corazón desde un ángulo del cuerpo; éstas derivaciones
conjunto con los patrones de orden de éstas ondas y segmentos se podrá entonces observar
analizar las distancias entre los segmentos Q-R-S, si estas distancias permanecen dentro de
un rango, entonces existe un ritmo regular, pero si la distancia entre los segmentos Q-R-S
utilizando las diferentes derivaciones entonces se puede realizar un diagnóstico sobre qué
las ondas P y T, también se puede encontrar un patrón errático que da a conocer una
10
fibrilación ventricular, el paciente que presenta esta patología debe ser atendido
inmediatamente.
por lo que se plantea la realización de una herramienta que corra en dispositivos móviles,
11
OBJETIVOS
OBJETIVO GENERAL
OBJETIVOS ESPECÍFICOS
electrocardiogramas.
Diseñar e implementar una aplicación de servidor que, utilizando los algoritmos planteados,
reciba las imágenes de los electrocardiogramas, las interprete y diagnostique; para enviar la
Diseñar e implementar una aplicación web, que sea capaz de generar reportes sobre las
Realizar las pruebas necesarias en conjunto con un médico especialista para analizar y
12
ALCANCE Y LIMITACIONES
ALCANCE
planteados.
imagen.
o Definir escala de pixeles por centímetros para realizar los cálculos necesarios a la hora
desarrolladas.
electrocardiogramas.
o Definir rango de colores en HSV para extraer de la imagen solamente la gráfica que
describe el electrocardiograma.
imagen obtenida.
o Definir los patrones y condiciones bajo las cuales se basa el diagnóstico de las
en cada uno de los segmentos y ondas P-Q-R-S-T, que sea capaz de determinar si se
cumplen las condiciones y patrones para diagnosticar las distintas patologías en los
electrocardiogramas
manera simple.
Diseñar e implementar una aplicación de servidor que, utilizando los algoritmos planteados,
reciba las imágenes de los electrocardiogramas, las interprete y diagnostique; para enviar la
dispositivos clientes.
o Implementar un servidor con servicios web consumibles bajo los estándares web
o Diseñar e implementar una arquitectura de base de datos que soporte las necesidades
del proyecto.
o Implementar una librería de diagnóstico con los algoritmos planteados en los objetivos
perteneciente a un electrocardiograma.
14
electrocardiogramas.
Diseñar e implementar una aplicación web, que sea capaz de generar reportes sobre las
o Diseñar e implementar las consultas sobre los elementos existentes en la base de datos
o Diseñar e implementar los reportes sobre las patologías identificadas utilizando las
consultas desarrolladas.
o Diseñar e implementar las vistas para la gestión de los filtros y visualización de los
Realizar las pruebas necesarias en conjunto con un médico especialista para analizar y
electrocardiogramas.
Ventricular.
15
LIMITACIONES
El sistema solo funcionará en dispositivos móviles Android que dispongan de una cámara
y conexión a internet.
del diagnóstico.
Las imágenes deben ser capturadas sin el uso del Flash y con buena iluminación para
su interpretación.
25mm/s.
16
JUSTIFICACIÓN
Tal como se adelantó en el Planteamiento del Problema, en los últimos años en el área
Es necesario que existan algoritmos para el procesamiento de las imágenes que capturan
17
CAPÍTULO II
MARCO REFERENCIAL
El siguiente capítulo expone los conceptos teóricos necesarios para el entendimiento del
proyecto desarrollado.
II.1. Cardiología
II.1.1 Electrocardiograma
II.1.2 Electrocardiógrafo
II.1.3 Aurículas
Las aurículas son las dos cavidades superiores del corazón separadas por un tabique y
situadas encima de los ventrículos, con los que se comunican a través de sendos orificios
II.1.4 Ventrículos
Los ventrículos son las dos cavidades inferiores del corazón, situados debajo de las
aurículas, estos reciben la sangre de las cavidades superiores y gracias a que sus paredes
18
II.1.5 Nodo Sinusal
El Nodo Sinusal (SA) o Nodo de Keith y Flack es una de las estructuras que compone el
Sistema de conducción del corazón, recibe el nombre común de marcapasos del corazón.
En este nodo es donde se origina el impulso eléctrico que da origen al latido del corazón. Se
El Haz de His es una formación intracardiaca que también forma parte del sistema de
conducción del corazón, consiste en un fino cordón muscular que transmite el impulso
eléctrico desde el nodo atrio-ventricular hacia las ramas facisculares, estas ramas luego
membranas musculares del corazón, cuando el impulso eléctrico pasa por dichas membranas
membranas musculares del corazón, cuando el impulso eléctrico ya pasó por las membranas
19
II.1.10 Ondas y Segmentos P-Q, Q-R-S, S-T
identificar los cambios de voltaje en los distintos momentos de un latido, cada latido en un
electrocardiograma, como se menciona en el Manual AMIR [4], está compuesto por los
siguientes elementos:
electrocardiográfica de la despolarización de
mide desde el inicio de la onda P hasta el comienzo del segmento QRS. Incluye la
despolarización auricular y posterior paso del impulso por el nodo AV, Haz de His y sus dos
ventricular, fundamentalmente del ventrículo izquierdo por su mayor masa respecto al resto
función de:
- Si el inicio del QRS es negativo, esa onda se llama onda Q (o la onda negativa que
20
- Todas las ondas positivas se llaman R. Si se observa más de una onda R en un mismo
- Punto J: “El punto J es aquel punto de deflexión que marca el final del complejo QRS e
segmento TP, que comienza en el punto J y finaliza en el comienzo de la onda T.” [4]
en las paredes del musculo cardiaco que conforman los ventrículos tanto derecho como
izquierdo, esta patología causa que el ventrículo debe realizar un mayor esfuerzo para
contraerse. [5]
Cornell. Cuando alguno de estos criterios se cumple se puede decir que existe presencia de
la patología.
21
II.1.12 Arritmia
“Una arritmia es cualquier trastorno en los latidos o el ritmo del corazón. Significa que, si
el corazón late demasiado rápido, demasiado lento o tiene un patrón irregular existe una
arritmia. Cuando el corazón late más rápido de lo normal se denomina taquicardia y cuando
“La arritmia crónica más común es la fibrilación auricular causada por un problema en el
diaria y que por tanto hay que saber reconocer rápidamente.” [4]
Para diagnosticar esta patología utilizando un electrocardiograma hay que fijarse en los
siguientes elementos:
- “No existen ondas P. La línea basal se sustituye por una ondulación sutil, irregular y
rápida conocida como ondas “f”. Esto ocurre porque en presencia de esta patología no existe
múltiples frentes simultáneos que causan circuitos de reentrada diversos, los cuales chocan
e interfieren entre si provocando esa activación irregular y caótica de las aurículas.” [4]
- “Esta patología se caracteriza por ser una arritmia “irregularmente irregular”. Es decir,
no solo observaremos que los intervalos RR son variables si no que dicha irregularidad no
Esta patología consiste en una fibrilación que es una contracción o temblor incontrolable
de las fibras musculares (fibrillas), cuando dicha fibrilación ocurre en las fibras musculares
que forman parte de los ventrículos se denomina fibrilación ventricular. Durante la fibrilación
22
La causa más común de fibrilación ventricular es un ataque cardíaco; sin embargo, esta
irregulares entre las cuales no es posible identificar los complejos Q-R-S normales. [7]
Es una librería de código abierto de visión digital, desarrollada en C y C++, adaptada para
ser utilizada en distintos sistemas operativos. Principalmente fue creada para maximizar la
de los colores que conforman una imagen. Dicha matriz divide en tres canales la
entre 0 y 360.
- Dilatación de una imagen: representa uno de los dos operadores básicos en el área
en una imagen binaria es gradualmente agrandar los límites de las regiones en los
pixeles de primer plano, por lo tanto, agranda el área de los pixeles y achica los huecos
existentes. [10].
ser aplicado a imágenes en escala de grises al igual que la dilatación. Su efecto básico
en una imagen binaria es el de erosionar los límites de los pixeles de primer plano con
la finalidad de achicar el área de los pixeles y agranda el área de los huecos existentes
resulta en la reducción de los ruidos e imperfectos que una imagen pueda tener, facilitando
su posterior análisis.
II.3 Android
Android es una pila de software abierto creado para una gran amplia gama de dispositivos
con distintos factores de forma. Los principios principales de Android son crear una
plataforma disponible para portadores, productores de equipos originales u OEMs por sus
siglas en inglés y desarrolladores para que puedan hacer sus ideas innovadoras realidad, e
introducir un producto exitoso del mundo real que mejora la experiencia de los usuarios en
II.3.1 AsyncHttpClient
24
Aquellas aplicaciones que se ejecutan en dispositivos con recursos limitados, por ejemplo,
Debido a la naturaleza de Android, las aplicaciones que realicen estas tareas en el hilo
principal del programa generaran un error evitando el uso adecuado de la aplicación. [12].
Este paquete modela un dispositivo de cámara como un pipe, que acepta solicitudes de
entrada de la cámara para capturar una sola imagen por solicitud y luego arroja de salida un
II.4 C++
programación mucho más agradable para los programadores serios. A excepción de algunos
II.4.1 LibFFI
LibFFI es una librería escrita en C y C++ que provee una interfaz portatil de alto nivel de
programación a varias convenciones para realizar llamadas a las funciones entre distintos
lenguajes. Esto permite a los programadores llamar cualquier función especificada en una
25
Una interfaz de función foránea o FFI es el nombre popular para la interfaz que permite
Está diseñado para hacer la programación de aplicaciones web más sencilla, tomando
asunciones acerca de que es lo que todo desarrollador necesita para empezar. Permite
Además, la comunidad de Rails ofrece una gran cantidad de gemas bien mantenidos,
de los desarrolladores.
II.6 RubyFFI
RubyFFI es una gema que permite la posibilidad de cargar librerías dinámicas, enlazar
funciones entre ellas y llamar las distintas funciones desde el código de Ruby. Esta gema
generando la posibilidad de extender este lenguaje para su uso en distintos campos. [19]
II.7 PaperClip
PaperClip es una gema que funciona como un plugin para las clases de Ruby on Rails
que permite trabajar los archivos como cualquier otro atributo, facilitando así el trabajo a los
utilizar, referenciar, mostrar y modificar estos archivos como cualquier atributo de tipo String,
26
II.8 Active Model Serializers
Active Model Serializers es una gema que habilita la convención sobre la configuración
Los serializadores describen cuales atributos y relaciones deberían ser serializadas y los
adaptadores describen como los atributos y las relaciones deben ser serializadas. [21].
computadora. [22]
II.10 MySQL
MySQL es un sistema para el manejo de base de datos o DBMS por sus siglas en ingles.
Para gestionar las operaciones de agregar, acceder y procesar datos en una base de datos
se necesita un DBMS y como las computadoras están preparadas para manejar grandes
cantidades de datos, estos sistemas DBMS juegan un rol importante en la computación como
II.11 HTTP
protocolo genérico que puede ser utilizado para otras tareas a través de la extensión de sus
27
Dicho protocolo ofrece cinco métodos principales para gestionar información, siendo
estos: GET, POST, PUT, PATCH y DELETE cada uno de ellos corresponde a las actividades
Una Interfaz de Aplicación de Programa o API por sus siglas en inglés, es esencialmente
un contrato, en el cual los desarrolladores que utilicen las mismas pueden confiar,
aumentando la facilidad de uso. El contrato también permite una conexión entre el proveedor
y el consumidor de una manera mucho más eficiente ya que las interfaces son
interoperable de máquina a máquina a través de una red. Para lograr esto tiene una interfaz
Esto permite realizar conexiones entre distintos dispositivos a través de la red permitiendo
28
II.15 Metodologías de desarrollo de software Ágiles
“El desarrollo ágil de software, no es más que una metodología de gestión de proyectos
incremental. Estos métodos minimizan los posibles riesgos que se pueden presentar a la
hora del desarrollo de proyectos de software, atacando los problemas planteados en periodos
de tiempo cortos y generando resultados para su rápida validación y en caso de ser necesario
corrección.
II.16 Java
La distancia entre dos puntos es la longitud del camino que los conecta. En el plano la
distancia entre los puntos (x1, y1) y (x2, y2) está dada por el teorema de Pitágoras: [30]
“La inteligencia artificial es una de las ramas de la Informática que posee fuertes raíces en
otras áreas como la lógica humana y las ciencias cognitivas. Nace como un estudio filosófico
29
del razonamiento humano mezclado con el interés del hombre de querer imitarse a sí mismo,
“El reconocimiento de patrones es una técnica utilizada en la informática que tiene como
Una red neuronal artificial (RNA) es una de las técnicas inspiradas en la naturaleza
que está planteado para emular la forma en la que el cerebro humano procesa la información.
Entre todas las implementaciones de estas redes una de las más comunes es el
Los estándares que aseguran las mejores prácticas las encontramos en RESTFul Web
Services de L. Richardson & S. Ruby [36] donde expresa que dichos estándares son:
Como se menciona en el libro RESTFul Web Services [35], toda cosa interesante que la
aplicación maneje debe ser expuesta como un recurso, es decir las entidades o modelos
Todo recurso debe tener al menos un nombre y ser único para identificar dicho recurso,
de esta manera se puede referenciar los distintos recursos desde diferentes contextos.
30
El acceso a los recursos debe ser manejado por la interfaz del protocolo HTTP y la
Las representaciones deben por lo tanto ser también direccionables por lo tanto un
Existen dos tipos de estado en un servicio REST, el estado del recurso que es la
través de representaciones y el estado de aplicación permanece del lado del cliente hasta
que pueda ser utilizado para crear, modificar o eliminar algún recurso; cuando es utilizado
cliente de manera aislada y en términos del estado actual del recurso. [35]
- Connectedness (Conectividad):
En un servicio bien conectado, el cliente puede tomar una ruta a través de la aplicación
siguiendo links y llenando formularios, por el contrario, un servicio que no está bien
conectado el cliente debe usar reglas predefinidas para construir los links que quiere
visitar. [35.]
31
- The Uniform Interface (Interface Uniforme):
Toda la interacción entre los clientes y los recursos es mediada a través de los cuatro
métodos básicos del protocolo HTTP. Cualquier recurso expone varios o todos los
Esto quiere decir que para todos los recursos los métodos GET, POST, PUT y DELETE,
deben realizar exactamente la misma acción sobre los recursos que lo habilitan y se debe
Una petición del método GET debería ser segura: un cliente que realiza una petición
GET no requiere de ningún cambio al estado del servidor. El servidor decide si debe o no
Además, los métodos GET, PUT y DELETE deben ser idempotentes, esto significa que
realizar cualquier número de peticiones con estos métodos debería tener el mismo efecto
Se considera una mala práctica, por ejemplo, implementar un método PUT que ejecute
alguna acción como “incrementar valor por 5”, hacer 10 peticiones PUT como esa es muy
diferente que hacer solo una. Por lo tanto, las peticiones PUT deberían utilizar valores
32
CAPÍTULO III
MARCO METODOLÓGICO
Accelerators and Their Defining Characteristics [33.], que permite adaptar la estructura del
Esta metodología se enfoca en apoyar aquellas investigaciones sobre temas de los cuales
existan pocas tesis académicas y permite generar conclusiones sobre los resultados
grandes fases por las cuales se itera suficientes veces hasta llegar a una conclusión. Las
- Investigación:
analizar los resultados obtenidos y compararlos con soportes teóricos con la finalidad
luego discutir sobre el estado de la información que pueda existir en este capítulo, se
informativa que se deba cubrir con una fuente adicional, para luego comenzar
primaria.
34
- Análisis:
análisis completo.
Cuando se validen los puntos anteriores entonces se deben proponer y derivar las
distintas perspectivas u opciones clave que ayuden a llegar a la conclusión, esto quiere
decir que en esta fase se plantean las distintas hipótesis para la resolución del
planteamiento.
Luego se deben validar estas hipótesis en comparación con el material obtenido en los
resultados de la investigación.
hipótesis se debió realizar utilizando herramientas que debían ser desarrolladas, por lo
de software ágil XP, de esta manera la validación de resultados está apoyada por los
Una vez se realicen las validaciones y experimentos necesarios sobre las hipótesis, se
debe preguntar si las perspectivas claves o hipótesis llevan a una conclusión validada.
En caso que las perspectivas clave no lleven a una conclusión validada, se plantea que
hace falta más investigación y se debe iterar sobre la metodología volviendo a la fase
35
anterior específicamente en el paso de discusión del capítulo teórico y continuar
- Conclusión:
En esta última fase de la metodología, se debe primero discutir sobre las hipótesis para
validar sus soportes y analizar cómo éstas pueden llevar a una conclusión sobre el
planteamiento.
planteamiento.
validarla con las perspectivas claves y si realmente las perspectivas claves soportan la
conclusión planteada.
Cuando la conclusión se haya validado con las perspectivas clave, se debe preguntar
En caso de obtener una respuesta negativa se debe realizar más análisis, por lo que
[33]
iteraciones sobres las distintas fases y actividades para alcanzar una conclusión que pueda
equipo.
Wells [34.] propone que los proyectos que utilicen la metodología XP, los gerentes de
Wells también propone en Extreme Programming: A gentle introduction [34], que las fases
1. Planificación:
1.1. Planificación de autorización: Según Wells [35] esta planificación está basada en
definir que requerimientos se incluyen en los distintos entregables a corto plazo y cuando
o Exploración:
funcionales planteados en el proyecto con mayor prioridad y alto valor para el sistema.
o Compromiso:
o Dirección:
Por último, se puede ajustar la planificación para agregar nuevos requisitos y/o modificar
1.2. Planificación de la iteración: Wells [35] estableció que en esta fase se planifican las
actividades y tareas de los desarrolladores, esta fase no debe incluir al cliente. Para
37
o Compromiso: Luego los desarrolladores deben comprometerse a realizar estas
o Dirigir: Por último, las tareas se llevan a cabo y deberían dirigirse a corresponder las
2. Diseño:
especificación de los nombres de los métodos y clases que serán parte del proyecto. Un
3. Desarrollo:
importante y esta fase requiere aún más de dicha presencia. Esto es debido a que antes
evitando las ambigüedades, luego el equipo debe generar los entregables de tal manera
Al finalizar la fase de Desarrollo se valida que los entregables cumplan con la funcionalidad
especificada. [34]
4. Pruebas:
Wells [34] plantea que en la última fase de la metodología se debe validar el nivel de
38
- Pruebas Unitarias: Las pruebas unitarias son utilizadas para validar la exactitud y
determinar si una característica funciona como debe. El desarrollador debe generar tantas
pruebas automatizadas como crea para romper el código. Una vez que las pruebas corran
Estas pruebas generan resultados que permiten a los desarrolladores corregir los
cambios detectados.
En el momento en el que se finalicen todas las fases, se debe iniciar nuevamente con
iteraciones sea necesario considerando que una iteración no debe durar largos periodos de
tiempo y al final de toda iteración debe haberse generado uno o varios entregables que
programación en parejas que plantea la metodología XP, porque solamente una persona
desarrollo el proyecto.
pues la naturaleza del planteamiento requiere el uso de una ciencia aplicada para generar
39
CAPITULO IV
DESARROLLO
metodologías planteadas, para resolver las incógnitas principales que se derivan del proyecto
derivaciones?
informático que apoyado en las distintas teorías médicas sea capaz de gestionar imágenes
Fases e Iteraciones:
materiales, que sirvan para generar un marco teórico suficientemente robusto que apoye la
construcción de una base empírica, luego dicha base será validada con la finalidad de
recopiló suficiente información para generar la base empírica, luego se consultó con distintos
40
Posteriormente se consultaron las distintas opciones de lenguajes y librerías para realizar
la interpretación de las imágenes, tomando en cuenta que el objetivo sería diseñar dos
la codificación de los algoritmos, arrojó como resultado que las herramientas que mejor
gestión de las imágenes. La última versión publicada está implementada en C++ y a pesar
Ruby, se escogió utilizar C++ para asegurar que el proceso de integración con la librería
desarrollada se facilitará.
resolver las incógnitas de este proyecto, es diseñar uno o varios algoritmos que deberán
41
Adicionalmente se validó que el diagnóstico realizado sobre las distintas derivaciones,
está basado en cálculos matemáticos cuyos resultados deben compararse con límites
Católica Andrés, se validó que la elección de las herramientas planteadas para el desarrollo
además se encontró que el uso de la librería OpenCV para extraer la señal de la imagen y
generar el diagnóstico.
Solo quedaría definir cuales patologías serían las más adecuadas para el proyecto
patologías seleccionadas.
En conversación con el Médico B. Saturno se concluyó que las patologías que debían ser
el material empírico?
42
2. Fase Análisis v1:
empírica, se debe entonces seleccionar de dicha base la información que será utilizada para
seleccionada y se discutió sobre las distintas posibilidades de cómo diseñar dos algoritmos
Se concluyó luego de esta discusión que una buena aproximación sería utilizar los
Estos métodos son capaces entre otras cosas de extraer de una imagen un rango de
señal de la imagen, para luego utilizar operaciones matemáticas sobre la señal obtenida y
comparar los resultados con los criterios que diagnostican cada patología.
- El diseño del Algoritmo que interprete la imagen de una derivación debe ejecutar la
43
- El diseño del Algoritmo que interprete la imagen de una derivación debe aplicar
- El diseño del algoritmo que diagnostique la señal de la imagen debe analizar el vector
- Debido a que el punto más alto en el vector X y Y debe pertenecer al pico de una
onda R se puede utilizar este punto de partida para detectar las distintas ondas y los
distintos segmentos.
2.4.1.1 Planificación:
algoritmos planteados.
dicha librería.
44
2.4.1.2 Diseño:
implementación de estos algoritmos debería ocurrir afuera del tiempo de ejecución, por esta
La librería debe contener una interfaz para su interpretación y extensión, que contenga las
firmas de los métodos que implementa, para que las distintas aplicaciones que consuman la
- FiltrarImagen
- BuscarPuntosR
- DiagnosticarHipertrofiaVentricular
- DiagnosticarFibrilacionVentricular
- DiagnosticarFibrilacionAuricular
2.4.1.3 Desarrollo:
requerimiento RF_ECGI_4.
Paso 1: Convertir el archivo de imagen en un objeto de tipo Mat que representa una
45
Utilizando el método imread() de la librería OpenCV y el directorio de la imagen, este paso
se encarga de convertir la imagen en una matriz de bits que representan los valores de color
Este método recibe de parámetros de entrada, una matriz de bits de colores y un rango
de valores en la escala HSV que representan los colores de los pixeles, generando como
resultado una matriz de bits con la información de la ubicación de los pixeles en la imagen,
Utilizando los métodos de la librería OpenCV de erosión y dilación, que reciben como
entrada una matriz de bits y generan como salida otra matriz de bits con ciertas
describen la señal, pero con reducción de posible ruido en la extracción de los colores.
Utilizando la función minMaxLoc() de la librería OpenCV, que recibe como parámetro una
matriz de bits y devuelve el punto que representa la ubicación del pixel más alto en la imagen,
con la matriz resultante del algoritmo de interpretación se encuentra el punto más alto de la
señal de un electrocardiograma.
Según los resultados de la investigación realizada se asigna este punto como el punto que
representa la onda R.
46
Paso 2: Buscar otros Puntos R
los puntos R se encuentran generalmente a una misma altura en una derivación, se realizan
iteraciones sobre el vector X Y, específicamente sobre el eje X, buscando todos los puntos
que se encuentren a la misma altura o a una altura con un máximo error de 5 pixeles de
diferencia en el eje Y.
Una vez se encuentra el primer conjunto de puntos se deja de iterar sobre el eje X y se
Este punto se identifica como una onda R y continúa el proceso de iteración sobre el eje
X, con la finalidad de recorrer todo el eje Y encontrar los puntos máximos e identificarlos
Para facilitar este proceso se debe obligar al usuario a alinear la línea base del
necesario entonces que se agregue un apoyo visual a la captura de la imagen para satisfacer
este requerimiento.
47
Diagnóstico de Hipertrofia Ventricular:
comparan cada uno utilizando los criterios de Sokolow-Lyon que indica que debemos
más de cuatro puntos R, por lo que podemos afirmar que si esta cantidad supera cuatro
que las distancias entre los puntos R deben seguir un patrón constante, se puede
Por lo tanto, en este paso se comparan estas distancias obtenidas en el Paso 4, y luego
El entregable generado de esta fase fue una librería llamada ecgilib.so que contiene la
implementación de los métodos y pasos que realizan las tareas de los algoritmos planteados.
48
En el Apéndice F y el Apéndice G se presentan los diagramas de flujo de los algoritmos
diseñados.
2.4.1.4 Pruebas:
Para realizar las distintas pruebas sobre los entregables desarrollados se utilizaron
encuentran las imágenes obtenidas en las pruebas, dónde se pueden evidenciar los
experimentación.
La metodología utilizada plantea que para avanzar hacia la siguiente fase, se debe
- El diseño del Algoritmo que interprete la imagen de una derivación debe ejecutar la
una herramienta, que permita modificar el rango de color utilizado para la extracción de la
49
señal, ajustando dicho proceso a los posibles colores existentes en los electrocardiogramas
- El diseño del Algoritmo que interprete la imagen de una derivación debe aplicar
Luego de realizar las pruebas utilizando la herramienta, se encontró que los métodos de
- El diseño del algoritmo que diagnostique la señal de la imagen debe analizar el vector
- Debido a que el punto más alto en el vector X Y debe pertenecer al pico de una onda R
se puede utilizar éste, como punto de partida para detectar las distintas ondas y los
distintos segmentos.
Si bien en la teoría, los puntos más altos de un electrocardiograma suelen ser los puntos
cumpliera dicha premisa, conocer los puntos R y su ubicación no es suficiente para detectar
los otros puntos o segmentos de un electrocardiograma por lo que esta perspectiva queda
invalidada.
La última perspectiva de la lista apoya el primer paso del algoritmo de diagnóstico pues
como se expone, éste realiza la búsqueda de los puntos R en la señal utilizando la búsqueda
del punto más alto de la función, automáticamente al invalidar la perspectiva, este algoritmo
fue negativa, pues si bien tres de las hipótesis y perspectivas clave apoyan la conclusión, la
50
perspectiva que apoya el algoritmo diseñado fue invalidada, se concluyó que era necesario
Investigación.
los resultados obtenidos en la fase anterior para encontrar el origen de la respuesta negativa.
patrón planteado; por lo tanto, la perspectiva bajo la cual se diseñó el algoritmo se invalidó.
pero de una manera bastante irregular, suficiente como para afirmar que automatizar el
adicional.
Las opciones encontradas para la resolución del problema identificado fueron las
siguientes:
- Desarrollar una fórmula matemática que, utilizando las herramientas existentes, pueda
51
- No existe solución para automatizar el proceso de realizar el diagnóstico en
Se realizó la consulta con los especialistas involucrados sobre el primer planteamiento para
derivada afirma que si el resultado de esta segunda derivada es negativo entonces existe un
cambio de dirección de la función por lo tanto debe existir un punto de inflexión [35.]
En el caso del proyecto cada punto de inflexión de la curva que describe la señal, describe
distintas posibilidades de las cuales se determinó, que las Redes Neuronales son la
que apoyaron la construcción de una solución para resolver las incógnitas del proyecto.
los segmentos P-Q-R-S-T, esto se puede lograr utilizando las propiedades de la segunda
52
Una alternativa al uso de las matemáticas, derivada de la investigación es el uso de una
Red Neuronal entrenada para tomar la decisión de si un registro nuevo en el sistema cumple
con las características de los patrones bajo las cuales la red se entrenó.
análisis sobre el uso de los escenarios planteados como solución al problema encontrado en
Por lo que se planteó que la solución al problema encontrado en el Paso 1 del algoritmo
existentes y con el cálculo de la segunda derivada, realizar una identificación de los puntos
de inflexión en la curva para luego detectar los distintos segmentos del electrocardiograma y
las curvas, utilizar las redes neuronales para generar el diagnóstico de las distintas
53
está entrenada para detectar si hay dos objetos que se parecen en un gran porcentaje basada
Se realizó una consulta adicional con el Prof. Magurno; en conjunto utilizando los
En este caso una fórmula matemática apoyada por el cálculo de la segunda derivada de
una función puede apoyar en la detección de puntos de inflexión de una curva, que en un
Por otro lado, una red neuronal entrenada para detectar los patrones de las distintas
de los electrocardiogramas, por lo que también representa una opción viable para solucionar
las incógnitas.
54
4.3 Derivar perspectivas e Hipótesis Clave:
hipótesis o perspectivas:
inflexión en la curva y utilizando estos puntos para detectar e identificar los distintos
- Una Red Neuronal es capaz de aprender y detectar los distintos patrones existentes
siempre y cuando los cambios en los puntos de inflexión estén claramente marcados por un
55
Los resultados obtenidos en el proceso de validación de las perspectivas anteriores,
Por otro lado, se observa que la perspectiva que afirma que se requiere de intervención
humana en el proceso de diagnóstico apoya el uso de las Redes Neuronales, éstas emulan
patrones.
implementación de una red neuronal que apoye al sistema. La implementación de una Red
Neuronal se encuentra fuera del alcance de este proyecto, pero derivando de las distintas
hipótesis planteadas a lo largo del proyecto y los resultados obtenidos, se puede concluir que
Por esto se enfocó el diseño e implementación de todos los componentes del sistema, en
- Aplicación de Servidor
- App Móvil
- Herramienta de Reportes
56
4.4.1 Iteración XP 2 (Construcción Servidor):
una aplicación de servidor que fuera capaz de gestionar peticiones de distintos clientes
móviles y utilizar la librería desarrollada para realizar un diagnóstico sobre las imágenes.
4.4.1.1 Planificación:
servidor.
REST.
4.4.1.2 Diseño:
El framework escogido utiliza el patrón MVC que plantea el diseño del software en tres
capas (Modelo, Vista, Controlador), esta aplicación está enfocada en solamente habilitar
El diseño de esta aplicación de servidor debe seguir los estándares que permitan habilitar
las mejores prácticas de las arquitecturas basadas en REST, por lo tanto la implementación
de los servicios web desarrollados en esta iteración cumple con todos los criterios y mejores
Adicionalmente esta aplicación está diseñada para permitir la integración con la librería
implementada, por lo que requiere el uso de una herramienta que habilite la integración entre
57
librerías implementadas en un lenguaje de programación y aplicaciones desarrolladas en un
la aplicación pues el framework, utilizando el Object Relational Mapping (ORM), crea las
tablas que almacenan los modelos, con los atributos de cada modelo diseñado en el
framework.
La documentación de los servicios REST con los detalles de los estándares establecidos
se encuentra en el Apéndice M.
4.4.1.3 Desarrollo:
escogidos en la planificación.
ejecutados a través de comandos, que utilizando el pluralizador y el ORM, crean los archivos
para la construcción de servicios web REST. Este tipo de aplicaciones no requiere de la capa
de vistas, pues sus servicios web serán consumidos solamente por un dispositivo que se
58
Luego de crear todas las entidades, se ejecutó el comando rake db:migrate, que realiza la
migración de las entidades a la base de datos, utilizando los archivos generados por el
El comando genera un archivo controlador, que contiene los cuatro métodos del protocolo
El framework utiliza un archivo de rutas para saber que método debe llamar dependiendo
de la petición que reciba de los clientes, el comando scaffold genera también las rutas a los
requerimientos del sistema. En el caso de este trabajo se ajustaron las rutas para satisfacer
JsonSerializer, que facilita el manejo del formato JSON que se envía de respuesta a las
peticiones haciendo uso del protocolo HTTP, estandarizando el formato de los archivos y la
distribución de la información.
Para lograr esto se debe crear un objeto serializer de JSON, que da formato al mensaje
de respuesta y un objeto serializer por cada entidad del sistema, dicho objeto indica cómo se
debe mostrar en el mensaje de respuesta, la información de los atributos que describen las
entidades.
gema llamada PaperClip, que permite gestionar imágenes a través de servicios web REST y
almacenarlas en el sistema.
tipo de objeto FileImage, luego almacena esta imagen en disco duro y registra en la base de
59
Para la integración de las librerías externas se instaló la gema libFFI que permite la
El entregable generado de esta fase fue una aplicación de servidor llamada EKGAPI que
implementa los servicios web que soportan las funcionalidades del sistema y habilita la
electrocardiogramas.
4.4.1.4 Pruebas:
Para realizar las distintas pruebas sobre los entregables desarrollados se utilizó la
herramienta de pruebas del IDE RubyMine que facilita la prueba de los servicios web Rest,
generando las peticiones dependiendo del caso y mostrando los mensajes de los resultados.
permitieran realizar la captura de las imágenes utilizando la cámara del dispositivo móvil y
4.4.2.1 Planificación:
Las tareas que derivan de estos requerimientos se deben desarrollar utilizando el lenguaje
Java apoyado por el kit de desarrollo para aplicaciones móviles nativas Android.
60
Para el desarrollo de aplicaciones móviles que utilicen las cámaras de los dispositivos,
produjo el dispositivo, normalmente esta es una buena opción, siempre y cuando los
usuario con la cámara distinta de la que ofrece el software ya implementado. Por ejemplo, si
queda invalidada.
La segunda posibilidad es utilizar las funciones nativas de Android para utilizar las
cámaras de los dispositivos; en esta segunda opción hay que realizar un mayor trabajo pues
hay que desarrollar el equivalente al software ya desarrollado por las empresas, más las
funciones nativas de Android, habilita la facilidad de integrar el uso de la cámara con distintas
alinear y la calibración las distancias en los electrocardiogramas, es por esto que se decidió
4.4.2.2 Diseño:
contener una actividad que maneje las funcionalidades de la cámara y el envío de las
recursos en aplicaciones móviles, utilizando las tareas asíncronas para evitar interrumpir el
lineamientos expuestos sobre las mejores prácticas de servicios web de arquitectura REST;
61
se diseñó el envío de las imágenes a través el método POST de electrocardiogramas,
El kit de desarrollo de Android utiliza una estructura en la cual las vistas con las que
funcionalidades utilizando clases de Java, por lo tanto, las aplicaciones móviles Android
4.4.2.3 Desarrollo:
requerimiento RF_ECG_5.
archivos XML y las clases en Java que habiliten las funcionalidades requeridas.
Para el desarrollo de esta iteración se utilizó el paquete de Camera2 API que provee
Actividad de Android creamos una clase llamada CameraIntentActivity.java que hereda del
la creación de un objeto que gestione las peticiones a la cámara de realizar las capturas
62
onCaptureStarted, onCaptureCompleted y onCaptureFailed, para asegurarse que el
aplicaciones móviles afirman que el uso de diferentes hilos para actividades que
elemento de las vistas de Android llamado TextureView, este elemento es capaz de mostrar
cámara ve. Sobre este elemento de vista el usuario debe seleccionar el tipo de derivación
que se está capturando, por lo que esta vista también contiene un elemento spinner (conocido
como combobox) con todas las posibles derivaciones existentes, por último, se agregó una
alinear la línea base del electrocardiograma y los cuadros del papel, para calibrar la cantidad
El entregable generado en esta fase es una aplicación móvil que, utilizando las mejores
desarrollado.
4.4.2.4 Pruebas:
Para realizar las distintas pruebas sobre el entregable generado se utilizaron el emulador
de Android corriendo la versión de Android 5.0 Lollipop, dos dispositivos móviles Android un
Samsung S4 y un Samsung S5 corriendo las versiones de Android 5.0 Lollipop y Android 6.0
Marshmallow respectivamente.
63
En el proceso de pruebas se detectaron comportamientos distintos en las interfaces
realizaron las pruebas para asegurar que las interfaces en los distintos dispositivos
También utilizando la aplicación de servidor en equipos bajo una misma red WLAN, se
habilitan la gestión de las diferentes entidades del sistema como los pacientes, los
4.4.3.1 Planificación:
Analizando que el sistema debe ser capaz de gestionar las operaciones de consulta y
aplicación móvil.
electrocardiogramas.
esta manera se evita la alteración en los resultados diagnósticos y reportes del sistema.
64
4.4.3.2 Diseño:
lo que en esta fase de la iteración se diseñaron las diferentes peticiones HTTP basados en
Adicionalmente se diseñaron las vistas necesarias para permitir al usuario gestionar las
La Vista Consultar pacientes, está compuesta por un elemento ListView, que muestra una
lista con los detalles de todos los pacientes registrados en el sistema, además permite al
y permite a los usuarios tomar la foto de una derivación, seleccionar la derivación y enviar
la foto al servidor.
65
En el Apéndice K se observan las pantallas de la aplicación.
Para el diseño de estas vistas, consultas y peticiones generadas se utilizaron las mejores
4.4.3.3 Desarrollo:
funcionalidades en archivos separados con distintos formatos, por lo tanto, en esta fase se
desarrollaron las vistas utilizando los componentes de vistas que ofrece Android y las
usuario ingresar información, para esto se utilizaron los componentes EditText, DateChooser
y Spinner, que permiten el input de texto, la selección de una fecha y la selección única sobre
de memoria en el dispositivo, éste carga en memoria solamente los registros que son
necesarios para una transición suave entre los elementos. Es decir, solamente carga la
cantidad de elementos que caben en la pantalla del dispositivo, más dos elementos
La implementación del consumo de los servicios web en dispositivos móviles, exige el uso
de buenas prácticas. Utilizando las tareas asíncronas en actividades que requieren el uso de
66
la red, se asegura que el hilo principal de ejecución de la aplicación se mantiene sin
diferente al hilo de ejecución principal. Los procesos que corren en este hilo no interfieren
experiencia de usuarios con un flujo continuo en todas las actividades que realiza en la
aplicación.
El entregable generado en esta fase es una aplicación Android, capaz de integrarse con
los electrocardiogramas.
4.4.3.4 Pruebas:
Para realizar las distintas pruebas sobre el entregable generado de esta iteración se
utilizando las versiones de Android 5.0 Lollipop y Android 6.0 Marshmallow respectivamente.
67
Bajo una misma red WLAN se comprobó que el servidor recibía y respondía las peticiones
servidor y la librería.
4.4.4.1 Planificación:
analizando los requerimientos del sistema diseñado, el sistema requiere la integración entre
sus componentes, por lo que se diseñaron pensando que se debía facilitar la integración y la
Para la integración de la aplicación móvil con el servidor se utilizaron los servicios web
REST y las peticiones HTTP del cliente móvil, habilitando de esta manera las mejores
lenguaje C o C++. Los distintos lenguajes y frameworks escogidos facilitaron esta integración.
4.4.4.2 Diseño:
En el caso de los servicios web se utilizaron claves de autenticación para asegurar que
las peticiones que el servidor recibe, se originan desde clientes confiables y no de cualquier
68
cliente, así las peticiones de los clientes deben contener en su mensaje una APIKey o clave
En el caso de la librería libFFI, existen varias posibilidades para compilar las librerías y
cada una habilita distintas características que facilitan la integración. Se escogió en este caso
utilizar una librería dinámica compartida, éste tipo de librerías habilitan el uso de sus
4.4.4.3 Desarrollo:
interpretación de las imágenes se instaló la gema ffi.gem, ésta permite crear un módulo que
inicia cuando la aplicación se ejecuta e interpreta una interfaz o archivo header del lenguaje
C++. El archivo extension.rb utiliza un método que extiende la librería ecgi.dylib y agrega las
funciones y métodos de la librería, creando una instancia de un objeto wrapper que contiene
framework Ruby on Rails, permite el uso de distintos Callbacks sobre las entidades del
entidades, que habilitan la programación de ciertas tareas en dichos estados. Los distintos
estados que existen son por ejemplo before_save, after_save, before_commit, etc. Por lo
69
tanto, si se desea implementar la ejecución de alguna función en el momento que representa
after_commit se llama a la función diagnose. Esta función utiliza el objeto EcgiWrapper para
un número entero que corresponde cada uno al diagnóstico de alguna patología encontrada
Utilizando la tabla anterior la función crea una instancia de la entidad Diagnostic con la
posterior consulta.
Para realizar la integración de los servicios web con la aplicación móvil se utilizó un objeto
entidad utilizan el callback before_filter y validan la existencia de dicha clave en los registros
unauthorized.
70
4.4.4.4 Pruebas:
Para realizar las pruebas de esta iteración se instaló la aplicación móvil en los dispositivos
móviles Android Samsung S5 y Samsung S4, se inició en una computadora con sistema
operativo MacOSX, la base de datos con el manejador MySQL y el servidor rails, luego se
Se conectaron todos los dispositivos a una misma red WLAN y se realizaron las pruebas
sobre todo el flujo del sistema, verificando en los logs de la aplicación y la librería la recepción
Todas las pruebas pasaron sin complicación, comprobando la correcta funcionalidad del
4.4.5.1 Planificación:
organizada y fácil de entender. Se utilizarán distintos parámetros sobre los reportes para
clasificar y mostrar los resultados de los diagnósticos realizados sobre los pacientes.
que consultará la base de datos del sistema y generará los elementos necesarios.
71
4.4.5.2 Diseño:
- Reporte de cantidad de los diagnósticos por patología, filtrado por rango de edad y
La interfaz web de la herramienta debe permitir al usuario seleccionar entre los distintos
filtros y visualizar la cantidad de casos reportados de manera sencilla por lo que se decidió
Para el diseño de la interfaz web, se utilizó una plantilla realizada con Bootstrap llamada
interfaz. El uso de esta plantilla asegura las mejores prácticas de usabilidad, manteniendo
4.4.5.3 Desarrollo:
Utilizando las convenciones de Ruby on Rails, se crearon los archivos html.erb (html
embedded ruby) y se le asignó una ruta que llama a dos métodos: filter y report. Estos
rango de edades que desea filtrar para el reporte, también permite seleccionar el género de
pertenecientes a los pacientes que cumplan con los criterios seleccionados por el usuario.
La gema llamada ChartKicks, permite mostrar los resultados obtenidos en las consultas
utilizando gráficos.
4.4.5.4 Pruebas:
Para realizar pruebas sobre la herramienta de reportes se utilizó el archivo seed.rb. Rails
utiliza este archivo para insertar información en la base de datos, de esta manera se pueden
iniciar la aplicación.
El archivo seed.rb contiene datos de prueba conocidos y controlados que con el comando
73
El sistema pasó todas las pruebas probando la correctitud de su funcionalidad.
la experimentación.
Continuando con las actividades que propone la metodología se debe analizar en este
claro cambio de dirección de la curva. Por ejemplo, la libería OpenCV utiliza este método
para la detección de los cambios de intensidad en los colores, permitiendo identificar por
Realizando pruebas con electrocardiogramas reales, se concluyó que esta vía no asegura
los cambios de color entre el cielo y un edificio en una imagen. Este resultado obtenido
invalida esta perspectiva pues ésta no satisface las necesidades del proyecto.
proyecto, por lo que se debe implementar un algoritmo diferente que aumente la capacidad
Apoyado por la conclusión de la perspectiva anterior, el uso de una tecnología distinta que
patrones, refuerza que esta perspectiva apoyada por Redes Neuronales, es la mejor
aproximación para la detección de los patrones que describen las distintas patologías.
decisiones basadas en detección de patrones, por ejemplo, se podría entrenar una red
entrada una nueva señal e indicar con cual patología presenta mayor similitud permitiendo
generar un diagnóstico.
75
Según la conclusión anterior, un algoritmo apoyado en la implementación de una red
Dicho Algoritmo recibiría de entrada las imágenes de las señales extraídas de las
Luego de realizar el análisis anterior la respuesta que se obtiene a partir de dicho análisis
es que sí es posible llegar a una conclusión utilizando las perspectivas clave planteadas en
esta fase de la iteración, por lo que se puede continuar con la siguiente fase de la
metodología.
En dicha fase se encontró, el origen del problema que presenta el algoritmo diseñado y
también una solución viable para resolverlo, ambos hallazgos se apoyan por los resultados
obtenidos en este trabajo, por lo tanto, este es el material que aporta la mayor cantidad de
siguientes conclusiones:
del sistema por lo que se debe plantear un algoritmo diferente que satisfaga con mayor
Neuronal entrenada para la detección de los patrones que presentan las patologías,
planteado.
Apoyadas por las hipótesis y perspectivas claves derivadas en las distintas fases
obtenidos sobre las distintas perspectivas. Adicionalmente se debe respaldar las distintas
muy parecido a la mente humana, por lo que respalda la conclusión que plantea que la
Adicionalmente para respaldar la conclusión que afirma que el algoritmo planteado en este
proyecto no satisface las necesidades del sistema, se contactó un médico cirujano Dr. Juan
77
Carlos Belandría, con su apoyo se realizó una comparación de los diagnósticos que generan
la herramienta sobre las patologías seleccionadas y los diagnósticos que él realizó utilizando
El porcentaje de aciertos encontrado en esta comparación fue del 0%. Analizando con
detalle los planteamientos anteriores, se puede concluir que esto se debe al problema que
que se diseñó, se detectó que la raíz del problema fue que el diseño del algoritmo se basó
puede concluir que sí es posible diseñar e implementar un algoritmo que interprete imágenes
manera correcta.
derivaciones?
distintas derivaciones obtenidas, siempre y cuando éste se apoye en una Red Neural
entrenada para detectar los patrones de las distintas patologías en las derivaciones.
78
Siguiendo las actividades de la metodología, las conclusiones derivadas sí responden las
preguntas de la investigación, por lo que se puede afirmar que el proyecto de tesis ha sido
completado.
79
CAPÍTULO V
RESULTADOS
desarrollo
A continuación, se detallan los resultados obtenidos por cada uno de los objetivos
Para satisfacer las necesidades se concluyó que dicha aplicación debería ser capaz de
gestionar las distintas entidades existentes en el sistema, por lo tanto, la aplicación debe,
Android, que permiten la interacción directa con la cámara del dispositivo. Utilizando dichas
servicios web REST, aseguramos que la aplicación satisface las necesidades de este
objetivo.
El resultado de este objetivo es una aplicación móvil para sistemas Android, que
electrocardiogramas.
electrocardiogramas.
interpretación de imágenes, la librería OpenCV ofrece las mejores herramientas que facilitan
80
la manipulación de las imágenes.
cantidad de ruido en una imagen y métodos que permiten convertir las imágenes en matrices
un algoritmo apoyado en los métodos de dicha librería, que sea capaz de interpretar la
representada generalmente, por una curva de color negro impresa en un papel cuadriculado
de colores pasteles.
patrones que permitirían diagnosticar distintas patologías presentes en la señal. Para probar
pruebas de dicho algoritmo que apoyarían que el algoritmo diseñado e implementado, cumple
con los objetivos de manera satisfactoria. Se encontró que dicho algoritmo no satisface los
81
Este hallazgo obligó a realizar una iteración sobre la metodología e investigar
nuevamente, para encontrar el origen del problema y una solución capaz de satisfacer los
Además, en esta nueva iteración se generaron dos alternativas, una capaz de solucionar
alternativa capaz de satisfacer las necesidades de dicho objetivo, a través del diseño e
implementación de un nuevo algoritmo, que incluya el uso de las Redes Neuronales para
El resultado de este objetivo luego de analizar las distintas alternativas, es que la mejor
dicho sistema debería ser capaz de adaptarse a cambios enfocados en satisfacer los
Por lo tanto, la aplicación de servidor fue diseñada de tal manera que su funcionamiento
con la librería compartida para ejecutar las actividades de los algoritmos diseñados, por lo
82
El resultado de este objetivo es una aplicación de servidor implementada en Ruby On
Rails, que a través de servicios web REST y la extensión de la librería propia, es capaz de
electrocardiogramas y diagnósticos.
- Diseñar e implementar una aplicación web, que sea capaz de generar reportes sobre
La medicina es una ciencia que utiliza mucho las estadísticas para generar conclusiones,
por lo tanto, una herramienta capaz de gestionar la información sobre casos médicos
de la medicina.
Una herramienta de reportes sobre los registros del sistema implementado, habilitaría a
los médicos especialistas una fuente de información para realizar investigaciones sobre los
El resultado de este objetivo es una aplicación de reportes que permite a los usuarios
visualizar los resultados de los diagnósticos realizados por el sistema, filtrados por edad y
sistema.
Los resultados que arrojan los sistemas médicos se deben verificar con un especialista
derivaciones que presentaban las patologías a diagnosticar. Dicho diagnóstico se realizó por
un médico cirujano y por el sistema, para buscar la cantidad de aciertos del sistema en
correctos.
83
CAPITULO VI
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES
de apoyar a los especialistas a tomar las decisiones, permite recopilar fácilmente, gran
electrocardiogramas.
La librería OpenCV es hoy la mejor alternativa para implementar las funciones que
permiten a las computadoras “ver”, pues implementa gran cantidad de métodos que
84
Esto se concluyó apoyado por los resultados encontrados en el desarrollo de este
trabajo, los cuales permitieron reconocer el origen de los problemas en el diseño del
algoritmo y encontrar una solución que satisface los requerimientos de este objetivo.
Se encontró que la implementación de una Red Neuronal entrenada para detectar los
implementar las mejores prácticas en el desarrollo de los servicios REST, pues a pesar
de ser muy útiles para realizar integraciones, exponen vulnerabilidades que deben ser
- Diseñar e implementar una aplicación web, que sea capaz de generar reportes
del paciente.
El valor que agrega una herramienta de reportes sobre los resultados obtenidos es de
tomando en cuenta que los resultados de estos procesos impactan sobre la vida de los
85
pacientes, por lo tanto, un equipo de médicos debe validar si los resultados que arroja el
86
RECOMENDACIONES
A continuación, se mencionan algunos aspectos que no forman parte del alcance de este
entrenada para detectar los distintos patrones que describen las patologías.
- Ampliar el alcance del sistema desarrollando una versión de la aplicación cliente que
diagnosticar.
el uso de la aplicación.
- Diseñar e implementar una interfaz que permita integrar el sistema desarrollado con
- Publicar los servicios web API REST, para permitir a distintos desarrolladores consumir
los servicios y ampliar las funcionalidades de los sistemas que requieran de realizar
diagnósticos.
87
REFERENCIAS BIBLIOGRÁFICAS
[1.] Dale Dubin, MD. (2000) Rapid Interpretation of EKG’s 6th Edition.
Médica Panamericana.
Hypertens.
[6.] Levy D, Garrison RJ, Savage DD, Kannel WB, Castelli WP.(1990) .Prognostic
[7.] Epstein AE, DiMarco JP, Ellenbogen KA, et al. (2012) ACCF/AHA/HRS focused
update incorporated into the ACCF/AHA/HRS 2008 guidelines for device-based therapy of
Foundation/American Heart Association Task Force on Practice Guidelines and the Heart
[10.] Gonzalez R. y Woods R. (2007), Digital Image Processing 3rd Edition. EEUU:
University of Tenessee
[11.] Android Google Team. Android Open Source Project,[en línea]. Disponible en :
88
[12.] AsyncHTTPClient, Async Http Client , Repositorio de Github [en línea] Disponible en:
en:https://developer.android.com/reference/android/hardware/camera2/package-summary.html
[14.] Stroustrup, Bjarne (1997). The C++ Programming Language (3era ed.)
[15.] Green A. Foreign Function Interface Library Documentation [en línea]. Disponible en:
[17.] Rails Development Team. Getting Started with Rails. [en línea] Disponible en:
[19.] FFI, Ruby Foreign Function Interface ruby-ffi,[en línea] Repositorio de Github,
[20.] ThoughtBot, PaperClip Ruby Gem paperclip, [en línea], Repositorio de Github,
[23.] Oracle. MySQL 5.1 Reference Manual. Retrieved 17 September 2012.[en línea]
[24.] Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.; Nielsen, Henrik Frystyk; Masinter,
Larry; Leach, Paul J.; Berners-Lee, Tim (1999). Hypertext Transfer Protocol -- HTTP/1.1.
IETF. RFC 261[en línea] Disponible en: https://tools.ietf.org/html/rfc2616 [2016, Agosto 24]
[25.] Richardson L. y Ruby S. (2007). RESTful Web Services.REF OREILY API. EEUU:
O´Reilly
89
[26.] Bahit E. 2011. Scrum y eXtreme Programming. Buenos Aires.
[27.] Groussard T. (2012), Java 7: Fundamentos del Lenguaje Java. Barcelona España:
Ediciones ENI.
[28.] Barile, Margherita. Cartesian Plane. From MathWorld--A Wolfram Web Resource,[en
[29.] Weisstein, Eric W. Distance. From MathWorld--A Wolfram Web Resource.[en línea]
[31.] Universidad Rey Juan Carlos. Reconocimiento de Patrones. España: Universidad Rey
Juan Carlos
[33.] Lisa Barrehag, Viktor Mårdström (2012). Accelerating Success: A study of seed
[34.] Wells, D. (2013). Extreme Programming: A gentle introduction [En Linea]. Disponible
en http://www.extremeprogramming.org
90