Escolar Documentos
Profissional Documentos
Cultura Documentos
Computacin
Memoria del Proyecto Fin de Grado
Un electrocardigrafo inteligente
de bajo coste
Autor
2014
En primer lugar quisiera dar las gracias a mis directores, Iaki Inza y Carlos
Amuchastegui por confiar en este proyecto y ayudarme a llevarlo adelante.
Tambin quisiera agradecer a la empresa Mirakonta el apoyo en el diseo y fabricacin
de uno de los componentes hardware de este proyecto.
Gracias a mis padres, por apoyarme a lo largo de mi carrera y permitirme pasar dos
aos de ella en San Sebastin, para poder estudiar aquello que ms deseaba.
Agradezco el apoyo mis ms cercanos amigos, a los que he torturado con complicados
problemas surgidos durante el proyecto, Jorge, Iaki, Carlos y Mikel. Quisiera
agradecer especialmente a Mikel su compromiso en este proyecto y todo el tiempo que
ha pasado transmitindome una pequea parte de sus vastos conocimientos mdicos.
No me olvido de todos aquellos y aquellas que he tenido el placer de conocer a lo largo
de mi vida universitaria, en Bilbao y en San Sebastin, estudiantes y profesores.
Vosotros habis dado vida a mis cuatro aos de Ingeniera Informtica.
Quisiera mencionar a tres profesores en particular, que me han prestado consejo
cuando lo he necesitado y me han ayudado a llevar a cabo tareas que habran sido
imposibles sin ellos. Aitziber Atutxa, Jose Miguel Blanco y Txelo Ruiz. Gracias.
Tambin deseo recordar a todas aquellas personas que he conocido a travs de ITSAS.
Jams pens encontrar tanta gente increble en el mundo de las tecnologas libres.
Especialmente Aitor, Luis, Iker y Olatz.
Extiendo mis agradecimientos internacionalmente a Jir Fajmon. La ayuda
proporcionada para hacer funcionar las pruebas con amplificadores, cuando este
proyecto an era un concepto, es incalculable. Y las explicaciones sobre electrnica
prestadas fueron impecables.
Por ltimo te agradezco a ti, lector o lectora, que consultes esta memoria.
Probablemente no la estudiars en su totalidad, pero ya has demostrado tu inters por
un proyecto el cual significa mucho para mi.
Resumen
A lo largo de este proyecto se ha desarrollado un sistema de bajo coste para la toma
de electrocardiogramas y posterior visualizacin de los mismos en un dispositivo Android.
Adems se ha creado un mdulo inteligente capaz de realizar un diagnstico de manera automtica y razonada sobre los datos recogidos. El proyecto se ha realizado principalmente
sobre tecnologas abiertas: Arduino como componente central del sistema electrnico, Android para visualizar datos en una plataforma mvil y CLIPS como motor sobre el cual se
ha desarrollado el sistema experto que realiza el diagnstico.
Abstract
In this project a low-cost system has been developed for electrocardiogram reading and
visualization in an Android app. An artificial intelligence module was also created to generate an automated and reasoned diagnostic on the received data. The project has been
developed around open source technologies: Arduino as the base for the electronic system,
Android to access the information on a portable device and CLIPS as the engine for the
expert system which generates the diagnostic.
Laburpena
Proiektu honetan zehar, elektrokardiogramak lortzeko eta ostean Android gailu batean
bistaratzeko, kostu baxuko sistema bat garatu da. Horrez gain, jasotako datuetatik, diagnostiko automatikoa eta arrazoitua egiteko gai den modulu adimentsu bat sortu da. Nagusiki,
proiektu hau teknologia irekiekin diseinatu eta garatu da: Sistema elektronikoaren osagai
nagusi bezala Arduinoa erabili da, gailu mugikor batean datuak bistaratzeko Android sistema erabili da eta, diagnostikoak burutzeko, CLIPS motorean oinarritutako sistema-aditua
sortu da.
ndice
ndice
XI
Listado de figuras
XVII
Listado de tablas
XIX
1. Introduccin
2.2.2. Electrocardiografa . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3. Electrocardigrafos . . . . . . . . . . . . . . . . . . . . . . . . . .
11
12
12
13
3. Electrnica
15
17
3.1. Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
18
18
ndice
XII
3.1.3. Comunicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.1.4. Alimentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
22
22
3.2.2. Amplificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
26
30
32
4. Software, app
35
35
4.1.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
38
38
39
40
40
43
44
44
45
45
46
47
48
50
51
51
52
54
54
ndice
XIII
6. Sistema experto
II
57
57
6.1.1. CLIPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.1.2. Jess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
59
59
59
60
6.3.1. Plantillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6.3.2. Hechos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
6.3.3. Mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
6.3.4. Reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
66
Expansin y mejoras
7. Electrnica
67
69
69
69
70
71
71
71
72
72
8. Software, app
75
75
76
76
77
77
78
78
79
ndice
XIV
81
81
81
82
82
83
83
83
84
85
85
85
86
III
80
87
87
87
88
88
11. Conclusiones
91
93
93
95
95
11.4. Licencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
97
99
99
ndice
XV
105
109
115
Listado de figuras
2.1. Diagrama del corazn humano . . . . . . . . . . . . . . . . . . . . . . . .
10
11
12
24
24
25
25
26
27
29
30
30
37
37
48
53
55
84
XVIII
Listado de figuras
. . . . .
Analog
. . . . .
. . . . .
. . . . .
111
112
113
114
Listado de tablas
3.1. Ventajas y desventajas de la alimentacin por red elctrica . . . . . . . . .
3.2. Ventajas y desventajas de la alimentacin por bateras . . . . . . . . . . . .
21
22
64
86
96
Captulo 1
Introduccin
El objetivo de este proyecto consiste en crear un electrocardigrafo para tomar electrocardiogramas, grabaciones de la actividad elctrica del corazn, de manera sencilla. Los
electrocardiogramas podrn visualizarse en una aplicacin para dispositivos Android. La
app ser capaz de realizar un diagnstico, de manera automtica, sobre el estado del corazn del sujeto de quien se tome el electrocardiograma. En caso de que el corazn sufra
alguna alteracin, se listarn las posibles patologas cardiovasculares que el paciente pueda
sufrir.
El coste del electrocardigrafo deber ser reducido, para ser asequible a los colectivos
de estudiantes de medicina o aficionados a la electrnica y biologa. Los electrocardiogramas sern tomados a partir de cuatro electrodos contando as con las derivaciones I, II, III,
aVR, aVL y aVF. El diagnstico orientativo automatizado se realizar mediante tcnicas de
minera de datos o de sistemas expertos.
Motivacin
Para los estudiantes del campo de la informtica no resulta complicado practicar y mejorar conocimientos sobre un rea, e incluso crear nuevos productos o servicios a partir de
ellos. Esto es posible gracias a unos requisitos reducidos: un ordenador, acceso a la red elctrica y acceso a Internet. Los estudiantes de otros campos no tienen esta oportunidad, pero
la necesidad de llevar a la prctica los conocimientos que adquieren a lo largo de su carrera
es igualmente crtica.
Uno de estos casos es el de los futuros licenciados en medicina, en especial, aquellos
interesados en cardiologa. Los conocimientos de lectura e interpretacin de electrocardiogramas tienen un fuerte componente heurstico nicamente adquirible y mejorable a travs
Introduccin
de la lectura de stos. Lamentablemente, las mquinas usadas para tomar electrocardiogramas no son asequibles econmicamente para un estudiante, y en el mbito universitario
no se les permite usarlos libremente. Por estas razones resulta muy difcil para un futuro
licenciado en medicina mejorar su formacin en electrocardiografa por cuenta propia.
Este proyecto pretende acabar con este problema.
Alcance
El alcance del proyecto se divide en tres grandes sistemas que trabajarn conjuntamente
para generar el resultado final. Estos sistemas podrn ser desarrollados en serie, segn se
presentan, o de manera paralela.
Un sistema de toma de bioseales cardacas que cumpla los siguientes requisitos:
Toma de datos de cuatro electrodos
Conversin de datos a formato digital
Codificacin y envo inalmbrico de datos en tiempo real
Una app para dispositivos Android que cumpla los siguientes requisitos:
Recepcin de datos de forma inalmbrica y decodificacin de los mismos en
tiempo real
Visualizacin de los datos en tiempo real
Realizacin de un diagnstico orientativo a partir de los datos recibidos
Compatibilidad garantizada con la tablet Nexus 7, modelo 2012
Un sistema de diagnstico automatizado que cumpla los siguientes requisitos:
Integrado en una app para dispositivos Android
Capacidad de realizar un diagnstico en menos de un minuto
La mxima precisin posible
Adems el sistema final deber poder ser adquirido y ensamblado por el usuario por un
precio menor o igual a 50 euros, excluyendo el valor de los componentes desechables.
Estructura de la memoria
Este documento est estructurado en cuatro grandes apartados.
Al comienzo de la memoria pueden encontrarse el ndice, listado de figuras y listado
de tablas. Los dos captulos contenidos en el primer apartado presentan una breve introduccin al proyecto y los conocimientos del rea de la electrocardiografa necesarios para
comprender correctamente esta memoria.
El segundo apartado recoge la informacin correspondiente al desarrollo del proyecto.
ste se ha dividido en cuatro captulos, y cada uno presenta una de las cuatro grandes fases
del proyecto.
En el tercer apartado se renen todos los aspectos de mejora y expansin del proyecto.
Algunos de estos aspectos se encontraban en la planificacin inicial y no pudieron ser implementados. Otros son posibilidades que se prestan a ser incluidas en futuras iteraciones
del proyecto de manera natural.
El ltimo apartado contiene dos captulos: el primero describe las conclusiones del proyecto y el segundo algunos aspectos de la gestin del mismo. Al final del documento pueden
encontrarse la bibliografa y los anexos.
Captulo 2
Conocimientos del entorno
En este captulo se resumen los conocimientos bsicos sobre el entorno de este proyecto
que deben conocerse para comprender esta memoria y el funcionamiento del prototipo creado. Los temas aqu descritos han sido ya ampliamente estudiados y existe gran cantidad de
informacin accesible si se desea una formacin ms detallada. La informacin contenida a
lo largo de los siguientes apartados se encuentra fuertemente resumida.
2.1.
2.1.1.
Los tejidos del cuerpo humano precisan oxgeno y otros elementos esenciales para funcionar correctamente. El oxgeno es introducido en el organismo humano a travs de los
pulmones, pero debe ser transportado desde dicho lugar a los receptores del oxgeno. Para
ello existen los eritrocitos o glbulos rojos. Estos elementos, compuestos principalmente
por hemoglobina, son capaces de anexionarse las molculas de oxgeno existentes en el aire disponible en los pulmones y liberar dichas molculas en los tejidos. Los eritrocitos se
encuentran en la sangre.
El corazn es un rgano muscular cuya funcin es el bombeo de sangre, y por tanto
eritrocitos, a travs de los vasos sanguneos del cuerpo humano. A travs de estos vasos y
capilares los eritrocitos llegan a todos los lugares del cuerpo, alimentando con oxgeno las
clulas que forman los tejidos.
2.1.2.
2.1.3.
Un fallo en este rgano puede tener consecuencias fatales. Sin oxgeno, los tejidos del
cuerpo humano sufrirn una isquemia, en esta situacin puede que las clulas dejen de
cumplir sus funciones debido a la incapacidad de mantener su metabolismo. Si la situacin
se prolonga, las clulas podran morir dando lugar a una necrosis. Las consecuencias de las
isquemias y necrosis son amplias y los efectos de estas varan segn la zona en la que se
den.
Como puede verse en [22] las patologas cardiovasculares representaron la segunda causa de muerte en Espaa. Dicha tendencia continua manteniendo su puesto hoy en da en los
pases del primer mundo.
2.2.
Principios de la electrocardiografa
2.2.1.
capasos natural propio del corazn. Los caminos que siguen los impulsos elctricos en el
corazn se pueden observar en las Figuras 2.2 y 2.3.
Fig. 2.3 Camino del impulso elctrico. En las primeras cuatro imgenes se observa la descarga del nodo sinusal y la consecuente contraccin de las aurculas. A partir de la quinta
imagen se observa la descarga del nodo atrioventiricular, contraccin de los ventrculos y
relajacin posterior de los mismos.
Fuente: commons.wikimedia.org, Kalumet.
2.2.2.
Electrocardiografa
RA
LA
RL
LL
Fig. 2.4 Posiciones de los electrodos en el paciente. Junto a cada electrodo se sita su nombre
segn el sistema estadounidense. Los electrodos del pecho se nombran V1 a V6 de derecha
a izquierda desde la perspectiva del sujeto.
Fuente: commons.wikimedia.org
10
Como ya se ha indicado antes, si el nmero de electrodos aumenta, tambin lo har el nmero de derivaciones que se puedan calcular, y junto a ellas la informacin que se obtiene
del corazn. Cada nueva derivacin aporta un nuevo punto de vista sobre el corazn, pudiendo ver ste desde debajo hacia arriba (eje coronal), desde atrs hacia delante (eje axial),
etctera. Como referencia se muestra en la Figura 2.6 un electrocardiograma completo de
un sujeto.
Los electrocardiogramas se presentan en un papel con una cuadrcula milimtrica. Sobre esta cuadrcula se superpone otra con cuadrados de cinco por cinco milmetros. Cada
cuadrado de 1 milmetro representa 40 milisegundos en el eje de las abcisas (eje horizontal)
y 1 milivoltio en el eje de las ordenadas (eje vertical). En la bilbiografa y campo mdico
se hace un uso extensivo de las dimensiones geomtricas, dejando de lado las magnitudes
fsicas que representan.
11
2.2.3.
Electrocardigrafos
Las mquinas que capturan electrocardiogramas son llamadas electrocardigrafos. Dichos aparatos consisten en un aparato principal, del cual provienen unos cables para conectar
los electrodos. Dicho aparato suele contener una pantalla para visualizar el electrocardiograma o un dispositivo de impresin, el cual imprime el electrocardiograma en tiempo real o en
diferido sobre el ya mencionado papel estandarizado. Otras funcionalidades adicionales de
los electrocardigrafos pueden ser el envo de datos a un computador en diferentes formatos
o la realizacin de un diagnstico preliminar de forma automtica.
Los cables que provienen del electrocardigrafo se conectan a unos electrodos. Existen
mltiples tipos de electrodos, pero slo se mencionarn aqu los ms comunes. Los electrodos desechables son unas almohadillas autoadhesivas que contienen un gel conductor y
un borne. stos se adhieren a la piel del paciente en una serie de posiciones estandarizadas.
A travs del gel conductor y el borne las seales elctricas que surgen del corazn pueden
llegar a los cables del electrocardigrafo. Estos cables suelen estar codificados mediante un
cdigo basado en colores para saber inmediatamente a qu electrodo deben de ser conectados.
Las seales elctricas que toman los electrodos en la piel del paciente suelen ser del
orden de decenas o centenares de milivoltios. Las caractersticas exactas de la seal en el
electrocardigrafo dependen del tipo de electrodo usado durante la medicin.
Las empresas fabricantes de electrocardigrafos apenas liberan informacin tcnica sobre sus productos pblicamente, de manera que es difcil conocer cmo funcionan estas
12
mquinas internamente. La mayora de ellas toman datos de hasta 16 derivaciones simultneamente a 500 muestras por segundo (500Hz). Algunas de las mquinas de mayor nivel incluyen funcionalidades adicionales, como almacenamiento de datos, la posibilidad de
transmisin de datos o realizacin de un registro Holter.
2.3.
A continuacin se presentan las dos fases bsicas aplicadas por los expertos para el
uso de electrocardiogramas: Primero se realiza una interpretacin del mismo y despus se
procede a realizar un diagnstico basado en la morfologa de la onda.
2.3.1.
Interpretacin de electrocardiogramas
Como se puede ver en la Figura 2.5 en la pgina 10, las seales elctricas del corazn
pueden ser etiquetadas. Para etiquetar los electrocardiogramas se usa un algoritmo estndar
y la nomenclatura propuesta por Willem Einthoven. Esta metodologa aplicable a la derivacin I es extrapolada al resto de derivaciones para realizar el etiquetado de las mismas. En
la Figura 2.7 se muestra un pulso en la derivacin I completamente etiquetado.
2.3.2.
13
El electrocardiograma es usado por especialistas mdicos para detectar posibles alteraciones en el corazn como arritmias, infartos, bloqueos de rama, alteraciones electrolticas
o fallos en el estado fsico del corazn, entre otros. Existen mltiples recursos, como [10]
que contienen diagramas de bloques o algoritmos para realizar un diagnstico sobre el electrocardiograma recibido de un paciente.
A modo de ejemplo se muestra a continuacin una cita adaptada del libro referenciado
en el prrafo anterior:
Para detectar una Q de necrosis:
Onda Q significativa es un milmetro de ancho (un cuadro pequeo), el
cual es .04 seg. de duracin
O es una onda Q 1/3 de la amplitud (o ms) del complejo QRS
Otro ejemplo similar:
Para detectar una hipertrofia ventricular izquierda:
1. Sumar los valores de R en la derivacin V5 y S en la derivacin V1
2. Si la suma es superior a 35 milmetros (equivalente a 3,5 milivoltios) entonces se da la alteracin
Dada la naturaleza de este tipo de diagnsticos es posible automatizar dicho proceso.
Existen algunas empresas fabricantes de electrocardigrafos como GE Healthcare o Philips
que han invertido en investigacin para crear algoritmos con este cometido. GE Healthcare
posee el algoritmo Marquette 12 SL y Philips posee el algoritmo DXL. Lgicamente, debido
al valor y secreto industrial de estos algoritmos, la informacin accesible pblicamente sobre
su funcionamiento es nula.
Parte I
Desarrollo del proyecto
Captulo 3
Electrnica
La creacin de un electrocardiograma comienza por la lectura de pequeas seales elctricas de un sujeto. Dichas seales son amplificadas y filtradas para poder ser recibidas
correctamente. Despus de convierten a formato digital, para poder procesarlas fcilmente
en software. Por ltimo sern enviadas por va inalmbrica a la app Android que se ejecutar
en una tablet.
El sistema electrnico se ha dividido en la placa de adquisicin de datos y la base. La
primera toma las seales del paciente, las amplifica y filtra, despus las enva al sistema
base. ste ltimo convierte la seal a formato digital y realiza el envo de la seal.
3.1.
Arduino
Como base del sistema electrnico se ha utilizado una placa Arduino (o Arduino a solas).
Los creadores de Arduino definen sus placas como sistemas de prototipado electrnico de
bajo coste y fciles de usar, dirigidas a aficionados de la electrnica, artistas y diseadores,
entre otros. La mayora de las placas Arduino estn basados en la familia de chips ATmega
de Atmel Corporation.
En este proyecto, la placa Arduino se encarga de la recepcin de las seales biolgicas
en formato analgico, conversin a formato digital y por ltimo envo de los datos a la
app complementaria que estar siendo ejecutada en una tablet. A lo largo de las prximas
subsecciones se describe como se ha llevado a cabo la implementacin de estos sistemas y
la alimentacin de la placa Arduino.
El modelo de placa Arduino utilizado en el proyecto ha sido el Arduino UNO R3. Esta
placa est basada en el chip ATmega328 de Atmel Corporation. Se puede consultar ms
informacin sobre dicha placa en su pgina web [3].
18
3.1.1.
Electrnica
Open hardware
Resulta interesante destacar que las placas Arduino son uno de los ejemplos ms prominentes de hardware libre. Esto significa que todos sus diseos son pblicamente accesibles,
lo cual permite que cualquier fabricante de componentes electrnicos, con suficiente capacidad, pueda crear sus propias placas basadas en Arduino y posteriormente, comercializarlas.
En la seccin 7.5 en la pgina 72 se detallan las ventajas de este sistema de cara al abaratamiento de este proyecto.
3.1.2.
Conversor analgico-digital
3.1 Arduino
19
Frecuencia
La frecuencia indica el nmero de conversiones que puede realizar el ADC por unidad
de tiempo. El conversor del chip ATmega328 necesita 13 ciclos para realizar una conversin
normal y utiliza la frecuencia de oscilacin del cristal oscilante de la placa Arduino reducida
a travs de un premultiplicador.
Por defecto el valor de frecuencia del cristal oscilante es de 16MHz y el valor del premultiplicador es divisin entre 128. Esto quiere decir que el ADC funciona a 16.000KHz/128
= 125KHz. A 13 ciclos por conversin el conversor puede convertir 9600 valores al segundo: 125KHz/13 = 9,6KHz. Debe tenerse en cuenta que estos resultados se obtienen con un
uso correcto del conversor analgico-digital. Es posible reducir el valor del divisor en el
premultiplicador para aumentar el rendimiento del conversor, pero a cambio se reduce la
precisin del mismo.
Para establecer la frecuencia de muestreo para la obtencin de un electrocardiograma
se estudian cuales son los valores mximo y mnimo ms adecuados para la tarea presente.
El valor mximo viene dado por las limitaciones fsicas del ADC. De cara al ECG es indiferente que la frecuencia sea demasiado elevada, la nica consecuencia de este hecho es
un supervit de informacin. Para hallar el valor mnimo de muestreo debe estudiarse que
complejo, intervalo o segmento del ECG es el ms rpido y cuantos puntos hay que tomar
sobre l para evitar la prdida de informacin.
La parte ms breve y a la vez ms crtica de un ECG son los complejos QRS, stos tienen
una longitud de 100 a 200 milisegundos. Aplicar una frecuencia de muestreo de 500Hz, al
igual que los electrocardigrafos profesionales, resulta suficiente para obtener la informacin deseada sin exceder los lmites del ADC. Por estas razones el valor de frecuencia de
muestreo utilizado ser 500Hz o 500 muestras por segundo.
Actualmente el prototipo toma y convierte mediciones de un solo electrodo, pero en el
futuro podra hacerlo de ms, tres electrodos segn el alcance original propuesto. En este
caso el ADC convertira 500 muestras por segundo por electrodo, luego 1500 muestras en
total. Este valor sigue estando por debajo de los 9600 mximos, luego sera posible ampliar
la informacin recogida sin modificar los parmetros del ADC del Arduino.
3.1.3.
Comunicacin
El chip ATmega328 usado por el Arduino cuenta con funcionalidad de comunicacin serie basada en USART, Universal Synchronous and Asynchronous serial Receiver and Transmitter. Las libreras de Arduino simplifican extremadamente su funcionalidad, haciendo el
20
Electrnica
(3.1)
Velocidad de comunicacin
Debe tenerse en cuenta que la velocidad de transmisin de los datos en una aplicacin como esta es extremadamente importante. Todos los datos recogidos deben enviarse
en tiempo real del Arduino a la app complementaria. Si los datos no pueden ser enviados
a suficiente velocidad, entonces los buffers del chip ATmega328 acabarn desbordndose,
conllevando una prdida de informacin.
Como ya se ha mencionado en la subseccin 2.2.3 en la pgina 11, un electrocardigrafo
profesional puede tomar del orden de 500 muestras por segundo sobre varios electrodos. En
la implementacin actual de este proyecto se toman 500 muestras por segundo sobre una
derivacin cardaca, y se envan de la manera indicada en la anterior subsubseccin.
Cada una de las cifras de cada valor tomado se codifica como un carcter, en la amplia
mayora de los casos el valor ledo contendr tres cifras. Al sumar el carcter de control, el
total de caracteres enviados por cada lectura asciende a cuatro.
Cada carcter se codifica como un byte, es decir ocho bits. 500 lecturas por segundo generan 2000 bytes de informacin, o 16.000 bits. El primer valor estndar de tasa de baudios
superior a 16.000 es 19.200 baudios. De todas formas, debido al overhead aadido por la
21
3.1 Arduino
placa Arduino a travs de las funciones de transmisin de datos, la tasa de baudios utilizada
en el prototipo final del proyecto es 57.600 baudios.
Bluetooth
En este proyecto se ha conectado un mdulo Bluetooth genrico (JY-MCU, basado en
el chip HC-06) directamente a la placa Arduino a travs de los pines TX y RX para dotar a
la placa de comunicacin inalmbrica. El mdulo Bluetooth ha sido configurado para usar
la misma tasa de baudios que la placa Arduino a travs del Conjunto de comandos Hayes.
El mdulo Bluetooth acta de forma transparente, de manera que toda la programacin
necesaria para enviar y recibir datos es implementada en la placa Arduino.
En la subseccin 4.3.2 en la pgina 39 se indica como la app complementaria recibe los
datos de este mdulo Bluetooth.
3.1.4.
Alimentacin
La placa Arduino debe de ser alimentada mediante electricidad para poder funcionar.
Hay mltiples formas de alcanzar este objetivo, como el suministro de electricidad a partir
de una conexin a la red elctrica (usando el conversor apropiado) o el uso de bateras.
En las Tablas 3.1 y 3.2 se muestran las ventajas y desventajas de cada uno de los mtodos
candidatos.
Tabla 3.1 Ventajas y desventajas de la alimentacin por red elctrica
Red elctrica
Ventajas
No se agota con el uso del aparato
Disponible en la mayora de los lugares en
los que se tomara un ECG
Desventajas
Precisa un circuito de proteccin para el
paciente
La electricidad de corriente alterna debe
de ser convertida a continua para poder ser
usada aqu
22
Electrnica
Tabla 3.2 Ventajas y desventajas de la alimentacin por bateras
Bateras
Ventajas
Producto autocontenido en una sola
unidad: mayor portabilidad y sencillez
Se evita riesgo de shock elctrico
Disponible globalmente bajo valores
estndar (Bateras AA, AAA, 9V, etctera)
Las bateras no precisan una
transformacin o regulacin de su salida
Desventajas
Necesita recambios cada cierto tiempo
Dadas las claras ventajas del uso de bateras sobre el uso de la red elctrica como alimentacin del electrocardigrafo, son stas las elegidas como fuente de alimentacin en el
prototipo final. Se ha usado un pack de bateras compuesto por 5 pilas AA, para obtener un
voltaje total de 7,5 voltios. stas se conectan al Arduino UNO, el cual cuenta con los circuitos de regulacin necesarios para adaptar los valores de voltaje a los valores adecuados para
el resto de componentes electrnicos.
3.2.
3.2.1.
Ruido elctrico
23
contabilizar la red elctrica, aparatos que precisen alto voltaje (lmparas fluorescentes) o
emisores de radiofrecuencia, como mviles o puntos de acceso WiFi.
La fuente ms predominante de ruido suele ser la red elctrica, presente en la mayora
de los edificios. Las fases contenidas en dicha red oscilan a una frecuencia de 50Hz. Existen
mltiples mtodos para prevenir o eliminar la influencia del ruido elctrico, aunque rara vez
son totalmente efectivos.
El mtodo de prevencin ms extendido es denominado apantallamiento. Este mtodo consiste en recubrir el cable que transporta la seal que se desea leer con una malla o
tubo metlico conectado a masa. Dicha malla o tubo acta como una Jaula de Faraday,
previniendo la intromisin de ruidos.
El nico mtodo de eliminacin de ruido, una vez que ste se ha introducido en la seal,
es llamado filtrado. Hoy en da existe una gran extensin de tcnicas de filtrado, aplicables
en hardware, software, mediante mtodos matemticos o simulacin de circuitos.q
Ruido en la electrocardiografa
Dado que el potencial elctrico del ruido es muy pequeo ste no afecta a la mayora de
los circuitos. En este caso no es as, ya que el potencial de un ECG se sita en el mismo rango
de valores que el de las fluctuaciones ruidosas. En los electrocardiogramas brutos, aquellos
a los cuales no se les ha aplicado ninguna tcnica de filtrado, pueden darse mltiples tipos
de ruido, algunos de ellos bien conocidos y eliminables y otros que deben de ser evitados
en primer lugar.
Por una parte est el ruido en los 50Hz insertado en la onda por la red elctrica. No hay
nada que se pueda hacer para evitar este fenmeno, ms que usar unos cables apantallados
de gran calidad para conectar los electrodos. Un prototipo alimentado por bateras generado
a lo largo de este proyecto tomaba la seal mostrada en la Figura 3.1. En dicha Figura se
observa la existencia de una gran cantidad de picos consecutivos, pero si nos fijamos en la
parte central de la onda entre se puede vislumbrar un ECG.
En la Figura 3.2 se muestra la interferencia introducida por un sistema de conversin
AC-DC de baja calidad. En este caso el prototipo estaba conectado a la red elctrica a
travs de un puerto USB en un porttil enchufado a la red elctrica. En este caso el ECG es
irreparable, debido a que el ruido no es uniforme.
Ms all del ruido introducido por al red elctrica, de manera directa o indirecta, existe el
ruido generado por aparatos de radiofrecuencia. Para mitigar lo mximo posible la aparicin
de interferencia causada por estos aparatos es recomendable apartarlos de la zona donde se
fuera a tomar el ECG antes de llevar a cabo la medicin.
24
Electrnica
Fig. 3.1 ECG sin conexin a la red elctrica con ruido de 50Hz con 3 complejos QRS
subrayados en negro
Fig. 3.2 ECG con ruido de origen AC con 3 complejos QRS subrayados en negro
El movimiento de los msculos del sujeto al cual se le est tomando un electrocardiograma tambin introduce ruido en el mismo. Tngase en cuenta que los dems msculos,
al igual que el corazn, tambin utilizan reacciones qumicas que generan seales elctricas
para moverse. La nica forma de evitar esta componente ruidosa es que el paciente est en
un estado de reposo y evite cualquier movimiento durante la toma del ECG.
Por ltimo debe considerarse un movimiento muscular inevitable: el generado por la
respiracin. El ruido causado por este fenmeno no se puede evitar, ya que conllevara consecuencias negativas para el sujeto del cual se est tomando el electrocardiograma. Afortunadamente se sabe que la respiracin introduce ruido en forma de onda sinusoidal a muy
baja frecuencia, en torno a los 0,5Hz o inferior. Esto simplifica la eliminacin de la componente respiratoria. El ruido elctrico introducido por la respiracin puede verse en la Figura
3.3, su efecto es un ligero desplazamiento del ECG en el eje de las ordenadas.
3.2.2.
Amplificacin
Las seales que se toman de los electrodos son demasiado pequeas para la sensibilidad
del mdulo ADC de la placa Arduino, como ya se ha indicado en la seccin 3.1.2 en la
pgina 18.
La nica solucin al problema consiste en aumentar la magnitud del voltaje de las bioseales. Para ello se debe usar un circuito de amplificacin. Los circuitos de amplificacin
25
Fig. 3.3 ECG con ruido causado por respiracin, la lnea naranja representa el desplazamiento de la onda
cuentan con un amplificador y otros componentes electrnicos para conformar una etapa de
amplificacin. Existen diferentes tipos de etapas de amplificacin: sumadoras, diferenciales,
inversoras, no inversoras, etctera.
Como ya se ha mencionado en la subseccin 3.2.1 en la pgina 23, tanto las bioseales
como el ruido, se encuentran en el mismo rango de valores de potencial. Esto hace que la
seal no pueda ser amplificada en su totalidad, ya que el ruido tambin sera amplificado, lo
cual es negativo. Para conseguir amplificar nicamente la seal de datos se deber usar un
tipo de etapa de amplificacin especfica.
Una etapa de amplificacin configurada como amplificador diferencial ofrece buenos
resultados. Esta etapa aumenta la diferencia entre las dos seales de entrada. Si se conectan
el electrodo del brazo izquierdo y el electrodo del brazo derecho al amplificador, el resultado
es la seal correspondiente a la derivacin I.
El hecho de amplificar la diferencia entre dos seales ayuda con la eliminacin del ruido,
el razonamiento tras esta asercin es el siguiente: Las seales de ambos electrodos conten-
26
Electrnica
drn las mismas fluctuaciones causadas por el ruido a la entrada del amplificador. Si slo se
amplifica la diferencia, las fluctuaciones del ruido quedarn descartadas, eliminndolas en
la onda presente a la salida del amplificador. El efecto aqu descrito puede verse en la Figura
3.5.
Fig. 3.5 Eliminacin del ruido por filtrado diferencial. La onda en la mitad derecha se genera
a partir de la resta de la onda A menos la onda B. Ntese la ausencia de ruido en el resultado.
Aunque aqu no se muestren las grficas a escala, la onda resultante es de mayor magnitud
que A y B, ya que ha sido amplificada.
Fuente: commons.wikimedia.org
Conectar los electrodos del paciente a las entradas del amplificador diferencial directamente no es correcto. La impedancia de entrada sera demasiado baja, causando el movimiento de corriente por los cables. Este movimiento de corriente deteriorara la seal que
se desea tomar. Para aumentar la impedancia de entrada, manteniendo el mismo comportamiento de amplificacin de la diferencia entre dos ondas, se usa una combinacin de amplificadores operacionales que forman una etapa llamada amplificador de instrumentacin.
En el amplificador de instrumentacin la impedancia de entrada es infinita, lo cual evita
la aparicin de corrientes en los cables que se conectan a los electrodos. Esto hace que las
seales que forman el electrocardiograma queden intactas durante la fase de amplificacin.
3.2.3.
A lo largo de este proyecto se han probado tres diferentes placas de adquisicin de datos.
Estas placas han sido diseadas con el propsito de tomar electrocardiogramas sencillos y
cuentan con la circuitera de amplificacin y filtrado necesaria para obtener un ECG til.
Todas estas placas tienen como objetivo leer la seal correspondiente a la derivacin I
respecto a la referencia de voltaje del sujeto sobre el cual se est obteniendo el ECG, para
27
28
Electrnica
29
30
Electrnica
Fig. 3.9 ECG de la placa Olimex con pinzas y electrodos desechables (Derivacin I)
corazones que no debieran presentar los problemas asociados a la onda anmala y que stas
se rigen por un patrn previsible. De todas formas, dada la complejidad de la placa Olimex
no se ha podido identificar el circuito causante de dichas anomalas en la onda.
3.2.4.
Un electrocardiograma puede interpretarse como una onda con componentes en diferentes frecuencias, este es el mejor enfoque de cara a eliminar el ruido, ya que ste ltimo
tambin puede ser interpretado como componentes a ciertas frecuencias que forman parte de
una onda. Si se puede distinguir que frecuencias representan el electrocardiograma y cuales
el ruido, stas ltimas podran eliminarse para obtener nicamente el electrocardiograma.
El filtrado de las componentes indeseadas puede realizarse por hardware o software.
El filtrado por hardware no ha sido estudiado de cara a este proyecto, ms all de lo expuesto en la subseccin 3.2.2. Las placas presentadas en la anterior subseccin utilizan una
gran cantidad de mtodos internamente para evitar el ruido y poseen filtros por hardware,
aunque estas tcnicas no han resultado totalmente efectivas.
El filtrado por software se basa en el procesamiento posterior a la captacin de la
seal, una vez que sta ha sido digitalizada. ste ha sido el tipo de filtrado trabajado durante
el proyecto de cara a la mejora de la seal, partiendo de los datos imperfectos generados por
31
32
Electrnica
frecuencias. En este segundo dominio pueden verse que frecuencias forman la onda y si se
poseen suficientes conocimientos matemticos, entonces se puede transformar la onda.
En teora, a travs de esta metodologa se pueden eliminar las frecuencias molestas en
el electrocardiograma y reconstruir la onda original sin ellas. La prctica resulta ms complicada y no se obtuvieron los resultados esperados. Dada la complejidad de este tipo de
filtrado y el poco tiempo disponible para estudiarlo se opt por descartarlo e investigar otros
mtodos en su lugar.
Otros tipos de filtrado
Para eliminar el ruido elctrico introducido por la respiracin se consider la aplicacin
de un filtro Butterworth. Este filtro ha sido elegido debido a un interesante estudio que trata
sobre la aplicacin de filtros paso bajo que daen lo menos posible la onda P de los ECGs
[6]. Del citado artculo se extrae la conclusin de que un filtro Butterworth bidireccional de
cuarto orden con una frecuencia de corte de 0,5Hz es el ms adecuado para esta tarea. A
partir de una herramienta online de creacin de filtros [11] se obtuvo una implementacin
en cdigo C, la cual fue adaptada a Java.
Los resultados fueron idnticos al de la simulacin de un filtro RC paso alto. La onda
tomaba el valor cero como asntota, con las negativas consecuencias que ello conlleva.
Filtrado por media mvil
El filtro ms efectivo aplicado a lo largo del desarrollo del proyecto ha sido un filtrado
realizado mediante la aplicacin de una variante de la media mvil a los valores ledos. Cada
valor tomado era transformado a la media de si mismo y los 19 valores anteriores (bajo una
frecuencia de muestreo de 1KHz). La cantidad de valores tomada para realizar la media se
corresponde con 20 milisegundos, exactamente el valor en el cual flucta el ruido elctrico
de 50Hz. Los resultados de este tipo de filtro resultaron ser excepcionales, ya que, aunque no
se eliminan todas las frecuencias de las componentes ruidosas, s se elimina la ms molesta.
Se intent aplicar este tipo de filtrado al ruido de baja frecuencia, pero no fue posible
debido a que la frecuencia que conforma dicho ruido se encuentra por debajo de 1Hz y es
variable entre diferentes sujetos o incluso en un mismo sujeto en diferentes situaciones.
3.2.5.
Eleccin final
La razn de haber estudiado todas estas posibilidades y las mltiples combinaciones entre placas de datos ha consistido en encontrar la mejor combinacin de placa de adquisicin
33
Captulo 4
Software, app
Una vez definido el sistema de adquisicin de datos puede intuirse que en alguna parte debern poder visualizarse o tratarse dichos datos. Para resolver este problema se ha
desarrollado una aplicacin para dispositivos Android. La app creada permite visualizar un
electrocardiograma en tiempo real. Adems incluye un sistema de diagnstico automatizado, implementado mediante un motor de inferencia. El motor de inferencia se estudia en el
Captulo 6.
Durante el desarrollo de la app se ha prestado especial atencin a las directivas de diseo
y programacin de Google y se han investigado intensivamente todas las formas disponibles
para crear cada caracterstica de la misma, de esta manera siempre se ofrece al usuario la
mejor experiencia posible.
4.1.
Eleccin de la plataforma
4.1.1.
Hardware
Para poder mostrar los datos recogidos por la placa de adquisicin de datos y ejecutar
un diagnstico sobre el ECG se precisa una plataforma con capacidad computacional suficiente. Un computador personal podra ser la plataforma ptima, pero en la actualidad se
presenta un competidor capaz de igualarlo en cuanto a rendimiento y superarlo en cuanto a
36
Software, app
4.1.2.
Software
Dentro del mercado de las tablets existen dos grandes ecosistemas disjuntos, el ecosistema iOS creado por la empresa Apple y el ecosistema Android creado por Google. Bajo
iOS se encuentran los diferentes modelos de la tablet iPad de Apple. Por otra parte, dentro
del ecosistema Android existen mltiples fabricantes de tablets, ya que Google no controla
el desarrollo de nuevo hardware. El hecho de que existan mltiples fabricantes genera un
sistema competitivo en el cual los dispositivos avanzan rpidamente y el coste de compra
desciende ao tras ao.
Hoy en da es prcticamente imposible desarrollar una aplicacin de alta calidad para
dispositivos iOS sin realizar un desembolso econmico considerable, lo cual no es asequible
en este contexto.
Desarrollar para Android resulta extremadamente sencillo y barato, tan solo es necesario
descargar y poner a punto el Android Software development Kit(Android SDK), pblica y
gratuitamente accesible. Adems desde la pgina web para desarrolladores tambin est
disponible una versin del entorno de desarrollo (IDE) Eclipse preparada para desarrollar
para dispositivos Android.
Adems, al disponerse de una tablet Android es posible depurar la aplicacin en un
dispositivo real. Al usar un entorno real, a diferencia de uno simulado, se ha podido probar
la integracin con la placa Arduino.
4.2.
37
38
Software, app
mente se diferencian en las acciones que realizan tras tomar y filtrar un dato y las acciones
posteriores a la adquisicin de datos. En la implementacin esta comparticin de cdigo se
ha realizado mediante una superclase.
4.3.
La creacin de la app ha sido un proceso extenso, aunque no complicado. Aun as existen algunos aspectos de la implementacin que deben recibir especial atencin de cara a su
documentacin, debido a lo especficos que resultan. Entre ellos se encuentran un mecanismo de filtrado en tiempo real para poder eliminar de los datos las interferencias existentes,
un sistema Bluetooth slido y una interfaz creada mediante tcnicas punteras.
4.3.1.
Los datos provenientes del Arduino contienen una componente ruidosa, como ya se ha
explicado a lo largo del captulo anterior. Para eliminar el ruido se aplica un filtro basado en
una variante de la media mvil, ya que ha demostrado ser el filtro ms efectivo de todos los
estudiados.
La tcnica aplicada para realizar el filtrado se basa en el siguiente pseudocdigo:
4.3.2.
39
Comunicacin Bluetooth
40
4.3.3.
Software, app
Las aplicaciones Android trabajan con un nico hilo de ejecucin principal. Las interfaces grficas se ejecutan sobre este hilo, junto al resto de tareas que ejecuta la aplicacin.
Mientras las tareas a ejecutar sean ligeras y no bloqueantes, la app ser capaz de responder
a la interaccin del usuario, en caso contrario se bloquear.
La creacin de puertos (sockets) Bluetooth y la recepcin continua de datos son tareas
pesadas y probablemente bloqueantes, de manera que deben de ser trasladadas fuera del hilo
de ejecucin principal para garantizar al usuario una experiencia fluida. Existen mltiples
maneras de llevar esto a cabo en Android, como el uso de servicios, creacin de hilos manual o uso de objetos de la clase AsyncTask. La clase Asynctask gestiona la creacin y
ejecucin de un hilo de trabajo secundario y es extendible para crear clases derivadas con
cdigo personalizado. En la aplicacin que aqu se estudia se han aplicado AsyncTasks para
gestionar la lectura de datos del mdulo Bluetooth, debido a su facilidad de uso.
Realizar las operaciones pesadas en un hilo secundario ha permitido mantener una interfaz grfica capaz de reaccionar frente al usuario en todo momento y dibujar un electrocardiograma en la pantalla en tiempo real.
4.3.4.
Interfaz grfica
Durante el diseo e implementacin de la interfaz grfica se han seguido las guas de diseo de Android y consejos de programacin de Google para crear una aplicacin moderna
y funcional. Para la creacin de interfaces modulares se han aplicado las clases pertenecientes al estado del arte actual de la plataforma Android, los Fragment. La creacin de mens
interactivos se ha realizado mediante un objeto de la clase NavigationDrawer. Por ltimo, para representar el electrocardiograma en tiempo real se ha creado una implementacin
personalizada a partir de la clase View.
Las interfaces grficas en Android pueden ser definidas en un archivo XML y mostradas
por la aplicacin en ejecucin, o creadas dinmicamente mediante cdigo. En este proyecto
se ha hecho uso de ambos enfoques.
Fragments
41
La razn principal por la que se han usado objetos Fragment en esta aplicacin ha sido
la integracin de un NavigationDrawer, presentado en la prxima subseccin, ya que este
slo funciona con ellos. La utilizacin de estas clases hara sencillo portar la aplicacin a
diferentes dispositivos en un momento futuro.
NavigationDrawer
El NavigationDrawer es un men oculto que permite navegar entre las diferentes funcionalidades de la aplicacin. Para poder interactuar con el men este se debe hacer visible
mediante un gesto, arrastrar un dedo desde el borde izquierdo de la pantalla hacia el centro.
En dicho men se presentan las diferentes funciones que presenta la aplicacin, en este caso,
visualizar un ECG en tiempo real o realizar un diagnstico.
Una vez que el usuario visualiza el men podr seleccionar una de las opciones mediante
un toque sobre la que desee. En ese momento el men se ocultar y se mostrar la interfaz
correspondiente a la accin escogida.
ElectroWaveView
Para dibujar el electrocardiograma en tiempo real se ha extendido la clase View. Esta
clase de las libreras de Android representa el componente ms bsico de las interfaces
grficas. En la extensin personalizada de View se ha usado el rea del componente grfico
como lienzo sobre el cual se dibujan los pixels deseados para representar en un ECG. Los
pixels que se deseen representar en pantalla deben de ser listados de manera explcita, para
ello de introducen en un array pares de coordenadas X/Y. Ms adelante se transfiere el array
a la funcin encargada de mostrarlos en pantalla.
A este objeto se le ha aadido un simple cdigo que aplica un relacin de linealidad
entre los valores involucrados, para redimensionar los valores de tensin del ECG al tamao
vertical del componente grfico. Esto evita que se pueda dibujar un valor que quede fuera
de los lmites del componente.
Una vez que el electrocardiograma llega al valor horizontal mximo del componente, un
contador interno se reinicia para continuar el trazado desde el comienzo. De esta manera se
obtiene una traza continua del ECG, a costa de perder los anteriores segundos de electrocardiograma. Una lnea vertical indica cual es el valor ms reciente que se ha dibujado, para
poder interpretar correctamente los datos.
42
Software, app
Interfaz dinmica
Para la impresin de los resultados del mdulo de diagnstico se ha creado una interfaz
dinmica, ya que no se puede saber cual ser el nmero de patologas cardacas que detectar
el sistema en cada ejecucin.
Los resultados del mdulo de diagnstico se componen de una lista de tuplas de dos
elementos. Cada tupla representa una patologa o alteracin cardaca y el razonamiento que
ha llevado a diagnosticar al sistema experto porque el paciente sufre esa patologa (ms
informacin sobre esto en la seccin 6.3.5 en la pgina 66). Un bucle recorre las tuplas y
las descompone, dibujando en cada lnea el nombre de la alteracin cardaca, un espacio
en blanco y por ltimo la razn que ha llevado al sistema a realizar el diagnstico de dicho
problema cardiovascular.
Captulo 5
Software, extraccin de caractersticas
del ECG
La extraccin de caractersticas de un ECG resulta necesaria de cara a la automatizacin
del diagnstico de un sujeto, ya que este ltimo proceso necesita datos sobre los que trabajar.
Para poder definir mejor el alcance del sistema descrito en este captulo se fija la siguiente
categorizacin de caractersticas de un ECG:
Caractersticas de bajo nivel: estudio de ondas, segmentos o intervalos de manera
individual, es decir, sin relacionarlos con el resto de elementos que aparecen a lo
largo del ECG
Caractersticas de alto nivel: estudio del ECG como un todo, sin fijarse en cada pulso,
segmento o elemento de la onda individualmente
Los expertos realizan la extraccin de caractersticas de manera intuitiva y disimilar a la
de un algoritmo, fijndose en ambos tipos de caractersticas al mismo tiempo. Este comportamiento no resulta sencillo de expresar en un algoritmo. Por esta razn los estudios
acadmicos realizados hasta el momento se centran nicamente en una de las dos categoras.
Existe una gran cantidad de artculos de investigacin reunidos en el artculo [15], donde
se realiza una revisin de la literatura existente. De todas formas la implementacin de
cualquier mtodo de extraccin de caractersticas, independientemente de la categora de
estos ltimos, es complejo. Esto es debido a la poca o inexistente informacin tcnica sobre
la implementacin que ofrecen la mayora de los artculos y la elevada complejidad de parte
de las tcnicas aplicadas.
44
5.1.
Algoritmos desarrollados
Debido a las razones citadas en el prrafo anterior se ha optado por desarrollar una
serie de algoritmos sencillos de extraccin de caractersticas. Estos algoritmos no pueden
competir con los acadmicos o profesionales, pero sirven para sustituir su funcin con el
propsito de mostrar un prototipo funcional.
Los algoritmos que aqu se presentan trabajan con el ECG a bajo nivel, es decir, analizan
por cada pulso del corazn las caractersticas del mismo, pero no estudian el ECG total.
Tngase presente la Figura 2.7 de la pgina 12 para comprender qu secciones de la
onda se desean detectar en cada una de las siguientes subsecciones.
5.1.1.
A lo largo del proceso de extraccin de caractersticas los algoritmos trabajan con tres
grandes estructuras de datos:
Un array con el ECG en bruto, cada posicin del array representa un momento en el
tiempo y el contenido de dicha posicin el valor de voltaje ledo en ese momento
Una lista de pulsos
Un pulso, el pulso es una estructura que contiene las siguientes caractersticas correspondientes a un pulso del corazn:
La posicin del comienzo de la onda P
La posicin del final de la onda P
Si la P es positiva o no (si la onda no es positiva puede ser negativa o bifsica)
La posicin del comienzo de la cada del pico Q
La posicin del pico Q o comienzo del complejo QRS
La posicin del pico R
La posicin del pico S
La posicin del final de la subida tras el pico S o final del complejo QRS
La posicin del pico T
El final de la onda T
5.1.2.
45
Deteccin de picos R
Los picos R son aquellos que ms se elevan en un ECG. Partiendo de esta informacin
se cre el siguiente algoritmo:
marcar pico;
else
romper bucle;
el pico no es una R;
Para hallar los valores arbitrarios de la condicin if se ejecut el algoritmo sobre una
serie de electrocardiogramas y se registraron los valores de inclinacin de los vectores. Tras
estudiar estos valores y relacionarlos con picos R y ondas T, se definieron los valores. El
valor arbitrario (A) para los vectores izquierdos es 4, 0 y para los vectores derechos (B),
7, 0.
5.1.3.
Tras detectar los picos R se procede a detectar el resto de los puntos caractersticos del
complejo QRS. Estos puntos son, los picos Q y S, el comienzo del complejo a la izquierda
46
encontrar pico Q;
encontrar pico S;
encontrar comienzo del QRS;
encontrar nal del QRS;
pulso = crear_pulso(R, S, Q, comienzo QRS, nal QRS);
aadirALista(pulso, lista_de_pulsos);
seleccionar siguiente pico R;
5.1.4.
Deteccin de ondas P
La onda P resulta extremadamente difcil de detectar sin usar tcnicas avanzadas como
las que describen algunos artculos referenciados al comienzo de este captulo. Los algoritmos aqu desarrollados no son sencillos, ni slidos, debido al enfoque utilizado. Por estas
razones el contenido de esta subseccin se debe interpretar como prueba de concepto y no
como una versin final.
47
5.1.5.
Deteccin de ondas T
La deteccin de la onda T se realiza en base a los datos obtenidos del ECG hasta este
momento, es decir, informacin del complejo QRS y de la onda P (de esta ltima interesa
nicamente su comienzo).
Primero se detecta el valor mximo de la onda T. Para ello se toma un valor arbitrario
entre el final del complejo QRS y el comienzo de la onda P del siguiente pulso y se recorre
la onda hacia la izquierda en busca de un mximo. El el valor arbitrario ha sido hallado
experimentalmente y se ha definido como posicin del final del complejo QRS + un tercio
48
5.1.6.
49
picoAnterior = tomarPosicionSiguientePicoR();
while haya picos R do
picoActual = tomarPosicionSiguientePicoR();
longitudRR = picoActual - picoAnterior;
longRRAcumulada = longRRAcumulada + longitudRR;
picoAnterior = picoActual;
longRRMedia = longRRAcumulada / NUM_PICOS_R;
BPM = (60 * 1000) / longRRMedia;
(5.1)
50
(5.2)
La frmula mostrada es aplicada a la longitud QT media formada entre todos los pulsos estudiados, obteniendo tras su aplicacin la longitud QT corregida correspondiente al
electrocardiograma.
5.1.7.
Todos los algoritmos estudiados a lo largo de las anteriores secciones han sido integrados
en un nico sistema monoltico de extraccin de caractersticas. El enfoque de programacin
de este sistema ha sido principalmente procedural, debido a la naturaleza del anlisis, el cual
se realiza por pasos claramente definidos.
El sistema final aplica los algoritmos en el siguiente orden:
1. Extraccin de picos R e inicializacin de la lista de pulsos
2. Extraccin de picos Q y S, extraccin de comienzos y finales de complejos QRS
3. Cmputo del pulso, longitud RR, longitud QRS, comprobacin de ritmo regular
4. Extraccin de ondas P
5. Vectorizacin de ondas P
6. Anlisis de ondas P y cmputo de la longitud del intervalo PR
7. Extraccin de ondas T
8. Cmputo de la longitud del intervalo QT corregido
Este sistema es alimentado con un electrocardiograma bruto en forma de un array, el
cual guarda en cada posicin el valor de voltaje ledo. Su salida ofrece una serie de variables que contienen los aspectos del ECG ms relevantes.
Por ltimo, resulta interesante destacar que los algoritmos de estas secciones son independientes de la frecuencia de muestreo del ECG. Es decir, siempre que se aplican valores
temporales en milisegundos, estos son transformados a la cantidad de posiciones equivalente
en el array de datos original.
51
Mediante un ejemplo: Si el array ha sido generado tomando 500 muestras por segundo
(es decir entre muestra y muestra pasan 2 milisegundos) y se desea avanzar 10 milisegundos
los algoritmos avanzan 5 posiciones. Si la frecuencia de muestreo es 1000 muestras por
segundo, entonces los algoritmos avanzan 10 posiciones.
5.2.
Aseguramiento de la calidad
Sobre el sistema aqu propuesto se ha realizado una extensa serie de pruebas usando
electrocardiogramas de diferentes orgenes y con diferentes alteraciones cardiovasculares
para comprobar la estabilidad y correccin del mismo. Estas pruebas han sido puramente
cualitativas, lo cual significa que el aseguramiento de la calidad podra mejorarse mediante
pruebas sistemticas, siguiendo un plan de calidad previamente diseado. Existe ms informacin al respecto en el apartado correspondiente de posibles mejoras y trabajo futuro
(subseccin 9.5, pgina 85).
A continuacin se presentan los mecanismos usados para probar el sistema.
5.2.1.
Physiobank [13] es una importante coleccin base de datos de seales fisiolgicas aportadas por la comunidad cientfica. En dicha coleccin existen mltiples grabaciones de electrocardiogramas, las cuales suelen estar etiquetadas en base a las patologas cardacas detectadas en ellas.
Para probar el sistema aqu descrito se han tomado grabaciones de las bases de datos de
las categoras 1 y 2, las ms utilizadas y citadas por la comunidad. Las grabaciones usadas
han sido mitdb-100, mitdb-203, mitdb-210 y mitdb-230 de MIT-BIH Arrhythmia Database
[19]. Edb-e0107, edb-e0108 y edb-e0111 de European ST-T Database [24]. Ecgiddb-p01-r1,
ecgiddb-p02-r16 y ecgiddb-p09-r1 de The ECG-ID Database [16].
El mecanismo de aseguramiento de la calidad sigui los siguientes pasos: los electrocardiogramas fueron estudiados por un experto previamente para extraer de manera manual las
caractersticas que ms adelante el sistema extraer automticamente. Despus se procedi
a aplicar un preproceso a los datos para adaptarlos al rango con el que trabaja el sistema de
extraccin. Por ltimo se realizaron las ejecuciones necesarias sobre una variante del sistema de extraccin con funciones de depuracin, y se comprob que los valores hallados por
el sistema se correspondan a los localizados manualmente.
Con esta metodologa se detectaron mltiples pequeos problemas relativos a condicio-
52
nes limtrofes, bucles con condiciones de salida incorrectas, inconsistencias entre unidades
o errores en clculos matemticos.
5.2.2.
Adems de usar electrocardiogramas profesionales en el sistema de extraccin de caractersticas, ste tambin se prob mediante ECGs tomados por las placas de adquisicin de
datos disponibles, principalmente la placa Olimex, la cual ya se ha estudiado en el apartado
3.2.3 en al pgina 29. La metodologa aplicada fue idntica a la de la subseccin anterior,
a diferencia del preprocesado para adaptar los datos, el cual era innecesario ya que en este
caso se estaba usando la fuente de datos original.
A continuacin, en la Figura 5.2, se muestran tres ECGs de sujetos diferentes sobre
los cuales el sistema de extraccin de caractersticas ha hallado los puntos relevantes. Puede observarse como la forma del ECG, diferente entre los sujetos, afecta fuertemente a la
deteccin de las caractersticas de la onda.
Los complejos QRS y sus correspondientes picos suelen ser identificados correctamente
en la mayora de las ocasiones. Las ondas P no suelen ser detectadas si la onda no es de
gran calidad o no existe un segmento PR suficientemente claro. Las ondas T suelen ser
identificadas correctamente, pero algunos problemas con la definicin del final del complejo
QRS causan inconsistencias.
Si la onda generada por la placa Olimex fuera ms limpia y el ruido pudiera eliminarse por completo, el sistema de extraccin de caractersticas debera ser capaz de extraer
correctamente todos los puntos importantes de la onda.
Fig. 5.2 Mltiples electrocardiogramas con puntos caractersticos, stos estn representados en naranja. En una situacin correcta
los puntos representan (el orden es relevante): comienzo de onda P, comienzo de complejo QRS, pico Q, pico R, pico S, final del
complejo QRS, pico T, final de la onda T
54
5.2.3.
Existe una herramienta llamada ECGSYN [18] desarrollada por un grupo de investigadores y contribuida a Physionet la cual es capaz de crear electrocardiogramas sintticos
realistas. Se han realizado pruebas con esta herramienta para generar electrocardiogramas
con caractersticas de especial inters para probar alguna parte especfica del sistema de
extraccin de caractersticas.
Aunque la herramienta ha demostrado ser de gran utilidad, a travs de su aplicacin
en artculos acadmicos como [25], los electrocardiogramas generados no resultaron tiles
para este proyecto. Las razones son dos: por una parte, si se genera un electrocardiograma
sinttico sin ruido, la onda es demasiado poco realista, haciendo que el sistema de extraccin
de caractersticas falle, ya que se aprovecha de las leves deformidades que el ruido aade a
la onda. Si se aade ruido, este es generado aleatoriamente y no puede ser atenuado por el
sistema de filtrado desarrollado en este proyecto, haciendo que la onda sea ilegible para el
sistema de extraccin.
5.3.
55
se pueden observar las regiones correspondientes a la onda P y complejo QRS, ya seleccionadas. En el momento en el que se ha tomado la captura el usuario est seleccionando
la regin correspondiente a la onda T y posteriormente pulsar el botn Aceptar para
finalizar el proceso.
Captulo 6
Sistema experto
La inclusin de un mdulo que realice un diagnstico sobre el electrocardiograma de un
sujeto requiere la existencia de algn tipo de inteligencia. Existen mltiples mtodos basados en diferentes tcnicas para asociar un ECG a una serie de patologas cardiovasculares,
como tcnicas de minera de datos, redes neuronales o inteligencia artificial.
Gran cantidad de recursos en el mundo de la medicina presentan tcnicas de diagnstico
a travs de diagramas de bloques o conjuntos de reglas. Este formato en el que se codifica
la informacin mdica se presta perfectamente para su adaptacin a un sistema experto. La
existencia de libros mdicos donde se recoge esta informacin hace que el conocimiento sea
fcilmente accesible a lo largo del desarrollo del proyecto.
6.1.
Crear un sistema experto completo desde la base resulta imposible dadas las restricciones temporales de este proyecto, adems de presentar una gran complejidad que no se desea
incluir en el proyecto. La nica alternativa a crear un motor para un sistema experto es usar
uno ya existente.
Existen mltiples motores de inferencia para crear sistemas expertos, como CLIPS, Jess
o Drools entre otros. La integracin de estos sistemas en Android est muy poco madura y
es imposible en la mayora de los casos. nicamente CLIPS y Jess parecen ser candidatos
aceptables para ser utilizados en Android.
58
6.1.1.
Sistema experto
CLIPS
CLIPS [7] est programado en el lenguaje C y ha sido publicado como aplicacin independiente o librera. La Java Native Interface (JNI de ahora en adelante) es una librera de
Java que permite a la mquina virtual (JVM) interactuar con cdigo nativo a un dispositivo
y libreras escritas en C, C++ y ensamblador. A lo largo de los ltimos aos se han realizado
mltiples esfuerzos por diferentes comunidades de desarrolladores con el objetivo de portar
CLIPS a Java utilizando la JNI. El resultado ms destacado se encuentra en la pgina del
proyecto CLIPS [8].
Aitor Gmez Goiri, un investigador de la universidad de Deusto, ha tomado el proyecto
CLIPS JNI y ha realizado una adaptacin a Android usando la librera Native Development
Kit (Android NDK de ahora en adelante). Su adaptacin est disponible pblicamente como
proyecto en github bajo el nombre CLIPS4Android [14].
CLIPS4Android ofrece la integracin de cdigo Android con CLIPS a travs de unas
clases que actan de puente entre ambos sistemas. Estas clases representan hechos, valores
multicampo o monocampo, direcciones de memoria e incluso el propio entorno CLIPS que
se est ejecutando. La interaccin con estas clases se realiza mediante una pequea API que
se ofrece pblicamente.
6.1.2.
Jess
6.1.3.
59
Eleccin final
6.2.
6.2.1.
Al usar una migracin a Android de una adaptacin Java de CLIPS las limitaciones del
sistema experto, respecto a una instalacin de su versin nativa en un ordenador personal,
son mltiples.
La limitacin ms destacable es la obligacin de acceder al sistema experto a bajo nivel.
Los comandos ms avanzados que agrupan mltiples pequeas tareas, no estn disponibles.
Un ejemplo de ello es el comando (batch ...), usado cargar mltiples ficheros al mismo
tiempo. El acceso a los hechos devuelve direcciones de memoria a los objetos que maneja
60
Sistema experto
el sistema y no sus contenidos, los cuales deben de ser accedidos mediante la nica funcin
existente para ello.
Como ya se ha mencionado en el prrafo anterior la carga simultnea de mltiples ficheros es imposible. Por esta razn se deben crear los objetos necesarios para alimentar al
sistema experto correctamente y lanzar la carga del fichero por cada uno que se desee cargar.
Esto resulta tedioso y multiplica las posibilidades de fallo.
La inclusin de los ficheros de datos en una aplicacin instalable en Android tambin
resulta complicada, ya que el motor CLIPS no acepta las rutas a las carpetas estndar que
usa Android en las aplicaciones. Para resolver este problema se incluyeron los ficheros de
datos en la carpeta assets y antes de cargarlos eran copiados a la carpeta interna del sistema
operativo destinada a la aplicacin.
El acceso a los hechos residentes en el sistema experto tambin es problemtico. Los hechos ordenados pueden ser extrados del sistema, pero sus campos no pueden ser fcilmente
accedidos. Por esta razn es preferible usar hechos no ordenados.
La extraccin de campos de los hechos se realiza mediante una funcin en la cual se
indica el nombre del campo cuyos datos se desean extraer. Esta funcin devuelve un objeto
que extiende la clase PrimitiveObject, pero a priori no se sabe a qu subclase de la
anterior pertenece el objeto en cuestin. El programador debe conocer estas limitaciones
y mantener un registro manual de los tipos de los campos que se manejan en el sistema
experto para poder extraerlos correctamente.
Por ltimo resulta interesante destacar que el mdulo principal, MAIN, no puede ser
redefinido en esta versin de CLIPS salvo que no est seleccionado. Desafortunadamente
ste es el mdulo seleccionado mientras se cargan los ficheros. Esto evita que se puedan
aadir en l sentencias import o export salvo que se aplique algn enrevesado truco.
6.3.
El sistema experto creado hace uso de caractersticas an no implementadas en anteriores mdulos. Las plantillas cuentan con campos para contener informacin que an no se
extrae en la fase anterior del proyecto y existen reglas que actan sobre esta informacin que
jams podrn ser lanzadas. A pesar de lo absurdo que resulta este hecho, el razonamiento
que lo soporta es relativamente simple: crear un sistema experto lo ms rico posible para
aprovechar las ventajas que brinda el desarrollo del mismo, como una formacin ms completa sobre el funcionamiento interno de CLIPS y mayor pericia en el desarrollo de sistemas
expertos.
61
La programacin del sistema experto se ha dividido en seis ficheros, uno de ellos existe
por conveniencia. El resto de ficheros incluyen sendos mdulos. De esta manera, al actualizar el sistema experto nicamente se modifica la mnima cantidad de ficheros necesaria.
Los mdulos y ficheros generados han sido los siguientes:
Definicin de plantillas (electro_templates.clp)
Creacin de hechos iniciales (electro_facts.clp)
Mdulo de inicio del sistema (electro_rules.clp)
Mdulo de preprocesamiento de datos (electro_rules_data.clp)
Mdulo de diagnstico (electro_rules_diagnostic.clp)
El flujo del programa ha resultado complicado de establecer, debido a la necesidad de
hacerlo genrico en cuanto a pasos de ejecucin y la imposibilidad, a priori, de redefinir el
mdulo principal impuesta por la adaptacin utilizada de CLIPS. Para evitar estas limitaciones, antes de cargar el fichero que redefine el mdulo MAIN se carga un fichero con un mdulo vaco y establece como mdulo actual mediante el comando (set-current-module
...). A partir de este punto se carga el resto de ficheros con sus respectivos mdulos. Durante el proceso se puede redefinir el mdulo MAIN.
Tras realizar esta maniobra, el flujo de ejecucin es relativamente sencillo:
1. Aadir un hecho que representa el electrocardiograma a partir de los datos obtenidos
por el sistema de extraccin de caractersticas
2. Ejecutar el sistema
a) Realizar preproceso de datos
b) Realizar diagnstico
3. Extraer resultados del sistema desde la app
4. Mostrar los resultados del sistema
A continuacin se destacan los aspectos ms relevantes de cada faceta del sistema experto creado.
62
Sistema experto
6.3.1.
Plantillas
Se han usado dos plantillas (templates) en el sistema experto. Una de ellas es una estructura que contiene las caractersticas que forman un electrocardiograma. Estas mismas
caractersticas son aquellas que detecta el sistema descrito en el Captulo 5. La segunda
plantilla creada representa la estructura de un diagnstico.
A continuacin se extiende la informacin sobre estas plantillas.
Electrocardiograma
La estructura que representa la informacin extrada del electrocardiograma cuenta con
los siguientes campos:
Longitud del complejo QRS
BPM
Amplitud de la onda P
Longitud de la onda P
Longitud QT corregida
Pulsos irregulares
Amplitud de la onda Q
Amplitud de la onda R
P difsica
Amplitud de la onda U
Las unidades de voltaje utilizadas son milivoltios, y las unidades de tiempo milisegundos.
Los campos pulsos irregulares y P difsica codifican diferentes situaciones mediante un
nmero entero. A continuacin se indica su significado.
Pulsos irregulares:
0 = Se dan 2 o menos pulsos irregulares
1 = Existen 3 o ms pulsos irregulares, precedidos de onda P
2 = Existen 3 o ms pulsos irregulares, no precedidos de onda P
P difsica:
0 = Las ondas P no son difsicas
1 = Las ondas P son difsicas, primero positivas y luego negativas
2 = Las ondas P son difsicas, primero negativas y luego positivas
Estos dos campos se podran haber definido como campos de tipo SYMBOL y especificado sus valores de forma clara mediante la sentencia allowed-values.
63
Diagnstico
La estructura diagnstico representa la forma en la que se guardarn los resultados de
la ejecucin del sistema experto. Cuenta con dos campos, ambos multivalor: patologa y
razonamiento. Es evidente que contendr cada uno de ellos. Los campos son multivalor, ya
que un sujeto puede sufrir ms de una patologa o alteracin cardaca en un mismo momento.
6.3.2.
Hechos
(diagnostico
(patologias nil bloqueo-de-rama taquicardia)
(razonamientos nil QRS-largo pulso-elevado)
)
Hechos ordenados
Los hechos ordenados se utilizan como pequeos extractos de informacin del ECG y
transmisores de stos a travs de los mdulos de preprocesado de datos y diagnstico. Se
aaden a la memoria de trabajo a lo largo de la ejecucin del sistema a travs de reglas
64
Sistema experto
que hacen uso del commando (assert ...), y son eliminados por otras reglas a travs del
comando (retract ...).
6.3.3.
Mdulos
El sistema ha sido dividido en una serie de mdulos, cada uno contenido en un fichero
independiente, para facilitar el control de la ejecucin del sistema.
A continuacin se presentan los mdulos existentes, junto a los mdulos que importan
y su cometido:
Tabla 6.1 Mdulos creados para el sistema experto
Nombre
TMP
Importaciones
Ninguna
TEMPLATES
Ninguna
FACTS
TEMPLATES
MAIN
FACTS,
TEMPLATES
INTERPRET-DATA
MAIN,
TEMPLATES
TEMPLATES,
GET-DIAGNOSTIC
FACTS,
INTEPRET-DATA
Descripcin
Permite redefinir el mdulo MAIN
Almacena las plantillas para los hechos no
ordenados del sistema experto
Aade a memoria el hecho no ordenado que
representa el diagnstico generado por el
sistema
Punto de parada del sistema para introducir el
hecho no ordenado que representa el ECG.
Tambin indica el orden de ejecucin de los
siguientes mdulos
Genera hechos no ordenados que representan
pequeos segmentos de informacin del ECG
Realiza un diagnstico en base a los hechos
generados por INTERPRET-DATA
El mdulo MAIN inicializa la pila de focus, aadiendo a ella el mdulo de preprocesamiento de datos, seguido del de diagnstico. Las plantillas y hechos tambin han sido
definidos en mdulos propios para ofrecer la posibilidad de ocultar informacin entre mdulos, si es necesario, en una implementacin futura.
6.3.4.
Reglas
65
el diagnstico automatizado. Las reglas de GET-DIAGNOSTIC estn ntegramente programadas segn el paradigma de programacin por reglas y programacin funcional, mientras
que en las reglas del mdulo INTERPRET-DATA se han aadido algunas lneas de cdigo
ms afines a la programacin imperativa. El uso de sentencias imperativas se materializa
principalmente en estructuras de control si...entonces...sino... las cuales permiten
una gestin ms fina de algunos aspectos y evitan las repeticiones de cdigo que conlleva
reescribir la misma regla con ligeras modificaciones.
La necesidad de implementar una serie de reglas que preprocesen los datos del electrocardiograma se basa en evitar bucles infinitos en la realizacin del diagnstico. Las reglas
de realizacin de diagnstico matchean una caracterstica del ECG y el hecho en el que se
guarda el diagnstico. Es necesario capturar una caracterstica del ECG para tener realizar
un diagnstico y es necesario conseguir una forma de acceder a la estructura de diagnstico
para guardar el resultado de ejecucin de la regla. Si la regla modifica el diagnstico y la
caracterstica del ECG sigue presente en el hecho que la contiene, la regla se reactivar,
causando un bucle infinito de activaciones.
El preproceso de los datos genera pequeos segmentos de informacin sobre el ECG en
forma de hechos ordenados. Estos hechos ordenados pueden ser matcheados por las reglas
de diagnstico y despus eliminados, previniendo una reactivacin de la regla.
A continuacin su muestran dos de las reglas del sistema experto a modo de ejemplo. La
primera pertenece al mdulo de preproceso de datos, la segunda al mdulo de diagnstico:
66
Sistema experto
=>
(modify ?diag (patologias ?pat taquicardia)
(razonamientos ?raz pulso-elevado)
)
(retract ?BPM-fact)
)
6.3.5.
Caractersticas especiales
Parte II
Expansin y mejoras
Captulo 7
Electrnica
La fase de electrnica del proyecto puede mejorarse trabajando con mayor detalle los
filtros por software aplicados y realizando nuevas pruebas con las placas de adquisicin
bajo condiciones diferentes. Las oportunidades de expansin son extensas, comenzando por
uno de los puntos del alcance que fue eliminado a lo largo del proyecto: la toma de datos de
4 electrodos.
Tambin se estudiar como mejorar el proyecto de cara a abaratar los costes de adquisicin de los componentes que conforman la parte electrnica.
7.1.
Las tcnicas de filtrado por software pueden mejorarse en unos cuantos aspectos. Las
tcnicas de filtrado descartadas deberan ser revaluadas. Adems la investigacin de ms
tcnicas de filtrado paso alto para eliminar el ruido causado por la respiracin tambin debern ser retomada.
Una interesante prueba a realizar en un futura revaluacin de las tcnicas de filtrado
consiste en aplicar los filtros a pequeos subconjuntos del total de datos, de manera anloga
al filtro basado en la media mvil presentado en al subseccin 3.2.4 en la pgina 32 de esta
memoria.
7.2.
La placa AD8232Eval fue utilizada sin cables apantallados. Usar este tipo de cables para
conectar los electrodos y la salida de datos quizs pueda hacer que la placa ofrezca un mejor
70
Electrnica
rendimiento. Para ello nicamente habra que modificar los conectores en al superficie de la
placa.
Otra posibilidad de mejora para las placas consiste en tomar un electrocardiograma con
una de ellas a la vez que con un electrocardigrafo profesional, de esta manera se podran
contrastar las lecturas de ambos dispositivos. La comparacin entre lecturas permitira calibrar de manera precisa las placas de adquisicin de datos aqu presentadas.
7.3.
Esta expansin se aplica a todas las fases del proyecto. En la parte de electrnica consiste
en ampliar el nmero de electrodos de los cuales se toman los datos y tomar dichos datos
de manera diferente. Mediante cuatro electrodos, uno en cada mueca y uno en cada tobillo
del sujeto, pueden obtenerse tres fuentes de informacin y una referencia.
A partir de los datos tomados de los tres electrodos de informacin es posible hallar
seis derivaciones sobre el paciente: I, II, III, aVL, aVR y aVF. Las ventajas de contar con
seis derivaciones son claras: se obtiene ms informacin sobre el paciente. Esta informacin
permite: que el mdulo de diagnstico ofrezca unos resultados ms fiables, que el mismo
mdulo ofrezca la identificacin de un mayor nmero de alteraciones cardacas y por ltimo
que un experto posea ms informacin al usar la funcin de visualizacin del ECG de la app
Android.
La forma de hallar las derivaciones en base a las seales de los electrodos es sencilla,
tan slo consiste en realizar una serie de operaciones aritmticas sobre dichas seales. Por
ejemplo, para hallar la derivacin III se deber aplicar la frmula 7.1, y para hallar la derivacin aVR, la frmula 7.2. LL representa la seal del electrodo del tobillo izquierdo,
LA la seal del electrodo de la mueca izquierda y los nmeros romanos las derivaciones
correspondientes.
Derivacion
III = LL LA
I + II
Derivacion
aV R =
2
(7.1)
(7.2)
Para tomar datos de tres fuentes de informacin independientemente, y no de una formada por al combinacin de dos electrodos como en el prototipo presentado, las placas de
adquisicin de datos debern tener un funcionamiento diferente.
7.3.1.
71
Las placas Olimex ECG Shield permiten su uso conjunto para realizar una toma de datos
independiente de varios electrodos. Estas placas pueden montarse encima de otras idnticas,
pudiendo crear una torre de tres Olimex ECG Shield sobre un Arduino, como se muestra
en las seccin 1.2 del manual de la placa Olimex [21]. Para evitar que las placas interfieran
entre si se han de configurar mediante el jumper AIN_SEL.
7.3.2.
Como alternativa al uso de mltiples placas Olimex ECG Shield podra disearse una
placa basada en el chip AD8232. Dicha placa contara con un conector para cada uno de los
cuatro electrodos y tres chips AD8232 para amplificar independientemente las seales de
cada electrodo de datos.
Para obtener una seal independiente por cada electrodo usando la etapa de amplificacin diferencial del chip AD8232 hay que introducir en el amplificador la seal correspondiente a un electrodo y la seal de potencial de referencia del sujeto. De esta manera el ruido
se anular y la seal del electrodo es la nica amplificada.
7.3.3.
Debe tenerse en cuenta que la velocidad de muestreo bajo estas nuevas condiciones sea
suficiente, ya que si no lo es, puede que se forme un desfase entre las 3 ondas que se tomen
de los electrodos. Si las ondas estn desfasadas entonces no se podrn aplicar las frmulas
para hallar las derivaciones ms adelante (en la app), ya que no se estar operando sobre las
ondas en el mismo momento del tiempo.
Existen dos formas de evitar este problema: la primera es capturar y convertir las tres
ondas en una extensin de tiempo tan pequea que el desfase entre ellas sea despreciable. La
extensin de tiempo que recomendara es 1 milisegundo. En el caso de aplicar esta solucin
tan slo se hace uso de tres conversiones por milisegundo. Es factible usar el ADC del chip
ATmega328 de la placa Arduino, ya que ste soporta 9600 converisones por segundo o, lo
que es lo mismo, 9,6 conversiones por milisegundo, como se indica en la subseccin 3.1.2
en la pgina 19.
La segunda forma de evitar el problema del desfase de ondas es convertir todas de formato analgico a digital al mismo tiempo, para ello habra que hacer uso de 3 conversores
analgico digital que operen en paralelo. Para llevar esta idea a cabo puede tomarse como
72
Electrnica
7.4.
7.5.
Los costes de adquisicin pueden ser reducidos si en vez de usarse mltiples sistemas
independientes conectados entre s se usa un sistema integrado en una sola unidad.
Un sistema integrado podr componerse de una fase de adquisicin de datos, con tres
chips AD8232 como se ha indicado anteriormente en la subseccin 7.3.2, por ejemplo. Tambin habr que aadir un microcontrolador programable como el ATmega328 que convierta
los datos a formato digital y los transmita al mdulo Bluetooth, ste ltimo tambin podr
integrarse en la placa.
Pueden darse mltiples problemas con una integracin como esta y se debera realizar un
estudio preliminar de su viabilidad. Un problema claro existente en el diseo anterior es la
cercana fsica entre un mdulo de radiofrecuencia y los circuitos de toma de datos. Como
ya se indica en la subseccin 3.2.1 en la pgina 22 el mdulo Bluetooth probablemente
introducira ruido en las seales que se procuran leer.
73
Una vez diseada la placa podr enviarse a una fbrica para su produccin en masa.
Existen empresas dedicadas a crear placas bajo demanda a partir de diseos. Algunos ejemplos son Fritzing Fab [12] o Advanced Circuits [1].
Captulo 8
Software, app
Las mejoras de la aplicacin Android tratarn principalmente sobre la experiencia de
usuario, ya que la app es el punto de contacto entre el usuario y el producto. Las posibilidades son mltiples y pueden orientarse a diferentes colectivos, desde los usuarios ms
profesionales a principiantes.
Existen tambin otras mejoras posibles, como la continuacin de la expansin a seis
derivaciones del captulo anterior (seccin 7.3, pgina 70), integracin con variantes del
sistema de adquisicin de datos o aumento de la legibilidad y disminucin de la complejidad
del cdigo mediante refactorizacin.
8.1.
76
Software, app
horizontalmente. En una mitad se representan tres derivaciones, una debajo de otra, como
en el prototipo actual. En la otra mitad se aplica la misma tcnica con las tres derivaciones
restantes.
La primera variante no permite ver las seis derivaciones al mismo tiempo y relacionar
la informacin relativa a cada onda entre el total de todas las ondas, en cambio, permite
ver un segmento considerable de tres derivaciones. En la segunda variante sucede al revs,
pueden verse todas las derivaciones a la vez, pero slo se puede ver un pequeo segmento
de onda. Para evitar estos problemas podra hacerse uso de la segunda variante combinada
con la propuesta de zoom descrita ms adelante en la seccin 8.2.2.
8.2.
En este apartado se estudian las posibles mejoras o expansiones que se pueden realizar
sobre la app para mejorar la interaccin con el usuario. La posibilidad de pausar la toma
del ECG para estudiar un segmento del mismo detenidamente, hacer zoom para observar en
detalle partes de la onda y quizs una visualizacin grfica de los resultados del diagnstico
pueden mejorar significativamente la experiencia de usuario.
8.2.1.
Actualmente el electrocardiograma es mostrado en tiempo real en el dispositivo Android. La aparicin de una anomala en el mismo no puede ser estudiada si su aparicin
no es regular, ya que la informacin presente en la pantalla desaparece al cabo de unos
segundos para dar paso a los nuevos valores del ECG.
Aadir una funcin de pausa puede ser beneficioso para estudiar anomalas puntuales
en el ECG. Su implementacin no debera ser muy complicada, ya que nicamente hay
que detener la entrada de datos al objeto que dibuja la onda en pantalla. Los datos pueden
seguir siendo recogidos durante el perodo en el que el ECG est pausado. Queda a discrecin de quien implemente esta funcionalidad decidir si cuando el ECG debe ser resumido
ste muestra los datos almacenados mientras el ECG estaba pausado, creando un desfase
temporal variable, o si se vaca la pantalla y se muestra la informacin del ECG en tiempo
real.
8.2.2.
77
8.2.3.
78
Software, app
8.3.
8.4.
Hoy en da los electrocardigrafos ms avanzados son capaces de exportar los electrocardiogramas que toman. La creacin y posterior integracin de un sistema de exportacin
de ECGs para la aplicacin desarrollada es una ampliacin interesante. Las primeras modalidades de exportacin pueden tomar la forma de un fichero CSV o XML en la memoria
externa del dispositivo Android. La implementacin es muy sencilla y ya estuvo presente en
una iteracin del prototipo.
79
Otros mtodos de exportacin ms complejos resultaran muy tiles; por ejemplo, exportacin a servicios de almacenamiento en la nube o impresin del ECG a travs de una red
WiFi. La primera tcnica es posible a travs de las APIs de los servicios de almacenamiento
en la nube. Un buen sitio para comenzar a investigar como aadir esta funcionalidad es la
documentacin de la API de Google Drive en Android. La impresin en la nube es posible
a travs de las APIs de Android destinadas a este propsito.
Lgicamente exportar un ECG sin informacin adicional, como informacin sobre el
sujeto es, probablemente, intil. Por esta razn deber aadirse un mecanismo para asociar
alguna informacin adicional al electrocardiograma. Esto puede hacerse de manera sencilla
mediante un formulario.
Ha de tenerse en cuenta que si el ECG est asociado a datos de carcter personal y
se exporta a un servicio de almacenamiento en la nube o se imprime, deber respetarse la
Ley Orgnica de Proteccin de Datos para el tratamiento de ficheros. Los datos relativos
a la salud de una persona, como es aqu el ECG, son categorizados como de Nivel Alto de
manera que deber prestarse especial atencin al cumplimiento de dicha ley.
8.5.
Actualmente la app Android slo funciona con el hardware desarrollado en este proyecto. Ya que los diseos del prototipo son abiertos, puede que en el futuro aparezcan variantes
del sistema de adquisicin y transmisin de datos. La app cuenta con la informacin de los
parmetros sobre los que opera el sistema electrnico, a travs de ellos puede interpretar
correctamente los datos que recibe. Esta informacin deber ser modificada si se usa un
hardware diferente al aqu presentado.
La adaptacin a variantes del sistema electrnico puede consistir en cambios sencillos
que el usuario pudiera realizar a travs de mens. Unos ejemplos son: la alteracin de los
valores mnimo y mximo que representan el voltaje o la variacin de la frecuencia de
muestreo. Actualmente el cdigo de la aplicacin ya est parametrizado segn estos valores,
pero no existe manera de modificarlos sin reescribir una lnea del cdigo fuente y recompilar
la aplicacin.
Adems pueden considerarse modalidades de adaptacin ms profundas y complejas, en
caso de estar usando un sistema de adquisicin de datos muy diferente al aqu prototipado.
Una de estas podra ser la modificacin de la especificacin de la codificacin de datos. Para
abrir estas posibilidades de modificacin debe crearse una API.
80
8.6.
Software, app
El desarrollo del proyecto ha tenido lugar a lo largo de varios meses y en todo momento
la disponibilidad temporal para esta fase ha sido reducida. Por esta razn se ha invertido
muy poco tiempo en mejorar la legibilidad y complejidad del cdigo. Estos aspectos debern ser trabajados en el futuro para asegurar un desarrollo rpido y sencillo de nuevas
funcionalidades.
Unos conocimientos avanzados de patrones de programacin y conocimientos de programacin en Android, especialmente en flujos de trabajo multihilo, resultarn de gran ayuda al programador.
Captulo 9
Software, extraccin de caractersticas
del ECG
El software de extraccin de caractersticas debera recibir mejoras en lo relativo a la
deteccin de la onda P en todas sus formas, ondas T negativas o bifsicas y onda U. La
deteccin de complejos QRS y ondas T normales ya se realiza con buenos resultados. Tambin resulta til e interesante, aunque complejo, aadir la funcionalidad de deteccin de
electrocardiogramas de personas no sanas de forma consistente y fiable.
9.1.
Hay mltiples puntos de mejora en lo relativo a las ondas P y T. La onda P ofrece una
gran cantidad de informacin sobre el estado del corazn y por ello su correcta deteccin
resulta crtica. A continuacin se indican cuales son las mejoras aplicables y el enfoque que
se usara para llevarlas a cabo de manera efectiva.
9.1.1.
Sera interesante conseguir una deteccin ms fiable del comienzo y final de la onda P.
Los esfuerzos realizados para hallarlos a travs de algoritmos simples no han sido suficientes
y la vectorizacin de la onda P no proporciona beneficios si el ECG contiene un nivel de
ruido leve o superior.
Las acciones a seguir para paliar este problema seran la realizacin de una bsqueda y
lectura de artculos cientficos, el estudio de los diferentes mtodos encontrados y por ltimo
la implementacin del mejor en cuanto a simplicidad y calidad de los resultados.
82
9.1.2.
9.2.
9.3.
83
Los algoritmos desarrollados en este proyecto parten de la premisa de que el ECG del
cual se deben extraer las caractersticas ser similar a un ECG de una persona sana en cuanto
a la morfologa general de un pulso: un complejo QRS, precedido de una onda P y seguido
de una onda T. En caso de que una alteracin cardaca elimine algn pico, altere el rango de
valores habitual de una onda o modifique de otra manera el ECG, ste no podr ser tratado
por los algoritmos actuales.
Algunos ejemplos de pulsos que escapan de lo habitual pueden ser los recogidos en un
ECG de una persona que sufra infarto de miocardio, representado como una elevacin ST.
Otro caso podra ser el de una persona que sufra un bloqueo de conduccin de tipo Mobitz
I, manifestado como ondas P que no preceden a un complejo QRS.
Para poder tratar todo tipo de electrocardiogramas, incluidos los de personas que sufran
grandes modificaciones en el mismo debido a patologas cardiovasculares, los algoritmos
debern ser reescritos. Se recomienda buscar e investigar los artculos acadmicos referentes
a esta temtica.
9.4.
9.4.1.
Contar con nuevas derivaciones es similar a obtener ms puntos de vista sobre el corazn. Lgicamente, esto deriva en una mayor cantidad de informacin accesible sobre el
estado de este importante rgano. Para comenzar, la disponibilidad de varias derivaciones
permite hallar el eje elctrico del corazn o eje cardaco.
Debido a lo sencillo que es hallar el eje cardaco, ste suele ser usado por los expertos
como comprobacin preliminar para saber si existe alguna patologa cardiovascular en el
paciente sin tener que realizar un anlisis exhaustivo del ECG. En caso de sospechar que
el paciente sufre alguna alteracin cardaca los expertos recurren a otros mtodos posterior-
84
mente para confirmar sus sospechas. El eje cardaco puede verse afectado, no slo por el
estado del corazn, sino tambin por el peso del paciente.
Para hallar el eje cardaco en un sistema automatizado deben tomarse dos derivaciones
a 90 grados entre s segn el sistema hexaxial, por ejemplo I y aVF. Tras elegir las dos
derivaciones se aplica el producto vectorial sobre los vectores de potencial presentes en
cada derivacin. La direccin del vector resultante es equivalente a la del eje cardaco. Los
valores del ngulo del vector son contrastados con una serie de intervalos establecidos y a
partir de dicha relacin se deduce si el paciente puede estar sufriendo alguna patologa.
Otros aspectos del corazn que no pueden ser estudiados con una sola derivacin son las
anomalas causadas por una alteracin cardiovascular que slo son visibles en derivaciones
diferentes a I. Por ejemplo: las consecuencias de un infarto en la zona inferior del corazn
se observan en los picos Q de las derivaciones II, III y aVF. El embolismo pulmonar nicamente se puede detectar mediante la combinacin de la informacin que ofrecen las ondas
en las derivaciones I y III.
9.4.2.
85
9.5.
Para poder asegurar que el sistema es slido y fiable es necesario un plan de calidad. El
plan de calidad deber ser sencillo y rpido de ejecutar o en el mejor caso ser totalmente
automatizado. Esto permite modificar el sistema de extraccin de caractersticas continuamente, comprobando cuales son los resultados, incluso de los ms pequeos cambios. Adems los cambios podrn ser aplicados sin miedo a daar el sistema, ya que cualquier error
ser descubierto al momento.
En esta seccin no se especifica cmo deber ser el plan de calidad, pero se dan algunas
recomendaciones que pueden simplificar el proceso o ayudar a determinar los pasos que lo
compongan.
9.5.1.
Etiquetado de ECGs
Los ECGs usados para evaluar el sistema debern ser etiquetados manualmente por un
experto. Las etiquetas debern representar cada unidad de informacin que el sistema pueda
extraer, ya sean las patologas que se manifiestan en el ECG, los puntos relevantes de la
onda o las caractersticas globales de la onda.
Algunos ECGs de la base de datos Physiobank ya estn parcial o totalmente etiquetados.
Partir de electrocardiogramas ya etiquetados acelerar el proceso. Probablemente una de las
mayores dificultades inherentes a tomar ECGs de mltiples bases de datos externas sea la
normalizacin de sus etiquetas, y de los rangos y unidades de los valores que contengan.
9.5.2.
86
Para lanzar el proceso automticamente, recomiendo el aislamiento del sistema de extraccin a una unidad autocontenida. Esto es posible en el estado actual del sistema debido
a la estrategia que se ha aplicado para programarlo. Sobre dicha unidad autocontenida se
pueden lanzar tests automatizados mediante JUnit, un sistema ya estudiado a lo largo del
Grado en Ingeniera Informtica.
Los resultados de las ejecuciones podrn ser almacenados en ficheros para su posterior
procesamiento.
9.5.3.
Los resultados de la ejecucin de las pruebas de calidad podran ser representados mediante matrices de confusin. Este mtodo tiene claras ventajas, como una visualizacin
rpida del rendimiento global del sistema. Adems, si se aplica la matriz de confusin a
cada caracterstica individual que detecta el sistema de extraccin de caractersticas, puede
obtenerse informacin muy granular.
La matriz de confusin podra tener la siguiente forma:
Tabla 9.1 Ejemplo de matriz de confusin para la evaluacin del sistema de extraccin de
caractersticas
Picos R
Picos S
Picos T
Comienzo
QRS
Final T
...
Picos R
Picos Q
Picos T
53
0
1
0
3
0
2
0
60
No
identificado
4
12
1
23
...
0
...
2
...
0
...
4
...
...
...
...
...
...
...
Captulo 10
Sistema experto
El funcionamiento del sistema experto actual es relativamente simple, de manera que
resulta difcil definir mejoras. El sistema experto nicamente puede ser expandido a travs
de su conversin a un sistema de lgica difusa o contrastando sus resultados con otro sistema
capaz de realizar un diagnstico basado en electrocardiogramas. Este sistema de diagnstico
complementario podra estar basado en tcnicas de aprendizaje automtico.
10.1.
10.1.1.
Existe una variante de CLIPS que aade la capacidad de razonamiento difuso a dicho sistema. Esta versin es conocida como FuzzyCLIPS, actualmente el proyecto se puede encontrar en github [20]. FuzzyCLIPS apenas cuenta con informacin que lo soporte, aparte del
88
Sistema experto
manual de usuario creado junto al sistema. Actualmente no parece existir ningn esfuerzo
pblico de adaptar FuzzyCLIPS a la plataforma Android. La adaptacin puede considerarse
complicada.
Si se desea considerar una opcin similar a FuzzyCLIPS, pero mejor documentada y
moderna, entonces se recomienda investigar en Internet que sistemas de lgica difusa existen actualmente que a la vez sean compatibles con Android. Recientemente jFuzzyLite, la
adaptacin Java de FuzzyLite ascendi a la versin 1.0. Parece interesante investigar ms
sobre este sistema.
10.1.2.
El uso de un motor de lgica difusa obliga a modificar algunos elementos del sistema
actual. Por una parte debern reescribirse las reglas existentes para asociar a cada una los
factores de certeza correctos. Ser necesario realizar entrevistas con cardilogos expertos
para definir lo mejor posible dichos valores.
Por otra parte el sistema de extraccin de caractersticas deber ser capaz de asociar a
cada caracterstica un nivel de certeza. Esto podra hacerse aprovechando los resultados de
las pruebas de calidad mencionados en la seccin 9.5.3 en la pgina 86.
Incluir incertidumbre o factores de certeza a las caractersticas extradas ofrece una ventaja clave al sistema de extraccin: los resultados obtenidos no tendrn porque ser extremadamente buenos. Queda a discrecin de quin o quines implementen esta funcionalidad
decidir si el sistema de extraccin de caractersticas merece un esfuerzo de desarrollo significativo para ser mejorado o no.
10.2.
89
puede tomar dos enfoques. Enfoque 1: tanto el sistema experto como el sistema de aprendizaje automtico diagnostican las mismas patologas y sus resultados son contrastados.
Enfoque 2: cada uno de los sistemas diagnostica aquellas alteraciones cardacas que mejor
detecte y los resultados son combinados para ofrecer una diagnstico completo.
En el primer caso deber estudiarse cmo realizar el contraste de resultados. Esto puede
realizarse mediante la asignacin de pesos a cada veredicto, la eleccin de aquel con mayor
fiabilidad, etctera. En el segundo caso, el problema reside en conocer qu alteraciones
son detectadas de manera ms fiable por cada sistema y configurar un programa global
que realice el reparto del trabajo. Lgicamente, se asignar a cada sistema la deteccin de
aquellas patologas que mejor detecte.
Independientemente del enfoque utilizado, al usar tcnicas de machine learning, se precisa la creacin y evaluacin de un modelo. ste puede ser entrenado a travs de los ECGs
disponibles en multitud de bases de datos online. Por ejemplo, en la ya mencionada y utilizada en este proyecto, Physiobank.
Parte III
Otros aspectos del proyecto
Captulo 11
Conclusiones
A lo largo de esta seccin se presentan las conclusiones formadas tras el desarrollo del
proyecto. Adems tambin se incluye informacin sobre el manual de usuario creado para
el prototipo y se presenta cul es el coste de adquisicin del prototipo generado.
11.1.
Durante el proyecto aqu presentado se ha creado un electrocardigrafo sencillo de coste reducido. El desarrollo del mismo ha sido dividido en cuatro fases, las cuales se han
desarrollado en paralelo.
En la fase de electrnica se ha trabajado con conocimientos y sistemas no adquiridos
durante el Grado de Ingeniera Informtica, haciendo dura su realizacin. Los puntos fuertes
en cuanto a formacin han sido comprendidos por la electrnica analgica y el procesamiento digital de seales para realizar el filtrado de los electrocardiogramas.
Los desarrollos en el sistema electrnico han partido de sistemas ya existentes y se han
basado en su modificacin para adaptar o mejorar su rendimiento de cara a los objetivos
del proyecto. Mediante este mtodo de trabajo se ha evitado invertir tiempo en crear un
sistema desde cero, de manera anloga al uso de libreras en el desarrollo de software. En
el prototipo final todas las partes del sistema electrnico son Open Hardware, aplicando as
exitosamente los principios de una filosofa abierta en el campo de este proyecto que ms
complicaciones podra presentar al respecto.
La segunda fase est compuesta por el desarrollo de la aplicacin Android. Los conocimientos previos de este entorno han ayudado en la programacin del esqueleto de la aplicacin y los aspectos ms bsicos, pero se han desarrollado componentes ms complejos
para dotar a la aplicacin de otras funcionalidades necesarias para este proyecto. Algunos
94
Conclusiones
11.2.
95
Manual de usuario
Con el propsito de ofrecer un producto lo ms cercano a su versin final se ha redactado un breve manual de usuario para el prototipo desarrollado. Dicho manual indica cmo
realizar todos los pasos necesarios para hacer funcionar el prototipo, desde el ensamblado
de los componentes electrnicos, hasta la utilizacin de la aplicacin Android.
El manual puede consultarse en el Anexo B.
11.3.
Como se ha indicado en mltiples partes de esta memoria, uno de los objetivos principales del proyecto es que el sistema generado tenga un coste de adquisicin reducido. En
la Tabla 11.1 puede observarse cul es el desembolso econmico que conlleva a da de hoy
(12 de junio de 2014) adquirir los componentes primarios que forman el prototipo.
Por componentes primarios se entienden aquellos necesarios exclusivamente para crear
este prototipo. Debe tenerse en cuenta que la placa Arduino y el mdulo Bluetooth, pueden
ser reutilizados en otros proyectos o sistemas.
96
Conclusiones
Tabla 11.1 Coste de los componentes primarios del prototipo en distribuidores varios
Componente
Olimex ECG Shield
Cables de conexin para Olimex ECG
Shield
Arduino UNO (incluye cable USB e
IVA)
Mdulo Bluetooth (inlcuye IVA)
IVA
Costes de envo
Costes de envo
Coste total
Procedencia
Pgina web de
Olimex
Pgina web de
Olimex
Precio (euros)
19,95
9,95
Amazon.es
16,99
Amazon.es
Pgina web de
Olimex
Pgina web de
Olimex
Amazon.es
8,45
6,97
4,96
2,50
69,77
Debido a la categora del transportista elegido en la pgina web de Olimex, ste podra
tardar hasta 3 semanas en transportar el pedido.
Los costes de la placa Arduino y el mdulo Bluetooth podran ser fuertemente reducidos
si se adquieren versiones modificadas de stos en el continente asitico. Recurdese que los
diagramas de la placa Arduino son pblicos y por tanto cualquier fabricante puede modificar
los diseos para crear placas similares a menor precio.
Aparte de los componentes primarios tambin son necesarios otros componentes reutilizables o desechables para mejorar el prototipo y llevarlo al estado que se presenta en esta
memoria. Estos componentes pueden encontrarse en entornos de desarrollo electrnico y
mltiples pginas web. A continuacin se lista cules son estos componentes:
Cable USB A-B: permite la conexin de la placa Arduino a un ordenador para modificar su programa
Estacin de soldadura, estao y pinzas de crocodilo: necesarios para la mejora de los
electrodos para la placa Olimex descrita en la subseccin 3.2.3 en la pgina 29
Electrodos desechables: a travs de ellos y la mejora anterior se consiguen mejores
lecturas de la placa Olimex
Bateras AA: alimentan el sistema electrnico
Soporte (holder) de bateras AA: hace ms cmoda la conexin de las bateras
11.4 Licencia
11.4.
97
Licencia
El cdigo de este proyecto ser liberado bajo la licencia GNU Lesser General Public
License Version 3. Entre otras caractersticas, esta licencia permite el uso del cdigo en
sistemas propietarios y Open Source siempre y cuando los componentes de este proyecto
que se usen sean liberados con las modificaciones realizadas. Este es un enfoque aceptable
para permitir el uso del cdigo generado a cualquier empresa o particular, siempre y cuando
este proyecto y sus derivados queden expuestos al pblico.
El cdigo interno de CLIPS se encuentra en dominio pblico. El cdigo de las APIs
Android utilizadas se encuentra protegido bajo los trminos y condiciones impuestas por
Google para el Android SDK. El cdigo Arduino utilizado a travs de su API se encuentra
protegido bajo la licencia GNU GPL v2.
El cdigo original de esta plantilla LATEX est sujeto a la licencia MIT y fue desarrollado
por Krishna Kumar, Universidad de Cambridge.
11.5.
Captulo 12
Gestin del proyecto
Este proyecto se ha desarrollado mediante una filosofa de desarrollo iterativo, a excepcin del sistema electrnico. Se ha trabajado en todo momento en mantener un prototipo
funcional de cada una de las fases a desarrollar, ampliando stas mediante pequeas adiciones hasta alcanzar los puntos indicados en el alcance del proyecto. Este comportamiento ha
sido posible gracias a un continuo ciclo de seguimiento y control seguido de replanificacin.
12.1.
Gestin de tareas
Al comienzo del desarrollo del proyecto se defini el alcance como la lista de puntos
recogida en la seccin 1 de esta memoria, en la pgina 2. Para llevar a cabo los objetivos
previstos, el proyecto fue dividido en una serie de subtareas representadas en el Esquema
de descomposicin de trabajo, Figura 12.1 en la pgina siguiente. Aquellas tareas que se
prestaron a ser realizadas en paralelo fueron llevadas a cabo de esta manera.
A lo largo del proyecto se crearon dos grandes tareas no planificadas. La primera de
ellas consisti en el estudio e implementacin de tcnicas de filtrado, correspondiente a la
categora Electrnica. La segunda tarea no planificada fue la extraccin de caractersticas
del ECG. sta obtuvo su propia categora dada su envergadura, y se dividi en dos subtareas:
investigacin sobre el estado del arte e implementacin.
Fig. 12.1 Esquema de descomposicin de trabajo. Las categoras estn representadas en gris. Las tareas en azul. En naranja se
muestran las tareas aadidas en un momento posterior a la planificacin inicial.
100
Gestin del proyecto
12.2.
101
A lo largo del desarrollo del proyecto se dieron una serie de problemas con la gestin
del mismo. A su vez surgieron nuevas tareas no previstas, como ya se ha explicado en la
seccin anterior. Estas tareas resultaron ser mucho ms duras de lo previsto. La combinacin
de estos factores caus la decisin de reducir el alcance original del proyecto presentado en
la seccin 1 al alcance que aqu se presenta.
El desarrollo del proyecto ha culminado con la creacin de un prototipo funcional. Los
objetivos alcanzados a travs de este prototipo son:
Un sistema de toma de bioseales cardacas que cumple los siguientes requisitos:
Conversin de datos a formato digital
Codificacin y envo de datos inalmbrico en tiempo real
Una app para dispositivos Android que cumple los siguientes requisitos:
Recepcin de datos de forma inalmbrica y decodificacin de los mismos en
tiempo real
Filtrado de los datos en tiempo real
Visualizacin de los datos en tiempo real
Realizacin de un diagnstico orientativo a partir de los datos recibidos
Compatibilidad con la tablet Nexus 7, modelo 2012
Un sistema de diagnstico automatizado que cumple los siguientes requisitos:
Integrado en una app para dispositivos Android
Capacidad de realizar un diagnstico en menos de un minuto
Respecto a las especificaciones de alcance iniciales, las diferencias son:
Coste objetivo de adquisicin del producto no alcanzado
Toma de datos de tres en vez de cuatro electrodos, reduciendo as la lectura de datos
a nicamente una de las tres derivaciones principales: I, II o III. En el prototipo final
se usa la derivacin I. Las consecuencias de esta reduccin se extienden a lo largo
de todas las fases del proyecto. Puede verse cuales han sido las ventajas perdidas a
travs de la lectura de las secciones Ampliacin a seis derivaciones existentes en los
Captulos 7, 8 y 9
102
12.3.
12.4.
Gestin de costes
103
Tarea
Desarrollo del sistema base
Electrnica
Software, app
Software, extraccin
de caractersticas
Inteligencia
artificial
12
23
22
Desarrollo de la app
19
13
Investigacin
14
Implementacin y pruebas
35
Investigacin
Implementacin
13
Dedicacin (h)
12
Redaccin de la memoria
100
20
Bibliografa y referencias
[1] Advanced Circuits, .
01/06/2014.
4pcb homepage.
http:// www.4pcb.com/ .
ltimo acceso:
[2] Analog Devices, . AD8232. Single-Lead, Heart Rate Monitor Front End, 2012. Rev.
A.
[3] Arduino, . Arduino UNO. http:// arduino.cc/ en/ Main/ ArduinoBoardUno. ltimo
acceso: 28/05/2014.
[4] Bazett, H.C. An analysis of the time-relations of electrocardiograms. Heart, 3:353
370, 1920.
[5] Bluetooth SIG, . RFCOMM WITH TS 07.10, 2011. Rev. V12.
[6] Censi, F., Calcagnini, G., Triventi, M., Mattei, E., Bartolini, P., Corazza, I., and Boriani, G. Effect of high-pass filtering on ecg signal on the analysis of patients prone to
atrial fibrillation. Ann Ist Super Sanita, 45(4):427431, 2009.
[7] CLIPS project, . Clips homepage. http:// clipsrules.sourceforge.net/ , . ltimo acceso:
28/05/2014.
[8] CLIPS project, . Clipsjni version 0.3 beta. http:// clipsrules.sourceforge.net/
CLIPSJNIBeta.html, . ltimo acceso: 28/05/2014.
[9] De Chazal, P., ODwyer, M., and Reilly, R.B. Automatic classification of heartbeats
using ecg morphology and heartbeat interval features. Biomedical Engineering, IEEE
Transactions on, 51(7):11961206, 2004.
[10] Dubin, D.B. Dubin: Interpretacion de ECG: Metodo Clasico del Dr. Dubin para Entender los Mensajes Electricos del Corazon. Cover Publishing Company, illustrated
edition, 2007.
[11] Fisher, T. Butterworth / bessel / chebyshev filters. http:// www-users.cs.york.ac.uk/
~fisher/ mkfilter/ trad.html. ltimo acceso: 26/05/2014.
[12] Fritzing, . Frtizing fab homepage. http:// fab.fritzing.org/ fritzing-fab. ltimo acceso:
01/06/2014.
106
Bibliografa y referencias
[13] Goldberger, A. L., Amaral, L. A. N., Glass, L., Hausdorff, J. M., Ivanov, P. Ch., Mark,
R. G., Mietus, J. E., Moody, G. B., Peng, C.-K., and Stanley, H. E. PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research resource for complex physiologic signals. Circulation, 101(23):e215e220, 2000 (June 13). Circulation Electronic Pages: http:// circ.ahajournals.org/ cgi/ content/ full/ 101/ 23/ e215 PMID:1085218;
doi: 10.1161/01.CIR.101.23.e215.
[14] Gmez-Goiri, A. Clips4android. https:// github.com/ gomezgoiri/ CLIPS4Android. ltimo acceso: 20/05/2014.
[15] Karpagachelvi, S., Arthanari, M., and Sivakumar, M. Ecg feature extraction techniques - a survey approach. International Journal of Computer Science and Information
Security, 8(1), 2010.
[16] Lugovaya, T.S. Biometric human identification based on electrocardiogram. Masters
thesis, Faculty of Computing Technologies and Informatics, Electrotechnical University "LETI", 2005.
[17] Mariel, A. Android_bt_connection. https:// github.com/ Inversebit/ useful-templates/
tree/ master/ Android_BT_Connection, 2014. ltimo acceso: 21/05/2014.
[18] McSharry, P.E., Clifford, G.D., Tarassenko, L., and Smith, L.A. A dynamical model
for generating synthetic electrocardiogram signals. Biomedical Engineering, IEEE
Transactions on, 50(3):289294, 2003.
[19] Moody, G.B. and Mark, Roger G. The impact of the mit-bih arrhythmia database.
Engineering in Medicine and Biology Magazine, IEEE, 20(3):4550, 2001.
[20] National Research Council of Canada, . Fuzzyclips project on github. https:// github.
com/ rorchard/ FuzzyCLIPS. ltimo acceso: 03/06/2014.
[21] Olimex LTD, . Manual de olimex ECG shield. https:// www.olimex.com/ Products/
Duino/ Shields/ SHIELD-EKG-EMG/ resources/ SHIELD-EKG-EMG.pdf . ltimo acceso: 29/05/2014.
[22] Regidor, E. and Gutirrez-Fisac, J.L. Patrones de mortalidad en espaa, 2010. Ministerio de Sanidad, Servicios Sociales e Igualdad, 2013.
[23] Sandia National Laboratories, . Jess homepage. http:// http:// herzberg.ca.sandia.gov/ .
ltimo acceso: 01/06/2014.
[24] Taddei, A., Distante, G., Emdin, M., Pisani, P., Moody, G.B., Zeelenberg, C., and Marchesi, C. The european st-t database: standard for evaluating systems for the analysis
of st-t changes in ambulatory electrocardiography. European heart journal, 13(9):
11641172, 1992.
[25] Tuzcu, V. and Nas, S. Dynamic time warping as a novel tool in pattern recognition
of ecg changes in heart rhythm disturbances. In Systems, Man and Cybernetics, 2005
IEEE International Conference on, volume 1, pages 182186. IEEE, 2005.
Bibliografa y referencias
107
[26] Wikipedia, . High-pass filter wikipedia, the free encyclopedia, 2014. URL http:
// en.wikipedia.org/ w/ index.php?title=High-pass_filter&oldid=608146718. [Online;
accessed 25-May-2014].
[27] Wikipedia, . Low-pass filter wikipedia, the free encyclopedia, 2014. URL
http:// en.wikipedia.org/ w/ index.php?title=Low-pass_filter&oldid=609901792. [Online; accessed 26-May-2014].
[28] Zhang, Z., Dong, J., Luo, X., Choi, K., and Wu, X. Heartbeat classification using
disease-specific feature selection. Computers in Biology and Medicine, 2013.
Anexo A
Diagramas elctricos de las placas de
adquisicin de datos
110
Fig. A.1 Circuito interno del chip AD8232. El amplificador al que se conectan los electrodos forma una etapa de amplificacin
diferencial. El amplificador A2 establece la referencia de voltaje. Por ltimo la etapa formada por el amplificador A1 aumenta el
potencial de la seal antes de que sta abandone el chip.
111
Fig. A.2 Diagrama de la placa de evaluacin del chip AD8232 creada por Analog Devices
112
Diagramas elctricos de las placas de adquisicin de datos
SMB
SMB
SMB
P9
P8
P7
RL
RA
LA
SMB
IAOUT
LA
RA
RL
R12
10M
360k
R10
P10
1M
R6
R11
10M
VCC
1
2
3
4
2
1
C13
10uF
VCC36
R9
1M
1
3
2
Date:
File:
A4
Size
Title
AD8232
2
1
VCC
C6
0.1uF
20
19
18
17
16
15
14
13
12
11
VCC
REFOUT
C11
100nF
SDN
LOD+
LOD-
R16
10M
Header 3
1
2
3
P1
Header 3
1
2
3
P6
VCC
Revision
0.1uF
10M
R13
C7
10M
10M R14IAOUT
R3
1.4M
R2
R15
10M
VCC
SDN
VCC
0.33uF
C2
C12
100uF
VCC
10M
R1
SDN
LOD+
LOD-
10uF
VCC
30/01/2014
Sheet of
K:\Documentos\..\Heart Rate Monitor.SchDoc
Drawn By:
Number
C8
VCC
VCC
HPSENSE
IAOUT
REFIN
+Vs
GND
FR
AC/nDC
SDN
LOD+
LOD-
5
4
Header 2
P5
0.33uF
C1
LP2985-3.3
1
2
3
4
JAE IL-Z-2PL-SMTY
P3
IN
OUT
ON/OFF NC
GND
U2
C9
100nF
HPDRIVE
+IN
-IN
RLDFB
RLD
SW
OPAMP+
REFOUT
OPAMPOUT
U1
C10
100uF
VCC36
1
2
3
4
5
6
7
C4
REFOUT 8
9
10nF R8
10
100k
R4
R5
180k
180k
VCC36
SIG_OUT
1M
C3
1.5nF
1nF
R7
C5
Header 2
P4
JAE IL-Z-2PL-SMTY
P2
113
C10
V_REF
R2
2k/1%
V_REF
2k/1%
R32
2k/1%
R1
D1
D2
R6
R4
C22
C24
100nF/X7R/10%
C23
TLC277IDR
IC2A
100nF/X7R/10%
VCCA
V_REF
V_REF
NA(3.3M) V_REF
2k/1%
10nF/X7R/10%
C1
2k/1%
NA(3.3M)
HF rejection
VCCA
R7
2
3
7
5
1 60 k
A1
4 0k
A2
1 60 k
V_REF
1uF/X5R/10%
R23
10k/1%
100k/1%
R9
10k/1%
VOUT
1
RG 8
SHUTDOWN 4
VA3
R8
C5 1uF/X5R/10%
IC2B
TLC277IDR
C6
40k
R22
10k/1%
1.5V_REF
C4 100nF/X7R/10%
INA321EA
VINVIN+
V+
REF
U1
10k/1%
G=5*(1+R8/R7)=10
Instrumental Amplifier
47F/10%/6.3V/TANT(C)/ESR/0.25ohm(TR3C476K6R3C0250/1754044)
1.5V_REF_BUF
VCCA
R3
R5
BAV199(1156415)
Fc=0.16Hz
1 pole
High-Pass filter
C7
R30
V_REF
0R
R31
TR1
20k 1
0R
C28
1k/1%
R11
0R(boa d m o unted )
C29 NA
0R(bo ad m ounted)
C8
R12
NA
G=5,76...101
G=1+R12/(TR1+R11)
Page 18 of 20
V_REF
R10
1M/1%
C17
3V_REF_ADC
R29
2k/1%
PWR
GYX-SD-TC0805SURK(RED)
R19
330R
VCCA
R21
10k/1%
R20
2k/1%
L1
22H/10%/1.7ohm/80mA(LB2012T220K/8030984)
BZV55C6V2
Z1
1uF/X5R/10%
SHIELD-EKG-EMG revision B
Designed by OLIMEX LTD. 2012
http://www.olimex.com/dev/
V_REF
BAV199(1156415)
100nF/X7R/10%
C12
100nF/X7R/10%
C11
100nF/X7R/10%
V_REF
CAL_SIG
VCCA
1nF/X7R/10%
100k/1%
IC1A
MCP607-I/SN
HR2x6(1-2:Close)
D4/D9
HR1x3(D4:Open;D9:Close)
REF_E
HR1x2(Open)
V_REF
R13
1M/1%
1uF/X5R/10%
C9
Fc=0.16Hz
1 pole
High-Pass filter
3V_REF_ADC
CAL_SIG
1
3
5
7
9
11
AIN_SEL
2
4
6
8
10
12
D9
D4
NA(PN1X8)
1
2
3
4
5
6
7
8
NA(PN1X8)
CON4
1
2
3
4
5
6
7
8
NA(PN1X6)
CON3
1
2
3
4
5
6
NA(PN1X6)
CON2
1
2
3
4
5
6
CON1
56k/1%
R16
C15
R17
5
7
1nF/X7R/10%
10k/1%
IC1B
MCP607-I/SN
10nF/X7R/10%
3.9k/1%
C13
V_REF V_REF
10nF/X7R/10%
C14
330k/1%
R15
G= (R17/R16)+1= 3.56
R14
3.3V/5V
HR1x3(3.3V:Close;5V:Open)
R18
1uF/X5R/10%
C16
3.9k/1%
D8
D9
D10
D11
D12
D13
GND
AREF
D0
D1
D2
D3
D4
D5
D6
D7
A0
A1
A2
A3
A4
A5
RST
3V3
5V
GND
GND
VIN
SHIELD-EKG-EMG
Fig. A.4 Diagrama de la placa Olimex ECG Shield. En la mitad inferior del diagrama se encuentran las etapas de amplificacin y
filtrado claramente etiquetadas.
SCJ325P00XG0B02G
1-L
3-R
CH_IN
VCCA
10k/1%
GND_CAL R28
R24
1M/1%
C21
R26
100R/1%
R25
1M/1%
8
4
R27
C20
10nF/X7R/10%
HR1x2(Open)
PGS1
PGS2
C19
1uF/X5R/10%
100nF/X7R/10%
1
2
PG B 1 0 1 0 6 0 3 M R( F2 5 9 4 T R-ND) PG B 1 0 1 0 6 0 3 M R( F2 5 9 4 T R-ND)
C27
VCCA
C25
10nF/X7R/10%
CAL
CH1_IN-
CH1_IN+
C26
100nF/X7R/10%
10F/6.3V/0805
C18
10F/6.3V/0805
10k/1%
C2
C3
100nF/X7R/10%
SR1
AP431SA
V_CAL
100pF/COG/5%
100pF/COG/5%
ARDUINO: SH PLATFORM
OLIMEX 2012
POWER
ANALOG
DIG ITAL
DIG ITAL
3
2
1
3
2
1
1
2
114
Diagramas elctricos de las placas de adquisicin de datos
Anexo B
Manual de usuario
11 de junio de 2014
Resumen
En este documento se describen los pasos a seguir para realizar un uso
correcto del prototipo generado en el Proyecto de Fin de Grado Un electrocardigrafo inteligente de bajo coste por Alexander Mariel. Cada seccin
de este documento representa un paso del proceso. Al final de este manual
se encuentra un resumen de las acciones a seguir en caso de no necesitar
instrucciones detalladas.
Alexander Mariel
Advertencia mdica
La informacin generada por el sistema aqu descrito y su manual no
sustituyen de ninguna manera las recomendaciones mdicas, diagnsticos
o tratamientos profesionales. La informacin generada por el sistema y su
manual nicamente debe ser utilizada con propsitos informativos.
Alexander Mariel no asume ninguna responsabilidad sobre las consecuencias directas o indirectas que se deriven del uso de la informacin generada por este sistema y su manual.
El usuario jams debe descartar consejo mdico profesional debido a las
razones que haya podido generar a partir del uso de esta aplicacin.
Advertencia general
Alexander Mariel no asume ninguna responsabilidad sobre las consecuencias directas o indirectas que se deriven del uso del sistema electrnico.
El usuario ser responsable de comprender y aplicar las medidas de seguridad requeridas por las regulaciones vigentes en materia de dispositivos
mdicos. El usuario tambin velar por comprender y aplicar todas las medidas de seguridad necesarias para el correcto funcionamiento y uso del sistema electrnico.
Las guas aqu descritas nicamente deben de ser utilizadas con propsitos informativos.
Alexander Mariel
Requisitos
Para poder crear el electrocardigrafo y utilizarlo son necesarios los siguientes
componentes:
Placa Arduino UNO
Placa Olimex ECG Shield
Electrodos de pulsera para la placa Olimex ECG Shield o similar
Dispositivo Android con la versin 4.2.X o superior del sistema operativo
1.
2.
El primer paso para ensamblar el sistema electrnico es montar la placa Olimex ECG Shield sobre la placa Arduino. Para ello deben alinearse los conectores
de la placa Olimex con los de la placa Arduino y unir ambas placas. Ya que el nmero de conectores es diferente en ambas placas, stas deben alinearse en la zona
opuesta a donde estn los conectores para los electrodos (en la placa Olimex) y el
conector USB (en la placa Arduino). En la Figura 1 se representa esta indicacin.
A continuacin deber conectarse el mdulo Bluetooth segn el diagrama que
se muestra en la Figura 2. Por ltimo deber conectarse la alimentacin, es decir
las bateras. El pack de bateras contendr 5 pilas AA. stas sern conectadas en
serie y los polos negativo y positivo resultantes sern conectados como se indica
en la Figura 2.
3
Alexander Mariel
Figura 1: Conexin entre la placa arduino y la placa Olimex. Ntese como los dos
pines ms cercanos a la cmara en la placa arduino no estn poblados y el pin ms
lejano s lo est.
Llegado este momento comprubese que el LED ON de la placa Arduino UNO
y el LED PWR de la placa Olimex estn encendidos. En caso contrario comprobar
las conexiones del pack de bateras.
3.
Acoplamiento Bluetooth
4.
Aplicacin Android
Alexander Mariel
Mdulo
Bluetooth
JY-MCU
5.
Diagnstico automatizado
Para realizar el diagnstico debe desplegarse el men lateral desde la izquierda. Para ello debe arrastrarse el dedo desde el borde izquierdo del dispositivo hacia
el centro de la pantalla. En dicho men seleccionar la opcin Diagnstico. Explicar al sujeto de pruebas que debe mantenerse inmvil durante los siguientes diez
(10) segundos y pulsar el botn Start.
5
Alexander Mariel
Resumen
1. Adherir electrodos al sujeto de pruebas
2. Conectar los cables del Olimex a los electrodos correctamente
3. Ensamblar el sistema electrnico: Unir placas Arduino y Olimex, conectar
mdulo Bluetooth, conectar bateras. Seguir el diagrama 2
4. Emparejar mdulo Bluetooth con el dispositivo Android (nicamente necesario la primera vez)
5. Iniciar app
6. Seleccionar mdulo Bluetooth correspondiente al arduino en la app
Para iniciar el diagnstico automatizado sganse los pasos de la seccin 5.
6
Alexander Mariel