• No se han encontrado resultados

Proyecto Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación

N/A
N/A
Protected

Academic year: 2021

Share "Proyecto Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación"

Copied!
247
0
0

Texto completo

(1)

Proyecto Fin de Grado

Grado en Ingeniería de las Tecnologías de Telecomunicación

Demostrador para el desarrollo de un sistema

distribuido de gestión de alarmas sanitarias sobre el servicio de distribución de datos (DDS)

Autor: José María Roldán Gil Tutor: Isabel Román Martínez

Departamento de Ingenería Telemática Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2014

(2)
(3)

Proyecto Fin de Grado

Grado en Ingeniería de las Tecnologías de Telecomunicación

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el

servicio de distribución de datos (DDS)

Autor:

José María Roldán Gil

Tutor:

Isabel Román Martínez Profesora colaboradora

Dep. De Ingeniería Telemática Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2014

(4)
(5)

Proyecto Fin de Carrera: Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el servicio de distribución de datos (DDS)

Autor: José María Roldán Gil Tutor: Isabel Román Martínez

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2014

El Secretario del Tribunal

(6)

A mis padres, familia y amigos

(7)

vii

Agradecimientos

Con este proyecto pongo fin a mis primeros cuatro años en la Universidad de Sevilla. Siempre estaré agradecido a mis padres, por haberme enseñado a esforzarme para conseguir mis retos, lo que ha hecho que haya llegado a conseguir los logros que en mis años de vida he tenido, y por su apoyo todos los días. También a toda mi familia, en especial a mi tito Rafael que siempre quiso que yo estudiara Telecomunicaciones, y a mis amigos, tanto de Córdoba como de Sevilla.

Los profesores también han puesto de su parte en mi formación en la Escuela Superior de Ingeniería de Sevilla. En especial agradecer toda la ayuda que me ha dado Isabel Román, tutora de este proyecto, así como a Jorge Calvillo por todas las dudas resueltas.

José María Roldán Gil

2014

(8)

Resumen

En este proyecto se ha realizado un análisis de las posiblidades de utilizar el patrón de sistemas distribuidos publicador/suscriptor, destacable por la escalabilidad y la independencia entre los publicadores (emisores) y los suscriptores de información (receptores), para dar soporte a un sistema de monitorización remota de pacientes y gestión de alarmas sanitarias. Por otro lado se ha desarrollado un demostrador utilizando el estándar Data Distribution Service, que sigue este patrón y define una middleware base sobre la que construir el sistema. Esta middleware facilita las comunicaciones entre los nodos del sistema ocultando al programador gran parte de la complejidad inherente a la distribución.

En primer lugar se ha hecho un estudio de qué alarmas son útiles para el personal sanitario y cómo implementarlas utilizando esta tecnología, analizando qué facilidades aportan los mecanismos de suscripción y filtrado. De este modo una alarma tipo se define con una conjunción de suscripción más filtrado y/o procesado (cuando sea necesario). Así cada suscriptor puede personalizar las alarmas que desea recibir configurando sus suscripciones y estableciendo filtros sobre la información publicada. Como demostrador, se ha desarrollado una aplicación suscriptora que facilita la definición de la mayoría de alarmas identificadas en el estudio previo.

El usuario, a través de una interfaz gráfica de prueba, podrá seleccionar la información en la que esté interesado y establecer alarmas sobre ella, creándose y registrándose en la middleware el suscriptor necesario para recibirlas.

De este modo en un despliegue real se publicarán datos de monitorización desde los dispositivos adecuados y

por otro lado los actores interesados en la gestión de algún tipo de alarmas definirán las características de estas

alarmas a través de una GUI y se crearán, configurarán y ejecutarán los suscriptores adecuados para detectar

estas alarmas y lanzar los protocolos de actuación adecuados.

(9)

ix

Índice

Agradecimientos vii

Resumen viii

Índice ix

Índice de Tablas xi

Índice de Figuras xiii

Notación xv

1 Introducción 1

1.1 Motivación 1

1.2 Objetivo 1

1.3 Metodología 2

2 Metodología 3

2.1 Patrón Publicador/Suscriptor 3

2.2 Data Distribution Service 3

2.2.1 Especificación DDS 4

2.3 RTI DDS 10

3 Resultados 13

3.1 Análisis de DDS y RTI DDS. 13

3.2 Caso práctico de alarmas sanitarias 14

3.2.1 Taxonomía de alarmas sanitarias 14

3.2.2 Base del software 15

3.2.3 Especificación de requisitos 16

3.2.4 Diseño de la solución para el suscriptor de alarmas 27

3.2.5 Otros aspectos de la solución 33

4 Conclusiones 36

4.1 Conclusiones 36

4.2 Líneas futuras 36

Referencias 39

Anexo A: Javadoc API 41

(10)
(11)

xi

Í NDICE DE T ABLAS

Tabla 3-1: taxonomía de alarmas 15

Tabla 3-2: capas del sistema de alarmas 15

Tabla 3-3: Req01 Desarrollo de Alarma Umbral 17

Tabla 3-4: Req02 Desarrollo de Alarma Rango 17

Tabla 3-5: Req03 Desarrollo Alarma Memoria 17

Tabla 3-6: Req04 Desarrollo alarma Personalizada 18

Tabla 3-7: Req05 Alarma Persistencia 18

Tabla 3-8: Req06 Alarma Error 18

Tabla 3-9: Req07 Información de monitorización 19

Tabla 3-10: Req08 Mensaje de Alerta 19

(12)
(13)

xiii

Í NDICE DE F IGURAS

Ilustración 2-1: primeros conceptos de DDS 4

Ilustración 2-2: modelo servidor/cliente frente a DDS 4

Ilustración 2-3: Infraestructure Module 5

Ilustración 2-4: Domain Module 6

Ilustración 2-5: TopicDefinition Module 7

Ilustración 2-6: Publication Module 8

Ilustración 2-7Suscription Module 9

Ilustración 2-8: vista general de las clases 10

Ilustración 3-1: Diagrama de Casos de Uso 20

Ilustración 3-2: Paciente 20

Ilustración 3-3: Personal Sanitario 21

Ilustración 3-4: Técnico 21

Ilustración 3-5: Registrar usuario en el sistema. 21

Ilustración 3-6: Acceso al sistema. 22

Ilustración 3-7: Arrancar el sistema. 22

Ilustración 3-8: Establecer Alarma Error. 23

Ilustración 3-9: Establecer Alarma Ayuda. 23

Ilustración 3-10: Establecer Alarma Umbral. 24

Ilustración 3-11: Establecer Alarma Personalizada. 24

Ilustración 3-12: Establecer Alarma Persitencia. 24

Ilustración 3-13: Iniciar Lectura de datos. 25

Ilustración 3-14: Información permanente de pacientes. 25

Ilustración 3-15: Fiabilidad. 26

Ilustración 3-16: Usabilidad. 26

Ilustración 3-17: mantenibilidad. 27

Ilustración 3-18: seguridad. 27

Ilustración 3-19: diagrama de paquetes. 27

