57 lines
3.4 KiB
SQL
57 lines
3.4 KiB
SQL
-- ============================================================
|
|
-- Migration: 20260302_lab_03_ordenes_medicas
|
|
-- Módulo Administrativo: Órdenes médicas recibidas por WhatsApp
|
|
-- Vincula una imagen del chat con un paciente y un estado
|
|
-- ============================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS `lab_ordenes_medicas` (
|
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
|
`paciente_id` INT(11) NOT NULL COMMENT 'FK a lab_pacientes.id',
|
|
`conversation_id` INT(11) DEFAULT NULL COMMENT 'FK a conversations.id (mensaje con la imagen)',
|
|
`whatsapp_media_id` VARCHAR(255) DEFAULT NULL COMMENT 'Media ID de WhatsApp para referencia',
|
|
`local_file` VARCHAR(255) DEFAULT NULL COMMENT 'Ruta local de la imagen de la orden',
|
|
-- Estado del flujo de revisión
|
|
`estado` ENUM(
|
|
'pendiente',
|
|
'en_revision',
|
|
'autorizada',
|
|
'rechazada',
|
|
'en_domicilio',
|
|
'completada'
|
|
) NOT NULL DEFAULT 'pendiente',
|
|
-- Datos de la orden médica (ingresados manualmente)
|
|
`medico_nombre` VARCHAR(150) DEFAULT NULL,
|
|
`medico_registro` VARCHAR(50) DEFAULT NULL,
|
|
`fecha_orden` DATE DEFAULT NULL COMMENT 'Fecha que aparece en la orden impresa',
|
|
`diagnostico` TEXT DEFAULT NULL,
|
|
`examenes_solicitados` TEXT DEFAULT NULL COMMENT 'Lista de exámenes de la orden',
|
|
`requiere_ayuno` TINYINT(1) DEFAULT 0,
|
|
`horas_ayuno` TINYINT(3) DEFAULT NULL,
|
|
`indicaciones` TEXT DEFAULT NULL,
|
|
-- Gestión administrativa
|
|
`revisada_por` INT(11) DEFAULT NULL COMMENT 'FK a admin_users.id',
|
|
`revisada_at` DATETIME DEFAULT NULL,
|
|
`autorizada_por` INT(11) DEFAULT NULL COMMENT 'FK a admin_users.id',
|
|
`autorizada_at` DATETIME DEFAULT NULL,
|
|
`comentario_revision` TEXT DEFAULT NULL,
|
|
`notas_admin` TEXT DEFAULT NULL,
|
|
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_ord_paciente` (`paciente_id`),
|
|
KEY `idx_ord_conversation` (`conversation_id`),
|
|
KEY `idx_ord_estado` (`estado`),
|
|
KEY `idx_ord_fecha` (`fecha_orden`),
|
|
KEY `idx_ord_revisada_por` (`revisada_por`),
|
|
KEY `idx_ord_autorizada` (`autorizada_por`),
|
|
CONSTRAINT `fk_ord_paciente` FOREIGN KEY (`paciente_id`)
|
|
REFERENCES `lab_pacientes` (`id`) ON DELETE RESTRICT,
|
|
CONSTRAINT `fk_ord_conversation` FOREIGN KEY (`conversation_id`)
|
|
REFERENCES `conversations` (`id`) ON DELETE SET NULL,
|
|
CONSTRAINT `fk_ord_revisada` FOREIGN KEY (`revisada_por`)
|
|
REFERENCES `admin_users` (`id`) ON DELETE SET NULL,
|
|
CONSTRAINT `fk_ord_autorizada` FOREIGN KEY (`autorizada_por`)
|
|
REFERENCES `admin_users` (`id`) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|
COMMENT='Órdenes médicas recibidas vía WhatsApp';
|