Files
agenciapsilmno/database-novo/migrations/20260520000004_documents_clinical_note_link.sql
Leonardo f94a4ae97f padronizacao: foundation Fase 0+0.5 — blueprints + auditoria + clinical_notes
Pre-MVP: 3 blueprints canonicos (repository, composable, quick-create
overlay), AUDIT_BASELINE com 51 divergencias em 6 modulos, estrategia
PADRONIZACAO de 4 fases, DESIGN_BILLING_ORCHESTRATOR. Schema clinical
notes pronto pra Fase B (4 migrations + seed templates). AgendaEvent
Dialog.vue.bak deletado (lixo de refator anterior).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 04:19:45 -03:00

47 lines
1.9 KiB
PL/PgSQL

-- ============================================================================
-- Liga documents a clinical_notes (preenche FK órfã)
-- ----------------------------------------------------------------------------
-- A coluna `documents.session_note_id` existia desde antes apontando pra uma
-- tabela `session_notes` que nunca foi criada. Agora que `clinical_notes`
-- existe e abrange anamnese/evolução/plano (não só sessão), renomeia pra
-- `clinical_note_id` e adiciona FK constraint.
--
-- PRÉ-CHECK: a query abaixo deve retornar 0 antes de rodar esta migration.
-- SELECT count(*) FROM public.documents WHERE session_note_id IS NOT NULL;
-- Se houver dados, eles são órfãos (referenciam tabela inexistente) — limpar
-- antes de adicionar a FK constraint, ou ela falha.
-- ============================================================================
BEGIN;
-- 1. Limpa eventuais órfãos (FK nunca foi enforced, mas valor pode ter sido
-- setado por código no front antes da migration). Defesa em profundidade.
UPDATE public.documents
SET session_note_id = NULL
WHERE session_note_id IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM public.clinical_notes cn
WHERE cn.id = documents.session_note_id
);
-- 2. Rename
ALTER TABLE public.documents
RENAME COLUMN session_note_id TO clinical_note_id;
-- 3. FK constraint
ALTER TABLE public.documents
ADD CONSTRAINT documents_clinical_note_fkey
FOREIGN KEY (clinical_note_id)
REFERENCES public.clinical_notes(id)
ON DELETE SET NULL;
-- 4. Index pra reverse lookup (documentos de uma nota)
CREATE INDEX IF NOT EXISTS idx_documents_clinical_note
ON public.documents (clinical_note_id)
WHERE clinical_note_id IS NOT NULL AND deleted_at IS NULL;
COMMENT ON COLUMN public.documents.clinical_note_id IS
'Vínculo opcional a uma nota clínica (anexar PDF a anamnese/evolução). Renomeado de session_note_id em 2026-05-20.';
COMMIT;