Ilustración 3-20: diagrama de clases del paquete aplicación. 28

Ilustración 3-21: diagrama de clases del paquete alarmas. 29

Ilustración 3-22: diagrama de clases del paquete listeners. 30

Ilustración 3-23: secuencia del método on_data_available en las clases ListenerXXXX 31 Ilustración 3-24: secuencia del método on_data_available en las clases ListenerMemoriaXXXX 31

Ilustración 3-25: diagrama de clases del paquete topics. 32

Ilustración 3-26: despliegue del suscriptor. 32

(14)

Ilustración 3-27: diagrama de despliegue. 33

Ilustración 3-28: interfaz de usuario. 33

Ilustración 3-29: diagrama de secuencia de ejecución de la interfaz. 34

(15)

Notación

DDS OMG CORBA OSI RTPS QoS

Data Distribution Service Object Management Group

Common Object Request Broker Architecture Open System Interconnection

Real Time Publish Subscribe Quality of Service

RTI DCPS PIM PSM DLRL API

Real-Time Innovations Inc.

Data-Centric Publish Subscribe Platform Independent Model Platform Specific Model

Data Local Reconstruction Layer

Application Programming Interface

(16)
(17)

1

1 I NTRODUCCIÓN

1.1 Motivación

n el sector de la sanidad la tecnología juega un papel importante. Son numerosas las aplicaciones y dispositivos que participan en procesos sanitarios, como pueden ser escáneres para realizar diferentes tipos de análisis a los pacientes, desfibriladores, ultrasonidos, resonancias magnéticas, monitorización, seguimiento del embarazo… El desarrollo de la tecnología ha favorecido el desarrollo de la medicina.

Respecto a la monitorización de pacientes lo más habitual es que el paciente se controle mediante la medida de una serie de variables que determinan su estado y que el médico y demás personal sanitario que esté interesado en esa información acceda a estos datos a través de monitores u otros dispositivos localizados cerca del paciente. Se trata de un proceso que está acotado en el espacio en el que se desarrolla. Sin embargo cada vez es más habitual encontrar sistemas de monitorización que permiten que los parámetros medidos se puedan consultar de forma remota.

Durante la monitorización el flujo de información generado puede llegar a ser bastante significativo, por lo que filtrar de forma automática esta información para considerar especialmente la más importante y crítica y para generar y manejar las alarmas pertinentes de forma eficaz puede permitir una mayor eficiencia de los sistemas de monitorización.

Sería deseable disponer de un sistema que permita un tratamiento “inteligente” de la información de monitorización, generando alarmas cuando sea necesario e informando de las mismas a los actores pertinentes, a través de las interfaces oportunas. Al mismo tiempo es deseable que este sistema sea robusto, fiable, fácilmente configurable y escalable, todo ello al menor coste posible.

1.2 Objetivo

El propósito principal de este proyecto es el desarrollo de un sistema de gestión de alarmas sanitarias obtenidas a partir de la monitorización de pacientes. Estos pacientes pueden estar en una localización diferente a la del personal encargado de su cuidado, que será el receptor de las alarmas. Además, la localización tanto de los pacientes como del personal sanitario no tiene por qué ser fija.

El sistema debe ser independiente de los dispositivos que utilicen los diferentes actores. En la parte del paciente, encontramos una gran variedad de aparatos para obtener los diferentes valores. Y el cuidador podría recibir las alarmas en el teléfono móvil a través de un mensaje o desde un ordenador recibiendo un correo electrónico o en cualquier otro medio de comunicación imaginable... De esta forma otro requisito será que el sistema sea independiente de la plataforma de los terminales utilizados.

El médico no está interesado en todo momento en toda la información obtenida de la monitorización, sólo en aquella que sea relevante en un instante (y contexto) determinado. Cada actor implicado en el cuidado de un paciente debe poder configurar las alarmas que está interesado en recibir así como el medio por el que desea recibirlas, en función de las características del paciente y del contexto.

Algunas alarmas deben generarse (y tratarse) en tiempo real, ya que pueden referirse a información crítica sobre el estado del paciente y del contexto.

Podemos resumir los objetivos:

· Monitorización de pacientes en tiempo real independientemente de su ubicación.

· Generación de alarmas a partir de la información de monitorización, alertando a los actores

E

(18)

Introducción

2

implicados en su cuidado independientemente de la ubicación de los mimos.

· Posibilidad de configurar de forma personalizada diferentes tipos de alarmas.

· Independencia de plataformas usadas en la emisión y recepción de la información de monitorización y de las alarmas.

1.3 Metodología

La arquitectura esperada del sistema cumple con las características de un sistema distribuido. Formada por un conjunto de dispositivos, cada uno de ellos diferente desde el punto de vista de hardware y software, que estarán conectados a red para compartir datos.

Además, para cumplir con los objetivos se ha considerado adecuado elegir, de entre las tecnologías disponibles, una que siga el patrón publicador-suscriptor. Este patrón se emplea en aplicaciones software destinadas al intercambio de información entre sus nodos cumpliendo estas características: independencia entre publicador (emisor), suscriptor (receptor) y filtrado de mensajes.

El publicador no sabe ni está interesado en saber dónde y quién recibirá los datos enviados, siendo su tarea principal publicar la información con las características adecuadas (en tiempo, precisión, etc…).

Habitualmente esta información se publica en topics, que son el elemento que hace de unión entre ambos

extremos. Lo definimos como un flujo de datos que pertenecen al mismo tipo. El suscriptor se suscribirá a

ese topic y recibirá los datos publicados en el otro extremo de la comunicación. Existe la posibilidad de

suscribirse aplicando un filtro basado en el contenido del mensaje. De esta manera sólo aquellos datos que

cumplan la condición de filtrado llegarán a ese suscriptor.

(19)

3

2 M ETODOLOGÍA

2.1 Patrón Publicador/Suscriptor

El patrón Publicador/Suscriptor [1] es un patrón arquitectónico que destaca principalmente por facilitar la escalabilidad de la red. Es utilizado por las middleware orientadas a mensajes (MOM, Message Oriented Middleware). Los actores que intervienen en el proceso de comunicación son los publicadores, destinados a enviar los datos, y los suscriptores, que los reciben.

La escalabilidad se consigue porque los publicadores y suscriptores son independientes entre sí. Por un lado, un publicador enviará los datos sin saber quién los recibirá, dónde se encuentra ese receptor. El suscriptor se suscribirá a los datos que sean de su interés, recibiendo cada publicación realizada desde ese momento. Ambos actores se desentienden de la topología de la red.

En la suscripción, existe la posibilidad de aplicar filtros. Así, el suscriptor no recibirá la totalidad de mensajes publicados sino aquellos en los que está realmente interesado. Distinguimos dos tipos de filtrado: filtrado por topic y filtrado por contenido. En el primer caso, el suscriptor se suscribirá a un topic, definido como un canal lógico de información. Sólo le llegarán los mensajes que se publiquen en ese topic. Un suscriptor puede suscribirse a los topics que desee. En la otra forma, filtro basado en contenido, el suscriptor podrá establecer condiciones de filtrado que evaluarán el contenido de los mensajes. Si los datos del mensaje cumplen la condición, llegarán a la aplicación suscriptora. Lo más habitual es la combinación del filtrado basado en topic y en contenido.

