Sistema de Avaliação Preliminar de Saúde com Inteligência Artificial
Uma API robusta que utiliza IA para fornecer avaliações preliminares de saúde, conectando pacientes e médicos de forma inteligente.
O HealthIA nasceu como um desafio universitário com o objetivo de desenvolver um sistema inovador de obtenção de resultados preliminares de saúde por meio de Inteligência Artificial. A proposta era criar uma solução que pudesse auxiliar pacientes a obterem uma primeira avaliação sobre seus sintomas, enquanto mantém profissionais médicos no controlo para validação e acompanhamento.
Este projeto representa não apenas uma entrega académica, mas uma jornada de aprendizagem profunda em:
- 🏗️ Arquitetura de Software - Aplicação prática de Clean Architecture
- 🔐 Segurança - Implementação real de autenticação JWT
- 🤖 Integração com IA - Conexão com o Google Gemini para análise inteligente
- 📊 Boas Práticas - DTOs, AutoMapper, tratamento de exceções, paginação
- 💡 Resolução de Problemas - Desafios reais de desenvolvimento backend
"Este projeto foi uma das experiências mais enriquecedoras da minha formação. Cada funcionalidade implementada representou um novo conceito aprendido e consolidado na prática."
O HealthIA é uma API RESTful desenvolvida em ASP.NET Core que serve como backend para um sistema de saúde inteligente. A aplicação permite:
- 👤 Pacientes descrevem seus sintomas
- 🤖 IA (Google Gemini) analisa e gera uma avaliação preliminar
- 👨⚕️ Médicos validam e acompanham os resultados
- 🔧 Administradores gerem todo o sistema
- Autenticação via JWT (JSON Web Token)
- Tokens com tempo de expiração configurável
- Endpoints protegidos por autorização
- Sistema de Roles (Paciente, Médico, Admin)
- Claims personalizadas para controlo de acesso
- Cadastro de Pacientes com dados pessoais completos
- Cadastro de Médicos com especialidade
- Cadastro de Administradores
- Gestão completa de utilizadores (CRUD)
- Perfis diferenciados por tipo de utilizador
- Criação de consultas pelos pacientes
- Análise de sintomas pela IA Gemini
- Geração de resultados preliminares automáticos
- Validação médica dos resultados
- Histórico completo de consultas
- Serviço dedicado para comunicação com Google Gemini
- Interface
IGeminiServicepara abstração - Processamento inteligente de sintomas
- Geração de avaliações preliminares
- Middleware global para tratamento de exceções
- Respostas padronizadas de erro
- Proteção contra exposição de dados sensíveis
- Códigos HTTP apropriados
- Configuração de CORS para frontend
- Paginação em todos os endpoints de listagem
- Paginação retornada via headers HTTP
- DTOs para isolamento do domínio
- AutoMapper para conversões automáticas
- Swagger/OpenAPI para documentação
O projeto segue os princípios da Clean Architecture, garantindo separação de responsabilidades, testabilidade e manutenibilidade:
📦 HealthIA
├── 📁 HealthIA.API → Camada de Apresentação
│ ├── Controllers/ → Endpoints da API
│ │ ├── AdminController
│ │ ├── CadastroController
│ │ ├── ConsultaController
│ │ ├── MedicoController
│ │ ├── PacienteController
│ │ └── UsuarioController
│ ├── GeminiService/ → Integração com IA
│ ├── IGemini/ → Interface do serviço IA
│ ├── Middleware/ → Tratamento global de exceções
│ ├── Errors/ → Classes de erro padronizadas
│ ├── Extensions/ → Métodos de extensão
│ └── Models/ → View Models
│
├── 📁 HealthIA.Application → Camada de Aplicação
│ ├── DTOs/ → Data Transfer Objects
│ │ ├── AdminDTO
│ │ ├── ConsultaDTO / ConsultaPostDTO
│ │ ├── MedicoDTO
│ │ ├── PacienteDTO / PacientePostDTO
│ │ └── UsuarioDTO / UsuarioPostDTO / UsuarioRegisterDTO
│ ├── Interfaces/ → Contratos de serviços
│ ├── Mapping/ → Perfis do AutoMapper
│ └── Services/ → Lógica de aplicação
│ ├── AdminService
│ ├── ConsultaService
│ ├── MedicoService
│ ├── PacienteService
│ └── UsuarioService
│
├── 📁 HealthIA.Domain → Camada de Domínio
│ ├── Account/ → Modelos de autenticação
│ ├── Entities/ → Entidades do negócio
│ │ ├── Admin
│ │ ├── Consulta
│ │ ├── Medico
│ │ ├── Paciente
│ │ └── Usuario
│ ├── Interface/ → Contratos de repositórios
│ ├── Pagination/ → Objetos de paginação
│ ├── SystemModels/ → Modelos do sistema
│ └── Validation/ → Validações de domínio
│
├── 📁 HealthIA.Infra.Data → Camada de Infraestrutura
│ ├── Context/ → DbContext do EF Core
│ ├── EntitiesConfiguration/ → Configurações Fluent API
│ ├── Helper/ → Classes auxiliares
│ ├── Identity/ → Implementação de autenticação
│ ├── Migrations/ → Migrações do banco
│ └── Repository/ → Implementação dos repositórios
│
└── 📁 HealthIA.Infra.Ioc → Inversão de Controlo
├── InjeccaoDeDependencias → Container DI
├── DependencyInjectionSwagger
└── ClaimsPrincipalExtension
| Categoria | Tecnologia |
|---|---|
| Framework | ASP.NET Core 8+ |
| Linguagem | C# |
| ORM | Entity Framework Core |
| Base de Dados | SQL Server |
| Autenticação | JWT Bearer Tokens |
| IA | Google Gemini API |
| Mapeamento | AutoMapper |
| Documentação | Swagger / OpenAPI |
| Arquitectura | Clean Architecture |
- .NET 8 SDK
- SQL Server (ou SQL Server Express)
- Chave de API do Google Gemini
-
Clone o repositório
git clone https://github.com/LeocaldioDev/HeathIA.git cd HeathIA -
Configure a connection string em
appsettings.json{ "ConnectionStrings": { "DefaultConnection": "Server=.;Database=HealthIA;Trusted_Connection=True;TrustServerCertificate=True;" } } -
Configure a chave do Gemini (variável de ambiente ou appsettings)
{ "GeminiApi": { "ApiKey": "SUA_CHAVE_AQUI" } } -
Execute as migrações
dotnet ef database update --project HealthIA.Infra.Data --startup-project HealthIA.API
-
Inicie a aplicação
dotnet run --project HealthIA.API
-
Acesse a documentação Swagger
https://localhost:5001/swagger
| Método | Rota | Descrição |
|---|---|---|
POST |
/api/cadastro/register |
Registar novo utilizador |
POST |
/api/cadastro/login |
Autenticação (retorna JWT) |
GET |
/api/paciente |
Listar pacientes (paginado) |
GET |
/api/medico |
Listar médicos (paginado) |
GET |
/api/consulta |
Listar consultas (paginado) |
POST |
/api/consulta |
Criar nova consulta (aciona IA) |
PUT |
/api/consulta/{id}/validar |
Validação médica |
GET |
/api/admin |
Gestão administrativa |
📌 Nota: A paginação é retornada no header
Paginationdas respostas.
Este projeto proporcionou aprendizagens valiosas em:
- Clean Architecture na prática, não apenas na teoria
- Implementação real de autenticação JWT com roles e claims
- Integração com serviços externos de IA (Google Gemini)
- Criação de middlewares personalizados para tratamento de erros
- Uso correto de DTOs para proteger o domínio
- Configuração de injecção de dependências em projectos em camadas
- Implementação de paginação eficiente para grandes volumes de dados
- Boas práticas de segurança em APIs
- Implementação de Refresh Tokens
- Blacklist de tokens para logout seguro
- Testes unitários e de integração
- Cache distribuído com Redis
- Logs estruturados com Serilog
- Deploy em ambiente cloud (Azure/AWS)
- Rate limiting para proteção da API
- Notificações em tempo real (SignalR)
|
Leocaldio Carlos Desenvolvedor Backend |
Este projeto foi desenvolvido para fins educacionais como parte de um desafio universitário.
⭐ Se este projeto te foi útil, considera deixar uma estrela!
Feito com 💜 e muito ☕ por Leocaldio Carlos