Uma Arquitetura para Acesso e Integração de Dados em Aplicações Sensíveis ao Contexto Natália...

Post on 21-Apr-2015

104 views 0 download

Transcript of Uma Arquitetura para Acesso e Integração de Dados em Aplicações Sensíveis ao Contexto Natália...

Uma Arquitetura para Acesso e Integração de Dados em Aplicações Sensíveis ao Contexto

Natália Quirino de Oliveira

Orientador: Prof. Dr. Alvaro Cesar Pereira Barbosa

Mestrado em Informática

Universidade Federal do Espírito Santo

Contexto e motivação Computação ubíqua Aplicações sensíveis ao contexto

Automatizar tarefas Situação do usuário Situação do ambiente

Contexto e motivação

Integração de dados contextuais Vários domínios Projetos DBMware, Infraware, CoDIMS,

Telecardio

Infraware

CoDIMS original

Outras instâncias: CoDIMS-G, MECD E, neste trabalho, o CoDIMS-CA

Objetivo

Nova instância do CoDIMS (CoDIMS-CA) para atender aos projetos Infraware e Telecardio

Definição de uma arquitetura para integração de dados contextuais

Definição de uma estratégia para execução distribuída de consultas

Overview

Para atingir os objetivos:

Conceitos e Tecnologias

Requisitos

Trabalhos Relacionados

Conceitos e Tecnologias

Framework Componentes Wrappers Metadados Ontologias Bancos de dados: ativos, temporais,

espaciais

Requisitos

Acesso e integração de dados Entrega ativa de dados Dinamismo das informações Metadados Perfil de usuário Configuração e extensibilidade Histórico contextual Prioridade entre consultas

Trabalhos relacionados

Nexus DBGlobe Mogatu MoCA Awareness

Trabalhos relacionados

Sub-conjuntos de requisitos atendidos

Trabalhos relacionados

Aspectos de entrega Hipac Snoop Liquid CoDIMS-CA

Linguagem específica Sim Sim Sim Sim

Eventos compostos Não Sim Sim Sim

Distribuição Não Não Sim Sim

Novos operadores Não Sim Não Sim

Arquitetura conceitual

Diagrama de componentes

Diagrama de classes

Diagrama de classes (cont.)

Exemplo de Aplicação: Telemedicina

Monitorar ininterruptamente e remotamente pacientes que têm doenças crônicas Isquemia do miocárdio

Integração de eletrocardiograma, outros sinais vitais, prontuário do paciente

Exemplo de Aplicação: Projeto Telecardio

Exemplo de Aplicação: Deseja-se monitorar um paciente que se

encontra em casa, com um dispositivo holter que se comunica uma unidade base local. A unidade base se comunica com o servidor localizado no hospital

Dados são gerados pelo holter a cada 30 segundos

Monitoramento periódico ou emergências Integração de dados de prontuário, ECG

(freqûencia cardíaca) e temperatura

Subscrição em formato SQL-Like

SELECT p.idPaciente, p.nome, p.idade,last 10 e.FC valuesFROM paciente p, ecg e, temperatura tWHEN e.FC onIncrease AND e.FC > 90 AND t.temperatura onIncrease AND t.temperatura > 39 AND p.fumante = “sim”

Fontes Utilizadas

Fonte de Dados Nome Origem dos dados Tipo dos dados

Registros de Pacientes(idPaciente,nome,idade,sexo,fumante)

Prontuário Servidor do hospital

Relacional

ECG de pacientes(idPaciente, FC,data-hora)

ECG Sensor no paciente

XML

Temperatura de pacientes(idPaciente, temperatura, data-hora)

Temperatura Sensor no paciente

TXT

Web services criados

A seguinte distribuição foi utilizada no estudo de caso

Enfoque na distribuição das fontes de dados

Árvore de execução de consultas

Conjunto resultado

Plano de Execução de Consultas<operator execution-step ="1"><Scan table="Temperatura">

<column name="idPaciente" /> <column name=“temperatura"/><constraint leftArg=”temperatura” operation=”bigger” rightArg=”39”/> <constraint OnIncrease column name=“temperatura"/> <consumer id="3"/> </scan> </operator>

<operator execution-step ="2"> <Scan table=”ECG”><column name="idPaciente" /> <column name="FC"/><constraint leftArg=”FC” operation=”bigger” rightArg=”90”/><constraint OnIncrease column name="FC"/> <consumer id="3"/> </scan> </operator>

<operator execution-step ="3"> <And left-producer="1" right-producer="2"><constraint leftArg="idPaciente" operation="equals" rightArg="idPaciente"/><consumer id="5"/></And></operator>

<operator execution-step ="4"> <Scan table="Prontuario"><column name="idPaciente” /> <column name=“idade "/><column name="nome "/><constraint leftArg=”fumante” operation=”equals” rightArg=”sim” /><consumer id=”5”/> </scan></operator>

<operator execution-step="5"> <Join left-producer="3" right-producer="4"> <constraint leftArg="idPaciente" operation="equals" rightArg="idPaciente"/> </ join></operator>

Gerente de tarefas

Processador de consultas

MEC

Fabrica de MECs

OP aoAumentar

WrapperECG

Fabrica de agentes

Agente

WrapperMédico

OP Join

Metadados

OP aoAumentar

OP scan

OP and

Temp = 40Frequencia = 65Frequencia = 91

Histórico de eventos

Agente

Temp > 39 FC > 90 Fumante = “sim”

Conjuntos resultado Resultset do operador Scan: Temperatura

<Resultset xmlns=""><tupla xmlns="" idPaciente="00001" temperatura=“40"/><tupla xmlns="" idPaciente="00002" temperatura=“40"/></Resultset>

