feat: módulo lab_examenes — CRUD catálogo de exámenes, items y tarifas
- Nuevo módulo lab_examenes con lista paginada, buscador y filtro por categoría - Vista de detalle/edición con campos completos de exam_tipos (CUPS, protocolo, tipo muestra, nivel, abreviatura, seremite, ayuno, instrucciones) - Sub-tabla inline de items de resultado (lab_items_resultado) con edición por fila - Sub-tabla de precios por tarifa (lab_tarifas) con modal de edición - APIs: list, get, save, save_item, save_tarifa, get_tarifas - Script ETL Firebird→MySQL (scripts/etl_examenes.php) para la migración inicial Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
229977785b
commit
fb0e77523c
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireAdmin();
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Método no permitido', 405);
|
||||
|
||||
$d = inputJson();
|
||||
$id = (int)($d['id'] ?? 0);
|
||||
|
||||
if (!empty($d['_delete'])) {
|
||||
if (!$id) jsonError('ID requerido');
|
||||
db()->prepare('DELETE FROM lab_items_resultado WHERE id = ?')->execute([$id]);
|
||||
jsonOk([], 'Item eliminado');
|
||||
}
|
||||
|
||||
$codProt = trim($d['cod_protocolo'] ?? '');
|
||||
$nombre = trim($d['nombre'] ?? '');
|
||||
if (!$codProt) jsonError('cod_protocolo requerido');
|
||||
if (!$nombre) jsonError('Nombre requerido');
|
||||
|
||||
$tipoSexo = in_array($d['tipo_sexo'] ?? '', ['M','F']) ? $d['tipo_sexo'] : null;
|
||||
$tipo = in_array($d['tipo'] ?? '', ['N','T']) ? $d['tipo'] : 'T';
|
||||
$medida = trim($d['medida'] ?? '') ?: null;
|
||||
$abrev = trim($d['abreviatura'] ?? '') ?: null;
|
||||
$vmin = $d['vmin_ref'] !== '' && $d['vmin_ref'] !== null ? (float)$d['vmin_ref'] : null;
|
||||
$vmax = $d['vmax_ref'] !== '' && $d['vmax_ref'] !== null ? (float)$d['vmax_ref'] : null;
|
||||
$orden = (int)($d['orden'] ?? 0);
|
||||
$formula = trim($d['formula'] ?? '') ?: null;
|
||||
$cups_d = trim($d['cups_detalle'] ?? '') ?: null;
|
||||
|
||||
$pdo = db();
|
||||
if ($id) {
|
||||
$pdo->prepare(
|
||||
'UPDATE lab_items_resultado SET cod_protocolo=?,nombre=?,tipo_sexo=?,tipo=?,medida=?,
|
||||
abreviatura=?,vmin_ref=?,vmax_ref=?,orden=?,formula=?,cups_detalle=? WHERE id=?'
|
||||
)->execute([$codProt,$nombre,$tipoSexo,$tipo,$medida,$abrev,$vmin,$vmax,$orden,$formula,$cups_d,$id]);
|
||||
jsonOk(['id' => $id], 'Item actualizado');
|
||||
} else {
|
||||
$pdo->prepare(
|
||||
'INSERT INTO lab_items_resultado
|
||||
(cod_protocolo,nombre,tipo_sexo,tipo,medida,abreviatura,vmin_ref,vmax_ref,orden,formula,cups_detalle)
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?)'
|
||||
)->execute([$codProt,$nombre,$tipoSexo,$tipo,$medida,$abrev,$vmin,$vmax,$orden,$formula,$cups_d]);
|
||||
jsonOk(['id' => (int)$pdo->lastInsertId()], 'Item creado');
|
||||
}
|
||||
Reference in New Issue
Block a user