Un ejemplo simple sería un publicador que envía los valores de la temperatura en una casa. Un suscriptor se suscribe al topic denominado “temperatura” y establece la condición de que la variable del topic temperatura tiene que ser mayor o igual que 30. El publicador envía sucesivas muestras cuyo valor es 25, por lo que el suscriptor no ha recibido nada. A continuación, se envía 26, 27, 28, 29, 30, 31… A partir de 30, los datos llegan a la aplicación receptora (es decir al suscriptor).

2.2 Data Distribution Service

Data Distribution Service (DDS) [2]es un estándar de middleware que sigue el patrón publicador/suscriptor para sistemas distribuidos centrados en datos en tiempo real. Este estándar es mantenido por el Object Management Group.

Antes de detallar DDS, hay que conocer qué es una middleware. Una middleware, o software de intermediación, es un software que se sitúa por encima del sistema operativo utilizado en sistemas distribuidos para facilitar las comunicaciones entre aplicaciones, que pueden ser de diferentes características como sistemas operativos o lenguajes de programación. Para el programador, por tanto, actúa como una capa de abstracción, de forma que éste puede diseñar su aplicación como si los procesos estuvieran corriendo en la misma máquina.

En el caso de DDS, se sitúa entre la capa de red y de aplicación del modelo OSI, simplificando y estandarizando el flujo de datos en sistemas distribuidos en tiempo real y proveyendo comunicaciones robustas y eficientes. Al hablar de aplicaciones distribuidas, por tanto, nos referimos a aquellas que se componen de procesos que interaccionan entre sí comunicándose a través de red. Habitualmente la middleware también provee una serie de servicios adicionales (nombrado, intermediación, persistencia…) que permiten aumentar la transparencia de esta distribución.

Siguiendo el patrón publicador/suscriptor, volvemos a encontrarnos con los conceptos de publicador para

enviar los datos y suscriptor para recibirlos. El topic será el canal en el que se publiquen los datos. De esta

forma, los publicadores publicarán muestras de ese topic y se distribuirán a los diferentes suscriptores que

previamente se han suscrito al topic. Un topic se identifica por un nombre y un tipo. Las aplicaciones

mantienen entre ellas un modelo de datos común, aunque cada una trabaja de forma autónoma.

(20)

Metodología

4

Ilustración 2-1: primeros conceptos de DDS

Este modelo destaca por desacoplar sus componentes. Desacoplados en el espacio, ya que cada nodo de la red es independiente de los otros; en tiempo, debido a que la recepción de los datos no tiene que estar sincronizada con su escritura; desde el punto de vista de la plataforma, las aplicaciones no se preocupan del hardware, sistema operativo o presentación de los datos en el otro extremo de la comunicación; y de implementación, ya que DDS es un estándar y hay varias implementaciones que pueden operar entre sí. Desacoplando los nodos de la red una de las ventajas directas es la tolerancia a fallos, mejorando respecto al tradicional modelo de tipo cliente/servidor. En actividades críticas como emergencias, transportes o finanzas, es una característica a tener en cuenta. El hecho de que los elementos pueden entrar y salir del dominio en el que actúan en cualquier momento también mejora la escalabilidad del sistema.

Ilustración 2-2: modelo servidor/cliente frente a DDS

DDS proporciona mecanismos para una exhaustiva gestión de QoS, que permite controlar el comportamiento de cada entidad del sistema en aspectos como la duración y persistencia del servicio, presentación de datos, prioridad de envío, fiabilidad, latencia o recursos del sistema, entre otras.

Estas características de DDS hacen que sea factible desarrollar un sistema de alarmas sanitarias entre aplicaciones ejecutándose en múltiples dispositivos heterogéneos.

2.2.1 Especificación DDS

El estándar DDS se divide en dos niveles de interfaces: un primer nivel dedicado a especificar un servicio eficiente de envío de información a los destinatarios adecuados (Data-Centric Publish-Subscribe), y un segundo nivel opcional que tiene el objetivo de integrar el servicio con la capa de aplicación (Data Local Reconstruction Layer).

Data-Centric Publish-Subscribe está formado por la parte independiente de la plataforma (Platform Independent Model) y la parte específica de plataformas CORBA (OMG IDL Platform Specific Model). En el modelo independiente se define el verdadero funcionamiento de DDS: los elementos del sistema, la publicación, recepción, QoS… Mientras que la parte dependiente de la plataforma define la interfaz que la aplicación usará para interactuar con el servicio usando para ello IDL (Interface Description Language), mapeándose PIM a PSM.

El segundo nivel, Data Local Reconstruction Layer (DLRL) también se estructura en dos apartados: DLRL

Platform Independent Model y OMG IDL Platform Specific Model. El objetivo del modelo independiente es

proveer un acceso más directo a los datos intercambiados. DLRL ha sido diseñado para permitir a los

desarrolladores de las aplicaciones usar la mayoría de las funcionalidades que ofrece DLRL. El desarrollador

podrá describir clases de objetos con sus métodos, campos de datos y relaciones; adjuntar los campos de datos

a las entidades DCPS; manipular los objetos usando los constructores que activarán las entidades DCPS

(21)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 5 servicio de distribución de datos (DDS)

adjuntas de manera correcta; gestionar esos objetos almacenados en la cache de objetos. Las características del mapeo DCPS-DLRL son las siguientes:

· No debe producirse una duplicación innecesaria de datos.

· El mapeo no debe degradar la eficiencia de una implementación.

· Debe ser flexible, aunque hay casos en los que la flexibilidad no es necesaria y añade información extra. Para esos casos, se define un mapeo por defecto.

Podemos distinguir mapeo de clases, de referencias de objetos, de atributos y de relaciones. DLRL define un conjunto de entidades, como CacheFactory, CacheBase, Cache, ObjectHome…

Respecto al modelo específico de plataforma, provee el mapeo a plataformas CORBA. Se describe a través de constructores IDL que pueden ser usados por la aplicación para interactuar con el servicio. También se especifica cómo la aplicación introduce sus clases y cómo añade indicaciones para generar las entidades DLRL y los constructores mejorados resultantes de aplicación.

DCPS Platform Independent Model

Esta capa es en la que se desarrollan los conceptos principales de la tecnología DDS. Cinco módulos estructuran el modelo: Infraestructure Module, Domain Module, Topic-Definition Module, Publication Module y Subscription Module.

Infraestructure Module: está formado por las clases Entity, DomainEntity, QoSPolicy, Listener, Status, WaitSet, Condition, GuardCondition, StatusCondition. Se trata de clases base para el sistema, de las que heredarán el resto. La clase Entity es la clase base para los elementos DomainParticipant, Topic, Publisher, DataWriter, Subscriber y DataReader. Las entidades soportarán QoSPolicy, Listener y Condition.

