f94a4ae97f
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>
47 lines
1.9 KiB
PL/PgSQL
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;
|