Sistema avançado de triagem médica desenvolvido em Python com Streamlit, integrando Machine Learning, Scores Clínicos Validados e Protocolo PCACR para classificação automatizada de risco e priorização de atendimento.
O Avicena Care é uma solução completa para serviços de emergência e triagem hospitalar que combina:
- 🤖 Inteligência Artificial com modelo Random Forest (93.85% de acurácia)
- 📊 6 Scores Clínicos Validados (qSOFA, NEWS2, SIRS, MEWS, GCS, EVA)
- 🛡️ Validação Clínica Inteligente que sobrescreve o ML em casos críticos
- 🎨 Interface Moderna e intuitiva para profissionais de saúde
- 📈 Análise Preditiva com explicações clínicas detalhadas
- 📋 Gestão Completa de fila de atendimento e histórico
Sistema baseado no Protocolo de Classificação de Risco que categoriza pacientes em 5 níveis:
- 🔴 PRIORIDADE MÁXIMA - Atendimento imediato (0 min)
- 🟠 ALTA PRIORIDADE - Muito urgente (15 min)
- 🟡 MÉDIA PRIORIDADE - Urgente (60 min)
- 🟢 BAIXA PRIORIDADE - Pouco urgente (120 min)
- 🔵 MÍNIMA (ELETIVA) - Não urgente (240 min)
- Algoritmo: Random Forest Classifier
- Acurácia: 93.85% (teste) | 95.61% (treino)
- Features: 9 parâmetros vitais + demográficos
- Frequência Cardíaca, Saturação O2, Temperatura
- PA Sistólica, PA Diastólica, PAM
- Frequência Respiratória, Idade, Gênero
O sistema valida automaticamente as predições do ML e sobrescreve quando detecta:
- 🧠 GCS ≤ 8 → Coma (intubação)
- 🧠 GCS 9-14 + ML baixo → Rebaixamento de consciência
- 🚨 qSOFA ≥ 2 → Suspeita de SEPSE
- 📈 NEWS2 ≥ 10 → Deterioração grave
⚠️ Confiança ML < 40% → Prioriza avaliação clínica
- Objetivo: Detecção rápida de sepse
- Critérios: FR ≥22, PAS ≤100, Alteração mental
- Alerta: qSOFA ≥ 2 = Alto risco de morte
- Objetivo: Identificar deterioração clínica
- Escala: 0-20 pontos
- Uso: Padrão ouro internacional
- Objetivo: Detectar resposta inflamatória sistêmica
- Critérios: FC >90, FR >20, Temp anormal
- Alerta: SIRS ≥ 2 = Processo infeccioso
- Objetivo: Sistema de alerta precoce
- Escala: 0-15 pontos
- Uso: Amplamente usado no Brasil
- Objetivo: Avaliar nível de consciência
- Componentes: Abertura ocular + Resposta verbal + Resposta motora
- Crítico: GCS ≤ 8 indica necessidade de intubação
- Objetivo: Quantificar dor do paciente
- Escala: 0-10 pontos
- Uso: Priorização e analgesia
- 🧾 Fila de atendimento com classificação automática
- ➕ Cadastro completo de pacientes
- 🔄 Reclassificação manual de urgência
- ✅ Marcar pacientes como atendidos
- 📋 Histórico de atendimentos
Inclui tudo da Enfermagem, mais:
- 🤖 Análise preditiva com ML
- 📊 Análise clínica com gráficos
- 📈 Dashboard com métricas
- 📑 Relatórios estatísticos
- 🔍 Explicabilidade do modelo
- Python 3.8+
- Streamlit 1.28+ - Framework web
- Scikit-learn - Machine Learning
- Pandas - Manipulação de dados
- SQLite - Banco de dados
- Plotly - Gráficos interativos
- CSS3 - Estilização responsiva
- Streamlit Components - Interface moderna
- Random Forest Classifier
- StandardScaler - Normalização
- Train/Test Split - Validação
- Feature Importance - Interpretabilidade
- Python 3.8 ou superior
- pip (gerenciador de pacotes)
# 1. Clone o repositório
git clone https://github.com/seu-usuario/avicena-care.git
cd avicena-care
# 2. Instale as dependências
pip install -r requirements.txt
# 3. Execute o sistema
streamlit run app_triagem.py# Duplo clique no arquivo
iniciar_app.batO sistema irá automaticamente:
- Criar o banco de dados SQLite
- Carregar o modelo de ML treinado
- Inicializar os módulos de scores clínicos
- Abrir o navegador em
http://localhost:8501
Avicena-Care/
├── app_triagem.py # Aplicação principal (3214 linhas)
├── ml_predictor.py # Módulo de predição ML (224 linhas)
├── train_model.py # Treinamento do modelo (218 linhas)
├── scores_clinicos.py # Scores clínicos (550+ linhas)
├── validacao_clinica.py # Validação de segurança (117 linhas)
├── auth.py # Autenticação
├── requirements.txt # Dependências Python
├── iniciar_app.bat # Script de inicialização
├── avicena_auth.db # Banco de dados SQLite
├── data/
│ └── Dataset.csv # Dataset de treino (153MB)
├── models/
│ ├── pcacr_model.pkl # Modelo treinado
│ └── scaler.pkl # Normalizador
└── README.md # Esta documentação
Escolha o perfil de acesso:
- Enfermagem: Triagem e gestão da fila
- Médico: Acesso completo + análises avançadas
- Nome completo
- Idade
- Sinais vitais (PA, FC, FR, Temp, SpO2)
- Queixa principal
- Nível de consciência
- Comorbidades
- Alergias
- Intensidade de dor (0-10)
- Gênero
O sistema exibe automaticamente:
- ✅ Classificação por regras (PCACR)
- 🤖 Predição do ML com confiança
- 🛡️ Validação clínica (se necessário)
- 📊 6 Scores clínicos calculados
⚠️ Alertas de risco (sepse, hipoxemia, etc.)
- Pacientes ordenados por prioridade
- Tempo máximo de espera por categoria
- Sinais vitais resumidos
- Queixa principal
- 🔄 Reclassificar urgência manualmente
- 🏥 Marcar como atendido
- 📋 Ver histórico completo
Selecione um paciente para ver:
- 📊 Distribuição de probabilidades (5 classes)
- 🩺 Interpretação clínica dos sinais vitais
- 📈 Importância dos fatores clínicos
- 📊 6 Scores clínicos validados
- 💡 Recomendações baseadas em confiança
- 📅 Filtro por período (Hoje, Semana, Mês)
- 🔍 Busca por nome
- ↩️ Retornar paciente à fila (se necessário)
- 📊 Estatísticas de atendimento
# Dados: 50.000 pacientes do Dataset.csv
# Features: 9 variáveis clínicas
# Target: 5 classes de prioridade PCACR
# Método: Random Forest (100 árvores, max_depth=10)
# Validação: 80/20 train/test split- Acurácia Geral: 93.85%
- Precisão Balanceada: class_weight='balanced'
- Feature Importance:
- Frequência Respiratória: 27.7%
- PA Sistólica: 16.0%
- Idade: 15.5%
- Frequência Cardíaca: 14.9%
- Saturação O2: 13.3%
O modelo fornece:
- Probabilidades para cada classe
- Nível de confiança da predição
- Interpretação clínica dos sinais vitais
- Alertas automáticos de desvios
A camada de segurança intervém quando:
- Consciência crítica: GCS ≤8 ou GCS <15 + ML baixo
- Sepse: qSOFA ≥2 (sempre sobrescreve)
- Deterioração: NEWS2 ≥10 + ML muito baixo
- Incerteza: Confiança <40% + regras sugerem urgência
Toda sobrescrita gera:
⚠️ Alerta visual destacado- 📝 Motivo clínico detalhado
- 📊 Scores que justificaram a decisão
- 🤖 Predição original do ML (para comparação)
CREATE TABLE triagem (
id INTEGER PRIMARY KEY AUTOINCREMENT,
Nome TEXT,
Idade INTEGER,
PA TEXT,
FC INTEGER,
FR INTEGER,
Temp REAL,
SpO2 INTEGER,
nivel_consciencia TEXT,
genero TEXT,
intensidade_dor INTEGER,
Comorbidade TEXT,
Alergia TEXT,
Queixa_Principal TEXT,
urgencia_automatica TEXT,
urgencia_manual TEXT,
status TEXT DEFAULT 'AGUARDANDO',
data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
data_atendimento TIMESTAMP
)- Normal: 60-100 bpm
- Bradicardia: <60 bpm (grave <40)
- Taquicardia: >100 bpm (grave >120)
- Normal: <120/80 mmHg
- Elevada: 120-129/<80 mmHg
- HAS Estágio 1: 130-139/80-89 mmHg
- HAS Estágio 2: ≥140/90 mmHg
- Crise: ≥180/120 mmHg
- Normal: 36.0-37.4°C
- Febrícula: 37.5-37.9°C
- Febre: 38.0-39.0°C
- Febre Alta: >39.0°C
- Hipotermia: <36.0°C
- Normal: 12-20 irpm
- Bradipneia: <12 irpm (grave <10)
- Taquipneia: >20 irpm (grave ≥30)
- Normal: ≥95%
- Limítrofe: 92-94%
- Hipoxemia: 88-91% (necessita O2)
- Hipoxemia Severa: <88% (O2 urgente!)
- Cores PCACR: Sistema de cores padronizado Manchester
- Tipografia: Arial, sans-serif para legibilidade clínica
- Ícones: Emojis para rápida identificação visual
- Responsivo: Adaptável a tablets e desktops
- Alto contraste para ambientes hospitalares
- Feedback visual imediato em todas as ações
- Mensagens de erro claras e acionáveis
- Interface intuitiva para profissionais sob pressão
Edite validacao_clinica.py:
# Exemplo: Tornar validação mais conservadora
elif news2 >= 8 and ml_class in ['BAIXA PRIORIDADE', 'MÍNIMA (ELETIVA)']:
should_override = True
new_classification = "ALTA PRIORIDADE"# Com seus próprios dados
python train_model.py
# O sistema criará novos arquivos:
# - models/pcacr_model.pkl
# - models/scaler.pklEdite scores_clinicos.py para modificar critérios ou adicionar novos scores.
# Treinar o modelo
python train_model.py# Reinstalar dependências
pip install --upgrade -r requirements.txt# Usar porta alternativa
streamlit run app_triagem.py --server.port 8502# Deletar e reiniciar
del avicena_auth.db
streamlit run app_triagem.py- Integração com PACS/RIS
- API REST para integração com outros sistemas
- App mobile para enfermeiros
- Suporte multi-idioma
- Dashboard administrativo
- Exportação de relatórios (PDF/Excel)
- Integração com prontuário eletrônico
- Notificações push para médicos
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
- 🐛 Correção de bugs
- ✨ Novas features
- 📝 Melhorias na documentação
- 🎨 Aprimoramentos de UI/UX
- 🔬 Validação clínica adicional
- 🧪 Testes unitários
Este projeto é de código aberto para fins educacionais e de saúde. Sinta-se livre para usar, modificar e distribuir, mantendo os créditos originais.
- Protocolo Manchester - Inspiração para classificação PCACR
- NEWS2 - Royal College of Physicians
- Glasgow Coma Scale - Universidade de Glasgow
- Comunidade Python - Bibliotecas e ferramentas
- Streamlit - Framework web incrível
Para dúvidas, sugestões ou reportar problemas:
- 📧 Email: [seu-email]
- 🐛 Issues: [GitHub Issues]
- 💬 Discussões: [GitHub Discussions]
- Linhas de Código: ~5.000+
- Módulos: 6 principais
- Scores Clínicos: 6 validados
- Acurácia ML: 93.85%
- Dataset: 50.000 pacientes
- Tempo de Desenvolvimento: Novembro 2025
Desenvolvido com ❤️ para salvar vidas através da tecnologia
🏥 Avicena Care - Triagem Inteligente, Atendimento Eficiente