Skip to content

Arquitetura do Software

Raffael Fernandes edited this page Nov 10, 2024 · 9 revisions

Nesta página estão contidas informações sobre a arquitetura do Remedius.

Visão Geral

Organização Arquitetural

O Remedius é uma aplicação projetada para auxiliar pacientes e profissionais de saúde na gestão de medicações, com uma arquitetura organizada em camadas para assegurar uma clara separação de responsabilidades e facilitar a manutenção e a escalabilidade. A estrutura é dividida em três camadas principais:

  • Interface do Usuário (UI): Onde ocorre a interação direta com o usuário, responsável pela exibição de dados e captura de inputs, sendo acessível em dispositivos móveis e navegadores.
  • Lógica de Negócio: Núcleo do sistema, que processa e valida as operações relacionadas às medicações, alertas e notificações, além de gerenciar as regras de segurança.
  • Persistência de Dados: Camada de banco de dados, que armazena informações dos usuários, registros de medicações, histórico de uso e configurações de notificações.

Padrão Arquitetural

O sistema adota o padrão MVC (Model-View-Controller), no qual a Interface do Usuário (View) interage com o Controller (Lógica de Negócio), que processa os dados e os atualiza no Model (Persistência de Dados). Essa estrutura permite o desenvolvimento, a manutenção e a escalabilidade de cada componente de forma isolada.

Comunicação entre Módulos

Os módulos do Remedius comunicam-se principalmente por meio de APIs RESTful. Essa abordagem permite que a Interface do Usuário envie requisições à Lógica de Negócio e receba respostas de maneira independente, desacoplando as camadas e simplificando a escalabilidade do sistema.

Model (Modelo - Persistência de Dados):

O Model representa a camada de dados e persistência do sistema. Ele armazena e recupera as informações do banco de dados, como dados de usuários, medicamentos, prescrições, histórico de uso e configurações de notificações.

No contexto do Remedius, o Model é implementado por meio de um banco de dados PostgreSQL, para dados estruturados. Todas as atualizações, inserções e consultas ao banco de dados são realizadas nesta camada, e o Controller interage diretamente com o Model para enviar e buscar dados.

View (Visão - Interface do Usuário):

A View é responsável pela interface do usuário, exibindo dados e capturando interações dos usuários (pacientes e profissionais de saúde). No Remedius, a View é desenvolvida em React Native para fornecer uma experiência multiplataforma em dispositivos móveis e navegadores.

A View não possui lógica de negócios; sua responsabilidade é apenas exibir as informações e enviar comandos para o Controller. Assim, qualquer operação solicitada pelo usuário, como registrar uma nova medicação ou consultar o histórico, é direcionada ao Controller.

Controller (Controlador - Lógica de Negócio):

O Controller é o núcleo da lógica de negócio. Ele processa as interações que chegam da View, aplica as regras do sistema, valida dados e decide como responder. No Remedius, o Controller é implementado com o uso do Spring Boot (Java) para gerenciar a lógica e as APIs.

Algumas funções do Controller no Remedius incluem:

  • Processar o cadastro de uma medicação: Recebe as informações do usuário pela View, valida os dados, e envia-os ao Model para serem armazenados.
  • Gerar alertas de estoque baixo: Monitora a quantidade de medicamentos e aciona o módulo de notificações se necessário.
  • Aplicar lógica de conflitos de alergia: Ao registrar uma nova medicação, o Controller verifica a existência de alergias cadastradas e previne possíveis conflitos.

Para o módulo de notificações, utiliza-se um sistema de mensagens assíncronas, via Firebase Cloud Messaging, para garantir que alarmes e lembretes sejam entregues no horário correto sem impactar outras operações do sistema.

Abaixo, uma figura esquematizada ilustrando como ocorre a conexão entre os componentes do padrão arquitetural no contexto do software 'Remedius'.

Integrações e Componentes Externos

  • Firebase Authentication: Utilizado para autenticar usuários na plataforma de forma segura.
  • Firebase Cloud Messaging: Responsável pelo envio de notificações e alertas em tempo real.
  • APIs RESTful: Interface principal de comunicação entre as camadas de Interface do Usuário, Lógica de Negócio e Persistência de Dados.

