350 lines
15 KiB
SQL
350 lines
15 KiB
SQL
-- =============================================================================
|
|
-- PostgreSQL Database Initialization Script for ScoreOdonto CRM
|
|
-- Conversion from MySQL with corrected encodings and standard constraints
|
|
-- =============================================================================
|
|
|
|
-- Clean up existing tables (with cascade for safety)
|
|
DROP TABLE IF EXISTS vinculos CASCADE;
|
|
DROP TABLE IF EXISTS usuarios CASCADE;
|
|
DROP TABLE IF EXISTS settings CASCADE;
|
|
DROP TABLE IF EXISTS procedimentos_valores_planos CASCADE;
|
|
DROP TABLE IF EXISTS procedimentos CASCADE;
|
|
DROP TABLE IF EXISTS planos CASCADE;
|
|
DROP TABLE IF EXISTS pacientes CASCADE;
|
|
DROP TABLE IF EXISTS notificacoes CASCADE;
|
|
DROP TABLE IF EXISTS leads CASCADE;
|
|
DROP TABLE IF EXISTS guias_odontologicas CASCADE;
|
|
DROP TABLE IF EXISTS gto_items CASCADE;
|
|
DROP TABLE IF EXISTS gto_builders CASCADE;
|
|
DROP TABLE IF EXISTS google_tokens CASCADE;
|
|
DROP TABLE IF EXISTS financeiro CASCADE;
|
|
DROP TABLE IF EXISTS especialidades CASCADE;
|
|
DROP TABLE IF EXISTS dentistas_horarios CASCADE;
|
|
DROP TABLE IF EXISTS agendamentos CASCADE;
|
|
DROP TABLE IF EXISTS dentistas CASCADE;
|
|
DROP TABLE IF EXISTS clinicas CASCADE;
|
|
|
|
-- 1. clinicas
|
|
CREATE TABLE clinicas (
|
|
id varchar(50) NOT NULL,
|
|
nome_fantasia varchar(255) NOT NULL,
|
|
documento varchar(50) DEFAULT NULL,
|
|
cor varchar(20) DEFAULT '#2563eb',
|
|
createdAt timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 2. dentistas
|
|
CREATE TABLE dentistas (
|
|
id varchar(50) NOT NULL,
|
|
clinica_id varchar(50) DEFAULT NULL,
|
|
nome varchar(255) NOT NULL,
|
|
email varchar(255) DEFAULT NULL,
|
|
telefone varchar(20) DEFAULT NULL,
|
|
corAgenda varchar(10) DEFAULT NULL,
|
|
especialidade varchar(100) DEFAULT NULL,
|
|
ativo smallint DEFAULT 1,
|
|
ordem integer DEFAULT 0,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 3. agendamentos
|
|
CREATE TABLE agendamentos (
|
|
id varchar(50) NOT NULL,
|
|
clinica_id varchar(50) DEFAULT NULL,
|
|
pacienteNome varchar(255) DEFAULT NULL,
|
|
dentistaId varchar(50) DEFAULT NULL,
|
|
start_time timestamp DEFAULT NULL,
|
|
end_time timestamp DEFAULT NULL,
|
|
status varchar(50) DEFAULT 'Pendente' CHECK (status IN ('Confirmado','Pendente','Concluido','Faltou')),
|
|
procedimento varchar(255) DEFAULT NULL,
|
|
observacoes text,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT unique_dentista_slot UNIQUE (dentistaId, start_time),
|
|
CONSTRAINT agendamentos_ibfk_1 FOREIGN KEY (dentistaId) REFERENCES dentistas (id) ON DELETE SET NULL
|
|
);
|
|
|
|
-- 4. dentistas_horarios
|
|
CREATE TABLE dentistas_horarios (
|
|
id varchar(50) NOT NULL,
|
|
dentista_id varchar(50) NOT NULL,
|
|
clinica_id varchar(50) NOT NULL,
|
|
dia_semana integer NOT NULL,
|
|
hora_inicio time NOT NULL,
|
|
hora_fim time NOT NULL,
|
|
ativo smallint DEFAULT 1,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 5. especialidades
|
|
CREATE TABLE especialidades (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(100) NOT NULL,
|
|
descricao text,
|
|
ordem integer DEFAULT 0,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 6. financeiro
|
|
CREATE TABLE financeiro (
|
|
id varchar(50) NOT NULL,
|
|
clinica_id varchar(50) DEFAULT NULL,
|
|
pacienteNome varchar(255) DEFAULT NULL,
|
|
descricao varchar(255) DEFAULT NULL,
|
|
valor decimal(10,2) DEFAULT NULL,
|
|
dataVencimento date DEFAULT NULL,
|
|
status varchar(50) DEFAULT NULL CHECK (status IN ('Pago','Pendente','Atrasado')),
|
|
formaPagamento varchar(50) DEFAULT NULL CHECK (formaPagamento IN ('Boleto','Pix','Cartão','Dinheiro')),
|
|
tipo varchar(50) DEFAULT 'RECEITA' CHECK (tipo IN ('RECEITA','DESPESA')),
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 7. google_tokens
|
|
CREATE TABLE google_tokens (
|
|
owner_id varchar(255) NOT NULL,
|
|
refresh_token text NOT NULL,
|
|
access_token text,
|
|
expiry_date bigint DEFAULT NULL,
|
|
updated_at timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (owner_id)
|
|
);
|
|
|
|
-- 8. gto_builders
|
|
CREATE TABLE gto_builders (
|
|
id varchar(50) NOT NULL,
|
|
pacienteId varchar(50) NOT NULL,
|
|
dentistaId varchar(50) NOT NULL,
|
|
credenciadaId varchar(50) NOT NULL,
|
|
status varchar(20) DEFAULT 'RASCUNHO',
|
|
total decimal(10,2) DEFAULT '0.00',
|
|
createdAt timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 9. gto_items
|
|
CREATE TABLE gto_items (
|
|
id varchar(50) NOT NULL,
|
|
builderId varchar(50) NOT NULL,
|
|
procedimentoId varchar(50) NOT NULL,
|
|
codigoTUSS varchar(50) NOT NULL,
|
|
descricao varchar(255) NOT NULL,
|
|
dente varchar(10) DEFAULT NULL,
|
|
face varchar(10) DEFAULT NULL,
|
|
quantidade integer DEFAULT 1,
|
|
valorUnitario decimal(10,2) NOT NULL,
|
|
valorTotal decimal(10,2) NOT NULL,
|
|
observacao text,
|
|
anexosCount integer DEFAULT 0,
|
|
codigoInterno varchar(50) DEFAULT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 10. guias_odontologicas
|
|
CREATE TABLE guias_odontologicas (
|
|
id varchar(50) NOT NULL,
|
|
numeroGuiaPrestador varchar(50) NOT NULL,
|
|
numeroGuiaOperadora varchar(50) DEFAULT NULL,
|
|
dataSolicitacao date NOT NULL,
|
|
tipoTratamento varchar(100) NOT NULL,
|
|
status varchar(50) NOT NULL,
|
|
beneficiarioId varchar(50) NOT NULL,
|
|
beneficiarioNome varchar(255) NOT NULL,
|
|
beneficiarioIdentificacao varchar(50) NOT NULL,
|
|
createdAt timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 11. leads
|
|
CREATE TABLE leads (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(100) DEFAULT NULL,
|
|
sobrenome varchar(100) DEFAULT NULL,
|
|
cpf varchar(20) DEFAULT NULL,
|
|
whatsapp varchar(20) DEFAULT NULL,
|
|
tipoInteresse varchar(50) DEFAULT NULL CHECK (tipoInteresse IN ('Particular','Plano')),
|
|
dataCadastro timestamp DEFAULT NULL,
|
|
status varchar(50) DEFAULT NULL CHECK (status IN ('Novo','Convertido','Arquivado')),
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 12. notificacoes
|
|
CREATE TABLE notificacoes (
|
|
id varchar(50) NOT NULL,
|
|
titulo varchar(255) DEFAULT NULL,
|
|
mensagem text,
|
|
tipo varchar(50) DEFAULT 'sistema' CHECK (tipo IN ('lead','sistema','agenda','financeiro')),
|
|
lida smallint DEFAULT 0,
|
|
data timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 13. pacientes
|
|
CREATE TABLE pacientes (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(255) NOT NULL,
|
|
cpf varchar(20) DEFAULT NULL,
|
|
telefone varchar(20) DEFAULT NULL,
|
|
email varchar(255) DEFAULT NULL,
|
|
ultimoTratamento varchar(100) DEFAULT NULL,
|
|
convenio varchar(100) DEFAULT NULL,
|
|
dataNascimento varchar(20) DEFAULT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 14. planos
|
|
CREATE TABLE planos (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(100) NOT NULL,
|
|
tipo varchar(50) DEFAULT NULL CHECK (tipo IN ('Convenio','Particular','Parceria')),
|
|
descontoPadrao decimal(5,2) DEFAULT NULL,
|
|
corCartao varchar(20) DEFAULT NULL,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 15. procedimentos
|
|
CREATE TABLE procedimentos (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(255) NOT NULL,
|
|
descricao text,
|
|
especialidadeId varchar(50) DEFAULT NULL,
|
|
especialidadeNome varchar(100) DEFAULT NULL,
|
|
valorParticular decimal(10,2) DEFAULT NULL,
|
|
codigoInterno varchar(50) DEFAULT NULL,
|
|
categoria varchar(50) DEFAULT 'Particular',
|
|
tipo_regiao varchar(50) DEFAULT 'GERAL' CHECK (tipo_regiao IN ('DENTE','ARCO','GERAL')),
|
|
exige_face smallint DEFAULT 0,
|
|
codigo varchar(50) DEFAULT NULL,
|
|
ordem integer DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT procedimentos_ibfk_1 FOREIGN KEY (especialidadeId) REFERENCES especialidades (id) ON DELETE SET NULL
|
|
);
|
|
|
|
-- 16. procedimentos_valores_planos
|
|
CREATE TABLE procedimentos_valores_planos (
|
|
id serial NOT NULL,
|
|
procedimentoId varchar(50) DEFAULT NULL,
|
|
planoId varchar(50) DEFAULT NULL,
|
|
planoNome varchar(100) DEFAULT NULL,
|
|
valor decimal(10,2) DEFAULT NULL,
|
|
codigoPlano varchar(50) DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT procedimentos_valores_planos_ibfk_1 FOREIGN KEY (procedimentoId) REFERENCES procedimentos (id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 17. settings
|
|
CREATE TABLE settings (
|
|
id varchar(50) NOT NULL,
|
|
category varchar(50) NOT NULL,
|
|
data text,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
-- 18. usuarios
|
|
CREATE TABLE usuarios (
|
|
id varchar(50) NOT NULL,
|
|
nome varchar(255) DEFAULT NULL,
|
|
email varchar(100) NOT NULL,
|
|
senha varchar(255) NOT NULL,
|
|
cro varchar(20) DEFAULT NULL,
|
|
cro_uf varchar(2) DEFAULT NULL,
|
|
celular varchar(20) DEFAULT NULL,
|
|
especialidade varchar(100) DEFAULT NULL,
|
|
cor_agenda varchar(20) DEFAULT '#2563eb',
|
|
role varchar(50) DEFAULT 'admin' CHECK (role IN ('paciente','dentista','funcionario','donoclinica','admin')),
|
|
createdAt timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT unique_email UNIQUE (email)
|
|
);
|
|
|
|
-- 19. vinculos
|
|
CREATE TABLE vinculos (
|
|
id varchar(50) NOT NULL,
|
|
usuario_id varchar(50) NOT NULL,
|
|
clinica_id varchar(50) NOT NULL,
|
|
role varchar(50) DEFAULT 'admin' CHECK (role IN ('paciente','dentista','funcionario','donoclinica','admin')),
|
|
createdAt timestamp DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT user_clinica UNIQUE (usuario_id, clinica_id)
|
|
);
|
|
|
|
-- =============================================================================
|
|
-- STATIC DATA SEED (Corrected Encodings)
|
|
-- =============================================================================
|
|
|
|
-- clinicas
|
|
INSERT INTO clinicas VALUES ('c1','SCOREODONTO MATRIZ','00.000.000/0001-00','#059669','2026-03-10 15:55:57');
|
|
INSERT INTO clinicas VALUES ('c2','SCOREODONTO FILIAL SUL','00.000.000/0002-00','#2563eb','2026-03-10 15:55:57');
|
|
|
|
-- dentistas
|
|
INSERT INTO dentistas VALUES ('d1','c1','MURILO AMORIM','muriloamorim791@gmail.com','(67) 99999-1111','#10B981','ORTODONTIA',1,0);
|
|
INSERT INTO dentistas VALUES ('d2','c1','RUI CESAR VARGAS','ruibto@gmail.com','(67) 99999-2222','#3B82F6','IMPLANTE',1,0);
|
|
|
|
-- agendamentos
|
|
INSERT INTO agendamentos VALUES ('test_1',NULL,'WESLLEY ANTONY TELLES DA SILVA','d1','2026-02-27 12:03:07','2026-02-27 13:03:07','Pendente','TESTE',NULL);
|
|
|
|
-- especialidades
|
|
INSERT INTO especialidades VALUES ('0.29431554436274265','DENTISTICA','RESTAURAÇÕES',1);
|
|
INSERT INTO especialidades VALUES ('e1','ORTODONTIA','CORREÇÃO DA POSIÇÃO DOS DENTES E OSSOS MAXILARES',2);
|
|
INSERT INTO especialidades VALUES ('e2','IMPLANTODONTIA','IMPLANTES UNITÁRIOS E MÚLTIPLOS',4);
|
|
INSERT INTO especialidades VALUES ('e3','ENDODONTIA','TRATAMENTO DE CANAL E LESÕES PERIAPICAIS',3);
|
|
INSERT INTO especialidades VALUES ('e4','CLINICO GERAL','PROCEDIMENTOS BÁSICOS, LIMPEZA E RESTAURAÇÕES',0);
|
|
|
|
-- financeiro
|
|
INSERT INTO financeiro VALUES ('f1',NULL,'WESLLEY ANTONY','MANUTENÇÃO MENSAL ORTO',150.00,'2023-10-15','Pago','Pix','RECEITA');
|
|
INSERT INTO financeiro VALUES ('f2',NULL,'NICOLLY BEATRIZ','ENTRADA IMPLANTE',1200.00,'2023-10-20','Pendente','Boleto','RECEITA');
|
|
|
|
-- guias_odontologicas
|
|
INSERT INTO guias_odontologicas VALUES ('1','177903','O-001','2026-02-25','Tratamento Odontológico','AUTORIZADO','B1','RONEY OTTONI DE SOUZA','181442','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('2','178056','O-002','2026-02-25','Tratamento Odontológico','AUTORIZADO','B2','MILENA LIMA DIAS OTTONI DE SOUZA','157320','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('3','178179','O-003','2026-02-25','Tratamento Odontológico','AUTORIZADO','B3','EVANDRO MACHADO AZEMAN','2025100002341','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('4','177208','O-004','2026-02-24','Tratamento Odontológico','AUTORIZADO','B4','MARIA JULIA MIRANDA DA SILVA','145805','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('5','177335','O-005','2026-02-24','Tratamento Odontológico','AUTORIZADO_PARCIAL','B5','JOAO ITALO CORREA DE AMORIM SANT ANNA','443079','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('6','176468','O-006','2026-02-23','Urgência / Emergência','AUTORIZADO','B6','EDUARDO STENIO GONCALVES DOS SANTOS','435593','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('7','176572','O-007','2026-02-23','Tratamento Odontológico','AUTORIZADO','B7','LUCIA MARIA DA SILVA JULIO','127311','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('8','176666','O-008','2026-02-23','Tratamento Odontológico','AUTORIZADO','B8','JAIRO HIDEKI NAGAO','96512','2026-02-26 15:43:38');
|
|
INSERT INTO guias_odontologicas VALUES ('9','176721','O-009','2026-02-23','Tratamento Odontológico','AUTORIZADO','B8','JAIRO HIDEKI NAGAO','96512','2026-02-26 15:43:38');
|
|
|
|
-- notificacoes
|
|
INSERT INTO notificacoes VALUES ('notif_fin_overdue_f2','FATURA ATRASADA','A conta "ENTRADA IMPLANTE" de R$ 1200.00 venceu em 20/10/2023','financeiro',1,'2026-02-27 10:16:03');
|
|
INSERT INTO notificacoes VALUES ('notif_fin_overdue_f2_new','FATURA ATRASADA','A conta "ENTRADA IMPLANTE" de R$ 1200.00 venceu em 20/10/2023','financeiro',0,'2026-03-10 15:55:58');
|
|
INSERT INTO notificacoes VALUES ('notif_sys_setup','CONFIGURAÇÃO DO SISTEMA','O sistema possui poucos pacientes cadastrados. Considere importar dados.','sistema',1,'2026-02-27 10:16:03');
|
|
|
|
-- pacientes
|
|
INSERT INTO pacientes VALUES ('1','WESLLEY ANTONY TELLES DA SILVA','702.013.331-20','(67) 98125-2514','WESLLEY@EMAIL.COM','ORTO','CASSEMS','17/08/2000');
|
|
INSERT INTO pacientes VALUES ('2','NICOLLY BEATRIZ TEIXEIRA','101.034.232-06','(67) 99904-7557','NICOLLY@EMAIL.COM','LIMPEZA','ODONTOSEG','22/09/2010');
|
|
INSERT INTO pacientes VALUES ('3','ROSANGELA DUTRA','917.670.830-68','(67) 9272-2487','ROSANGELA@EMAIL.COM',NULL,'CASSEMS','23/11/1978');
|
|
|
|
-- planos
|
|
INSERT INTO planos VALUES ('p1','PARTICULAR','Particular',0.00,'#1f2937');
|
|
INSERT INTO planos VALUES ('p2','UNIMED ODONTO','Convenio',0.00,'#1eb545');
|
|
INSERT INTO planos VALUES ('p3','ODONTOPREV','Convenio',0.00,'#0066cc');
|
|
INSERT INTO planos VALUES ('p4','CASSEMS','Convenio',0.00,'#e63946');
|
|
INSERT INTO planos VALUES ('p5','SESI ODONTO','Convenio',0.00,'#f4a261');
|
|
|
|
-- procedimentos
|
|
INSERT INTO procedimentos VALUES ('proc1','CONSULTA INICIAL','AVALIAÇÃO INICIAL E PLANO DE TRATAMENTO','e4','CLÍNICO GERAL',150.00,NULL,'Particular','GERAL',0,NULL,0);
|
|
INSERT INTO procedimentos VALUES ('proc2','MANUTENÇÃO ORTODÔNTICA','MANUTENÇÃO MENSAL DE APARELHO FIXO','e1','ORTODONTIA',250.00,'','Particular','ARCO',0,'',0);
|
|
|
|
-- procedimentos_valores_planos
|
|
INSERT INTO procedimentos_valores_planos (procedimentoId,planoId,planoNome,valor,codigoPlano) VALUES ('proc1','p2','UNIMED ODONTO',80.00,NULL);
|
|
INSERT INTO procedimentos_valores_planos (procedimentoId,planoId,planoNome,valor,codigoPlano) VALUES ('proc1','p3','ODONTOPREV',75.00,NULL);
|
|
|
|
-- settings
|
|
INSERT INTO settings VALUES ('main','general','{"clinicEmail":"RECEP.CONSULTTCLINIC@GMAIL.COM","clinicCalendarId":"RECEP.CONSULTTCLINIC@GMAIL.COM","googleApiKey":"AIzaSyBOCClHTZU9e38VLDljXR-O4QVtk1gCZ1k","googleCalendarIds":{"d2":"ruibto@gmail.com","d1":"muriloamorim791@gmail.com"}}');
|
|
|
|
-- usuarios
|
|
INSERT INTO usuarios VALUES ('u1','RUI CESAR','admin@scoreodonto.com','admin',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
|
|
INSERT INTO usuarios VALUES ('u2','DENTISTA TESTE','dentista@scoreodonto.com','123456',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
|
|
INSERT INTO usuarios VALUES ('u3','FUNCIONARIO TESTE','funcionario@scoreodonto.com','cassems',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
|
|
INSERT INTO usuarios VALUES ('u4','DONO CLINICA','dono@scoreodonto.com','Rc362514',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
|
|
INSERT INTO usuarios VALUES ('u5','PACIENTE TESTE','paciente@scoreodonto.com','14253636',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
|
|
|
|
-- vinculos
|
|
INSERT INTO vinculos VALUES ('v_u1_c1','u1','c1','admin','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u1_c2','u1','c2','admin','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u2_c1','u2','c1','dentista','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u3_c1','u3','c1','funcionario','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u4_c1','u4','c1','donoclinica','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u4_c2','u4','c2','donoclinica','2026-03-10 16:27:04');
|
|
INSERT INTO vinculos VALUES ('v_u5_c1','u5','c1','paciente','2026-03-10 16:27:04');
|