46 lines
1.6 KiB
PHP
46 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* POST /api/lab/save_paciente.php
|
|
* Crea o actualiza un paciente.
|
|
* Body JSON:
|
|
* { id?, nombre_completo, numero_documento?, tipo_documento?, telefono?,
|
|
* email?, fecha_nacimiento?, genero?, direccion?, ciudad?, barrio?,
|
|
* eps?, notas_admin?, user_id? }
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireMethod('POST');
|
|
|
|
try {
|
|
$datos = inputJson();
|
|
$pac = new Paciente();
|
|
$admin = adminId();
|
|
|
|
if (!empty($datos['id'])) {
|
|
// Actualización
|
|
$id = (int)$datos['id'];
|
|
unset($datos['id']);
|
|
$pac->actualizar($id, $datos, $admin);
|
|
jsonOk(['id' => $id], 'Paciente actualizado correctamente');
|
|
} else {
|
|
// Creación — nombre obligatorio
|
|
if (empty($datos['nombre_completo'])) {
|
|
jsonError('El campo nombre_completo es obligatorio');
|
|
}
|
|
$id = $pac->crear($datos, $admin);
|
|
jsonOk(['id' => $id], 'Paciente creado correctamente');
|
|
}
|
|
} catch (Exception $e) {
|
|
$msg = $e->getMessage();
|
|
// Traducir errores de clave duplicada que hayan escapado la validación previa
|
|
if (stripos($msg, 'Duplicate entry') !== false || stripos($msg, '1062') !== false) {
|
|
if (stripos($msg, 'numero_documento') !== false || stripos($msg, 'documento') !== false) {
|
|
jsonError('Ya existe un paciente con ese número de documento');
|
|
}
|
|
if (stripos($msg, 'email') !== false) {
|
|
jsonError('Ya existe un paciente con ese correo electrónico');
|
|
}
|
|
jsonError('Ya existe un registro con esos datos (valor duplicado)');
|
|
}
|
|
jsonError($msg, 400);
|
|
}
|