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.
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
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).
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.
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.
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.
| Recurso | Caminho |
|---|---|
| UI (Scalar) | /docs.html — ex.: http://localhost:8080/docs.html |
| OpenAPI JSON | /v3/api-docs |
- JWT: cabeçalho
Authorization: Bearer <token>nas rotas protegidas. O esquema bearerAuth está descrito no OpenAPI; usePOST /auth/loginpara obter o token. - Rotas públicas (sem JWT) seguem a configuração do Spring Security — confira no Scalar quais operações exigem autenticaçã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ções são bem-vindas! Sinta-se à vontade para abrir issues, propor melhorias ou enviar pull requests.
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
Para rodar o backend do Ericaura localmente, siga os passos abaixo:
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)
Você pode rodar o PostgreSQL localmente ou via Docker.
- Crie um banco de dados PostgreSQL com o nome
ericaura_db. - Crie um usuário e senha para o banco de dados (ex:
ericaura_user,ericaura_password). - Execute o DDL (
ericaura_final_schema_v2.sql) para criar as tabelas.
-
Crie um arquivo
docker-compose.ymlna 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:
-
Inicie o container do PostgreSQL:
docker-compose up -d
-
Conecte-se ao banco de dados e execute o DDL (
ericaura_final_schema_v2.sql) para criar as tabelas.
-
Clone o repositório do backend:
git clone <URL_DO_SEU_REPOSITORIO_BACKEND> cd ericaura-backend
-
Configure as propriedades do banco de dados no arquivo
src/main/resources/application.properties(ouapplication.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
-
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
-
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).
Embora este README seja focado no backend, para rodar a aplicação completa, você precisará do frontend:
-
Clone o repositório do frontend:
git clone <URL_DO_SEU_REPOSITORIO_FRONTEND> cd ericaura-frontend
-
Instale as dependências:
npm install # ou yarn install -
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) };
-
Execute a aplicação Angular:
ng serve
O frontend estará disponível em
http://localhost:4200(ou a porta configurada).