DomainEntity también es una clase base para las entidades excepto DomainParticipant, de esta manera se le otorga mayor categoría.

Ilustración 2-3: Infraestructure Module Fuente: OMG

Domain Module: formado por las clases DomainParticipant, DomainParticipantFactory,

DomainParticipantListener. La clase DomainParticipant permite establecer un dominio de comunicación entre

aplicaciones, aislando aquellas que no pertenecen a él. Podemos decir que un dominio es una red virtual entre

aplicaciones que se encuentran en él.

(22)

Metodología

6

Ilustración 2-4: Domain Module Fuente: OMG

DomainParticipant puede crear y destruir Publisher, Subscriber y Topic. DomainParticipantFactory crea y destruye objetos DomainParticipant. Y DomainParticipantListener es el objeto Listener usado por DomainParticipant.

Topic-Definition Module: compuesto por TopicDescription, Topic, ContentFilteredTopic, MultiTopic,

TopicListener y TypeSupport. La información que identifica un topic permanece en los objetos

TopicDescription. Es una clase padre de Topic, ContentFilteredTopic y MultiTopic.

(23)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 7 servicio de distribución de datos (DDS)

Ilustración 2-5: TopicDefinition Module Fuente: OMG

La clase Topic declara los datos de la forma más simple posible para ser publicados o suscritos. La clase ContentFilteredTopic es una especialización de Topic para realizar suscripciones más complejas. Se diferencia respecto a Topic en que lleva asociada una expresión de filtrado que aplicada a los datos hará que suscriptor reciba solo los valores que publicados que cumplan la condición. La otra clase es Multitopic, de carácter opcional. Está destinada al filtrado de los valores publicados provenientes de varios topics. Topic, al ser una entidad, puede tener asociado un objeto Listener, concretamente TopicListener.

Publication Module: formado por Publisher, DataWriter, PublisherListener, DataWriterListener.

(24)

Metodología

8

Ilustración 2-6: Publication Module Fuente: OMG

El envío de datos se realiza a partir de los métodos de las clases Publisher y DataWriter. El objeto Publisher gestiona la actividad de varios DataWriter y se encarga de la distribución de los datos, y el objeto DataWriter es usado por la aplicación para indicar la presencia de un nuevo dato. El resto de clases son los correspondientes objetos Listener, PublisherListener y DataWriterListener, que más adelante se explicarán.

Subscription Module: formado por Subscriber, DataReader, DataSample, SampleInfo, SubscriberListener,

DataReaderListener, ReadCondition, QueryCondition.

(25)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 9 servicio de distribución de datos (DDS)

Ilustración 2-7Suscription Module Fuente: OMG

De la misma forma que la publicación, la suscripción es definida con la asociación de un objeto Subscriber con los objetos DataReader. La entidad Subscriber tiene como finalidad la recepción de los datos publicados en el topic, indicando a la aplicación que los datos están disponibles en el objeto DataReader. El acceso a los datos se realiza a partir de los métodos de la clase DataReader “read”, “read_w_condition”, “take”,

“take_w_condition”. La diferencia entre read y take es que ejecutando read es la middleware la responsable del dato y permanecerá en la cola de recibidos, mientras que con take será responsable la aplicación, eliminándose del objeto DataReader. Si se usa <>_w_condition se estará realizando un filtrado de los datos en función de la condición previamente declarada. Para ello se utilizan las clases ReadCondition y QueryCondition asociándolas al respectivo objeto DataReader.

La clase SampleInfo almacena información identificativa de una muestra de datos. Por ejemplo, indica si la

(26)

Metodología

10

muestra ha sido accedida o no mediante el método “read”, el estado de la muestra o varios contadores.

Ilustración 2-8: vista general de las clases Fuente: RTI

Respecto a la gestión de la calidad de servicio (QoS), se apoya en políticas individuales (objetos que heredan de QosPolicy). La calidad de servicio puede ser controlada en cada una de las entidades que se encuentran en el sistema (DomainParticipant, Publisher, Subscriber, Topic, DataWriter, DataReader). La calidad de servicio establecida en el lado publicador debe ser compatible con el receptor para desarrollar un envío correcto. DDS comprueba la QoS y la acepta si es válida, en caso contrario mantiene los valores existentes.

Algunos tipos de QoS son DURABILITY, HISTORY, RELIABILITY, DEADLINE, OWNERSHIP…

Por último, tanto Listener como Condition (junto a Wait-set) son dos mecanismos que permiten avisar a la aplicación de cambios de estado relevantes. Los diferentes estados dependen de la entidad, por ejemplo INCONSISTENT_TOPIC para Topic, DATA_ON_READERS para Subscriber o SAMPLE_REJECT para DataReader. Se dividen en dos tipos, Read communication status, grupo al que pertenecen solamente DATA_ON_READERS y DATA_AVAILABLE, y Plain communication statuses para el resto.

Si la aplicación necesita ser avisada de los cambios de estado de una entidad de forma asíncrona, hay que crear un objeto Listener y asociarlo a la entidad. Si se quiere que la aplicación espere a que sucedan cambios de estado, se asocia el objeto StatusCondition a WaitSet y se llama el método de wait() de WaitSet. Se bloqueará hasta que se cumpla la condición asociada o expire el temporizador.

2.3 RTI DDS

El estándar Data Distribution Service es implementado por varios fabricantes: RTI DDS, OpenSplice, tao- dds… Un sistema en el que estén presentes aplicaciones de varios fabricantes funciona de la misma forma que si son del mismo. Esta era una de las ventajas de utilizar el estándar DDS. El sistema de alarmas se ha desarrollado en RTI [3].

RTI implementa el estándar DDS publicador el OMG. Además, incluye algunas características que son extensiones de DDS. Principalmente, existen bastantes políticas de calidad de servicio que no están contempladas por el estándar: DATA_WRITER_PROTOCOL, MULTI_CHANEL, PUBLISH_MODE, TRANSPORT_UNICAST…

A continuación se exponen varios conceptos de esta tecnología para entender mejor el funcionamiento interno.

Envío de datos: el envío de datos puede llevarse a cabo de dos maneras. La primera es siguiendo una política

de best-effort. La red no garantiza que los datos lleguen a su destino. Los usuarios recibirán el mejor servicio

posible en ese momento, en función del estado de la red. Por el contrario, la otra forma de envío es el envío

(27)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 11 servicio de distribución de datos (DDS)

fiable. Se garantiza la entrega de las muestras enviadas en el orden previsto. Para ello, se usa el protocolo RTPS (Real-Time Publish-Subscribe).

Este protocolo usa tres tipos de mensajes: datos, heartbeats y ACKNACKs. En los mensajes de datos se envía el valor de los datos transmitidos además de un número de secuencia que lo identifica. Los mensajes de tipo heartbeats indican al receptor los números de secuencia que debe de haber recibido, que responderá con un ACKNACK indicando el siguiente número de secuencia que espera. Tanto en el DataWriter como el DataReader hay una ventana de envío y de recepción, respectivamente. Según los envíos son asentidos se libera espacio de la ventana de envío. En la recepción no se libera el espacio hasta recibir el mensaje heartbeats y comprueba que los números de secuencia recibidos son los especificados.

