feat(ingest_paciente): modo insertar/upsert — migración inicial no pisa existentes

Nuevo campo 'modo' en el body:
- "insertar": si la cédula ya existe devuelve skipped sin tocar la BD
- "upsert" (default): crea o actualiza como antes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-09 11:05:58 -05:00
co-authored by Claude Sonnet 4.6
parent 3204671edc
commit 046803bd15
+23 -8
View File
@@ -122,7 +122,13 @@ if (!empty($data['eps'])) {
$campos['eps'] = trim($data['eps']);
}
// ── UPSERT ───────────────────────────────────────────────────────────────────
// ── Modo: "insertar" (solo nuevos) | "upsert" (crea o actualiza) ─────────────
$modo = trim($data['modo'] ?? 'upsert');
if (!in_array($modo, ['insertar', 'upsert'], true)) {
$modo = 'upsert';
}
// ── UPSERT / INSERT-ONLY ─────────────────────────────────────────────────────
try {
$pac = new Paciente();
@@ -134,13 +140,22 @@ try {
ob_clean();
if ($existente) {
$pac->actualizar($existente['id'], $campos, null);
echo json_encode([
'ok' => true,
'action' => 'updated',
'id' => $existente['id'],
'message' => 'Paciente actualizado',
]);
if ($modo === 'insertar') {
echo json_encode([
'ok' => true,
'action' => 'skipped',
'id' => $existente['id'],
'message' => 'Paciente ya existe',
]);
} else {
$pac->actualizar($existente['id'], $campos, null);
echo json_encode([
'ok' => true,
'action' => 'updated',
'id' => $existente['id'],
'message' => 'Paciente actualizado',
]);
}
} elseif (!empty($campos['nombre_completo'])) {
$id = $pac->crear($campos, null);
echo json_encode([