- chat_buscar_paciente.php: GET ?q= busca en lab_pacientes por nombre,
documento o teléfono (mín. 2 chars, máx. 20 resultados)
- chat_start_conversation.php: POST {phone, template_name, lang, params}
— normaliza teléfono, busca/crea usuario en users, envía plantilla
vía WhatsAppService('turnero'), devuelve {ok, user_id}
- chat.php: botón "+ Nuevo" en sidebar header; modal 3 pasos:
1) buscar paciente (debounce 350ms) o ingresar número libre
2) lista de plantillas habilitadas
3) variables de la plantilla + Enviar
Al enviar recarga el sidebar y abre la conversación automáticamente
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
1.0 KiB
PHP
30 lines
1.0 KiB
PHP
<?php
|
|
/**
|
|
* GET ?q= — Busca pacientes en lab_pacientes por nombre o documento.
|
|
* Usado por el modal "Nuevo mensaje" del chat turnero.
|
|
*/
|
|
require_once __DIR__ . '/../../../config/config.php';
|
|
requireAuthentication();
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
$q = trim($_GET['q'] ?? '');
|
|
if (strlen($q) < 2) { echo json_encode(['ok' => true, 'data' => []]); exit; }
|
|
|
|
try {
|
|
$pdo = Database::getInstance()->getConnection();
|
|
$like = '%' . $q . '%';
|
|
$rows = $pdo->prepare(
|
|
"SELECT id, nombre_completo, telefono, numero_documento
|
|
FROM lab_pacientes
|
|
WHERE is_active = 1
|
|
AND (nombre_completo LIKE ? OR numero_documento LIKE ? OR telefono LIKE ?)
|
|
ORDER BY nombre_completo ASC
|
|
LIMIT 20"
|
|
);
|
|
$rows->execute([$like, $like, $like]);
|
|
echo json_encode(['ok' => true, 'data' => $rows->fetchAll(PDO::FETCH_ASSOC)]);
|
|
} catch (Throwable $e) {
|
|
http_response_code(500);
|
|
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
|
|
}
|