Persistencia de los datos: existen tres mecanismos para conseguir la persistencia de datos: “durable writer history”, “durable reader state” y “data durability”. El primero, “durable writer history” permite a un DataWriter hacer persistente su historial. El segundo hace persistente el estado de los objetos DataReader recordando qué datos ya han sido recibidos. Por último, “data durability” permite a una aplicación configurar un DataWriter de manera que la información escrita por él persiste más allá de la vida de ese DataWriter. Un objeto DataReader puede suscribirse y recibir la información aunque no se esté ejecutando la aplicación del DataWriter. Para ello es necesario el paquete RTI Persistence Service.

Descubrimiento: cada DomainParticipant guarda información sobre los DataReaders y DataWriters que estén activos en el mismo dominio. Esa información hace posible la comunicación entre DataReader y DataWriter. El descubrimiento se desarrolla en dos fases: Simple Participant Discovery y Simple Endpoint Discovery.

Durante la fase Simple Participant Discovery se utiliza el protocolo Simple Participant Discovery Protocol (SPDP). La información de un DomainParticipant es distribuida a otros DomainParticipants incluyendo un identificador global del Domainparticipant, información sobre direcciones y puertos y QoS. Esta información es reproducida periódicamente para informar de cambios e indicar que está activo.

Para la segunda fase el protocolo usado es Simple Discovery Endpoint Protocol (SDEP). El objetivo es unir DataWriters con DataReaders. Como en la primera parte, hay un intercambio de mensajes hasta que cada DomainParticipant tiene toda la información sobre los participantes del mismo dominio y sus entidades.

Cuando se descubre un DataWriter o DataReader, se determina si la aplicación tiene la pareja. El emparejamiento entre la entidad local y la remota se produce si ambas tienen el mismo Topic, el mismo tipo de datos y políticas de QoS compatibles.

Plugins de Transporte: el núcleo de RTI DDS es independiente del protocolo de transporte utilizado. Utiliza una API para interactuar con los pluggins de transporte que la implementen y que serán encargados de realizar el envío y recepción de los mensajes. Los pluggins UDPv4, UDPv6 y memoria compartida están incluidos.

RTI ofrece una extensión de los pluggins, por ejemplo RTI Secure WAN Transport o RTI TCP Transport.

MultiChannels DataWriters: los DataWriter pueden ser configurados para enviar los datos a direcciones multicast, en función de filtros configurados en ellos. Cada vez que se escribe un nuevo dato, se aplican los filtros y se envía por la dirección multicast que haya cumplido la condición. En la parte receptora, si una aplicación se suscribe aplicando un filtro a un topic, sólo leerá la información en aquella dirección multicast que cumpla su criterio. Si está interesado en todos los datos, se suscribirá al conjunto de direcciones multicast de ese DataWriter. Usando direcciones multicast mejoramos el uso del ancho de banda de la red en situaciones en las que hay varios DataReaders interesados en diferentes subconjuntos de datos que provienen del mismo Topic.

Threading model: RTI utiliza varios hilos para desarrollar sus actividades. Encontramos un hilo dedicado a la base de datos que se crea en cada DomainParticipant. Esta base de datos almacenará información sobre las entidades creadas localmente y aquellas que son descubiertas remotamente. Su función consiste en purgar periódicamente la base de datos.

Otro hilo del sistema es el hilo de eventos. Comprobará periódicamente la condición asociada a un evento o un temporizador y lanzará el evento cuando se cumpla. Sólo maneja un evento en cada momento, por lo que implementa una cola para albergar todos los eventos que esté manejando.

Por último, encontramos los hilos de recepción, cuya misión es procesar los paquetes recibidos por la capa de

transporte. La cantidad de hilos de recepción existentes en un DomainParticipant dependerá de la calidad de

servicio configurada para DataWriter y DataReader y de la implementación del protocolo de transporte.

(28)

Metodología

12

Gestión de problemas: la gestión de problemas se lleva a cabo a partir de mensajes. Dependiendo de la

configuración seleccionada, variará la cantidad de mensajes emitidos. Los tipos de configuración son, de

menor a mayor cantidad de información: SILENT, ERROR, WARNING, STATUS_LOCAL,

STATUS_REMOTE, STATUS_ALL.

(29)

13

3 R ESULTADOS

n este apartado se analiza qué falicidades puede aportar DDS para desarrollar un sistema de gestión de alarmas sanitarias y se realiza una primera implementación, a modo de demostrador, que permite configurar de forma personalizada diferentes tipos de alarmas y generando las alarmas configuradas en tiempo real.

3.1 Análisis de DDS y RTI DDS.

Una vez conocidas las características del estándar del OMG Data Distribution Service y de la implementación de la compañía RTI, es necesario analizar qué pueden aportar al desarrollo de un sistema de alarmas sanitarias.

Como ya sabemos, en un sistema DDS los elementos que se comunican son los publicadores y los suscriptores, relacionados a través de topics. Si identificamos cada elemento en el sistema de alarmas sanitarias, los publicadores serían los dispositivos que recogen y envían los datos de un paciente en una ubicación determinada. Un publicador puede entrar o salir del sistema en el momento que se considere oportuno. Por ejemplo, si se produce la llegada de un nuevo paciente, se encienden sus respectivos dispositivos y comienza la monitorización publicando los datos en los topics de información establecidos.

Desde el otro extremo de la comunicación, los actores implicados podrían suscribirse a los datos que les resulten interesantes, desde un dispositivo y ubicación diferentes. Aprovechando la capacidad de DDS de llevar a cabo una suscripción filtrada se pueden definir (o personalizar) alarmas. No toda la información es relevante en una monitorización para un suscriptor en concreto, las alarmas configuradas le permitirán actuar de la forma más conveniente y efectiva en el instante que sea necesario. DDS permite filtrar la información aplicando la sintaxis SQL utilizada en bases de datos. Prácticamente se cubren todas las necesidades para personalizar alarmas si el suscriptor filtra la información de un topic comparando el valor (o valores) publicado con valores de referencia. Los valores permitidos son ‘>’, ‘<’, ‘>=’, ‘<=’, ‘<>’, ‘=’ y ‘between’ o

‘notBetween’ para indicar rangos. Se pueden anidar varias condiciones con ‘and’ y ‘or’. Por ejemplo, una expresión sería temperatura >=38.5, o variable1>20 and variable2<25. Con la genstión de eventos que realiza DDS se podría, una vez que se ha recibido una muestra que cumple la condición, ejecutar el programa que contiene el protocolo de actuación ante la alarma. Podría ser desde enviar un correo electrónico a activar una señal luminosa o mostrar un mensaje por pantalla.

