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

69 lines
2.3 KiB
Markdown

# 📦 Models — Classes de Dados
> **Pasta:** `app/src/main/java/com/example/medcuida/pro/models/`
Estas classes representam os **objetos de dados** (POJOs) usados em toda a aplicação. São compatíveis com o Firestore — cada uma tem um construtor vazio obrigatório e getters/setters.
---
## Consulta.java (29 linhas)
Representa uma **consulta médica agendada**.
| Campo | Tipo | Descrição |
|---|---|---|
| `id` | `String` | ID do documento Firestore |
| `data` | `String` | Data da consulta (ex: `"22/04/2026"`) |
| `hora` | `String` | Hora da consulta (ex: `"14:30"`) |
| `medicos` | `Object` | ID(s) do(s) médico(s) — pode ser `String` ou `List<String>` |
| `pacienteId` | `String` | ID do paciente associado |
| `pacienteNome` | `String` | Nome do paciente (para exibição rápida) |
| `status` | `String` | Estado: `"Pendente"`, `"aceite"`, `"cancelada"` |
> ⚠️ O campo `medicos` é do tipo `Object` porque no Firestore pode ser guardado como String simples ou como Array, dependendo de como foi criado.
---
## Medico.java (61 linhas)
Representa um **médico** registado na aplicação.
| Campo | Tipo | Descrição |
|---|---|---|
| `id` | `String` | UID do Firebase Auth |
| `nome` | `String` | Nome completo |
| `email` | `String` | Email de login |
| `especialidade` | `String` | Especialidade médica |
| `genero` | `String` | Género (`Masculino`, `Feminino`, `Outro`) |
Tem **dois construtores**: vazio (para Firestore) e completo (para criação manual).
---
## Mensagem.java (42 linhas)
Representa uma **mensagem de chat** entre médico e paciente.
| Campo | Tipo | Descrição |
|---|---|---|
| `texto` | `String` | Conteúdo da mensagem |
| `senderId` | `String` | UID de quem enviou |
| `timestamp` | `long` | Hora de envio em milissegundos (epoch) |
Guardada na sub-coleção `consultas/{id}/mensagens/`.
---
## Paciente.java (20 linhas)
Representa um **paciente** da aplicação.
| Campo | Tipo | Descrição |
|---|---|---|
| `id` | `String` | ID do documento Firestore |
| `nome` | `String` | Nome do paciente |
| `email` | `String` | Email do paciente |
| `fotoUrl` | `String` | URL da foto de perfil (se existir) |
> É a classe mais simples — os dados adicionais (idade, sexo, nº utente) são lidos diretamente do Firestore no `DetalhePacienteActivity`.