Evitar teléfonos falsos en la historia clínica, y pedir el número a quien lo oculta
El arreglo anterior dejó un defecto: obtenerOCrearDesdeWhatsapp() copiaba users.phone_number al teléfono de la ficha, y para quien oculta su número ahí va el BSUID. normalizarTelefono() le quitaba el punto y las letras, así que "CO.1761088155094242" quedaba guardado como "1761088155094242": un número de 16 dígitos, falso, con apariencia de real, dentro de una historia clínica y sin que nadie lo notara. Ahora esa ficha se crea sin teléfono, que es la verdad: no lo tenemos. - esBsuid() queda definido una sola vez, en config.php, que es donde lo ven tanto el servicio de WhatsApp como las clases del laboratorio. - La lista y el detalle de pacientes dicen "Solo por WhatsApp" en vez de mostrar el identificador crudo: recepción necesita entender por qué no puede llamar, no ver un código. - Al crear la ficha desde una conversación se le pide el número con el botón de Meta, una sola vez (users.contacto_pedido_at). El texto es editable desde configuración. Solo se marca como pedido si Meta aceptó el envío, para poder reintentar si falló. - tests/test_bsuid.php: 30 verificaciones sobre identidad, envío, vinculación y creación de fichas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
26025a6399
commit
2b1f08b03f
@@ -339,6 +339,24 @@ function deleteConfigFromDB($key) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('esBsuid')) {
|
||||
/**
|
||||
* ¿Este identificador es un BSUID de Meta y no un número de teléfono?
|
||||
*
|
||||
* Desde que WhatsApp permite ocultar el número, quien lo oculta llega
|
||||
* identificado solo por su BSUID, con la forma "CO.1761088155094242".
|
||||
* Ese valor ocupa el lugar del teléfono dentro del bot, así que hay que
|
||||
* distinguirlo antes de tratarlo como si fuera un número real: guardarlo
|
||||
* en un campo de teléfono deja un dato falso con toda la pinta de verdadero.
|
||||
*
|
||||
* @param mixed $valor
|
||||
* @return bool
|
||||
*/
|
||||
function esBsuid($valor) {
|
||||
return (bool) preg_match('/^[A-Z]{2}\.\d+$/', (string) $valor);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Limpia el cache estático de configuraciones
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user