Skip to content

LeocaldioDev/HeathIA

Repository files navigation

.NET C# EF Core JWT Gemini AI SQL Server

🏥 HealthIA

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.


📖 Origem do Projeto

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."


🎯 Visão Geral

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

✅ Funcionalidades Implementadas

🔐 Autenticação & Autorização

  • 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

👥 Gestão de Utilizadores

  • 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

📋 Sistema de Consultas

  • 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

🤖 Integração com IA

  • Serviço dedicado para comunicação com Google Gemini
  • Interface IGeminiService para abstração
  • Processamento inteligente de sintomas
  • Geração de avaliações preliminares

🛡️ Segurança & Tratamento de Erros

  • 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

📊 Recursos Avançados

  • 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

🏗️ Arquitetura

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

🛠️ Tecnologias Utilizadas

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

🚀 Como Executar

Pré-requisitos

Passos

  1. Clone o repositório

    git clone https://github.com/LeocaldioDev/HeathIA.git
    cd HeathIA
  2. Configure a connection string em appsettings.json

    {
      "ConnectionStrings": {
        "DefaultConnection": "Server=.;Database=HealthIA;Trusted_Connection=True;TrustServerCertificate=True;"
      }
    }
  3. Configure a chave do Gemini (variável de ambiente ou appsettings)

    {
      "GeminiApi": {
        "ApiKey": "SUA_CHAVE_AQUI"
      }
    }
  4. Execute as migrações

    dotnet ef database update --project HealthIA.Infra.Data --startup-project HealthIA.API
  5. Inicie a aplicação

    dotnet run --project HealthIA.API
  6. Acesse a documentação Swagger

    https://localhost:5001/swagger
    

📡 Endpoints Principais

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 Pagination das respostas.


🎓 Aprendizagens

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

🚧 Roadmap Futuro

  • 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)

👤 Autor

Leocaldio Carlos
Desenvolvedor Backend

LinkedIn GitHub

📝 Licença

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

About

Sistema de avaliação preliminar de saúde por meio de IA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •