Repository navigation
Arquitetura do Software
Nesta página estão contidas informações sobre a arquitetura do Remedius.
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.
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.
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.
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.
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.
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'.
- 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.
- 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.
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.
- 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.
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.
- React Native (para desenvolvimento multiplataforma)
- Firebase Authentication (para autenticação segura)
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.
- 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.
- 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.
- Spring Boot (Java) para lógica de negócio
- React Native Framework para APIs
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.
- 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.
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.
- PostgreSQL para dados relacionais (usuários e histórico de uso)
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.
- 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.
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.
- Firebase Cloud Messaging (para notificações em tempo real)

O mapa físico do sistema é composto pelos seguintes elementos:
- 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.
- 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.
- 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.
- 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.
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.
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:
- 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.
- 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.
- 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.
