# 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+*