Aplicação web full-stack para digitalizar e gerenciar a medição de amostras patológicas. Construída com uma API RESTful, um dashboard completo para CRUD (Amostras, Pacientes, Médicos) e um Assistente de IA integrado com LangChain4j.
Stack Principal: Java 21, Spring Boot, LangChain4j, OpenAI, JPA, Hibernate, Thymeleaf, Oracle e Flyway.
- Sobre o Projeto
- ✨ Principais Funcionalidades
- 🤖 Assistente de IA
- 📸 Screenshots
- 🛠️ Pilha de Tecnologias
- 🏛️ Arquitetura do Projeto
- 🚀 Como Executar o Projeto
- 📄 Documentação da API
- 🗃️ Migrações do Banco de Dados
- 👨💻 Autor
- 📜 Licença
O Macro Measure é uma aplicação web full-stack desenvolvida em Java para a DASA, com o objetivo de modernizar e otimizar o processo de medição de amostras patológicas. A solução substitui processos manuais por um fluxo de trabalho digital, centralizado e rastreável, garantindo maior precisão, integridade dos dados e eficiência operacional.
Além das funcionalidades de gerenciamento, o projeto conta com um Assistente de IA que permite aos usuários consultar dados complexos do sistema usando linguagem natural.
- Gerenciamento de Amostras: CRUD completo para registrar, visualizar, editar e excluir medições de amostras.
- Gerenciamento de Pacientes e Médicos: Cadastros dedicados para pacientes e médicos, permitindo a associação correta com as amostras.
- Assistente de IA Conversacional: Um chatbot integrado que utiliza
LangChain4jpara responder perguntas complexas sobre os dados, como "liste as amostras do Dr. Fernando com status FINALIZADO" ou "qual o CPF do paciente Ygor?". - Dashboard Interativo: Tela principal para listagem de amostras com funcionalidades de ordenação e acesso rápido aos detalhes.
- Visualização Detalhada: Uma tela de detalhes moderna em formato de widgets para cada amostra, facilitando a visualização rápida das informações.
- API RESTful: Endpoints REST para todas as entidades principais, permitindo integrações futuras com outros sistemas.
O núcleo de IA do projeto é construído sobre o dev.langchain4j e segue a arquitetura de Agente & Ferramentas:
- Agente (
MacroMeasureAgent): Uma interface@AiServicedefine a "constituição" (system prompt) do agente, instruindo-o sobre como se comportar e quais ferramentas ele pode usar. - Ferramentas (
MacroMeasureTools): Uma classe@Componentque atua como uma "ponte". Ela injeta osServicesde negócio do Spring (ex:PacienteService,MedicoService) e expõe métodos Java seguros para o agente, anotados com@Tool. - Funcionamento: Quando um usuário envia uma pergunta (ex: "quantas amostras o paciente ID 8 tem?"), o Agente:
- Analisa a pergunta.
- Consulta sua "constituição" (
@SystemMessage). - Escolhe a ferramenta Java correta:
contarMedicoes(pacienteId=8, ...). - A ferramenta
@Toolexecuta a lógica de negócio em Java (filtrando emMedicaoAmostraService). - A ferramenta retorna o resultado (ex:
long 2). - O Agente formata esse resultado em uma resposta amigável (ex: "O paciente ID 8 possui 2 amostras.").
Essa arquitetura garante que a IA nunca acesse o banco de dados diretamente, mantendo a segurança e a precisão dos dados, ao mesmo tempo que oferece uma interface de usuário poderosa e flexível.
Esta seção apresenta as principais telas da aplicação, demonstrando o fluxo de uso e o design da interface.
A porta de entrada do projeto, com uma apresentação incorporada que detalha os objetivos e funcionalidades do Macro Measure.

A tela central para o gerenciamento de amostras, exibindo os registros em uma tabela interativa com opções de ordenação e acesso rápido às ações.

Visualização detalhada de uma medição específica, apresentada em um layout de widgets para facilitar a leitura rápida e clara das informações.

O formulário para registrar uma nova medição, com campos para associar pacientes, médicos e inserir todas as dimensões e observações da amostra.

A interface de chat onde os usuários podem interagir com o Agente LangChain4j para fazer consultas em linguagem natural.

