-- ============================================================================ -- Compliance CFP — Tipo de registro profissional (ROADMAP item #5) -- ---------------------------------------------------------------------------- -- Adiciona campos de registro profissional ao perfil. Necessário pra emissão -- de recibos/laudos válidos (CFP exige tipo, número e UF do conselho). -- -- Conselhos comuns no Brasil: -- CRP — Psicólogo -- CRM — Médico -- CRFa — Fonoaudiólogo -- CREFITO — Fisioterapeuta / Terapeuta Ocupacional -- CRESS — Assistente Social -- CRN — Nutricionista -- RMS — Residência Multiprofissional (Saúde) -- outro — Catch-all (campo livre na UI) -- ============================================================================ BEGIN; ALTER TABLE public.profiles ADD COLUMN IF NOT EXISTS professional_registration_type text, ADD COLUMN IF NOT EXISTS professional_registration_number text, ADD COLUMN IF NOT EXISTS professional_registration_uf text; -- CHECK não pode ser ADD IF NOT EXISTS — guard com DO block DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'profiles_registration_type_check' ) THEN ALTER TABLE public.profiles ADD CONSTRAINT profiles_registration_type_check CHECK ( professional_registration_type IS NULL OR professional_registration_type = ANY (ARRAY[ 'CRP', 'CRM', 'CRFa', 'CREFITO', 'CRESS', 'CRN', 'RMS', 'outro' ]) ); END IF; END $$; -- UF check (regex pra 2 chars uppercase ou NULL) DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'profiles_registration_uf_check' ) THEN ALTER TABLE public.profiles ADD CONSTRAINT profiles_registration_uf_check CHECK ( professional_registration_uf IS NULL OR professional_registration_uf ~ '^[A-Z]{2}$' ); END IF; END $$; COMMENT ON COLUMN public.profiles.professional_registration_type IS 'Tipo de registro profissional. Obrigatório pra emitir recibos/laudos. ROADMAP item #5.'; COMMENT ON COLUMN public.profiles.professional_registration_number IS 'Número do registro (ex: 06/12345 ou 123456). Formato livre — UI ajuda com mask se relevante.'; COMMENT ON COLUMN public.profiles.professional_registration_uf IS 'UF do conselho (2 chars uppercase). Alguns conselhos exigem regionalização (CRP 06/SP, CRP 03/BA).'; COMMIT;