Um sistema web de gerenciamento de filas de atendimento hospitalar com priorização automática de pacientes baseada em critérios de urgência.
Este é um projeto acadêmico desenvolvido para a disciplina de Estrutura de Dados que implementa um sistema de triagem hospitalar utilizando estruturas de dados avançadas como:
- Lista Duplamente Encadeada (DLL) - Estrutura base para todas as operações
- Fila de Prioridades - Ordenação automática de pacientes por urgência
- Pilha (Stack) - Registro do histórico de atendimentos
O sistema permite:
- ✅ Cadastro de pacientes com priorização automática
- ✅ Visualização em tempo real da fila de espera
- ✅ Atendimento com histórico rastreável
- ✅ Possibilidade de retornar ao paciente anterior
- ✅ Interface intuitiva e responsiva
- Exibição do paciente em atendimento com destaque visual por prioridade
- Visualização completa da fila de espera
- Botões para chamar próximo paciente e voltar ao anterior
- Contador de pacientes na fila e atendimentos realizados
- Formulário com validação de campos obrigatórios
- Seleção de prioridade (Normal, Urgente, Emergência)
- Armazenamento automático de data/hora do cadastro
- Priorização automática na fila respeitando critérios de urgência
- Registro de todos os atendimentos realizados
- Exibição em ordem cronológica (mais recente primeiro)
- Informações completas do paciente e horário de atendimento
- Opção de zerar todos os dados para recomeçar
- Persistência em sessão durante a navegação
- Python 3.x - Linguagem principal
- Flask - Framework web
- Estruturas de Dados customizadas em Python puro
- HTML5 - Estrutura
- CSS3 - Estilização responsiva
- JavaScript Vanilla - Interatividade
- Jinja2 - Templates dinâmicos
triaragem/
├── app.py # Aplicação Flask principal
├── estrutura_dados.py # Implementação de estruturas de dados
├── requirements.txt # Dependências do projeto
├── README.md # Este arquivo
└── templates/
├── base.html # Template base com menu
├── index.html # Painel de atendimento
├── cadastro.html # Formulário de cadastro
└── historico.html # Histórico de atendimentos
Representa um nó individual na estrutura de dados.
class Node:
def __init__(self, data):
self.data = data
self.prev = None # Referência ao nó anterior
self.next = None # Referência ao próximo nóImplementa uma lista duplamente encadeada com operações básicas:
add_first(data)- Adiciona no inícioadd_last(data)- Adiciona no finalremove_first()- Remove do inícioremove_last()- Remove do finalremove_middle(target_data)- Remove do meioto_list()- Converte para lista Pythonis_empty()- Verifica se está vazia
Herda de DLL implementando LIFO (Last In, First Out):
push(data)- Empilhapop()- Desempilhapeek()- Retorna topo sem removerget_history()- Retorna histórico em ordem reversa
Herda de DLL com ordenação automática por prioridade:
Níveis de Prioridade:
| Nível | Valor | Descrição |
|---|---|---|
| Emergência | 3 | Risco de morte iminente |
| Urgente | 2 | Necessário atendimento rápido |
| Normal | 1 | Atendimento regular |
Métodos:
enqueue(data)- Adiciona respeitando prioridadedequeue()- Remove de maior prioridadefront()- Retorna primeiro sem remover
Cada nível de prioridade possui cores e estilos únicos:
- 🔴 Emergência - Vermelho (#ef4444)
- 🟠 Urgente - Laranja (#f59e0b)
- 🟢 Normal - Verde (#10b981)
- Python 3.8+
- pip (gerenciador de pacotes Python)
- Clone ou extraia o projeto:
cd triaragem- Instale as dependências:
pip install -r requirements.txt- Execute a aplicação:
python app.py- Acesse no navegador:
http://localhost:5000
- Clique em "Adicionar Paciente" no menu lateral
- Preencha os dados obrigatórios (nome, CPF, idade, contato)
- Selecione a prioridade apropriada
- Clique em "Adicionar à Fila"
- Na tela de atendimento, clique em "Chamar Próximo"
- O paciente de maior prioridade será exibido
- Após o atendimento, chame o próximo
- Se necessário voltar ao paciente anterior, clique em "Voltar Anterior"
- O paciente voltará à fila respeitando sua prioridade
- Clique em "Histórico" no menu lateral
- Visualize todos os atendimentos realizados
┌─────────────────────┐
│ Cadastro Paciente │
│ (Define Prioridade) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Fila de Prioridades │
│ (Ordena pacientes) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Chamar Próximo │
│ (Maior prioridade) │
└──────────┬──────────┘
│
├─► Em Atendimento ─┬─► Próximo
│ └─► Voltar Anterior
│
▼
┌─────────────────────┐
│ Histórico Stack │
│ (LIFO) │
└─────────────────────┘
Paciente:
{
'nome': 'João Silva',
'cpf': '123.456.789-00',
'idade': 45,
'contato': '(11) 98765-4321',
'prioridade': 'urgente',
'sintomas': 'Dor no peito',
'hora_cadastro': '14:30:45',
'data_cadastro': '18/11/2025'
}- Verifique se Python está instalado:
python --version - Reinstale as dependências:
pip install -r requirements.txt --force-reinstall
- Modifique a porta em
app.py:
if __name__ == '__main__':
app.run(debug=True, port=5001) # Use outra porta- Os dados são armazenados em sessão durante a execução
- Para persistência permanente, implemente um banco de dados
- Integração com banco de dados (SQLite, PostgreSQL)
- Autenticação de usuários
- Relatórios e estatísticas
- Sistema de alertas e notificações
- API REST completa
- Dashboard com gráficos em tempo real
- Integração com painéis eletrônicos
- ✓ Estruturas de dados lineares (Listas, Pilhas, Filas)
- ✓ Listas duplamente encadeadas
- ✓ Algoritmos de busca e inserção ordenada
- ✓ Fila com prioridades
- ✓ Desenvolvimento web com Flask
- ✓ Manipulação de sessões
- ✓ Interface responsiva com HTML/CSS
Fernando Lorentz Domingues Flores
Projeto desenvolvido para a disciplina de Estrutura de Dados
Este projeto é fornecido como material educacional.
Para dúvidas ou problemas, consulte:
- Documentação do Flask: https://flask.palletsprojects.com/
- Python Documentation: https://docs.python.org/3/
Versão: 1.0.0
Última atualização: Novembro 2025