feat: migrate ScoreOdonto CRM to Docker, PostgreSQL, and DragonflyDB

This commit is contained in:
Antigravity AI Agent
2026-05-13 07:13:41 +02:00
parent 4917d03bdf
commit 606da6de97
153 changed files with 35678 additions and 56 deletions
+5 -21
View File
@@ -1,24 +1,8 @@
FROM node:20-slim AS builder
FROM node:20-slim
WORKDIR /app
COPY package*.json baileys-7.0.0-rc.9.tgz ./
RUN npm ci
COPY package*.json ./
RUN npm install --omit=dev && npm cache clean --force
COPY . .
RUN npx prisma generate
RUN npm run build
FROM node:20-slim AS runner
RUN apt-get update -y && apt-get install -y openssl ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY package*.json baileys-7.0.0-rc.9.tgz ./
RUN npm ci --omit=dev && npm cache clean --force
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
RUN ln -s /app/plugins /plugins && \
ln -s /app /app/backend && \
ln -s /app/dist /app/src
EXPOSE 8008
EXPOSE 8018
ENV NODE_ENV=production
CMD ["node", "dist/server.js"]
CMD ["node", "server.js"]
+18
View File
@@ -0,0 +1,18 @@
{
"name": "scoreodonto-api",
"version": "1.0.0",
"type": "module",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"cors": "^2.8.6",
"dotenv": "^17.3.1",
"express": "^5.2.1",
"googleapis": "^171.4.0",
"jsonwebtoken": "^9.0.3",
"pg": "^8.11.3",
"ioredis": "^5.4.1"
}
}
+143
View File
@@ -0,0 +1,143 @@
import pg from 'pg';
const { Pool } = pg;
// Simple query translator from MySQL dialect to PostgreSQL
function translateQuery(query, params) {
if (typeof query !== 'string') return { sql: query, pgParams: params };
let sql = query;
let pgParams = params ? [...params] : [];
// Remove or convert backticks
sql = sql.replace(/`([^`]+)`/g, '"$1"');
// INSERT INTO table SET ?
if (sql.match(/INSERT\s+INTO\s+([^\s]+)\s+SET\s+\?/i)) {
const table = sql.match(/INSERT\s+INTO\s+([^\s]+)\s+SET\s+\?/i)[1].replace(/"/g, '');
const dataObj = pgParams[0];
if (dataObj && typeof dataObj === 'object') {
const keys = Object.keys(dataObj);
const cols = keys.map(k => `"${k}"`).join(', ');
const valuesPlaceholder = keys.map((_, idx) => `$${idx + 1}`).join(', ');
sql = `INSERT INTO "${table}" (${cols}) VALUES (${valuesPlaceholder})`;
pgParams = keys.map(k => dataObj[k]);
}
}
// UPDATE table SET ? WHERE ...
if (sql.match(/UPDATE\s+([^\s]+)\s+SET\s+\?\s+WHERE\s+(.+)/i)) {
const match = sql.match(/UPDATE\s+([^\s]+)\s+SET\s+\?\s+WHERE\s+(.+)/i);
const table = match[1].replace(/"/g, '');
const whereClause = match[2];
const dataObj = pgParams[0];
const extraParams = pgParams.slice(1);
if (dataObj && typeof dataObj === 'object') {
const keys = Object.keys(dataObj);
let paramIdx = 1;
const setClause = keys.map(k => `"${k}" = $${paramIdx++}`).join(', ');
let postgresWhere = whereClause;
let tempIdx = paramIdx;
postgresWhere = postgresWhere.replace(/\?/g, () => `$${tempIdx++}`);
sql = `UPDATE "${table}" SET ${setClause} WHERE ${postgresWhere}`;
pgParams = [...keys.map(k => dataObj[k]), ...extraParams];
}
}
// Translate standard '?' to '$1', '$2', etc.
let count = 1;
sql = sql.replace(/\?/g, () => `$${count++}`);
// ON DUPLICATE KEY UPDATE -> ON CONFLICT
if (sql.match(/ON\s+DUPLICATE\s+KEY\s+UPDATE/i)) {
if (sql.toLowerCase().includes('settings')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE\s+data\s*=\s*VALUES\(data\)|ON\s+DUPLICATE\s+KEY\s+UPDATE\s+data\s*=\s*\$4|ON\s+DUPLICATE\s+KEY\s+UPDATE\s+data\s*=\s*EXCLUDED\.data/i, 'ON CONFLICT (id) DO UPDATE SET data = EXCLUDED.data');
} else if (sql.toLowerCase().includes('google_tokens')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (owner_id) DO UPDATE SET refresh_token = EXCLUDED.refresh_token, access_token = EXCLUDED.access_token, expiry_date = EXCLUDED.expiry_date');
} else if (sql.toLowerCase().includes('usuarios')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (id) DO UPDATE SET nome = EXCLUDED.nome, cro = EXCLUDED.cro, cro_uf = EXCLUDED.cro_uf, celular = EXCLUDED.celular, especialidade = EXCLUDED.especialidade');
} else if (sql.toLowerCase().includes('vinculos')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (usuario_id, clinica_id) DO UPDATE SET role = EXCLUDED.role');
} else if (sql.toLowerCase().includes('dentistas_horarios')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (id) DO UPDATE SET dia_semana = EXCLUDED.dia_semana, hora_inicio = EXCLUDED.hora_inicio, hora_fim = EXCLUDED.hora_fim, ativo = EXCLUDED.ativo');
} else if (sql.toLowerCase().includes('dentistas')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (id) DO UPDATE SET nome = EXCLUDED.nome, especialidade = EXCLUDED.especialidade');
} else if (sql.toLowerCase().includes('procedimentos_valores_planos')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (id) DO UPDATE SET valor = EXCLUDED.valor');
} else if (sql.toLowerCase().includes('procedimentos')) {
sql = sql.replace(/ON\s+DUPLICATE\s+KEY\s+UPDATE[\s\S]+/i, 'ON CONFLICT (id) DO UPDATE SET nome = EXCLUDED.nome, "especialidadeId" = EXCLUDED."especialidadeId", "especialidadeNome" = EXCLUDED."especialidadeNome", "valorParticular" = EXCLUDED."valorParticular", "codigoInterno" = EXCLUDED."codigoInterno", categoria = EXCLUDED.categoria, tipo_regiao = EXCLUDED.tipo_regiao, exige_face = EXCLUDED.exige_face, codigo = EXCLUDED.codigo');
}
}
// DATE_FORMAT -> TO_CHAR
sql = sql.replace(/DATE_FORMAT\(([^,]+),\s*['"]%Y-%m['"]\)/gi, "TO_CHAR($1, 'YYYY-MM')");
// DATE_SUB -> CURRENT_DATE - INTERVAL
sql = sql.replace(/DATE_SUB\(CURDATE\(\),\s*INTERVAL\s+(\d+)\s+MONTH\)/gi, "CURRENT_DATE - INTERVAL '$1 MONTH'");
// SET FOREIGN_KEY_CHECKS
if (sql.match(/SET\s+FOREIGN_KEY_CHECKS\s*=\s*\d+/i)) {
sql = "SELECT 1";
}
return { sql, pgParams };
}
class PostgresConnection {
constructor(client) {
this.client = client;
}
async query(query, params) {
const { sql, pgParams } = translateQuery(query, params);
const res = await this.client.query(sql, pgParams);
return [res.rows, res.fields];
}
async beginTransaction() {
await this.client.query('BEGIN');
}
async commit() {
await this.client.query('COMMIT');
}
async rollback() {
await this.client.query('ROLLBACK');
}
release() {
this.client.release();
}
}
class PostgresPool {
constructor(config) {
// Convert connection string from postgresql:// to pool config
const connectionString = process.env.DATABASE_URL;
this.pool = new Pool({
connectionString: connectionString || `postgresql://${config.user}:${config.password}@${config.host}:5432/${config.database}`,
ssl: connectionString && connectionString.includes('localhost') ? false : { rejectUnauthorized: false }
});
}
async query(query, params) {
const { sql, pgParams } = translateQuery(query, params);
const res = await this.pool.query(sql, pgParams);
return [res.rows, res.fields];
}
async getConnection() {
const client = await this.pool.connect();
return new PostgresConnection(client);
}
async end() {
await this.pool.end();
}
}
export default {
createPool: (config) => new PostgresPool(config)
};
+68
View File
@@ -0,0 +1,68 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Beneficiario {
id String @id @default(uuid())
nome String
identificacao String @unique
guias GuiaOdontologica[]
gtoBuilders GtoBuilder[]
createdAt DateTime @default(now())
}
model GuiaOdontologica {
id String @id @default(uuid())
numeroGuiaPrestador String
numeroGuiaOperadora String?
dataSolicitacao DateTime
tipoTratamento String
status StatusGuia
beneficiarioId String
beneficiario Beneficiario @relation(fields: [beneficiarioId], references: [id])
createdAt DateTime @default(now())
}
model GtoBuilder {
id String @id @default(uuid())
pacienteId String
paciente Beneficiario @relation(fields: [pacienteId], references: [id])
dentistaId String
credenciadaId String
status String @default("RASCUNHO") // RASCUNHO | FINALIZADA
total Float @default(0)
items GtoItem[]
createdAt DateTime @default(now())
}
model GtoItem {
id String @id @default(uuid())
builderId String
builder GtoBuilder @relation(fields: [builderId], references: [id])
procedimentoId String
codigoTUSS String
descricao String
dente String?
face String?
quantidade Int @default(1)
valorUnitario Float
valorTotal Float
observacao String?
anexosCount Int @default(0)
}
enum StatusGuia {
EM_ANALISE
AUTORIZADO
AUTORIZADO_PARCIAL
NEGADO
CANCELADO
}
+1578
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+349
View File
@@ -0,0 +1,349 @@
-- =============================================================================
-- 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');
+600
View File
@@ -0,0 +1,600 @@
-- MySQL dump 10.13 Distrib 9.6.0, for Win64 (x86_64)
--
-- Host: localhost Database: sis_odonto
-- ------------------------------------------------------
-- Server version 9.6.0
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
--
-- GTID state at the beginning of the backup
--
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ 'a55635f9-101c-11f1-b100-00155ded4801:1-1161';
--
-- Table structure for table `agendamentos`
--
DROP TABLE IF EXISTS `agendamentos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `agendamentos` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`clinica_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`pacienteNome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`dentistaId` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`start_time` datetime DEFAULT NULL,
`end_time` datetime DEFAULT NULL,
`status` enum('Confirmado','Pendente','Concluido','Faltou') COLLATE utf8mb4_unicode_ci DEFAULT 'Pendente',
`procedimento` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`observacoes` text COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_dentista_slot` (`dentistaId`,`start_time`),
CONSTRAINT `agendamentos_ibfk_1` FOREIGN KEY (`dentistaId`) REFERENCES `dentistas` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `agendamentos`
--
LOCK TABLES `agendamentos` WRITE;
/*!40000 ALTER TABLE `agendamentos` DISABLE KEYS */;
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);
/*!40000 ALTER TABLE `agendamentos` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `clinicas`
--
DROP TABLE IF EXISTS `clinicas`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `clinicas` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome_fantasia` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`documento` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`cor` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '#2563eb',
`createdAt` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `clinicas`
--
LOCK TABLES `clinicas` WRITE;
/*!40000 ALTER TABLE `clinicas` DISABLE KEYS */;
INSERT INTO `clinicas` VALUES ('c1','SCOREODONTO MATRIZ','00.000.000/0001-00','#059669','2026-03-10 15:55:57'),('c2','SCOREODONTO FILIAL SUL','00.000.000/0002-00','#2563eb','2026-03-10 15:55:57');
/*!40000 ALTER TABLE `clinicas` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `dentistas`
--
DROP TABLE IF EXISTS `dentistas`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `dentistas` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`clinica_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`telefone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`corAgenda` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`especialidade` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ativo` tinyint(1) DEFAULT '1',
`ordem` int DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `dentistas`
--
LOCK TABLES `dentistas` WRITE;
/*!40000 ALTER TABLE `dentistas` DISABLE KEYS */;
INSERT INTO `dentistas` VALUES ('d1','c1','MURILO AMORIM','muriloamorim791@gmail.com','(67) 99999-1111','#10B981','ORTODONTIA',1,0),('d2','c1','RUI CESAR VARGAS','ruibto@gmail.com','(67) 99999-2222','#3B82F6','IMPLANTE',1,0);
/*!40000 ALTER TABLE `dentistas` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `dentistas_horarios`
--
DROP TABLE IF EXISTS `dentistas_horarios`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `dentistas_horarios` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`dentista_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`clinica_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`dia_semana` int NOT NULL,
`hora_inicio` time NOT NULL,
`hora_fim` time NOT NULL,
`ativo` tinyint(1) DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `dentistas_horarios`
--
LOCK TABLES `dentistas_horarios` WRITE;
/*!40000 ALTER TABLE `dentistas_horarios` DISABLE KEYS */;
/*!40000 ALTER TABLE `dentistas_horarios` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `especialidades`
--
DROP TABLE IF EXISTS `especialidades`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `especialidades` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`descricao` text COLLATE utf8mb4_unicode_ci,
`ordem` int DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `especialidades`
--
LOCK TABLES `especialidades` WRITE;
/*!40000 ALTER TABLE `especialidades` DISABLE KEYS */;
INSERT INTO `especialidades` VALUES ('0.29431554436274265','DENTISTICA','RESTAURA├ç├òES',1),('e1','ORTODONTIA','CORRE├ç├éO DA POSI├ç├éO DOS DENTES E OSSOS MAXILARES',2),('e2','IMPLANTODONTIA','IMPLANTES UNIT├üRIOS E MULTIPLOS',4),('e3','ENDODONTIA','TRATAMENTO DE CANAL E LESÔö£├▓ES PERIAPICAIS',3),('e4','CLINICO GERAL','PROCEDIMENTOS BASICOS, LIMPEZA E RESTAURA├ç├òES',0);
/*!40000 ALTER TABLE `especialidades` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `financeiro`
--
DROP TABLE IF EXISTS `financeiro`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `financeiro` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`clinica_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`pacienteNome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`descricao` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`valor` decimal(10,2) DEFAULT NULL,
`dataVencimento` date DEFAULT NULL,
`status` enum('Pago','Pendente','Atrasado') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`formaPagamento` enum('Boleto','Pix','Cartão','Dinheiro') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`tipo` enum('RECEITA','DESPESA') COLLATE utf8mb4_unicode_ci DEFAULT 'RECEITA',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `financeiro`
--
LOCK TABLES `financeiro` WRITE;
/*!40000 ALTER TABLE `financeiro` DISABLE KEYS */;
INSERT INTO `financeiro` VALUES ('f1',NULL,'WESLLEY ANTONY','MANUTENÇÃO MENSAL ORTO',150.00,'2023-10-15','Pago','Pix','RECEITA'),('f2',NULL,'NICOLLY BEATRIZ','ENTRADA IMPLANTE',1200.00,'2023-10-20','Pendente','Boleto','RECEITA');
/*!40000 ALTER TABLE `financeiro` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `google_tokens`
--
DROP TABLE IF EXISTS `google_tokens`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
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 NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`owner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `google_tokens`
--
LOCK TABLES `google_tokens` WRITE;
/*!40000 ALTER TABLE `google_tokens` DISABLE KEYS */;
/*!40000 ALTER TABLE `google_tokens` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `gto_builders`
--
DROP TABLE IF EXISTS `gto_builders`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `gto_builders` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`pacienteId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`dentistaId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`credenciadaId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'RASCUNHO',
`total` decimal(10,2) DEFAULT '0.00',
`createdAt` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `gto_builders`
--
LOCK TABLES `gto_builders` WRITE;
/*!40000 ALTER TABLE `gto_builders` DISABLE KEYS */;
/*!40000 ALTER TABLE `gto_builders` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `gto_items`
--
DROP TABLE IF EXISTS `gto_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `gto_items` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`builderId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`procedimentoId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`codigoTUSS` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`descricao` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`dente` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`face` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`quantidade` int DEFAULT '1',
`valorUnitario` decimal(10,2) NOT NULL,
`valorTotal` decimal(10,2) NOT NULL,
`observacao` text COLLATE utf8mb4_unicode_ci,
`anexosCount` int DEFAULT '0',
`codigoInterno` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `gto_items`
--
LOCK TABLES `gto_items` WRITE;
/*!40000 ALTER TABLE `gto_items` DISABLE KEYS */;
/*!40000 ALTER TABLE `gto_items` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `guias_odontologicas`
--
DROP TABLE IF EXISTS `guias_odontologicas`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `guias_odontologicas` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`numeroGuiaPrestador` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`numeroGuiaOperadora` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`dataSolicitacao` date NOT NULL,
`tipoTratamento` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`status` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`beneficiarioId` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`beneficiarioNome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`beneficiarioIdentificacao` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`createdAt` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `guias_odontologicas`
--
LOCK TABLES `guias_odontologicas` WRITE;
/*!40000 ALTER TABLE `guias_odontologicas` DISABLE KEYS */;
INSERT INTO `guias_odontologicas` VALUES ('1','177903','O-001','2026-02-25','Tratamento Odontologico','AUTORIZADO','B1','RONEY OTTONI DE SOUZA','181442','2026-02-26 15:43:38'),('2','178056','O-002','2026-02-25','Tratamento Odontologico','AUTORIZADO','B2','MILENA LIMA DIAS OTTONI DE SOUZA','157320','2026-02-26 15:43:38'),('3','178179','O-003','2026-02-25','Tratamento Odontologico','AUTORIZADO','B3','EVANDRO MACHADO AZEMAN','2025100002341','2026-02-26 15:43:38'),('4','177208','O-004','2026-02-24','Tratamento Odontologico','AUTORIZADO','B4','MARIA JULIA MIRANDA DA SILVA','145805','2026-02-26 15:43:38'),('5','177335','O-005','2026-02-24','Tratamento Odontologico','AUTORIZADO_PARCIAL','B5','JOAO ITALO CORREA DE AMORIM SANT ANNA','443079','2026-02-26 15:43:38'),('6','176468','O-006','2026-02-23','Urgencia / Emergencia','AUTORIZADO','B6','EDUARDO STENIO GONCALVES DOS SANTOS','435593','2026-02-26 15:43:38'),('7','176572','O-007','2026-02-23','Tratamento Odontologico','AUTORIZADO','B7','LUCIA MARIA DA SILVA JULIO','127311','2026-02-26 15:43:38'),('8','176666','O-008','2026-02-23','Tratamento Odontologico','AUTORIZADO','B8','JAIRO HIDEKI NAGAO','96512','2026-02-26 15:43:38'),('9','176721','O-009','2026-02-23','Tratamento Odontologico','AUTORIZADO','B8','JAIRO HIDEKI NAGAO','96512','2026-02-26 15:43:38');
/*!40000 ALTER TABLE `guias_odontologicas` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `leads`
--
DROP TABLE IF EXISTS `leads`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
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` enum('Particular','Plano') DEFAULT NULL,
`dataCadastro` datetime DEFAULT NULL,
`status` enum('Novo','Convertido','Arquivado') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `leads`
--
LOCK TABLES `leads` WRITE;
/*!40000 ALTER TABLE `leads` DISABLE KEYS */;
/*!40000 ALTER TABLE `leads` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `notificacoes`
--
DROP TABLE IF EXISTS `notificacoes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `notificacoes` (
`id` varchar(50) NOT NULL,
`titulo` varchar(255) DEFAULT NULL,
`mensagem` text,
`tipo` enum('lead','sistema','agenda','financeiro') DEFAULT 'sistema',
`lida` tinyint(1) DEFAULT '0',
`data` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `notificacoes`
--
LOCK TABLES `notificacoes` WRITE;
/*!40000 ALTER TABLE `notificacoes` DISABLE KEYS */;
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'),('notif_fin_overdue_f2 ','FATURA ATRASADA','A conta \"ENTRADA IMPLANTE\" de R$ 1200.00 venceu em 20/10/2023 ','financeiro',0,'2026-03-10 15:55:58'),('notif_sys_setup','CONFIGURAÇÃO DO SISTEMA','O sistema possui poucos pacientes cadastrados. Considere importar dados.','sistema',1,'2026-02-27 10:16:03');
/*!40000 ALTER TABLE `notificacoes` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `pacientes`
--
DROP TABLE IF EXISTS `pacientes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `pacientes` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`cpf` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`telefone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ultimoTratamento` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`convenio` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`dataNascimento` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `pacientes`
--
LOCK TABLES `pacientes` WRITE;
/*!40000 ALTER TABLE `pacientes` DISABLE KEYS */;
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'),('2','NICOLLY BEATRIZ TEIXEIRA','101.034.232-06','(67) 99904-7557','NICOLLY@EMAIL.COM','LIMPEZA','ODONTOSEG','22/09/2010'),('3','ROSANGELA DUTRA','917.670.830-68','(67) 9272-2487','ROSANGELA@EMAIL.COM',NULL,'CASSEMS','23/11/1978');
/*!40000 ALTER TABLE `pacientes` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `planos`
--
DROP TABLE IF EXISTS `planos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `planos` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`tipo` enum('Convenio','Particular','Parceria') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`descontoPadrao` decimal(5,2) DEFAULT NULL,
`corCartao` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `planos`
--
LOCK TABLES `planos` WRITE;
/*!40000 ALTER TABLE `planos` DISABLE KEYS */;
INSERT INTO `planos` VALUES ('p1','PARTICULAR','Particular',0.00,'#1f2937'),('p2','UNIMED ODONTO','Convenio',0.00,'#1eb545'),('p3','ODONTOPREV','Convenio',0.00,'#0066cc'),('p4','CASSEMS','Convenio',0.00,'#e63946'),('p5','SESI ODONTO','Convenio',0.00,'#f4a261');
/*!40000 ALTER TABLE `planos` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `procedimentos`
--
DROP TABLE IF EXISTS `procedimentos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `procedimentos` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`descricao` text COLLATE utf8mb4_unicode_ci,
`especialidadeId` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`especialidadeNome` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`valorParticular` decimal(10,2) DEFAULT NULL,
`codigoInterno` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`categoria` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT 'Particular',
`tipo_regiao` enum('DENTE','ARCO','GERAL') COLLATE utf8mb4_unicode_ci DEFAULT 'GERAL',
`exige_face` tinyint(1) DEFAULT '0',
`codigo` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ordem` int DEFAULT '0',
PRIMARY KEY (`id`),
KEY `especialidadeId` (`especialidadeId`),
CONSTRAINT `procedimentos_ibfk_1` FOREIGN KEY (`especialidadeId`) REFERENCES `especialidades` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `procedimentos`
--
LOCK TABLES `procedimentos` WRITE;
/*!40000 ALTER TABLE `procedimentos` DISABLE KEYS */;
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),('proc2','MANUTEN├ç├âO ORTOD├öNTICA','MANUTEN├ç├éO MENSAL DE APARELHO FIXO','E1','ORTODONTIA',250.00,'','PARTICULAR','ARCO',0,'',0);
/*!40000 ALTER TABLE `procedimentos` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `procedimentos_valores_planos`
--
DROP TABLE IF EXISTS `procedimentos_valores_planos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `procedimentos_valores_planos` (
`id` int NOT NULL AUTO_INCREMENT,
`procedimentoId` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`planoId` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`planoNome` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`valor` decimal(10,2) DEFAULT NULL,
`codigoPlano` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `procedimentoId` (`procedimentoId`),
KEY `planoId` (`planoId`),
CONSTRAINT `procedimentos_valores_planos_ibfk_1` FOREIGN KEY (`procedimentoId`) REFERENCES `procedimentos` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `procedimentos_valores_planos`
--
LOCK TABLES `procedimentos_valores_planos` WRITE;
/*!40000 ALTER TABLE `procedimentos_valores_planos` DISABLE KEYS */;
INSERT INTO `procedimentos_valores_planos` VALUES (1,'proc1','p2','UNIMED ODONTO',80.00,NULL),(2,'proc1','p3','ODONTOPREV',75.00,NULL);
/*!40000 ALTER TABLE `procedimentos_valores_planos` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `settings`
--
DROP TABLE IF EXISTS `settings`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `settings` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`category` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`data` text COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `settings`
--
LOCK TABLES `settings` WRITE;
/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
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\"}}');
/*!40000 ALTER TABLE `settings` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `usuarios`
--
DROP TABLE IF EXISTS `usuarios`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `usuarios` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`senha` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`cro` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`cro_uf` varchar(2) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`celular` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`especialidade` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`cor_agenda` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT '#2563eb',
`role` enum('paciente','dentista','funcionario','donoclinica','admin') COLLATE utf8mb4_unicode_ci DEFAULT 'admin',
`createdAt` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `usuarios`
--
LOCK TABLES `usuarios` WRITE;
/*!40000 ALTER TABLE `usuarios` DISABLE KEYS */;
INSERT INTO `usuarios` VALUES ('u1','RUI CESAR','admin@scoreodonto.com','admin',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04'),('u2','DENTISTA TESTE','dentista@scoreodonto.com','123456',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04'),('u3','FUNCIONARIO TESTE','funcionario@scoreodonto.com','cassems',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04'),('u4','DONO CLINICA','dono@scoreodonto.com','Rc362514',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04'),('u5','PACIENTE TESTE','paciente@scoreodonto.com','14253636',NULL,NULL,NULL,NULL,'#2563eb','admin','2026-03-10 16:27:04');
/*!40000 ALTER TABLE `usuarios` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `vinculos`
--
DROP TABLE IF EXISTS `vinculos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `vinculos` (
`id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`usuario_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`clinica_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`role` enum('paciente','dentista','funcionario','donoclinica','admin') COLLATE utf8mb4_unicode_ci DEFAULT 'admin',
`createdAt` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `user_clinica` (`usuario_id`,`clinica_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `vinculos`
--
LOCK TABLES `vinculos` WRITE;
/*!40000 ALTER TABLE `vinculos` DISABLE KEYS */;
INSERT INTO `vinculos` VALUES ('v_u1_c1','u1','c1','admin','2026-03-10 16:27:04'),('v_u1_c2','u1','c2','admin','2026-03-10 16:27:04'),('v_u2_c1','u2','c1','dentista','2026-03-10 16:27:04'),('v_u3_c1','u3','c1','funcionario','2026-03-10 16:27:04'),('v_u4_c1','u4','c1','donoclinica','2026-03-10 16:27:04'),('v_u4_c2','u4','c2','donoclinica','2026-03-10 16:27:04'),('v_u5_c1','u5','c1','paciente','2026-03-10 16:27:04');
/*!40000 ALTER TABLE `vinculos` ENABLE KEYS */;
UNLOCK TABLES;
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2026-03-15 20:33:25