A aplicação foi construída utilizando tecnologias modernas e robustas do ecossistema Java.
-
Backend:
Java 21Spring Boot 3.3.0Spring Web(Para a construção de APIs REST e controllers MVC)Spring Data JPA(Para persistência de dados de forma simplificada)Hibernate(Framework ORM para mapeamento objeto-relacional)
-
Inteligência Artificial (Agente):
LangChain4j(Framework de Agente de IA e integração com LLMs)langchain4j-spring-boot-starter(Para integração nativa com Spring)OpenAI(Modelo de LLMgpt-3.5-turboutilizado pelo agente)
-
Frontend:
Thymeleaf(Motor de templates para renderização no lado do servidor)HTML5&CSS3(com Bootstrap 5)
-
Banco de Dados:
Oracle DatabaseFlyway(Para gerenciamento e versionamento das migrações do schema)
-
Ferramentas e Outros:
Maven(Gerenciador de dependências e build do projeto)Lombok(Para redução de código boilerplate)SpringDoc (OpenAPI/Swagger)(Para documentação automática da API)
O projeto segue uma Arquitetura em Camadas clara, promovendo a separação de responsabilidades.
domain: Camada de domínio, contendo:entity: As classes que representam as tabelas do banco de dados (ex:MedicaoAmostra), anotadas com JPA.repository: As interfacesJpaRepositoryresponsáveis pela abstração do acesso aos dados.service: Onde reside a lógica de negócio principal (ex:PacienteService).
api: Camada de exposição da API REST, contendo:controller: Classes@RestController(ex:/api/medicoes).dto: Data Transfer Objects (DTOs) para desacoplar a API das entidades.exception: Classes para tratamento global de exceções.
web: Camada de apresentação web (Frontend), contendo:controller: Classes@Controllerresponsáveis por renderizar as páginas Thymeleaf (ex:DashboardController).
ai: Camada do Agente de Inteligência Artificial, contendo:controller: O@RestControllerque expõe o chatbot.service: A interface@AiServiceque define o agente.tools: A classe@Componentque define as@Toolsque o agente pode usar.
Pré-requisitos:
- JDK 21 ou superior
- Maven 3.8+
- Acesso a um banco de dados Oracle
- Uma API Key da OpenAI
Passos:
-
Clone o repositório:
git clone [https://github.com/Carti011/Macro-Measure.git](https://github.com/Carti011/Macro-Measure.git)
(Atualizei com a URL do seu
git status) -
Configure o Banco de Dados:
- Abra o arquivo
src/main/resources/application.properties. - Altere as propriedades
spring.datasource.url,spring.datasource.usernameespring.datasource.passwordcom as credenciais do seu banco de dados Oracle.
- Abra o arquivo
-
Configure a API Key da OpenAI:
- No mesmo arquivo
src/main/resources/application.properties. - Altere a propriedade
langchain4j.open-ai.chat-model.api-keycom sua chave da OpenAI. - (Recomendado) Como melhor prática, remova a chave do arquivo e configure-a como uma variável de ambiente (
OPENAI_API_KEY). OAiConfig.javaestá pronto para ler isso.
- No mesmo arquivo
-
Execute a aplicação:
- Navegue até a raiz do projeto e execute o seguinte comando no terminal:
mvn spring-boot:run
-
Acesse a aplicação:
- Página Inicial:
http://localhost:8080/ - Dashboard de Amostras:
http://localhost:8080/dashboard - Assistente de IA:
http://localhost:8080/chatbot - Documentação da API:
http://localhost:8080/swagger-ui.html
- Página Inicial:
A documentação completa da API REST está disponível e é gerada automaticamente pelo SpringDoc. Após iniciar a aplicação, acesse:
- Swagger UI:
http://localhost:8080/swagger-ui.html
O schema do banco de dados é gerenciado pelo Flyway. As migrações são arquivos SQL versionados e se encontram em src/main/resources/db/migration. O Flyway aplica automaticamente as migrações pendentes ao iniciar a aplicação.
Weslley Cardoso
- LinkedIn:
https://www.linkedin.com/in/weslleycarti/ - GitHub:
@Carti011
Este projeto está sob a licença MIT.