Tecnologias Adotadas

  • Frontend: Desenvolvido em React Native, que permite acesso multiplataforma em dispositivos móveis e navegadores modernos.
  • Backend: Construído em Java com Spring Boot para a criação das APIs que suportam a comunicação com a Interface do Usuário e o gerenciamento dos dados do sistema.
  • Banco de Dados: PostgreSQL para dados relacionais.
  • Notificações e Agendamento: Firebase Cloud Messaging para notificações e funcionalidades do Spring Boot para tarefas assíncronas, como agendamento de lembretes de medicações.

Detalhamento dos Módulos

Módulo de Interface do Usuário (UI)

Descrição:

Este módulo é responsável pela interação com o usuário, exibindo informações e capturando entradas de forma intuitiva e acessível. Ele permite que pacientes e profissionais de saúde visualizem e gerenciem dados de medicações.

Funcionalidades:

  • Cadastro e Autenticação de Usuário: Permite que novos usuários se cadastrem e façam login na plataforma.
  • Visualização de Medicações: Exibe a lista de medicações cadastradas para o usuário, com detalhes de dosagem, frequência e horários.
  • Configuração de Alarmes e Notificações: Opção para o usuário definir suas preferências de alarme e lembretes.
  • Exportação de Dados: Exporta informações de medicação e histórico para PDF, permitindo compartilhamento fácil.

Cenário de Padrão de Projeto:

Utiliza o padrão MVC, onde a View (UI) interage com o Controller para enviar e receber informações, mantendo a interface simples e separada da lógica de negócios.

Tecnologias Utilizadas:

  • React Native (para desenvolvimento multiplataforma)
  • Firebase Authentication (para autenticação segura)

Módulo de Lógica de Negócio

Descrição

Este módulo gerencia as regras de negócio do sistema, executando validações, cálculos e operações essenciais. Ele é o núcleo do sistema, onde são processados dados de medicação, alertas e rotinas de estoque.

Funcionalidades:

  • Cadastramento de Medicações: Permite o registro de novas medicações com informações detalhadas, como nome, dosagem e horários.
  • Gerenciamento de Alergias e Comorbidades: Permite o registro de alergias e comorbidades, evitando prescrições e notificações de uso inadequado.
  • Geração de Resumo Simplificado de Bula: Extrai informações essenciais de cada medicação para fornecer um resumo para o usuário.
  • Monitoramento de Estoque e Notificação: Controla a quantidade de medicação disponível e alerta o usuário quando o estoque está baixo.
  • Notificações e Alarmes: Gera e envia notificações para lembrá-los sobre os horários de administração.

Cenário de Padrão de Projeto:

  • Fachada: Utilizado para centralizar e simplificar o acesso aos subsistemas, permitindo que a Interface do Usuário interaja de forma simplificada com as funcionalidades complexas.
  • Prototype: Facilita a criação de novos objetos de medicação a partir de modelos predefinidos, como medicamentos com diferentes dosagens e frequências.

Tecnologias Utilizadas:

  • Spring Boot (Java) para lógica de negócio
  • React Native Framework para APIs

Módulo de Persistência de Dados

Descrição

Este módulo é responsável pelo armazenamento seguro e organizado dos dados do sistema. Ele gerencia informações sobre os usuários, medicações, histórico de uso e notificações.

Funcionalidades:

  • Armazenamento de Dados de Usuário: Guarda as informações de perfil do paciente e do profissional de saúde.
  • Armazenamento de Medicações: Salva dados detalhados de cada medicação registrada.
  • Histórico de Uso de Medicação: Armazena o histórico de uso, incluindo datas e horários de administração, para análise e consulta.
  • Controle de Estoque: Mantém o registro das quantidades de cada medicamento disponível.

Cenário de Padrão de Projeto:

Usa o padrão DAO (Data Access Object) para encapsular o acesso ao banco de dados, permitindo que o Controller interaja com os dados sem se preocupar com a complexidade da persistência.

Tecnologias Utilizadas:

  • PostgreSQL para dados relacionais (usuários e histórico de uso)

Módulo de Notificações e Alarmes

Descrição

Este módulo é responsável por gerar e enviar alertas e lembretes automáticos sobre a administração de medicamentos e o nível de estoque.

