Files
scoreodonto.com/doc/AGENDA-COLETA-LAB.md
VPS 4 Builder dc5a2d89ae feat(protese): agenda & coleta do laboratório (integrada à custódia)
Novo módulo de logística do lab (doc/AGENDA-COLETA-LAB):
- protese_coleta: agendamento de coleta (lab busca) / entrega (lab leva), com data/hora,
  endereço, responsável, status. Ligado à OS.
- POST /protese/os/:id/coleta (agendar), GET /protese/lab/agenda (cronológica),
  POST /protese/coleta/:id/status. 'realizada' MOVE a custódia automaticamente
  (coleta→laboratorio, entrega→clinica) — fonte única do movimento físico. GET detalhe traz coletas[].
- UI: tela AGENDA (lab-agenda) agrupada por dia com "marcar realizada"; seção Coleta/entrega na
  aba Monitoramento da OS (clínica e lab).

Validado em DEV: agenda coleta → realizada → custódia=laboratorio; lab vê na agenda.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 18:11:24 +02:00

1.9 KiB

Agenda & Coleta do laboratório

Desenho + implementação (24/jun/2026). Gap apontado na auditoria: o lab não tem agenda de produção nem coleta logística (só "próximas entregas" por prazo e custódia de posse).

Conceito

  • Coleta = o lab busca o trabalho na clínica (trabalho vai p/ o laboratório).
  • Entrega = o lab leva o trabalho de volta (trabalho volta p/ a clínica).
  • Cada agendamento tem data/hora, endereço, responsável, observação e status (agendada | realizada | cancelada). Ligado a uma OS.
  • Integra com a custódia: ao marcar realizada, a custódia muda automaticamente (coleta→laboratorio, entrega→clinica) e entra no histórico da OS. Sem dado duplicado.

Modelo

CREATE TABLE protese_coleta (
  id TEXT PRIMARY KEY,
  os_id TEXT NOT NULL,
  clinica_id TEXT,
  laboratorio_id TEXT,
  protetico_id TEXT,
  tipo TEXT NOT NULL,            -- coleta | entrega
  data_hora TIMESTAMPTZ,
  endereco TEXT,
  responsavel TEXT,
  observacao TEXT,
  status TEXT DEFAULT 'agendada', -- agendada | realizada | cancelada
  created_by TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

Endpoints

  • POST /api/protese/os/:id/coleta — agenda (clínica ou lab).
  • GET /api/protese/lab/agenda — coletas/entregas do lab (cronológica) + próximas entregas por prazo.
  • POST /api/protese/coleta/:id/statusrealizada (move a custódia) | cancelada.
  • GET detalhe da OS passa a trazer coletas[].

UI

  • Lab — tela Agenda (lab-agenda, novo item de menu): linha do tempo de coletas/entregas agendadas + entregas previstas (prazo da OS), com ação "marcar realizada".
  • OS (aba Monitoramento) — agendar coleta/entrega ao lado da custódia (mesmo contexto físico).

Decisões

  • 1 coleta por OS (MVP). Agrupar várias OS numa rota/motoboy fica como evolução.
  • realizada é a fonte única do movimento físico (atualiza custódia) — evita registrar custódia e coleta em separado.