Diagramas en texto dentro de bloques de código, en vez de capturas: se editan
como texto, no pesan en el repositorio y no quedan desactualizados solos. Se
agregan el recorrido de un turno, quién firma cada consentimiento, el paso de
una muestra pendiente entre visitas y la línea de tiempo de las tomas seriadas.
Páginas nuevas del manual: kiosko y pantallas de TV (las dos que funcionan sin
nadie operándolas), y chat de WhatsApp, que explica por qué el bot deja de
responder cuando un operador toma la conversación y de dónde sale el límite de
24 horas.
Páginas técnicas nuevas: registro de exámenes, y los catálogos del laboratorio
agrupados en una sola página por compartir la misma forma. Operación suma
respaldos y recuperación, incluyendo qué datos históricos no son recuperables.
Los 10 endpoints que no tenían comentario de cabecera ahora lo tienen, así que
la tabla generada por {{endpoints}} queda completa: 83 de 83.
DOCUMENTACION_LAB.md y README_LAB.md quedan como puntero al módulo;
WEBHOOK_ENDPOINTS.md se elimina por estar ya migrado a la sección técnica.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
52 lines
2.4 KiB
PHP
52 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* POST — Crea o actualiza un médico del catálogo.
|
|
*/
|
|
require_once __DIR__ . '/../../../config/config.php';
|
|
if (!isUserLoggedIn()) { http_response_code(401); echo json_encode(['ok'=>false,'error'=>'No autorizado']); exit; }
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
echo json_encode(['ok'=>false,'error'=>'Método no permitido']); exit;
|
|
}
|
|
|
|
$datos = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
$id = !empty($datos['id']) ? (int) $datos['id'] : null;
|
|
$codigo = strtoupper(trim($datos['codigo'] ?? ''));
|
|
$nombres = trim($datos['nombres'] ?? '');
|
|
$apellidos = trim($datos['apellidos'] ?? '');
|
|
$especialidad = trim($datos['cod_especialidad'] ?? '');
|
|
$docid = trim($datos['docidmedico'] ?? '');
|
|
$telefonos = trim($datos['telefonos'] ?? '');
|
|
$email = trim($datos['email'] ?? '');
|
|
|
|
if (!$codigo) { echo json_encode(['ok'=>false,'error'=>'El código es obligatorio.']); exit; }
|
|
if (!$nombres) { echo json_encode(['ok'=>false,'error'=>'Los nombres son obligatorios.']); exit; }
|
|
if (!$apellidos) { echo json_encode(['ok'=>false,'error'=>'Los apellidos son obligatorios.']); exit; }
|
|
|
|
$pdo = Database::getInstance()->getConnection();
|
|
|
|
if ($id) {
|
|
// Editar
|
|
$stmt = $pdo->prepare(
|
|
"UPDATE medicos SET codigo=?, nombres=?, apellidos=?, telefonos=?, email=?, cod_especialidad=?, docidmedico=?
|
|
WHERE id=?"
|
|
);
|
|
$stmt->execute([$codigo, $nombres, $apellidos, $telefonos ?: null, $email ?: null, $especialidad ?: null, $docid ?: null, $id]);
|
|
echo json_encode(['ok'=>true,'mensaje'=>'Médico actualizado correctamente.']);
|
|
} else {
|
|
// Crear — verificar código único
|
|
$existe = $pdo->prepare("SELECT id FROM medicos WHERE codigo = ?");
|
|
$existe->execute([$codigo]);
|
|
if ($existe->fetch()) {
|
|
echo json_encode(['ok'=>false,'error'=>"El código '$codigo' ya existe."]); exit;
|
|
}
|
|
$stmt = $pdo->prepare(
|
|
"INSERT INTO medicos (codigo, nombres, apellidos, telefonos, email, cod_especialidad, docidmedico)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?)"
|
|
);
|
|
$stmt->execute([$codigo, $nombres, $apellidos, $telefonos ?: null, $email ?: null, $especialidad ?: null, $docid ?: null]);
|
|
echo json_encode(['ok'=>true,'id'=>(int)$pdo->lastInsertId(),'mensaje'=>'Médico creado correctamente.']);
|
|
}
|