rips: prevent reuse of already-consumed exam records
- Add turno_id column to rips_examenes_pendientes (already migrated) - Filter turno_id IS NULL in get_examenes_rips.php query - New marcar_rips_usado.php marks record as consumed when loaded - cargarExamenesRips() calls marker after loading exams into the turn Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d46c983776
commit
26bb9e1844
@@ -20,6 +20,7 @@ $cacheRow = db()->prepare(
|
|||||||
WHERE numero_documento = ?
|
WHERE numero_documento = ?
|
||||||
AND DATE(created_at) = CURDATE()
|
AND DATE(created_at) = CURDATE()
|
||||||
AND created_at >= NOW() - INTERVAL 30 MINUTE
|
AND created_at >= NOW() - INTERVAL 30 MINUTE
|
||||||
|
AND turno_id IS NULL
|
||||||
ORDER BY created_at DESC
|
ORDER BY created_at DESC
|
||||||
LIMIT 1"
|
LIMIT 1"
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* POST /api/lab/marcar_rips_usado.php
|
||||||
|
* Marca el registro RIPS de una cédula como consumido por un turno.
|
||||||
|
* Body: { cedula, turno_id }
|
||||||
|
*/
|
||||||
|
require_once __DIR__ . '/_helpers.php';
|
||||||
|
requireMethod('POST');
|
||||||
|
|
||||||
|
$body = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||||
|
$cedula = trim($body['cedula'] ?? '');
|
||||||
|
$turnoId = (int)($body['turno_id'] ?? 0);
|
||||||
|
|
||||||
|
if (!$cedula || !$turnoId) jsonError('cedula y turno_id requeridos', 400);
|
||||||
|
|
||||||
|
db()->prepare(
|
||||||
|
"UPDATE rips_examenes_pendientes
|
||||||
|
SET turno_id = ?
|
||||||
|
WHERE numero_documento = ?
|
||||||
|
AND DATE(created_at) = CURDATE()
|
||||||
|
AND turno_id IS NULL
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT 1"
|
||||||
|
)->execute([$turnoId, $cedula]);
|
||||||
|
|
||||||
|
jsonOk(['marcado' => true]);
|
||||||
@@ -1707,6 +1707,16 @@ async function cargarExamenesRips() {
|
|||||||
if (_ripsData.valor_total > 0) {
|
if (_ripsData.valor_total > 0) {
|
||||||
document.getElementById('inp-total').value = Math.round(_ripsData.valor_total);
|
document.getElementById('inp-total').value = Math.round(_ripsData.valor_total);
|
||||||
}
|
}
|
||||||
|
// Marcar registro RIPS como consumido para no reutilizarlo en otro turno
|
||||||
|
const cedula = pacienteActivo?.numero_documento || pacienteActivo?.documento
|
||||||
|
|| turnoActivo?.paciente_nombre || '';
|
||||||
|
if (cedula && turnoActivo?.id) {
|
||||||
|
fetch(`${BASE_WA}api/lab/marcar_rips_usado.php`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ cedula, turno_id: turnoActivo.id }),
|
||||||
|
}).catch(() => {});
|
||||||
|
}
|
||||||
descartarRips();
|
descartarRips();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user