File "PacienteNuevo.php"
Full Path: C:/wamp64/www/casos_medicos1/model/PacienteNuevo.php
File size: 5.49 KB
MIME-type: text/x-php
Charset: utf-8
<?php
require_once __DIR__ . '/conexion.php'; // Ruta correcta relativa al modelo
class Paciente {
private $conn;
public function __construct() {
// Instancia de la clase Conexion
$db = new Conexion();
$this->conn = $db->getConexion();
}
public function obtenerAFPs() {
$r = $this->conn->query("SELECT id, nombre FROM afp ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function obtenerEPS() {
$r = $this->conn->query("SELECT id, nombre FROM eps ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function obtenerARL() {
$r = $this->conn->query("SELECT id, nombre FROM arl ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function obtenerEmpresas() {
$r = $this->conn->query("SELECT id, nombre FROM empresa ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function obtenerPlantasPorEmpresa($empresaId) {
$empresaId = intval($empresaId);
$r = $this->conn->query("SELECT id, nombre FROM planta WHERE id_empresa = $empresaId ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function obtenerEstados() {
$r = $this->conn->query("SELECT id, nombre FROM estado ORDER BY nombre");
return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
}
public function guardarPaciente($data, $file) {
// Sanitizar datos básicos
$cedula = $this->conn->real_escape_string($data['cedula']);
$nombre = $this->conn->real_escape_string($data['nombre']);
$fecha_nac = $this->conn->real_escape_string($data['fecha_nacimiento']);
$edad = intval($data['edad']);
$tipo_contrato = $this->conn->real_escape_string($data['tipo_contrato']);
// IDs
$id_afp = intval($data['afp_id'] ?: 0);
$id_eps = intval($data['eps_id'] ?: 0);
$id_arl = intval($data['arl_id'] ?: 0);
$id_empresa = intval($data['empresa_id'] ?: 0);
$id_planta = intval($data['planta_id'] ?: 0);
$id_estado = intval($data['estado_id'] ?: 0);
// Otros
$regional = $this->conn->real_escape_string($data['regional']);
$centro_trabajo = $this->conn->real_escape_string($data['centro_trabajo']);
$cargo_inicial = $this->conn->real_escape_string($data['cargo_inicial']);
$fecha_inicio = $this->conn->real_escape_string($data['fecha_inicio']);
$tipo_rehabilitacion = $this->conn->real_escape_string($data['tipo_rehabilitacion']);
$cargo_reubicado = $this->conn->real_escape_string($data['cargo_reubicado']);
$productividad = $data['productividad'] !== '' ? floatval($data['productividad']) : 'NULL';
$semanas_cotizacion = $data['semanas_cotizacion'] !== '' ? intval($data['semanas_cotizacion']) : 'NULL';
// Manejo de foto
$foto_path = '';
if (!empty($file['foto']['name'])) {
$uploads = __DIR__ . '/../uploads';
if (!is_dir($uploads)) mkdir($uploads, 0755, true);
$name = time() . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '_', basename($file['foto']['name']));
$destino = $uploads . '/' . $name;
if (move_uploaded_file($file['foto']['tmp_name'], $destino)) {
$foto_path = "uploads/$name";
}
}
// Revisar si existe la cédula
$check = $this->conn->query("SELECT id, foto FROM hoja_vida WHERE cedula = '$cedula' LIMIT 1");
// Si existe → UPDATE
if ($check->num_rows > 0) {
$row = $check->fetch_assoc();
$foto_sql = !empty($foto_path) ? ", foto = '$foto_path'" : "";
$sql = "
UPDATE hoja_vida SET
nombre = '$nombre',
fecha_nacimiento = '$fecha_nac',
edad = $edad,
id_afp = $id_afp,
id_eps = $id_eps,
id_arl = $id_arl,
tipo_contrato = '$tipo_contrato',
id_empresa = $id_empresa,
id_planta = $id_planta,
regional = '$regional',
centro_trabajo = '$centro_trabajo',
cargo_inicial = '$cargo_inicial',
fecha_inicio = '$fecha_inicio',
tipo_rehabilitacion = '$tipo_rehabilitacion',
cargo_reubicado = '$cargo_reubicado',
productividad = $productividad,
semanas_cotizacion = $semanas_cotizacion,
id_estado = $id_estado
$foto_sql
WHERE cedula = '$cedula'
";
}
else {
// INSERT
$sql = "
INSERT INTO hoja_vida (
cedula, nombre, foto, fecha_nacimiento, edad,
id_afp, id_eps, id_arl, tipo_contrato,
id_empresa, id_planta, regional, centro_trabajo,
cargo_inicial, fecha_inicio, tipo_rehabilitacion,
cargo_reubicado, productividad, semanas_cotizacion, id_estado
) VALUES (
'$cedula', '$nombre',
" . (!empty($foto_path) ? "'$foto_path'" : "NULL") . ",
'$fecha_nac', $edad,
$id_afp, $id_eps, $id_arl, '$tipo_contrato',
$id_empresa, $id_planta, '$regional', '$centro_trabajo',
'$cargo_inicial', '$fecha_inicio', '$tipo_rehabilitacion',
'$cargo_reubicado', $productividad, $semanas_cotizacion, $id_estado
)
";
}
return $this->conn->query($sql);
}
}