# Estrutura de Dados e Firebase - Cuida+

Este documento documenta como a aplicação utiliza o Firebase para armazenamento e autenticação.

## 1. Firebase Authentication
- **Métodos:** Email e Password.
- **Identificação:** O `UID` do utilizador é usado como chave estrangeira em todas as coleções do Firestore para garantir a privacidade dos dados.

## 2. Cloud Firestore (Bancos de Dados NoSQL)
A aplicação utiliza as seguintes coleções principais:

### 👤 Coleção: `utilizadores`
Guarda o perfil do utilizador.
- **Campos:** `name`, `email`, `profilePictureUri`, `phone`.
- **Chave:** UID do Firebase Auth.

### 💊 Coleção: `medicamentos`
Guarda a lista de remédios de cada utilizador.
- **Campos:**
  - `name`: Nome do fármaco.
  - `time`: String com horários (ex: "08:00, 22:00").
  - `dosage`: Via de administração (ex: "Via Oral").
  - `notes`: Notas adicionais.
  - `isTaken`: Boolean (estado atual).
  - `userId`: UID do proprietário.

### 📅 Coleção: `appointments`
Guarda as marcações de consultas.
- **Campos:** `doctorName`, `date`, `time`, `description`, `userId`.

### 👨‍⚕️ Coleção: `medicos`
Lista de profissionais disponíveis para agendamento.
- **Campos:** `name`, `specialty`, `role` (deve ser 'medico').

## 3. Realtime Database
Utilizado especificamente para a funcionalidade de **Autocomplete / Pesquisa de Medicamentos**.
- **Nó:** `medication` ou `medicamentos`.
- **Conteúdo:** Lista global com milhares de nomes de medicamentos para sugestão rápida durante a escrita (sem necessidade de carregar do Firestore para poupar custos e ganhar velocidade).

## 4. Segurança (Regras Sugeridas)
Para garantir que um utilizador não vê os dados de outro, as regras do Firestore devem ser configuradas como:
```javascript
allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
```

---
*Documentação de Base de Dados - Cuida+*
