Files
whatsapp/migrations/20260704_lis_05_tarifas.sql
Lizandro GuarnizoandClaude Sonnet 4.6 5fedd233f4 feat(lis): migración completa Firebird→MySQL + tracking de muestras en turnero
- Migraciones LIS 01-08: schema completo del nuevo LIS (secciones, protocolos,
  ítems de resultado, perfiles, tarifas, empresas, histórico transaccional)
- ETL Firebird→MySQL: script CLI con conversión WIN1252→UTF-8, batches de 500,
  resolución de FKs y deduplicación de pacientes
- turnero_muestras: tracking pendiente/recibida/rechazada por tipo de tubo
- lugar.php: widget de recepción de muestras (solo tipo=muestras)
- update_muestra_estado.php: API para marcar estado de muestra
- create_solicitud.php: auto-crea muestras al guardar solicitud
- get_consentimientos.php: incluye muestras[] en el response
- 6 vistas SQL: v_muestras_hoy, v_recepcion_completa, v_examen_precio, etc.
- numero_orden en encabezado del formulario firmado (D-/F- color diferenciado)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 21:44:22 -05:00

98 lines
4.8 KiB
SQL

-- =============================================================
-- LIS 05 — Motor de precios y convenios
-- Crea: lab_tarifas_id, lab_tarifas, lab_empresas,
-- lab_empresa_subgrupos, lab_examenes_empresa
-- =============================================================
-- -----------------------------------------------------------
-- Catálogo de tarifas
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_tarifas_id (
id INT NOT NULL,
nombre VARCHAR(150) NOT NULL,
tarifa_origen INT DEFAULT NULL
COMMENT 'Si != NULL, esta tarifa = tarifa_origen * (1 + porcentaje/100)',
porcentaje DECIMAL(8,4) NOT NULL DEFAULT 0
COMMENT '0 = precios fijos, >0 = derivada porcentualmente',
PRIMARY KEY (id),
KEY idx_origen (tarifa_origen)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Catálogo de tarifas — replica TARIFAID Firebird';
-- -----------------------------------------------------------
-- Precios por examen y tarifa
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_tarifas (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
cod_examen_legacy VARCHAR(20) NOT NULL COMMENT 'CODIGO original Firebird para trazabilidad',
exam_tipo_id INT UNSIGNED DEFAULT NULL,
tarifa_id INT NOT NULL,
valor DECIMAL(12,2) NOT NULL,
recargo_urg DECIMAL(12,2) NOT NULL DEFAULT 0,
recargo_fes DECIMAL(12,2) NOT NULL DEFAULT 0,
recargo_esp DECIMAL(12,2) NOT NULL DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uq_examen_tarifa (exam_tipo_id, tarifa_id),
KEY idx_legacy (cod_examen_legacy),
KEY idx_tarifa (tarifa_id),
CONSTRAINT fk_tar_tarifa FOREIGN KEY (tarifa_id)
REFERENCES lab_tarifas_id (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Precios por examen y tarifa — replica TARIFA Firebird';
-- -----------------------------------------------------------
-- Empresas / convenios
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_empresas (
nit VARCHAR(20) NOT NULL,
nombre VARCHAR(200) NOT NULL,
razon_social VARCHAR(200) DEFAULT NULL,
tarifa_id INT DEFAULT NULL,
descuento_pct DECIMAL(8,4) NOT NULL DEFAULT 0,
codigo_eps VARCHAR(20) DEFAULT NULL,
tipo_usuario VARCHAR(10) DEFAULT NULL COMMENT 'Tipo usuario para facturación',
tipo_usuario_sispro VARCHAR(10) DEFAULT NULL,
cod_contrato VARCHAR(50) DEFAULT NULL,
cod_tercero VARCHAR(50) DEFAULT NULL,
centro_costo VARCHAR(50) DEFAULT NULL,
req_autoriza TINYINT(1) NOT NULL DEFAULT 0
COMMENT '1 = exige número de autorización en recepción',
activa TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (nit),
KEY idx_tarifa (tarifa_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Empresas y convenios — replica EMPRESA Firebird';
-- -----------------------------------------------------------
-- Subgrupos de empresa
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_empresa_subgrupos (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
nit_empresa VARCHAR(20) NOT NULL,
subgrupo VARCHAR(100) NOT NULL,
tarifa_id INT DEFAULT NULL,
ref_subgrupo VARCHAR(50) DEFAULT NULL,
cod_contrato VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY uq_empresa_sub (nit_empresa, subgrupo),
KEY idx_tarifa (tarifa_id),
CONSTRAINT fk_esub_empresa FOREIGN KEY (nit_empresa)
REFERENCES lab_empresas (nit) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Subgrupos por empresa — replica EMPRESA_SUB Firebird';
-- -----------------------------------------------------------
-- Códigos de examen alternos por empresa (para interfaces)
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS lab_examenes_empresa (
nit_empresa VARCHAR(20) NOT NULL,
cod_examen_legacy VARCHAR(20) NOT NULL,
exam_tipo_id INT UNSIGNED DEFAULT NULL,
codigo_empresa VARCHAR(50) NOT NULL,
PRIMARY KEY (nit_empresa, cod_examen_legacy),
KEY idx_exam (exam_tipo_id),
CONSTRAINT fk_ee_empresa FOREIGN KEY (nit_empresa)
REFERENCES lab_empresas (nit) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Códigos alternos por empresa — replica EXAMEN_EMP Firebird';