# 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 ```sql 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/status` — `realizada` (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.