Skip to content

otavioxavier/ericaura-backend

Repository files navigation

Ericaura - Backend (Spring Boot)

Visão Geral

O Ericaura é um sistema inovador projetado para digitalizar e otimizar a jornada do paciente em clínicas, desde o check-in e preenchimento de anamneses até a assinatura de termos de consentimento e pagamentos. Este repositório contém o código-fonte do backend da aplicação, desenvolvido com Spring Boot.

Stack Tecnológica

O backend do Ericaura é construído com uma stack moderna e robusta:

  • Linguagem: Java 17+
  • Framework: Spring Boot 3.x
  • Persistência: Spring Data JPA / Hibernate
  • Banco de Dados: PostgreSQL
  • Pagamentos: AbacatePay (PIX, Cartão de Crédito, Link de Pagamento)
  • Segurança: Spring Security (JWT)
  • API REST: Conforme diretrizes da Microsoft Azure
  • Ferramenta de Build: Maven

Arquitetura do Projeto

A arquitetura do backend segue um modelo RESTful, com uma clara separação de responsabilidades:

  • Camada de Controladores (@RestController): Responsável por expor os endpoints da API, receber requisições HTTP e retornar respostas JSON. Realiza a validação inicial dos dados de entrada.
  • Camada de Serviços (@Service): Contém a lógica de negócio da aplicação. Orquestra as operações, interage com os repositórios e aplica as regras de negócio.
  • Camada de Repositórios (@Repository): Interage diretamente com o banco de dados, utilizando Spring Data JPA para operações CRUD e consultas personalizadas.
  • Camada de Entidades (@Entity): Representa as tabelas do banco de dados como objetos Java, mapeadas pelo Hibernate.
  • Segurança: Implementada com Spring Security, utilizando JWT para autenticação e autorização baseada em roles (ADMIN, RECEPTIONIST).

Modelo de Dados (Esquema SQL Final)

O esquema de banco de dados foi cuidadosamente projetado para suportar todas as funcionalidades do Ericaura, garantindo integridade e flexibilidade. As principais tabelas incluem:

  • Clinic: Informações da clínica.
  • ClinicUser: Usuários administrativos da clínica.
  • Patient: Dados dos pacientes.
  • AnamnesisForm: Templates de formulários de anamnese.
  • AnamnesisQuestion: Questões dos formulários.
  • AnamnesisQuestionOption: Opções para questões de múltipla escolha (normalizado).
  • PatientAnamnesisSession: Sessões de preenchimento de anamnese por paciente.
  • AnamnesisAnswer: Respostas dos pacientes às questões.
  • ConsentTerm: Termos de consentimento.
  • PatientSignature: Assinaturas digitais dos pacientes.
  • Payment: Registros de pagamentos.

Para o DDL completo, consulte o arquivo ericaura_final_schema_v2.sql na raiz do projeto.

Configuração - AbacatePay (Pagamentos)

Os pagamentos são processados pela AbacatePay, suportando:

Método Descrição
PIX QR Code e código copia-e-cola para pagamento instantâneo
CARD Link para pagamento com cartão de crédito
LINK Link de checkout com opção PIX ou Cartão

Para habilitar, configure a chave da API da AbacatePay. A chave não deve ser commitada no repositório.

👉 Veja instruções detalhadas em docs/ABACATEPAY_SETUP.md

Resumo: Copie application-local.yaml.example para application-local.yaml na raiz do projeto e adicione sua chave.

Documentação da API (OpenAPI + Scalar)

A especificação OpenAPI 3 é gerada automaticamente pelo SpringDoc. Os exemplos de corpo de requisição e de resposta que antes estavam neste README foram movidos para a documentação da API (anotações Swagger nos controladores), para aparecerem no Scalar e no JSON em /v3/api-docs.

Onde abrir

Recurso Caminho
UI (Scalar) /docs.html — ex.: http://localhost:8080/docs.html
OpenAPI JSON /v3/api-docs

Autenticação

  • JWT: cabeçalho Authorization: Bearer <token> nas rotas protegidas. O esquema bearerAuth está descrito no OpenAPI; use POST /auth/login para obter o token.
  • Rotas públicas (sem JWT) seguem a configuração do Spring Security — confira no Scalar quais operações exigem autenticação.

Logo da Aplicação

