47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* POST /api/lab/autorizar_orden.php
|
|
* Cambia el estado de una orden médica (flujo de revisión).
|
|
* Body JSON:
|
|
* { id, accion: 'en_revision'|'autorizada'|'rechazada'|'completada', comentario? }
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireMethod('POST');
|
|
|
|
try {
|
|
$datos = inputJson();
|
|
$om = new OrdenMedica();
|
|
$admin = adminId();
|
|
|
|
if (empty($datos['id'])) {
|
|
jsonError('El campo id es obligatorio');
|
|
}
|
|
if (empty($datos['accion'])) {
|
|
jsonError('El campo accion es obligatorio');
|
|
}
|
|
|
|
$id = (int)$datos['id'];
|
|
$accion = $datos['accion'];
|
|
$comentario = $datos['comentario'] ?? '';
|
|
|
|
if ($accion === 'rechazada' && empty($comentario)) {
|
|
jsonError('El motivo de rechazo es obligatorio');
|
|
}
|
|
|
|
$om->cambiarEstado($id, $accion, $admin, $comentario);
|
|
|
|
$mensajes = [
|
|
'en_revision' => 'Orden marcada en revisión',
|
|
'autorizada' => 'Orden autorizada correctamente',
|
|
'rechazada' => 'Orden rechazada',
|
|
'en_domicilio'=> 'Orden marcada como en domicilio',
|
|
'completada' => 'Orden completada',
|
|
];
|
|
|
|
jsonOk(['id' => $id], $mensajes[$accion] ?? 'Estado actualizado');
|
|
} catch (InvalidArgumentException $e) {
|
|
jsonError($e->getMessage());
|
|
} catch (Exception $e) {
|
|
jsonError($e->getMessage(), 500);
|
|
}
|