Resultset do operador Scan: frequência cardíaca<Resultset xmlns=""><tupla xmlns="" idPaciente="00001" FC="92" /><tupla xmlns="" idPaciente="00003" FC="93" /></Resultset>

Resultset do operador And:<Resultset xmlns=""><tupla xmlns="" idPaciente="00001" FC="92“ temperatura=“40”/></Resultset>

Resultset do operador Scan: paciente<Resultset xmlns=""><tupla xmlns="" idPaciente="00001“ nome=“Fulano da Silva” idade="52" sexo=”masculino” fumante="sim” /> </Resultset>

Resultset do operador Join:<Resultset xmlns=""><tupla xmlns="" id_paciente="00001" temperatura=“40" FC=”92” idade="52” sexo=”masculino” fumante="sim /></Resultset>

Implementação

JDOM SAX Tomcat NetBeans PostgreSQL

Conclusão

Avanços na popularização de dispositivos Computação ubíqua, sistemas sensíveis ao

contexto: maior interação com os usuários Necessidade de arquiteturas apropriadas Nova instância do CoDIMS, o CoDIMS-CA

Contribuições

Lista de requisitos para integração de dados contextuais

Máquina de execução de consultas distribuida para entrega ativa de dados

Fábricas e distribuição de agentes e operadores Arquitetura configurável e flexível Definição de esquemas XML Implementação do protótipo

Reutilização do framework CoDIMS

Publicações

Requisitos atendidos

Acesso e integração de dados Entrega ativa de dados Dinamismo das informações Metadados Perfil de usuário Configuração e extensibilidade Histórico contextual Prioridade entre consultas

Requisitos não atendidos

Contexto espaço-temporal Linguagens específicas

Modificações na ACID Mobilidade

Comparação com outras arquiteturas

Distinções na detecção de eventos e processamento de consultas

Estratégia de execução de consulta Adição de novos componentes

Trabalhos futuros

Otimização dinâmica de consultas Estatísticas e gerenciamento de fontes Desenvolvimento de wrappers (imagens

médicas, GPS) Tolerância a falhas Estudos sobre novos componentes (histórico,

perfil) Estudo de grids para integração de dados

contextuais

Agradecimentos

CNPq e FAPES, pelo apoio financeiro UFES/PPGI, pela oportunidade e

conhecimento recebido Alunos do PET Engenharia de

Computação (Bruna Colnago e Igor Magri), pelo apoio na implementação

Uma Arquitetura para Acesso e Integração de Dados em Aplicações Sensíveis ao Contexto

Natália Quirino de Oliveira

Orientador: Prof. Dr. Alvaro Cesar Pereira Barbosa

Mestrado em Informática

Universidade Federal do Espírito Santo

Subscrição histórico - XML <?xml version="1.0" ?> <subscription xmlns="http://www.w3schools.com"> <substype valor="Last-values"></substype> <appid valor="111"></appid> <userid valor="222"></userid> <usergroup valor="333"></usergroup> <atributos> <atributo valor="ECG"></atributo> <atributo valor="pressao"></atributo> </atributos> </subscription>

Armazenamento histórico - XML

<?xml version="1.0" encoding="UTF-8"?> <historico> <atributo>ECG</atributo> <tabela>sinaisVitais</tabela> <inicioArmazenamento>10:02:05</

inicioArmazenamento> <granularidade>00:01:00</granularidade> <valor>90</valor> <valor>87</valor> </historico>

Fonte indisponível - XML <fonteIndisponivel idFonte=”1234”> <periodo> <dataInicio> 2007/03/01 23:42:22 </dataInicio> <dataFinal> 2007/03/01 23:51:32 </dataFinal> </periodo> <periodo> <dataInicio> 2007/02/01 10:40:11 </dataInicio> <dataFinal> 2007/02/01 11:20:36 </dataFinal> </periodo> </fonteIndisponivel>

Event Report - XML

<eventReport> <tipo>anomaliaECG</tipo> <idEvento></idEvento> </eventoInicial timestamp=10:20:13

evento=”ev1”> </intermediario timestamp=10:21:42

evento=”ev2”> </eventoFinal timestamp=10:21:42 evento=”ev4”> </disparo timestamp=”10:21:59”> </eventReport>

Perfil SELECT * FROM medico m WHERE m.especialidade = “oftamologista”

<perfil> <coluna nome="bairro" valor="Jardim Camburi"

eliminatorio="false" /> <coluna nome="convenio" valor="Casufes"

eliminatorio="true" /> </perfil>

SELECT * from medico m WHERE m.especialidade = “oftamologista” AND m.convenio =

“casufes” ORDER BY m.bairro

Interfaces para Web Services public interface InterfaceSubscricao {

public void popularSubscricao(String arquivo);}

public interface InterfaceAgente { public void iniciarMonitoramento(); public void pausarMonitoramento(); public void cancelarMonitoramento(); public void run();}

public interface InterfaceGerenciaFonte { public void checarTodasFontes(); public void checarFonte(Fonte f); public void monitorarStatusFontes(); public void alertarDesconexao(Fonte f);}

Interfaces para Web Services (cont.) public interface InterfacePerfil {

public void popularPerfil(int idUsuario, String arquivo); public void personalizarConsulta(String arqPerfil, String arqConsulta); public void consultarPerfil(int idUsuario);}

public interface InterfaceHistorico { public Vector obterDadosHistoricos(String atributo, String tabela); public void armazenarHistorico(String atr, String tab, String valor); public void iniciarArmazenamento(String atributo, String tabela); public void pausarArmazenamento(String atributo, String tabela);}

public interface InterfaceGerenciaTarefas { public void checarMaiorPrioridade(); public void adicionarSubscricao(Subscricao s); public void removerSubscricao(int id);}