You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🏥 PTMD — Sistema de Diagnóstico Médico com Inteligência Artificial
Projeto de Tecnologia Médica para Diagnóstico — Sistema completo para diagnóstico de condições otológicas assistido por IA, utilizando modelos YOLO para classificação de imagens.
O PTMD (Projeto de Tecnologia Médica para Diagnóstico) é um sistema completo de diagnóstico médico assistido por Inteligência Artificial, focado na análise de imagens otológicas (ouvido).
O que o sistema faz
O sistema permite que médicos:
📋 Cadastrem pacientes e realizem consultas
📤 Enviem imagens de exames otológicos para análise por IA
🤖 Recebam diagnósticos preliminares automáticos da IA (Normal/Anormal + classificação)
✅ Confirmem ou ajustem diagnósticos individualmente por imagem
📊 Gerenciem histórico completo de consultas e pacientes
E que administradores possam:
📈 Visualizar estatísticas gerais do sistema
💾 Gerar backups organizados (ZIP com imagens confirmadas + CSV de metadados)
🔑 Gerenciar credenciais de acesso
Diagnósticos suportados
Classe
Descrição
Normal
Ouvido saudável
aom
Otite Média Aguda
csom
Otite Média Crônica Supurativa
earwax
Cerúmen (cera de ouvido)
ExternalEarInfections
Infecções do Ouvido Externo
tympanoskleros
Timpanoesclerose
🏗 Arquitetura do Sistema
O PTMD segue uma arquitetura de microsserviços, composta por 3 projetos independentes que se comunicam via HTTP REST:
📖 Cada projeto possui seu próprio README.md com guia de instalação detalhado, passo a passo.
🚀 Guia Rápido de Instalação
Pré-requisitos gerais
Ferramenta
Versão
Necessário para
Git
qualquer
Clonar o repositório
Java JDK
17+
PTMD-BACK
Maven
3.6+
PTMD-BACK
MySQL
8.0+
PTMD-BACK
Python
3.11+
PTMD-BACK-IA
Node.js
18+
PTMD-FRONT
Docker(alternativa)
latest
Todos (via containers)
Clonar o repositório
git clone https://github.com/JairAssisDev/ptmd.git
cd ptmd
Ordem de inicialização recomendada
Os serviços devem ser iniciados na seguinte ordem para garantir que as dependências estejam disponíveis:
1️⃣ MySQL (banco de dados)
2️⃣ PTMD-BACK-IA (microsserviço de IA — porta 8081)
3️⃣ PTMD-BACK (backend Java — porta 8080)
4️⃣ PTMD-FRONT (frontend React — porta 3000)
Opção A — Instalação local (passo a passo)
1. Banco de Dados MySQL
CREATEDATABASEIF NOT EXISTS ptmd_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Médico
│
┌─────────┴─────────┐
▼ ▼
POST /register POST /login
(dados pessoais) (email + senha)
│ │
▼ ▼
Validação de Verifica
dados + email credenciais
único │
│ ▼
▼ Gera Token JWT
Cria User (válido 24h)
(role: MEDICO) │
│ ▼
▼ Retorna token
Retorna sucesso ao frontend
│
▼
Armazena em
localStorage
Fluxo 2 — Criação de Consulta com Diagnóstico IA
Médico preenche formulário (paciente + imagens)
│
▼
POST /api/medico/consultations
│
├── 1. Busca paciente por CPF
│ ├── Existe? → Atualiza dados
│ └── Não existe? → Cria novo
│
├── 2. Cria registro de Consultation
│
└── 3. Para cada imagem (1 até 10):
│
├── Salva arquivo em uploads/ (nome UUID)
│
├── POST http://localhost:8081/predict
│ │
│ ├── Modelo Binário (ptmdNA.pt)
│ │ └── Normal ou Anormal?
│ │
│ └── Se Anormal:
│ └── Modelo Multiclasse (ptmdClsA.pt)
│ └── aom/csom/earwax/etc.
│
└── Salva resultado da IA na entidade Image
│
▼
Retorna consulta com diagnósticos
Fluxo 3 — Confirmação de Diagnóstico (por imagem)
Médico abre detalhes da consulta
│
▼
Visualiza cada imagem + diagnóstico da IA
│
▼
Para cada imagem:
├── Aceita diagnóstico da IA
│ └── PUT /images/{imageId}/confirm { diagnosis: "aom" }
│
└── Ou seleciona diagnóstico diferente
└── PUT /images/{imageId}/confirm { diagnosis: "csom" }
│
▼
Image.finalDiagnosis = valor escolhido
Image.confirmed = true
Fluxo 4 — Geração de Backup (Administrador)
Admin clica em "Download Database"
│
▼
GET /api/admin/backup
│
├── Busca todas as imagens com confirmed = true
│
├── Para cada imagem confirmada:
│ ├── Verifica se arquivo existe em disco
│ ├── Renomeia: {imageId}_{patientId}_{finalDiagnosis}.ext
│ └── Adiciona à pasta dataset/ no ZIP
│
├── Gera CSV com metadados
│ └── Image ID, Patient ID, Model Prediction, Doctor Diagnosis
│
└── Retorna arquivo ZIP para download