Documentos Pacientes, Template Documentos Pacientes Saas, Documentos prontuários, Documentos Externos, Visualização Externa, Permissão de Visualização, Render Otimização
This commit is contained in:
119
database-novo/migrations/20260328000002_patients_new_columns.sql
Normal file
119
database-novo/migrations/20260328000002_patients_new_columns.sql
Normal file
@@ -0,0 +1,119 @@
|
||||
-- ==========================================================================
|
||||
-- Agência PSI — Migração: novos campos em `patients`
|
||||
-- ==========================================================================
|
||||
-- Arquivo: supabase/migrations/20260328000002_patients_new_columns.sql
|
||||
-- Criado por: Leonardo Nohama · 2026 · São Carlos/SP
|
||||
--
|
||||
-- Adiciona as colunas identificadas na engenharia reversa da tela de detalhe
|
||||
-- (PatientsDetailPage) que ainda não existiam na tabela `patients`.
|
||||
--
|
||||
-- Também ajusta os CHECK constraints de `status` e `patient_scope` para
|
||||
-- aceitar os valores usados no novo formulário de cadastro.
|
||||
-- ==========================================================================
|
||||
|
||||
-- --------------------------------------------------------------------------
|
||||
-- 1. Colunas novas
|
||||
-- --------------------------------------------------------------------------
|
||||
|
||||
-- Identidade
|
||||
ALTER TABLE public.patients
|
||||
ADD COLUMN IF NOT EXISTS pronomes text,
|
||||
ADD COLUMN IF NOT EXISTS nome_social text,
|
||||
ADD COLUMN IF NOT EXISTS etnia text;
|
||||
|
||||
-- Contato
|
||||
ALTER TABLE public.patients
|
||||
ADD COLUMN IF NOT EXISTS canal_preferido text,
|
||||
ADD COLUMN IF NOT EXISTS horario_contato text;
|
||||
|
||||
-- Clínico / convênio
|
||||
-- convenio: nome de exibição (badge azul no header)
|
||||
-- convenio_id: FK para insurance_plans (opcional — permite vincular ao cadastro)
|
||||
ALTER TABLE public.patients
|
||||
ADD COLUMN IF NOT EXISTS convenio text,
|
||||
ADD COLUMN IF NOT EXISTS convenio_id uuid REFERENCES public.insurance_plans(id) ON DELETE SET NULL;
|
||||
|
||||
-- Origem
|
||||
ALTER TABLE public.patients
|
||||
ADD COLUMN IF NOT EXISTS metodo_pagamento_preferido text,
|
||||
ADD COLUMN IF NOT EXISTS motivo_saida text;
|
||||
|
||||
-- --------------------------------------------------------------------------
|
||||
-- 2. Ajuste do CHECK constraint de `status`
|
||||
-- Valores originais: Ativo | Inativo | Alta | Encaminhado | Arquivado
|
||||
-- Valores novos: + Em espera
|
||||
-- --------------------------------------------------------------------------
|
||||
ALTER TABLE public.patients
|
||||
DROP CONSTRAINT IF EXISTS patients_status_check;
|
||||
|
||||
ALTER TABLE public.patients
|
||||
ADD CONSTRAINT patients_status_check CHECK (
|
||||
status = ANY (ARRAY[
|
||||
'Ativo'::text,
|
||||
'Em espera'::text,
|
||||
'Inativo'::text,
|
||||
'Alta'::text,
|
||||
'Encaminhado'::text,
|
||||
'Arquivado'::text
|
||||
])
|
||||
);
|
||||
|
||||
-- --------------------------------------------------------------------------
|
||||
-- 3. Ajuste do CHECK constraint de `patient_scope`
|
||||
-- Valores originais: clinic | therapist (valores técnicos internos)
|
||||
-- Valores novos: + Clínica | Particular | Online | Híbrido
|
||||
-- Estratégia: remover o constraint restritivo e deixar livre (text),
|
||||
-- pois o controle já é feito no frontend via Select com opções fixas.
|
||||
-- --------------------------------------------------------------------------
|
||||
ALTER TABLE public.patients
|
||||
DROP CONSTRAINT IF EXISTS patients_patient_scope_check;
|
||||
|
||||
-- Também remove a constraint de consistência que dependia do scope antigo
|
||||
ALTER TABLE public.patients
|
||||
DROP CONSTRAINT IF EXISTS patients_therapist_scope_consistency;
|
||||
|
||||
-- --------------------------------------------------------------------------
|
||||
-- 4. Índices de performance
|
||||
-- --------------------------------------------------------------------------
|
||||
CREATE INDEX IF NOT EXISTS patients_convenio_id_idx
|
||||
ON public.patients USING btree (convenio_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS patients_pronomes_idx
|
||||
ON public.patients USING btree (pronomes);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS patients_etnia_idx
|
||||
ON public.patients USING btree (etnia);
|
||||
|
||||
-- --------------------------------------------------------------------------
|
||||
-- 5. Comentários
|
||||
-- --------------------------------------------------------------------------
|
||||
COMMENT ON COLUMN public.patients.pronomes
|
||||
IS 'Pronomes de tratamento. Ex: ela/dela, ele/dele. Exibido no header do perfil.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.nome_social
|
||||
IS 'Nome social / como prefere ser chamado(a) no atendimento.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.etnia
|
||||
IS 'Etnia / raça autodeclarada. Exibida no card "Dados pessoais".';
|
||||
|
||||
COMMENT ON COLUMN public.patients.canal_preferido
|
||||
IS 'Canal preferido de contato. Ex: WhatsApp, Telefone, E-mail.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.horario_contato
|
||||
IS 'Horário preferido para contato. Ex: 08h–18h.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.convenio
|
||||
IS 'Nome do convênio para exibição (badge azul no header). Derivado de convenio_id.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.convenio_id
|
||||
IS 'FK para insurance_plans.id. Vincula o paciente ao convênio cadastrado.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.metodo_pagamento_preferido
|
||||
IS 'Método de pagamento preferido. Ex: PIX, Cartão crédito. Exibido no card Origem.';
|
||||
|
||||
COMMENT ON COLUMN public.patients.motivo_saida
|
||||
IS 'Motivo de encerramento do acompanhamento. Exibido no card Origem quando preenchido.';
|
||||
|
||||
-- ==========================================================================
|
||||
-- FIM DA MIGRAÇÃO
|
||||
-- ==========================================================================
|
||||
Reference in New Issue
Block a user