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:
co-authored by
Claude Sonnet 4.6
parent
3204671edc
commit
046803bd15
@@ -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([
|
||||
|
||||
Reference in New Issue
Block a user