Funcionalidades:

  • Configuração de Alarmes: Permite que o usuário configure os horários para alarmes de administração de medicação.
  • Envio de Lembretes: Envia notificações ao usuário sobre o horário de uso do medicamento, garantindo adesão ao tratamento.
  • Alertas de Estoque Baixo: Notifica o usuário quando um medicamento está próximo de acabar, para que ele possa fazer a reposição.

Cenário de Padrão de Projeto:

Usa o padrão Observer que observa o estoque e o histórico de uso, notificando o usuário sempre que um limite é atingido, como um estoque baixo.

Tecnologias Utilizadas:

  • Firebase Cloud Messaging (para notificações em tempo real)

Diagrama de Implantação

implantação drawio (1)

O mapa físico do sistema é composto pelos seguintes elementos:

Dispositivo do Usuário (Mobile ou Web)

  • Interface: Construída com React Native, acessível em dispositivos móveis e navegadores modernos.
  • Comunicação: Utiliza APIs RESTful para realizar operações, exibir dados de medicação e capturar interações.

Servidor de Aplicação (Backend)

  • Tecnologia: Desenvolvido com Spring Boot, concentrando a lógica de negócios e gerenciando validações e tratamento de requisições dos usuários.
  • Responsabilidades:
    • Inclui o controlador (Controller), que recebe as requisições da Interface do Usuário.
    • Aplica regras de negócio e acessa o Model para consultar ou persistir dados.

Servidor de Banco de Dados (PostgreSQL)

  • Função: Responsável pelo armazenamento seguro das informações dos usuários, medicações e histórico de uso.
  • Interação: Conecta-se diretamente ao servidor de aplicação via a camada DAO, que encapsula a lógica de acesso ao banco de dados.

Serviços de Notificação (Firebase Cloud Messaging)

  • Função: Gera e entrega notificações aos dispositivos dos usuários sobre alarmes de medicação e status do estoque.
  • Comunicação: Envia mensagens de forma assíncrona, garantindo que as notificações sejam entregues com baixa latência.

Comunicação entre Componentes

Esses componentes se comunicam por meio de APIs RESTful, organizados para manter a interface desacoplada da lógica de negócios. Isso garante a modularidade e facilita futuras manutenções e escalabilidade.


Definição Tecnológica do Remedius

O desenvolvimento do sistema Remedius adotará tecnologias e frameworks modernos para atender às necessidades de acessibilidade multiplataforma, alta performance, segurança e escalabilidade. Abaixo estão as principais escolhas tecnológicas, juntamente com as motivações para cada uma:

Linguagem de Programação e Frameworks

  • Backend: Java com Spring Boot. A escolha do Spring Boot é motivada pela sua robustez no desenvolvimento de APIs RESTful e pela facilidade de integração com bancos de dados. Além disso, o Spring Boot oferece suporte para injeção de dependência e módulos de segurança, que são importantes para a lógica de negócios e a autenticação de usuários no Remedius.
  • Frontend: React Native (JavaScript). Este framework foi selecionado para o desenvolvimento da interface do usuário devido à sua capacidade de desenvolver aplicativos multiplataforma com uma única base de código, possibilitando o uso em dispositivos móveis e navegadores. O React Native permite uma experiência de usuário fluida e é amplamente utilizado para aplicações que exigem interfaces responsivas.

Banco de Dados

  • PostgreSQL (SQL): Utilizado para a persistência de dados estruturados, o PostgreSQL foi escolhido por ser um banco de dados relacional confiável e escalável. Ele suporta operações complexas e grandes volumes de dados, o que é essencial para armazenar informações como registros de usuários, dados de medicamentos, histórico de uso e configurações de notificações.

Autenticação e Notificações

  • Firebase Authentication: Implementado para autenticação segura dos usuários. O Firebase Authentication oferece uma forma ágil e robusta de autenticar usuários e integra-se facilmente com o frontend desenvolvido em React Native.
  • Firebase Cloud Messaging (FCM): Usado para envio de notificações e alarmes em tempo real. O FCM permite que o Remedius envie lembretes automáticos de administração de medicamentos e alertas sobre níveis baixos de estoque, assegurando que os usuários recebam notificações em horários específicos.

Clone this wiki locally