diff --git a/api/lab/ingest_diagnosticos.php b/api/lab/ingest_diagnosticos.php new file mode 100644 index 0000000..b10691c --- /dev/null +++ b/api/lab/ingest_diagnosticos.php @@ -0,0 +1,62 @@ + false, 'error' => 'Método no permitido']); + exit; +} + +$keyHeader = $_SERVER['HTTP_X_LAB_KEY'] ?? $_SERVER['HTTP_X_LAB_SYNC_KEY'] ?? ''; +if (!$keyHeader || !hash_equals(LAB_SYNC_KEY, $keyHeader)) { + http_response_code(401); + ob_clean(); + echo json_encode(['ok' => false, 'error' => 'API key inválida']); + exit; +} + +$data = json_decode(file_get_contents('php://input'), true); +if (!is_array($data) || empty($data['rows']) || !is_array($data['rows'])) { + http_response_code(400); + ob_clean(); + echo json_encode(['ok' => false, 'error' => 'Body inválido: se espera {rows: [...]}']); + exit; +} + +try { + $pdo = db(); + $stmt = $pdo->prepare( + "INSERT INTO cie10_diagnosticos (cod_diag, concepto) + VALUES (?, ?) + ON DUPLICATE KEY UPDATE concepto = VALUES(concepto)" + ); + + $insertados = 0; + foreach ($data['rows'] as $row) { + $cod = trim($row['cod'] ?? ''); + $concepto = trim($row['concepto'] ?? ''); + if (!$cod || !$concepto) continue; + $stmt->execute([$cod, $concepto]); + $insertados++; + } + + ob_clean(); + echo json_encode(['ok' => true, 'insertados' => $insertados]); +} catch (Exception $e) { + ob_clean(); + http_response_code(500); + echo json_encode(['ok' => false, 'error' => $e->getMessage()]); +} diff --git a/migrations/20260717_cie10_diagnosticos.sql b/migrations/20260717_cie10_diagnosticos.sql new file mode 100644 index 0000000..d790468 --- /dev/null +++ b/migrations/20260717_cie10_diagnosticos.sql @@ -0,0 +1,6 @@ +-- Migración: tabla CIE-10 diagnósticos desde Firebird +CREATE TABLE IF NOT EXISTS cie10_diagnosticos ( + cod_diag VARCHAR(10) NOT NULL, + concepto VARCHAR(500) NOT NULL, + PRIMARY KEY (cod_diag) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;