Sistema web para análise automatizada de fraturas ósseas em radiografias, utilizando Inteligência Artificial via Azure Custom Vision.
Fraturas ósseas muitas vezes passam despercebidas em radiografias quando analisadas manualmente sob pressão de tempo. O RadAI automatiza essa triagem: o médico envia a imagem do raio-X e o sistema retorna instantaneamente se há indício de fratura, o nível de confiança da análise e se o caso precisa de revisão humana.
Este projeto foi desenvolvido como trabalho acadêmico na PUC Minas (2022), nas disciplinas orientadas pelas professoras Luciana Mara Freitas Diniz e Ilo Amy Saldanha Rivero.
- ✅ Autenticação de usuários com senha criptografada (BCrypt)
- ✅ Cadastro e listagem de pacientes
- ✅ Agendamento e listagem de consultas
- ✅ Upload de imagem de raio-X diretamente pelo portal médico
- ✅ Análise automática de fraturas via Azure Custom Vision
- ✅ Resultado com diagnóstico, confiança e flag de revisão humana
- ✅ Deploy via Docker com suporte a variáveis de ambiente
┌─────────────────────────────────────────────────┐
│ NAVEGADOR │
│ login.html │ dashboard.html │ medico.html │
└──────────────────────┬──────────────────────────┘
│ HTTP/REST :8080
┌──────────────────────▼──────────────────────────┐
│ BACKEND (Java 21 + Spark) │
│ /login │ /pacientes │ /consultas │ /upload-raiox│
└──────────────┬────────────────────┬─────────────┘
│ │
┌────────────▼──────┐ ┌──────────▼──────────────┐
│ PostgreSQL │ │ Azure Custom Vision │
│ (dados clínicos) │ │ (análise de raio-X) │
└───────────────────┘ └─────────────────────────┘
| Tecnologia | Versão | Papel |
|---|---|---|
| Java | 21 | Linguagem do backend |
| Spark Framework | 2.x | Servidor HTTP embarcado |
| PostgreSQL | 15 | Banco de dados relacional |
| Sql2o | — | Mapeamento SQL → objetos Java |
| BCrypt | — | Hash de senhas |
| Gson | — | Serialização JSON |
| Azure Custom Vision | API v3 | Modelo de IA para detecção de fraturas |
| Apache HttpClient | — | Chamadas HTTP para a Azure |
| Bootstrap | 5.3 | Estilização do frontend |
| Docker | — | Containerização e deploy |
Para rodar com Docker (recomendado):
- Docker instalado
- Banco PostgreSQL acessível (local ou na nuvem)
- Chaves do Azure Custom Vision (opcional — sem elas a análise de IA retorna erro)
Para rodar manualmente:
- Java 21
- Maven 3.9+
- PostgreSQL 15
# 1. Clone o repositório
git clone https://github.com/lucasjosee/RadAI.git
cd RadAI
# 2. Configure as variáveis de ambiente
cp .env.example .env
# Edite .env com suas credenciais
# 3. Build e run
cd Codigo/backend
docker build -t radai .
docker run -p 8080:8080 --env-file ../../.env radaiAcesse: http://localhost:8080/login.html
# 1. Clone e entre na pasta do backend
git clone https://github.com/lucasjosee/RadAI.git
cd RadAI/Codigo/backend
# 2. Configure as variáveis de ambiente
export DB_URL=jdbc:postgresql://localhost:5432/saas_raiox
export DB_USER=postgres
export DB_PASS=sua_senha
export AZURE_URL=https://seu-endpoint...
export AZURE_KEY=sua_chave
# 3. Build e execute
mvn clean package -DskipTests
java -jar target/saas-raiox-0.0.1-SNAPSHOT.jarAcesse: http://localhost:8080/login.html
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
PORT |
Não | 8080 |
Porta do servidor |
DB_URL |
Sim | jdbc:postgresql://localhost:5432/saas_raiox |
JDBC URL do PostgreSQL |
DB_USER |
Sim | postgres |
Usuário do banco |
DB_PASS |
Sim | — | Senha do banco |
AZURE_URL |
Sim* | — | Endpoint do modelo Custom Vision |
AZURE_KEY |
Sim* | — | Chave de predição da Azure |
*Sem as chaves Azure, o upload de raio-X retornará erro de IA.
| Método | Rota | Descrição |
|---|---|---|
POST |
/login |
Autentica usuário (email + senha) |
POST |
/usuarios |
Cadastra novo usuário |
GET |
/pacientes |
Lista todos os pacientes |
POST |
/pacientes |
Cadastra novo paciente |
GET |
/consultas-lista |
Lista todas as consultas |
POST |
/consultas |
Agenda nova consulta |
POST |
/upload-raiox |
Envia imagem e retorna análise de IA |
RadAI/
├── .env.example # Template de variáveis de ambiente
├── CITATION.cff # Metadados para citação acadêmica
├── LICENSE # Creative Commons BY 4.0
│
├── Codigo/
│ ├── backend/
│ │ ├── Dockerfile # Build e deploy via Docker
│ │ ├── public/ # Frontend servido pelo Spark
│ │ │ ├── login.html
│ │ │ ├── dashboard.html
│ │ │ ├── medico.html
│ │ │ ├── cadastro.html
│ │ │ └── style.css
│ │ └── src/main/java/
│ │ ├── Main.java # Servidor + rotas REST
│ │ ├── dao/ # Acesso ao banco de dados
│ │ ├── model/ # Entidades (Usuario, Paciente, Consulta)
│ │ └── service/
│ │ └── ServicoIA.java # Integração com Azure Custom Vision
│ └── front/ # Cópia standalone do frontend
│
├── Divulgacao/
│ └── Apresentacao/ # PDFs das apresentações por Sprint
│
└── docs/ # Documentação do projeto
| Sprint | Arquivo |
|---|---|
| Sprint 1 | Sprint 1 - RadiIA.pdf |
| Sprint 2 | Sprint 2.pdf |
Aluno
- Lucas José Souza Rodrigues
Orientadores — PUC Minas
- Profª Luciana Mara Freitas Diniz
- Prof. Ilo Amy Saldanha Rivero
Distribuído sob a licença Creative Commons Attribution 4.0 International (CC BY 4.0).
Você pode usar, adaptar e distribuir livremente, desde que cite os autores originais.