El uso de dominios en los objetos Participant permite aislar aplicaciones. Las publicaciones realizadas en un dominio concreto solo serán recibidas por los suscriptores que pertenezcan al mismo. De esta manera por ejemplo dos clínicas diferentes pueden utilizar el mismo sistema de alarmas ejecutándolo cada una en un dominio distinto. El dominio es de tipo ‘int’ de 32 bits, por lo que hay un rango de valores bastante amplio.

DDS es configurable gracias a la gestión de QoS que se aplica en cada uno de los objetos definidos. Se conseguiría priorizar el envío de unos datos frente a otros, para aquellas alarmas que fueran más críticas, o establecer el tiempo máximo entre dos envíos, entre otras configuraciones.

Sería interesante desde el punto de vista del personal sanitario conocer los topics disponibles para realizar la suscripción. Puede darse el caso de que un paciente sólo se le controle la respiración, publicando los datos en el topic “respiración”, y otro en estado más crítico que le controlen todas las variables, publicando en el topic

“respiración” y otros más. Esta información puede ser accedida a través de los topics que RTI ofrece para almacenar información de descubrimiento.

RTI ofrece tres topics internos en los cuales se publica la información obtenida en el descubrimiento en los cuales se publica la información obtenida en el descubrimiento de las entidades disponibles en el dominio.

Sería interesante desde el punto de vista del suscriptor conocer qué topics hay en el dominio y poder

E

(30)

Resultados

14

suscribirse y configurar la alarma en el que más le interese. El sistema sería dinámico y la información se podría cambiar según las necesidades.

Estas características de DDS y su implementación en RTI facilitan el desarrollo de un sistema de aplicaciones distribuidas para la gestión de alarmas sanitarias.

3.2 Caso práctico de alarmas sanitarias

3.2.1 Taxonomía de alarmas sanitarias

Se trata de un resultado interesante ya que resume los tipos de alarmas fundamentales necesarias en una monitorización y cómo pueden ser implementadas de la forma más eficientemente posible usando directamente DDS o DDS y procedimientos adicionales.

TIPO DE ALARMA

DESCRIPCIÓN IMPLEMENTACIÓN EN DDS

EJEMPLO

UMBRAL Alarma generada al comparar el dato recibido con un valor umbral.

Sí, la clase ContentFilteredTopic permite expresiones de filtrado, usando los comparadores “<, <=,

>, >=, <>, =”.

Se reciben muestras de la temperatura de un paciente sólo si la temperatura >39ºC.

RANGO Alarma generada al salir o entrar el dato publicado en un rango de valores dado.

Sí, igual que Alarma Umbral, a través de una expresión de filtrado.

Se reciben muestras de temperatura sólo si hay muestras fuera del rango [35:39].

MEMORIA Alarma generada al comparar el último dato con muestras anteriores y cumplir una diferencia entre ambas.

No. Es necesario un algoritmo que implemente una cola FIFO para almacenar las últimas muestras recibidas.

Se recibe

información sobre la temperatura sólo si hay un aumento de la temperatura de 3 grados en las últimas

5 muestras

publicadas.

KEEPALIVE Alarma generada al no recibir un dato en un periodo de tiempo

Sí. Hay un tipo de QoS, denominada DEADLINE, que establece el tiempo máximo entre muestras enviadas. En el caso de que ese tiempo se supere entre dos envíos, se ejecuta el método

“on_requested_deadline_missed”

del Listener.

Una máquina envía un dato cada 20s, siendo 25s el máximo tiempo entre dos muestras.

El suscriptor es informado si se supera ese tiempo, por ejemplo se ha apagado por una subida de tensión en el edificio.

PERSONALIZADA Alarma

personalizada por una condición, que se

compara con

información

permanente (ej. Base

de Datos).

Complementa a otras

No. Tras recibirse la información sería necesario comprobar si el paciente cumple con la condición impuesta (utilizando los recursos externos a DDS necesarios).

Se genera alarma si la temperatura es mayor de 35ºC y el paciente tiene un tratamiento

intensivo.

(31)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 15 servicio de distribución de datos (DDS)

alarmas.

SUMA Se genera alarma si se producen varias alarmas. Pueden ser varias alarmas de los tipos indicados.

Sí. La clase MultiTopic permite expresiones de filtrado que relacionan varios topics.

Se recibe

información sólo si la temperatura es mayor de 30ºC y el nivel de oxígeno mayor de 40mg.

PERSISTENCIA Se genera alarma si se producen varias alarmas consecutivas.

No. Sería necesario implementar un algoritmo que compruebe si el dato recibido (que cumple cierto criterio) es consecutivo respecto al anterior o N valores recibidos en M muestras consecutivas.

Alarma si en dos muestras

consecutivas la temperatura es superior a 40ª o en cinco muestras se producen tres alarmas.

BOTÓN Se genera alarma si se pulsa un botón.

Sí. Al pulsar el botón, se publica en el topic. Al recibir el dato el suscriptor, entiende que han pulsado el botón. El valor publicado no es relevante.

Al pulsar el botón de ayuda de un dispositivo de monitorización, se publica un ‘1’ en el topic y el suscriptor de suscribe a todos los valores ‘1’

publicados.

Tabla 3-1: taxonomía de alarmas

3.2.2 Base del software

Para el desarrollo del sistema de alarmas, se ha usado la librería DDS-Enable Framework, realizada por Alejandro Talaminos de la Universidad de Sevilla sobre RTI. El lenguaje de programación es Java.

Tabla 3-2: capas del sistema de alarmas

Utilizando este Framework se consigue un despliegue rápido de una aplicación DDS con una calidad de servicio por defecto. Las clases que forman el Framework son DataListener, DDS, DeadlineListener, ParticipantFW, PublisherFW, QoS, SubscriberFW, TopicBeanBase, TopicBeanInfo.

A partir de la clase ParticipantFW se crea un participante en un dominio determinado. Esta clase es de tipo Singleton. El participante permite crear los objetos publicador y suscriptor, representados por las clases PublisherFW y SubscriberFW. Para crear un topic con la información de nuestro interés, se crea una nueva clase heredando de TopicBeanBase. En el topic se podrán establecer los filtros a través del método

“addRestriction”. Para generar el listener que tomará el control del programa con la llegada de datos al topic,

(32)

Resultados

16

se crea otra clase que herede de DataListener. Por último, con el método “write” del publicador se enviarán los datos y con “read” en el suscriptor se recibirán las publicaciones en el topic.

Por ejemplo, para publicar sería:

ParticipantFW participant = new ParticipantFW(1);

PublisherFW pub = participant.createPublisher();

TopicDato topic = new TopicDato();

topic.setDato(2);

pub.write(topic);

Para la suscripción:

ParticipantFW participant = new ParticipantFW(1);

SubscriberFW sub = participant.createSubscriber();

TopicDato topic = new TopicDato();

ListenerDato listener = new ListenerDato();

sub.write(topic,listener);

Thread.sleep(10000);

3.2.3 Especificación de requisitos 3.2.3.1 Introducción

