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

5.8 KiB

🏥 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!)