Skip to content

Application layer

Fábio Nogueira de Lucena edited this page Jul 6, 2017 · 23 revisions

A Application Layer reúne os módulos que implementam a recepção das requisições e o encaminhamento para execução. Essa camada também é responsável pelo acesso a serviços externos. Ao contrário das demais camadas, que apresentam um conjunto relativamente estável de funções, essa camada tem como um dos principais requisitos de projeto a extensão. Ou seja, a possibilidade de acréscimo de novas funções, por exemplo, um sistema de apoio à decisão clínica ou detecção de epidemias.

hdb-layer-application

Questão de projeto

A extensibilidade do HealthDB é influenciada pela presente camada. A dúvida corrente, a ser investigada é: (a) criar uma máquina virtual para o HealthDB, com sua linguagem que encapsula tudo o que de básico o HealthDB faz e oferecer essa linguagem para a criação de plugins? (b) Simplesmente registrar plugins e avisá-los de eventos relevantes em uma proposta publish-subscribe? (c) Plugins funcionariam como listeners como na arquitetura de Servlets o que admitiria alterar o fluxo das operações do HealthDB?

Módulos

  • Autenticação e Autorização. Responsável por assegurar o devido acesso aos dados mantidos pelo HealthDB.
  • Use Case Manager. Gerencia os serviços oferecidos pelo HealthDB.
  • MPI. Mantem informações demográficas sobre os pacientes, informações sobre os profissionais de saúde e sobre recursos (equipamentos) disponíveis.

Outras funcionalidades

Funcionalidades abaixo estão em estudo, se fazem parte do escopo ou não:

  • Auditor. Responsável pela execução de atividades de auditoria (por exemplo, produção de relatórios).
  • Session Manager. Responsável por manter o estado da conexão de um cliente com o HealthDB.
  • CDS. Encapsula serviços básicos de apoio à decisão clínica.
  • Work Manager. Decide se o processamento de uma requisição deve ser iniciada imediatamente ou aguardar até que recursos considerados necessários estejam disponíveis para serem alocados à requisição. Adicionalmente, estabelece a ligação entre worker thread usada para tratar a requisição (lógico) e a correspondente implementação (física) usando threads em Java, lightweight thread, um processo ou outro mecanismo, inclusive o uso de pool desses recursos físicos.
  • Barramento SUS. Serviços de interesse de um SIS.
  • External Service. Conexão com serviços externos utilizados pelo HealthDB, por exemplo, CNS, CNES e outros.
Clone this wiki locally