Como aplicación práctica de Data Distribution Service, se ha desarrollado un software de alarmas sanitarias utilizando la librería creada por Alejandro Talaminos [4], que permite un desarrollo más simple sin entrar en configuración de la calidad de servicio, que se establece por defecto. Esto permitirá el intercambio de información entre publicadores y suscriptores desde ubicaciones diferentes.

Se ha definido un escenario de partida, de modo que el software deberá dar soporte a las necesidades de este escenario (recogidas en esta especificación de requisitos), aunque se pretende que éste sirva de referente para la elaboración de escenarios más complejos. Cada paciente dispone de un tensiómetro para medir la tensión arterial, un termómetro para la temperatura, un botón de ayuda para solicitar asistencia y un glucómetro para medir el nivel de glucemia en el caso de que padezcan diabetes. Además, los dispositivos generan mensajes de error en el caso de que se produzca algún fallo técnico en ellos. Esta será la información disponible.

Uno de los objetivos a largo plazo es facilitar a los médicos y demás personal sanitario la configuración de alarmas. En este proyecto se ha realizado un ensayo con la creación de una GUI sencilla que permite la configuración de alarmas de tipo; Ayuda asociada al topic Ayuda, Error para el topic Error y alarma Umbral, Rango y Memoria para los topics Temperatura, Glucemia Y Tensión Arterial.

3.2.3.2 Catálogo de Requisitos Generales

Req01 Desarrollo de Alarma Umbral

Versión <1.0> 26/06/2014

Dependencias

Descripción La Alarma Umbral permite filtrar información que sea mayor, menor, distinta o igual que un determinado umbral.

Importancia Alta

(33)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 17 servicio de distribución de datos (DDS)

Estado Completado

Comentarios Se puede seleccionar el topic en el que se aplica.

Tabla 3-3: Req01 Desarrollo de Alarma Umbral

Req02 Desarrollo Alarma Rango

Versión <1.0> 26/06/2014

Dependencias

Descripción La Alarma Rango permite filtrar información que esté fuera o dentro de un rango establecido por un valor mínimo y máximo.

Importancia Alta

Estado Completado

Comentarios Se puede seleccionar el topic en el que se aplica.

Tabla 3-4: Req02 Desarrollo de Alarma Rango

Req03 Desarrollo Alarma Memoria

Versión <1.0> 26/06/2014

Dependencias

Descripción La alarma memoria guarda un determinado número de muestras y comprueba la diferencia entre la primera y la última para observar la evolución de los valores.

Importancia Alta

Estado Completado

Comentarios Se puede seleccionar el topic en el que se aplica.

Tabla 3-5: Req03 Desarrollo Alarma Memoria

Req04 Desarrollo Alarma Personalizada

Versión <1.0> 26/06/2014

Dependencias Req01, Req02, Req03

(34)

Resultados

18

Descripción La alarma personalizada complementa las alarmas anteriores con una condición almacenada en una base de datos de pacientes.

En el caso de que la condición establecida de personalización sea igual a la almacenada en la base de datos de pacientes, hay alarma.

Importancia Alta

Estado Completado

Comentarios Se complementa con las alarmas Umbral, Rango y Memoria

Tabla 3-6: Req04 Desarrollo alarma Personalizada

Req05 Alarma Persistencia

Versión <1.0> 26/06/2014

Dependencias Req01, Req02

Descripción Si se producen dos alarmas consecutivas o tres en cinco alarmas consecutivas, se genera la alarma de persistencia.

Importancia Alta

Estado Completado

Comentarios

Tabla 3-7: Req05 Alarma Persistencia

Req06 Alarma Error

Versión <1.0> 26/06/2014

Dependencias

Descripción Recepción de los mensajes de error de los dispositivos.

Importancia Alta

Estado Completado

Comentarios

Tabla 3-8: Req06 Alarma Error

Req07 Información de monitorización

(35)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 19 servicio de distribución de datos (DDS)

Versión <1.0> 26/06/2014

Dependencias

Descripción La información necesaria en el sistema será la temperatura, glucemia, tensión arterial, pulsado del botón de ayuda y mensajes de error de los dispositivos.

Importancia Alta

Estado Completado

Comentarios

Tabla 3-9: Req07 Información de monitorización

Req08 Mensaje de Alerta

Versión <1.0> 26/06/2014

Dependencias

Descripción Cuando se detecte una alarma, se mostrará un mensaje por pantalla indicándolo.

Importancia Alta

Estado Completado

Comentarios

Tabla 3-10: Req08 Mensaje de Alerta

(36)

Resultados

20

3.2.3.3 Diagramas de Casos de Uso

Ilustración 3-1: Diagrama de Casos de Uso

3.2.3.4 Diagramas de Casos de Uso: descripción de los actores

Actor01 Paciente

Versión <1.0> 26/06/2014

Dependencias

Descripción El paciente es el actor encargado de la publicación de los datos de monitorización a través de los dispositivos adecuados.

Comentarios

Ilustración 3-2: Paciente

(37)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 21 servicio de distribución de datos (DDS)

Actor02 Personal sanitario.

Versión <1.0> 26/06/2014

Dependencias

Descripción El personal sanitario estará a cargo del cuidado de los pacientes, y podrá establecer las alarmas según sus objetivos.

Comentarios

Ilustración 3-3: Personal Sanitario

Actor03 Técnico

Versión <1.0> 26/06/2014

Dependencias

Descripción El técnico es el encargado de leer los mensajes de error publicados por los dispositivos y dar soporte a éstos. También podrá acceder a las configuraciones del resto de alarmas, aunque no sea de su interés.

Comentarios

Ilustración 3-4: Técnico

3.2.3.5 Diagramas de Casos de Uso: Especificación de Casos de Uso

CasoDeUso01 Registrar usuario en el sistema

Versión <1.0> 26/06/2014

Dependencias Precondición

Descripción El sistema debe estar restringido para que no todo el mundo pueda entrar.

PostCondición

Importancia Media

Estado No se ha implementado en la aplicación.

Comentarios

Ilustración 3-5: Registrar usuario en el sistema.

(38)

Resultados

22

CasoDeUso02 Acceso al sistema (Autenticación)

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso01 Registro

Descripción Un usuario registrado debe autenticarse para entrar en el sistema.

PostCondición

Importancia Media

Estado No se ha implementado en la aplicación.0 Comentarios

Ilustración 3-6: Acceso al sistema.

CasoDeUso03 Arrancar el sistema

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso02 Autenticación

Descripción El usuario debe arrancar el sistema indicando el dominio en el que se encuentra la información y el tiempo que estará el sistema leyendo información.

PostCondición

Importancia Media

Estado Implementado

Comentarios Una línea de mejora sería eliminar ese tiempo.

Ilustración 3-7: Arrancar el sistema.

CasoDeUso04 Establecer Alarma Error

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso04 Arrancar sistema

Descripción Al generar una Alarma Error se recibirán todos

los mensajes de error publicados en el topic

(39)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 23 servicio de distribución de datos (DDS)

destinado a ello.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-8: Establecer Alarma Error.

CasoDeUso05 Establecer Alarma Ayuda

Versión <1.0> 26/06/2014

