# 📦 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` | | `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`.