72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
# 🏥 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 27–64
|
||
|
||
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 66–79
|
||
|
||
```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 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)
|
||
```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"
|