Files
cuidamais_med/docs/04_DetalhePacienteActivity.md
2026-04-22 12:41:12 +01:00

72 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🏥 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` |
| Email | `utilizadores/{id}.email` |
| Medicação | Coleção `medicamentos` (filtrada por `userId`) |
---
## Inicialização (`onCreate`) — Linhas 2764
1. **Associa as views** do layout (TextViews + botões)
2. **Recebe via Intent:**
- `PACIENTE_ID` → ID do paciente (obrigatório)
- `CONSULTA_ID` → ID da consulta (opcional, para o chat)
3. **Botão "Sair"**`finish()` (volta à Activity anterior)
4. **Botão "Chat":**
- Se tem `consultaId` → abre chat diretamente
- Se não tem → procura uma consulta existente via `buscarConsultaEParaChat()`
---
## `buscarConsultaEParaChat()` — Linhas 6679
```java
db.collection("consultas")
.whereEqualTo("pacienteId", pacienteId)
.limit(1)
.get()
```
- Procura uma consulta associada ao paciente
- Se encontrar → abre o `ChatActivity` com o `consultaId`
- Se não encontrar → mostra aviso "Não existe consulta ativa"
---
## `carregarDadosPaciente()` — Linhas 88148
### Parte 1: Dados pessoais (Linhas 89111)
- 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 113138)
```java
db.collection("medicamentos")
.whereEqualTo("userId", pacienteId)
.get()
```
- Pesquisa na coleção `medicamentos` todos 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"