View
103
Download
0
Category
Preview:
Citation preview
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);}
Recommended