CREATE TABLE pacientes (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  nombres VARCHAR(120) NOT NULL,
  apellidos VARCHAR(150) NOT NULL,
  fecha_nacimiento DATE NULL,
  telefono VARCHAR(30) NULL,
  email VARCHAR(190) NULL,
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  KEY idx_pacientes_nombre (apellidos, nombres),
  KEY idx_pacientes_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE odontologo_paciente (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  odontologo_id BIGINT UNSIGNED NOT NULL,
  paciente_id BIGINT UNSIGNED NOT NULL,
  estado ENUM('activo','revocado') NOT NULL DEFAULT 'activo',
  creado_por_usuario_id BIGINT UNSIGNED NOT NULL,
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_op_odontologo FOREIGN KEY (odontologo_id) REFERENCES odontologos(id),
  CONSTRAINT fk_op_paciente FOREIGN KEY (paciente_id) REFERENCES pacientes(id),
  CONSTRAINT fk_op_creado_por FOREIGN KEY (creado_por_usuario_id) REFERENCES usuarios(id),
  UNIQUE KEY uq_odontologo_paciente (odontologo_id, paciente_id),
  KEY idx_op_paciente_odontologo (paciente_id, odontologo_id, estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE permisos_colaboracion (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  paciente_id BIGINT UNSIGNED NOT NULL,
  odontologo_otorgante_id BIGINT UNSIGNED NOT NULL,
  odontologo_receptor_id BIGINT UNSIGNED NOT NULL,
  permiso ENUM('ver_general','ver_historial','agregar_consultas','ver_fotografias','agregar_fotografias') NOT NULL,
  estado ENUM('activo','revocado') NOT NULL DEFAULT 'activo',
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  revocado_en DATETIME NULL,
  CONSTRAINT fk_pc_paciente FOREIGN KEY (paciente_id) REFERENCES pacientes(id),
  CONSTRAINT fk_pc_otorgante FOREIGN KEY (odontologo_otorgante_id) REFERENCES odontologos(id),
  CONSTRAINT fk_pc_receptor FOREIGN KEY (odontologo_receptor_id) REFERENCES odontologos(id),
  UNIQUE KEY uq_permiso_colaboracion (paciente_id, odontologo_receptor_id, permiso),
  KEY idx_pc_receptor_estado (odontologo_receptor_id, estado, permiso)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE auditoria (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  usuario_id BIGINT UNSIGNED NULL,
  accion VARCHAR(80) NOT NULL,
  recurso_tipo VARCHAR(80) NOT NULL,
  recurso_id BIGINT UNSIGNED NULL,
  resultado ENUM('permitido','denegado') NOT NULL,
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  KEY idx_auditoria_usuario_fecha (usuario_id, creado_en),
  KEY idx_auditoria_recurso (recurso_tipo, recurso_id, creado_en)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
