falta so o chat

This commit is contained in:
2026-04-22 12:41:12 +01:00
parent 96d1985998
commit 2f3b03fe05
444 changed files with 22203 additions and 20079 deletions

View File

@@ -0,0 +1,71 @@
# 🏥 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"