# Guia Completo da Aplicação - Cuida+ Este documento fornece uma visão geral técnica e funcional de toda a aplicação Cuida+. ## 1. Visão Geral A **Cuida+** é uma aplicação móvel Android desenvolvida em Java, focada na gestão de saúde pessoal. Permite aos utilizadores gerir as suas medicações, agendar consultas médicas e realizar uma triagem preliminar baseada em Inteligência Artificial. ## 2. Tecnologias Utilizadas - **Linguagem:** Java (Android SDK). - **Base de Dados & Auth:** Firebase (Authentication, Firestore, Realtime Database). - **Inteligência Artificial:** Google Gemini API (para o chat de triagem). - **Notificações:** AlarmManager para lembretes de medicação. ## 3. Arquitetura de Pastas e Módulos ### 🔵 Autenticação (`ui/auth`) - **Login/Registo:** Gerido pelo Firebase Auth. - **Recuperação de Password:** Envio de emails automáticos para redefinição. - **Ficheiros:** `LoginActivity`, `RegisterActivity`, `ForgotPasswordActivity`. ### 🟢 Gestão de Medicação (`ui/medication`) - **Funcionalidades:** Adicionar, editar e eliminar medicamentos. - **Destaque:** Suporte para múltiplos horários por medicamento com alarmes independentes. - **Integração:** Pesquisa em tempo real de nomes de medicamentos no Firebase (Realtime DB). - **Ficheiros:** `MedicationFragment`, `MedicationDialog`, `MedicationViewModel`. ### 📅 Agenda e Consultas (`ui/appointments` & `ui/schedule`) - **Visualização:** Lista de consultas futuras e passadas. - **Agendamento:** Escolha de data e slots de tempo disponíveis para marcar com médicos registados no sistema. - **Ficheiros:** `AppointmentsFragment`, `ScheduleAppointmentFragment`. ### 🤖 Triagem IA - SNS24 (`ui/sns24`) - **Funcionalidade:** Um chat inteligente onde o utilizador descreve sintomas. - **Lógica:** Usa a classe `Gemini.java` para processar a linguagem natural e sugerir o nível de urgência (triagem). - **Botão de Emergência:** Se o sistema detetar gravidade, oferece a opção de localizar o hospital mais próximo. ### ⚙️ Utilitários e Segundo Plano (`utils` & `services`) - **`AlarmScheduler`:** Centraliza a lógica de agendamento de alarmes no sistema Android. - **`AlarmReceiver`:** Ouve os eventos do sistema e dispara notificações sonoras e visuais. - **`NotificationHelper`:** Gera as notificações push que aparecem no telemóvel. ## 4. Modelos de Dados (`data/model`) - **`User` / `Perfil`:** Informação básica do utilizador (nome, foto, contacto). - **`Medication`:** Nome, horários (comma-separated), dosagem, notas e estado. - **`Appointment`:** Médico, data, hora e notas da consulta. ## 5. Fluxo de Dados 1. O utilizador interage com o **Fragment** (Interface). 2. O **ViewModel** processa os dados e comunica com o **Firebase Firestore**. 3. O Firestore atualiza os dados na nuvem em tempo real (SnapshotListeners). 4. O **ViewModel** recebe a atualização e reflete as mudanças na UI automaticamente através de **LiveData**. --- *Este guia serve como referência para novos programadores ou para auditoria do projeto.*