Files
whatsapp/api/lab/save_paciente.php
T
2026-04-06 12:30:37 -05:00

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);
}