Dependencias Req01: alarma Umbral. Una Alarma Ayuda consiste en pulsar el botón de ayuda. Se implementa a través de una alarma umbral donde la condición de filtrado es boton = 1. Al pulsar el botón se publica valor ‘1’.

Precondición CasoDeUso04 Arrancar sistema

Descripción Al generar una Alarma Ayuda, se genera una alarma cada vez que el paciente pulsa el botón de ayuda.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-9: Establecer Alarma Ayuda.

CasoDeUso06 Establecer Alarma Umbral

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso04 Arrancar sistema

Descripción La alarma rango se lanza si los datos recibidos cumplen el patrón basado en comparar el dato con un determinado rango (<,>,igual, distinto que el rango).

PostCondición

Importancia Alta

(40)

Resultados

24

Estado Completado

Comentarios

Ilustración 3-10: Establecer Alarma Umbral.

CasoDeUso08 Establecer Alarma Personalizada

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso05, CasoDeUso06, CasoDeUso07 Descripción Se le añade a la alarma una condición de

personalización, que se comparará con la información del paciente almacenada en la base de datos. Si son los mismos, se genera la alarma.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-11: Establecer Alarma Personalizada.

CasoDeUso09 Establecer Alarma Persistencia

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso05, CasoDeUso06, CasoDeUso07 Descripción Al establecer una Alarma Persistencia, se

genera alarma si las alarmas indicadas en Precondición se producen dos veces consecutivas o tres veces de cinco consecutivas.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-12: Establecer Alarma Persitencia.

(41)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 25 servicio de distribución de datos (DDS)

CasoDeUso10 Iniciar Lectura de Datos

Versión <1.0> 26/06/2014

Dependencias

Precondición CasoDeUso04 Arrancar sistema

Descripción Se inicia la lectura de los datos en los topics correspondientes.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-13: Iniciar Lectura de datos.

3.2.3.6 Requisitos de información del sistema

Req09 Información permanente de los pacientes.

Versión <1.0> 26/06/2014

Dependencias Req04, CasoDeUso08

Descripción Para la condición de personalización, es necesaria una Base de Datos con información permanente sobre los pacientes.

Datos específicos Algunos campos de la base de datos deben ser el nombre, el estado del paciente y el tratamiento que sigue.

Importancia Alta

Estado Simulado

Comentarios Se ha simulado una base de datos, en el sistema final debería ser un elemento externo.

Ilustración 3-14: Información permanente de pacientes.

3.2.3.7 Requisitos de fiabilidad del sistema.

Req10 Fiabilidad

Versión <1.0> 26/06/2014

Dependencias

(42)

Resultados

26

Precondición

Descripción La información es muy importante al estar en juego la salud de los pacientes. Por lo tanto el envío de paquetes debe ser fiable configurable en la QoS.

Postcondición

Importancia Alta

Estado Según la configuración de las bibliotecas usadas: QoS por defecto utilizando envío fiable.

Comentarios

Ilustración 3-15: Fiabilidad.

3.2.3.8 Requisitos de Usabilidad

Req11 Interfaz de usuario

Versión <1.0> 26/06/2014

Dependencias Precondición

Descripción Los actores Personal Sanitario y Técnico necesitan un acceso al sistema de alarmas a través de una interfaz en la que por medio de botones y campos de texto se configuren las alarmas.

PostCondición

Importancia Alta

Estado Completado

Comentarios

Ilustración 3-16: Usabilidad.

3.2.3.9 Requisitos de mantenibilidad

Req12 Nuevos Topics en el futuro

Versión <1.0> 26/06/2014

Dependencias Req07

Precondición

Descripción La información que es monitorizada en el

(43)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 27 servicio de distribución de datos (DDS)

sistema puede ser aumentada en el futuro ya que las alarmas no se limitan a un determinado topic si no que son configurables.

PostCondición

Importancia Media

Estado

Comentarios No es un requisito totalmente objetivo.

Ilustración 3-17: mantenibilidad.

3.2.3.10 Requisitos de seguridad

Req13 Autenticación en el sistema

Versión <1.0> 26/06/2014

Dependencias

Descripción El sistema debe estar restringido a aquellos actores que tengan permisos para acceder a la información de los pacientes y generar alarmas.

Es necesario autenticación

Importancia Media

Estado No realizado.

Comentarios

Ilustración 3-18: seguridad.

3.2.4 Diseño de la solución para el suscriptor de alarmas

El sistema de alarmas está formado por un conjunto de clases, las cuales se dividen en los paquetes

“gestorAlarmas”, “alarmas”, “listeners” y “herramientas”. A continuación se representan todas las clases y diferentes paquetes.

Ilustración 3-19: diagrama de paquetes.

(44)

Resultados

28

Ilustración 3-20: diagrama de clases del paquete gestorAlarmas.

(45)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 29 servicio de distribución de datos (DDS)

Ilustración 3-21: diagrama de clases del paquete alarmas.

(46)

Resultados

30

Ilustración 3-22: diagrama de clases del paquete listeners.

Las clases del paquete listeners ejecutan el método on_data_available cuando se produce la llegada de una nueva publicación en el topic. Este método se sobreescribe para conseguir la funcionalidad deseada.

Las clases ListenerAyuda, ListenerGlucemia, ListenerTension y ListenerNumber ejecutan el algoritmo de la

figura 3-23 al recibir un nuevo dato.

(47)

Demostrador para el desarrollo de un sistema distribuido de gestión de alarmas sanitarias sobre el 31 servicio de distribución de datos (DDS)

Ilustración 3-23: secuencia del método on_data_available en las clases ListenerXXXX

Las clases ListenerMemoriaTemperatura, ListenerMemoriaGlucemia, ListenerMemoriaTension y ListenerNumber actúan según el diagrama de la figura 3-24.

Ilustración 3-24: secuencia del método on_data_available en las clases ListenerMemoriaXXXX

(48)

Resultados

32

Ilustración 3-25: diagrama de clases del paquete topics.

El despliegue del sistema suscriptor de alarmas en un dispositivo sigue el siguiente esquema.

Ilustración 3-26: despliegue del suscriptor.

Desde un punto de vista más general, el esquema de todos los elementos que hacen posible la generación de

Referencias

Documento similar

Con el cometido de evaluar la credibilidad del testimonio en casos de violencia de gé- nero, a la vez que la huella psíquica con- trolando una potencial simulación, hemos

El contar con el financiamiento institucional a través de las cátedras ha significado para los grupos de profesores, el poder centrarse en estudios sobre áreas de interés

[r]

[r]

En el análisis previo realizado del comportamiento de la señal de radiofrecuencia con los módulos de radiofrecuencia específicos que se han usado, se ha observado como el

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Antes de poder generar el archivo .MNL se tiene que comprobar que el circuito esta libre de errores, para esto, desde la ventana del administrador de proyectos del Capture (no

19 En estado de no detección a la entrada del multiplexor de la unidad de control está a nivel bajo lógico, si se produce una alarma se abre el relé y la entrada del multiplexor