Para o logo do Ericaura, sugiro um design que transmita cuidado, modernidade e tecnologia na saúde. Pense em elementos que combinem a suavidade de uma aura com a precisão de um sistema digital. A paleta de cores deve seguir o branding definido (Verde Sálvia, Azul Sereno, etc.).

Prompt Sugerido para Geração de Logo (ex: Midjourney, DALL-E):

Logo for a health tech application named 'Ericaura'. The design should be modern, clean, and convey a sense of care, well-being, and digital innovation. Incorporate elements that subtly suggest an 'aura' or 'glow' around a medical or health-related symbol (e.g., a stylized leaf, a gentle pulse wave, or an abstract representation of a human figure). Use a color palette of soft sage green, serene blue, and touches of clean white or light gray. The typography should be elegant and readable, matching the professional yet approachable feel. Minimalist, abstract, vector art style. No text in the logo itself, only the visual mark.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues, propor melhorias ou enviar pull requests.

Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Autor: Manus AI Data: 24 de Maio de 2024

Como Rodar a Aplicação

Para rodar o backend do Ericaura localmente, siga os passos abaixo:

Pré-requisitos

Certifique-se de ter as seguintes ferramentas instaladas:

  • Java Development Kit (JDK) 17+
  • Maven 3.x
  • PostgreSQL 13+
  • Docker (opcional, para rodar o PostgreSQL em container)

1. Configurar o Banco de Dados PostgreSQL

Você pode rodar o PostgreSQL localmente ou via Docker.

Opção 1: PostgreSQL Local

  1. Crie um banco de dados PostgreSQL com o nome ericaura_db.
  2. Crie um usuário e senha para o banco de dados (ex: ericaura_user, ericaura_password).
  3. Execute o DDL (ericaura_final_schema_v2.sql) para criar as tabelas.

Opção 2: PostgreSQL com Docker

  1. Crie um arquivo docker-compose.yml na raiz do projeto com o seguinte conteúdo:

    version: '3.8'
    services:
      db:
        image: postgres:13
        environment:
          POSTGRES_DB: ericaura_db
          POSTGRES_USER: ericaura_user
          POSTGRES_PASSWORD: ericaura_password
        ports:
          - "5432:5432"
        volumes:
          - pgdata:/var/lib/postgresql/data
    volumes:
      pgdata:
  2. Inicie o container do PostgreSQL:

    docker-compose up -d
  3. Conecte-se ao banco de dados e execute o DDL (ericaura_final_schema_v2.sql) para criar as tabelas.

2. Configurar o Backend (Spring Boot)

  1. Clone o repositório do backend:

    git clone <URL_DO_SEU_REPOSITORIO_BACKEND>
    cd ericaura-backend
  2. Configure as propriedades do banco de dados no arquivo src/main/resources/application.properties (ou application.yml):

    spring.datasource.url=jdbc:postgresql://localhost:5432/ericaura_db
    spring.datasource.username=ericaura_user
    spring.datasource.password=ericaura_password
    spring.jpa.hibernate.ddl-auto=none # Não deixe como update ou create-drop em produção!
    spring.jpa.show-sql=true
    spring.jpa.properties.hibernate.format_sql=true
  3. Configure as propriedades do JWT (chaves secretas, tempo de expiração) no mesmo arquivo:

    ericaura.jwt.secret=<SUA_CHAVE_SECRETA_JWT_AQUI> # Use uma string longa e segura
    ericaura.jwt.expiration=86400000 # 24 horas em milissegundos
  4. Compile e execute a aplicação Spring Boot:

    mvn clean install
    mvn spring-boot:run

    O backend estará disponível em http://localhost:8080 (ou a porta configurada).

3. Configurar o Frontend (Angular) - (Breve)

Embora este README seja focado no backend, para rodar a aplicação completa, você precisará do frontend:

  1. Clone o repositório do frontend:

    git clone <URL_DO_SEU_REPOSITORIO_FRONTEND>
    cd ericaura-frontend
  2. Instale as dependências:

    npm install # ou yarn install
  3. Configure a URL da API do backend no ambiente do Angular (ex: src/environments/environment.ts):

    export const environment = {
      production: false,
      apiUrl: 'http://localhost:8080' // Base URL do backend (sem /v1)
    };
  4. Execute a aplicação Angular:

    ng serve

    O frontend estará disponível em http://localhost:4200 (ou a porta configurada).

About

Back end do sistema para clínicas Ericaura

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors