Files
cuidamais_med/TUDO_SOBRE_A_APP.md
2026-04-22 12:41:12 +01:00

88 lines
5.8 KiB
Markdown

# 🏥 Med Cuida+ : Tudo Sobre a App (Manual Completo)
Este documento centraliza **TUDO** sobre o projeto **Med Cuida+**. Se procuras entender a aplicação de uma ponta à outra — desde o que ela faz para o utilizador até como o código está estruturado —, este é o ficheiro certo.
---
## 1. 🌟 O que é a aplicação e para que serve?
O **Med Cuida+** é uma aplicação móvel para **médicos**. O objetivo principal é dar aos profissionais de saúde uma ferramenta móvel para gerirem o seu dia a dia.
A aplicação permite:
* **Ver a Agenda:** Consultas agendadas para o próprio dia ou para os próximos dias.
* **Gerir Pacientes:** Aceder à lista de pacientes, ver os detalhes de cada um e o seu histórico.
* **Comunicar:** Um sistema de chat direto com os pacientes.
* **Gerir o Perfil Profissional:** Editar dados médicos (especialidade, biografia, foto).
Toda a infraestrutura de dados funciona na nuvem através do **Firebase**. Isto significa que as alterações feitas na app refletem-se em tempo real (ex: uma nova mensagem no chat aparece imediatamente).
---
## 2. 📂 A Estrutura do Código (Onde está cada coisa?)
O projeto Android está dividido em várias camadas. Vamos explicar tudo o que está dentro de `app/src/main/java/com/example/medcuida/pro/`:
### 📍 Activities (Os ecrãs da aplicação)
* **`MainActivity.java`**: É o "coração" da app. Contém a barra de navegação inferior (Bottom Navigation) que permite alternar entre três abas: Agenda, Pacientes e Perfil.
* **`AgendaActivity.java`**: Um ecrã dedicado à visualização do calendário de consultas, com filtros por data.
* **`ChatActivity.java`**: O ecrã onde o médico troca mensagens com o paciente. Lê as mensagens do Firestore e atualiza a interface (RecyclerView) automaticamente.
* **`DetalhePacienteActivity.java`**: Quando clicas num paciente, este ecrã mostra todas as informações dele (dados pessoais, relatórios, etc.).
* **`PerfilMedicoActivity.java`**: O ecrã que mostra as informações do médico logado.
* **`EditarPerfilActivity.java`**: O ecrã que permite ao médico atualizar o seu nome, especialidade, foto de perfil, etc., guardando depois as mudanças na base de dados.
### 📦 Models (A representação dos dados)
Dentro da pasta `models/`, temos as classes que moldam a informação:
* **`Medico.java`**: Guarda o `id`, `nome`, `especialidade`, `email`, etc.
* **`Paciente.java`**: Guarda as informações dos doentes.
* **`Consulta.java`**: Regista a `data`, `hora`, `medicos` (lista ou string), `pacienteId`, e o `status` (ex: cancelada, pendente).
* **`Mensagem.java`**: Guarda o `texto`, `remetenteId`, `timestamp` para o Chat.
### 🔌 Adapters (A ponte entre os dados e o ecrã)
Dentro de `ui/adapters/`, estes ficheiros pegam nas listas de dados (Models) e "desenham-nas" no ecrã:
* **`ConsultaAdapter`**: Desenha cada "caixinha" de consulta na agenda.
* **`PacienteAdapter`**: Cria as linhas da lista de pacientes.
* **`MensagemAdapter`**: Diferencia as mensagens recebidas das enviadas (balão à esquerda vs balão à direita).
### 🔐 Autenticação (Login e Registo)
Dentro de `ui/auth/`:
* **`LoginActivity.java`**: Verifica o email/password no Firebase Auth e depois confere na base de dados (Firestore) se esse email pertence a um perfil de "médico" antes de deixar entrar.
* **`RegisterActivity.java`**: Permite criar uma nova conta de médico.
---
## 3. 🗄️ A Base de Dados (Firebase Firestore)
A aplicação não tem uma base de dados local; usa o **Firebase Firestore**. Estas são as "tabelas" (coleções) que fazem tudo funcionar:
1. **`utilizadores`**: Guarda os dados de todas as pessoas que usam a app e os pacientes.
2. **`medicos`**: Uma coleção paralela com informações específicas dos profissionais.
3. **`consultas`**: Todos os agendamentos. Cada consulta tem associada a si um ID do médico e um ID do paciente.
4. **`consultas/{consulta_id}/mensagens`**: Sub-coleções. Cada consulta tem o seu próprio chat independente!
5. **`medicamentos`**: Registos da medicação recomendada/em uso.
---
## 4. 🎨 O Design e a Interface (XML e Drawables)
A parte visual vive em `app/src/main/res/`:
* **`layout/`**: Onde estão os ficheiros XML que desenham os botões, os textos e as imagens. Ficheiros como `activity_main.xml` ou `item_consulta.xml`.
* **`drawable/`**: Onde estão guardados os ícones (como `ic_nav_agenda.xml`, `ic_nav_pacientes.xml`) e os fundos com cantos arredondados (shapes) que dão o aspeto moderno à aplicação.
* **`menu/`**: Contém o `menu_bottom.xml` que cria a barra de navegação principal da app.
---
## 5. ⚙️ Como a App Funciona por Trás dos Panos (Fluxo)
1. **O Médico abre a app:** Vai para o `LoginActivity`.
2. **Faz Login:** A app vai ao Firebase perguntar "Este email e password estão corretos?". Se sim, a app vai ao Firestore e pergunta "Este utilizador tem o perfil na coleção `medicos`?".
3. **Entra na `MainActivity`:** A app carrega o seu ID. De imediato, a `MainActivity` faz uma busca ao Firestore pelas `consultas` cuja data seja a de hoje e onde o `medicoId` corresponda a este médico.
4. **Abre um Chat:** O médico clica num doente. A `ChatActivity` arranca. Um `SnapshotListener` (um espião em tempo real) é colocado na sub-coleção `mensagens`. Qualquer mensagem nova que lá caia, a app atualiza o ecrã instantaneamente.
---
## 💡 Próximos Passos & Manutenção
* Se precisares de alterar a **Aparência**: Vais à pasta `res/layout/`.
* Se precisares de adicionar um **Novo Dado (ex: NIF)**: Vais ao modelo (`Medico.java`), e alteras a lógica onde os dados são gravados (ex: `EditarPerfilActivity.java`).
* Se houver um **Erro de Login**: O código a rever está na `LoginActivity.java`.
*(Este documento cobre absolutamente toda a arquitetura da aplicação Med Cuida+ de forma resumida e direta ao ponto!)*