57 lines
2.5 KiB
SQL
57 lines
2.5 KiB
SQL
-- ==========================================================================
|
|
-- Agência PSI — Migração: tabela `patient_support_contacts`
|
|
-- ==========================================================================
|
|
-- Arquivo: supabase/migrations/20260328000004_create_patient_support_contacts.sql
|
|
-- Criado por: Leonardo Nohama · 2026 · São Carlos/SP
|
|
--
|
|
-- Contatos da rede de suporte do paciente.
|
|
-- Alimenta o card "Contatos & rede de suporte" na tela de detalhe.
|
|
-- is_primario = true → badge vermelho "emergência" no perfil.
|
|
-- ==========================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS public.patient_support_contacts (
|
|
id uuid DEFAULT gen_random_uuid() NOT NULL,
|
|
|
|
patient_id uuid NOT NULL REFERENCES public.patients(id) ON DELETE CASCADE,
|
|
owner_id uuid NOT NULL,
|
|
tenant_id uuid NOT NULL,
|
|
|
|
nome text,
|
|
relacao text, -- Ex: mãe, psiquiatra, cônjuge
|
|
tipo text, -- emergencia | familiar | profissional_saude | amigo | outro
|
|
telefone text,
|
|
email text,
|
|
is_primario boolean DEFAULT false NOT NULL,
|
|
|
|
created_at timestamptz DEFAULT now(),
|
|
updated_at timestamptz DEFAULT now(),
|
|
|
|
CONSTRAINT patient_support_contacts_pkey PRIMARY KEY (id)
|
|
);
|
|
|
|
-- Índices
|
|
CREATE INDEX IF NOT EXISTS psc_patient_idx ON public.patient_support_contacts USING btree (patient_id);
|
|
CREATE INDEX IF NOT EXISTS psc_owner_idx ON public.patient_support_contacts USING btree (owner_id);
|
|
|
|
-- Trigger updated_at
|
|
CREATE TRIGGER trg_psc_updated_at
|
|
BEFORE UPDATE ON public.patient_support_contacts
|
|
FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
|
|
|
|
-- RLS
|
|
ALTER TABLE public.patient_support_contacts ENABLE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY "psc: owner full access"
|
|
ON public.patient_support_contacts
|
|
USING (owner_id = auth.uid())
|
|
WITH CHECK (owner_id = auth.uid());
|
|
|
|
-- Comentários
|
|
COMMENT ON TABLE public.patient_support_contacts IS 'Rede de suporte do paciente. Exibida no card "Contatos & rede de suporte" do perfil.';
|
|
COMMENT ON COLUMN public.patient_support_contacts.is_primario IS 'true = badge vermelho "emergência" no perfil do paciente.';
|
|
COMMENT ON COLUMN public.patient_support_contacts.tipo IS 'emergencia | familiar | profissional_saude | amigo | outro';
|
|
|
|
-- ==========================================================================
|
|
-- FIM DA MIGRAÇÃO
|
|
-- ==========================================================================
|