Case study

Plataforma de Agendamento Médico com Triagem por IA

Aplicação full-stack para gerenciamento de consultas médicas, desenvolvida com ASP.NET Core 8, Next.js e PostgreSQL. A plataforma possui autenticação JWT e controle de acesso por perfil, permitindo fluxos distintos para pacientes e médicos, além de integrar Azure OpenAI para realizar triagem automatizada e recomendar um profissional com base nos sintomas informados pelo paciente.

fev. de 2025fev. de 2025

Tecnologias

C#.NET 8ASP.NET CoreEntity Framework CoreNext.jsReactPostgreSQLDockerAzure OpenAIJWT

O problema

O desafio consistia em desenvolver uma plataforma capaz de organizar o processo de agendamento entre pacientes e médicos, garantindo que cada perfil tivesse acesso apenas às funcionalidades e informações correspondentes ao seu papel. Além do gerenciamento das consultas, era necessário explorar uma forma de utilizar inteligência artificial para auxiliar na triagem inicial, analisando a descrição dos sintomas fornecida pelo paciente e direcionando o agendamento para um profissional adequado.

A solução

Foi desenvolvida uma aplicação full-stack com Next.js no frontend e uma API REST em ASP.NET Core 8. O backend utiliza Entity Framework Core com PostgreSQL para persistência de usuários e agendamentos. A autenticação foi implementada com JWT e autorização baseada em roles, separando os fluxos disponíveis para pacientes e médicos. Pacientes podem criar e acompanhar seus próprios agendamentos, enquanto médicos possuem acesso a consultas de acordo com seu perfil. Para auxiliar na triagem, a aplicação integra Azure OpenAI. Os sintomas informados pelo paciente são analisados em conjunto com os médicos disponíveis no sistema, e o modelo seleciona o profissional mais adequado. A resposta da IA é posteriormente validada pela aplicação antes de associar o médico ao agendamento. Todo o ambiente pode ser executado através de containers utilizando Docker e Docker Compose.

Responsabilidades

Responsável pelo desenvolvimento full-stack da solução, incluindo definição da arquitetura, implementação da API em ASP.NET Core, desenvolvimento do frontend em Next.js, modelagem e persistência dos dados com PostgreSQL e Entity Framework Core, autenticação JWT e controle de autorização baseado em roles. Também fui responsável pela integração com Azure OpenAI para o fluxo de triagem, tratamento e validação das respostas retornadas pelo modelo, criação das migrations do banco e conteinerização dos componentes utilizando Docker e Docker Compose.

Decisões técnicas

ASP.NET Core 8 foi utilizado no backend para explorar uma arquitetura fortemente tipada e integrada ao ecossistema .NET. Entity Framework Core foi adotado para abstração do acesso aos dados e gerenciamento das migrations, utilizando PostgreSQL como banco relacional. JWT foi escolhido para autenticação stateless, enquanto o sistema nativo de autorização por roles do ASP.NET foi utilizado para restringir endpoints de acordo com o tipo de usuário. Next.js foi utilizado no frontend para criação das interfaces específicas de pacientes e médicos e comunicação com a API. Azure OpenAI foi integrado ao fluxo de triagem para interpretar a descrição do paciente e selecionar um profissional entre os médicos cadastrados. Para reduzir o risco de respostas inválidas do modelo, a aplicação exige um identificador como resposta e valida esse identificador contra os médicos existentes no banco antes de persistir a associação. Docker e Docker Compose foram utilizados para padronizar o ambiente da aplicação e permitir a inicialização conjunta de frontend, backend e PostgreSQL.

Resultados

O projeto resultou em uma aplicação full-stack funcional capaz de gerenciar usuários e consultas médicas através de diferentes perfis de acesso. A solução integra frontend, API, banco relacional, autenticação, autorização, migrations e infraestrutura conteinerizada em um único ambiente. A integração com Azure OpenAI adicionou um fluxo de triagem automatizada capaz de analisar os sintomas fornecidos pelo paciente e auxiliar na seleção do profissional disponível, demonstrando uma aplicação prática de modelos generativos integrada às regras de negócio de um sistema tradicional.