2.1 KiB
2.1 KiB
🏥 DetalhePacienteActivity.java — Detalhes do Paciente
Ficheiro:
app/src/main/java/com/example/medcuida/pro/DetalhePacienteActivity.java
Layout:activity_detalhe_paciente.xml| Linhas: 150
Descrição Geral
Mostra os dados detalhados de um paciente selecionado, incluindo a sua medicação ativa. Permite abrir o chat com o paciente.
Dados Apresentados
| Campo | Origem Firestore |
|---|---|
| Nome | utilizadores/{id}.nome_completo |
| Idade | utilizadores/{id}.idade |
| Nº Utente | utilizadores/{id}.numero_utente |
| Sexo | utilizadores/{id}.sexo |
utilizadores/{id}.email |
|
| Medicação | Coleção medicamentos (filtrada por userId) |
Inicialização (onCreate) — Linhas 27–64
- Associa as views do layout (TextViews + botões)
- Recebe via Intent:
PACIENTE_ID→ ID do paciente (obrigatório)CONSULTA_ID→ ID da consulta (opcional, para o chat)
- Botão "Sair" →
finish()(volta à Activity anterior) - Botão "Chat":
- Se tem
consultaId→ abre chat diretamente - Se não tem → procura uma consulta existente via
buscarConsultaEParaChat()
- Se tem
buscarConsultaEParaChat() — Linhas 66–79
db.collection("consultas")
.whereEqualTo("pacienteId", pacienteId)
.limit(1)
.get()
- Procura uma consulta associada ao paciente
- Se encontrar → abre o
ChatActivitycom oconsultaId - Se não encontrar → mostra aviso "Não existe consulta ativa"
carregarDadosPaciente() — Linhas 88–148
Parte 1: Dados pessoais (Linhas 89–111)
- Lê o documento do paciente em
utilizadores/{pacienteId} - Preenche nome, idade, nº utente, sexo e email
- Campos nulos aparecem como
"N/D"
Parte 2: Medicação (Linhas 113–138)
db.collection("medicamentos")
.whereEqualTo("userId", pacienteId)
.get()
- Pesquisa na coleção
medicamentostodos os registos do paciente - Suporta nomes de campos em PT (
nome,hora) e EN (name,time) - Formata como lista:
• Paracetamol (08:00) - Se não houver medicação → mostra "Nenhuma medicação ativa"