Backend Blueprint v2.0

MediWhats Engineering Specifications for AI Coding Assistants

Sair da Documentação

1. Gerenciamento de Usuários (Médicos)

Fluxo de Registro: O backend deve suportar um processo de multi-step onboarding. No primeiro passo, armazena metadados básicos (Nome, CRM, Especialidade). No passo final, ativa a "Clínica Virtual".

Segurança: Implementar JWT para sessões. Requisito de RBAC (Role Based Access Control) para futuras clínicas multi-médico.

  • POST /auth/register: Criação de conta e validação de CRM.
  • GET /doctor/profile: Retorna configurações e diretrizes clínicas (Markdown).
  • PATCH /doctor/settings: Atualiza tom de voz da IA e protocolos de triagem.
// Schema: DoctorSettings{ "crm": "12345-PR", "specialty": "Pediatria", "aiPersona": "Educativa | Acolhedora", "triageProtocol": "Manchester", "guidelines": ["string[]"], "businessHours": { "start": "08:00", "end": "18:00" }, "autoReplyNight": boolean }

2. Integração WhatsApp (Baileys/Puppeteer)

QR Generation

O backend deve instanciar uma sessão isolada (Worker) para cada médico. O endpoint deve retornar um stream de base64 ou evento de WebSocket com a string do QR Code.

Message Webhooks

Serviço de escuta que captura messages.upsert. Deve filtrar apenas DMs (ignorar grupos) e encaminhar para o motor de IA.

Media Sync

Áudios e fotos devem ser persistidos (S3/Cloudinary) temporariamente e processados por OCR ou modelos de transcrição antes da resposta da IA.

3. Motor de Triagem Multimodal

Este é o núcleo do MediWhats. O backend não apenas repassa mensagens, ele as processa através de uma Cadeia de Raciocínio (Chain of Thought).

Lógica Manchester (MTS)

A IA deve analisar se há "Discriminadores" (Ex: Obstrução de via aérea, Hemorragia exsanguinante). Se detectado, o status do paciente muda para active e o mtsLevel é setado como 1 ou 2 imediatamente.

Análise Preditiva de Risco

Com base no histórico (MCP) e sintomas atuais, o backend gera o objeto riskAnalysis. Se a probabilidade de complicação for >70%, deve disparar um evento para o dashboard.

// AI Process Logic1. Recebe Mensagem (Audio/Texto) 2. Transcrição / OCR (Multimodal) 3. Classificação Manchester (MTS 1-5) 4. Extração de Sintomas (Key-Value) 5. Sugestão de Conduta baseada em SBP/SBC 6. Atualiza Objeto: PatientSummary 7. Notifica WebSocket (Dashboard)

4. Comunicação de Dupla Camada

Camada 1: Paciente ↔ Bot

Ocorre no WhatsApp. O Bot deve respeitar a aiPersona. Durante a fase status: 'triage', o médico não interfere. Após o desfecho, o bot entra em modo read-only ou follow-up.

Camada 2: Médico ↔ Bot (Dashboard)

Um chat de comando interno. O médico pede à IA para consultar prontuários, agendar retornos no Google Calendar ou gerar prescrições baseadas na conversa do paciente.

5. Conectores Externos (MCP)

EMR Connectors

Endpoints que traduzem modelos MediWhats para APIs de terceiros (EMed, Tasy, iClinic).

Calendar Sync

Ao agendar no app, o backend deve criar o recurso no Google Cal e enviar o link de confirmação para o paciente.

Privacy Proxy

Nenhum dado sensível de EMR deve ser armazenado permanentemente no backend MediWhats.

6. Documentação Estruturada (SOAP)

Endpoint de Geração SOAP

O backend recebe o patientId e compila toda a conversa e histórico. O LLM deve retornar obrigatoriamente um JSON com as chaves S, O, A, P mapeando os dados para a evolução clínica.

GET /patients/:id/soap-draft Response: { "subjective": "Lactente com febre há 48h...", "objective": "IA detectou exantema macular...", "assessment": "Suspeita de Roséola Súbita...", "plan": "Paracetamol, Hidratação, Retorno em 24h..." }

7. Estatísticas e Inteligência Populacional

O backend deve processar agregações em segundo plano (Cron Jobs) para alimentar a InsightsView:

Volume de Sintomas

Agrupar queixas por tags (Respiratório, Gastro, etc) por período.

Alertas Epidemiológicos

Se 3+ pacientes reportarem o mesmo sintoma em 5km, sugerir surto.

Taxa de Conversão

Triagens finalizadas vs Casos que precisaram de consulta presencial.

Performance IA

Tempo médio de triagem automatizada e acurácia do Manchester.