HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/dtw.bradford/app/Imports/ColegiumNursingDataImport.php
<?php

namespace App\Imports;

use Exception;
use Illuminate\Support\Facades\Log;

class ColegiumNursingDataImport extends AbstractChunksImport
{
     protected function getExpectedHeaders(): array
    {
        return [
            'nombre_completo_del_alumno',
            'rut_identificacion',
            'curso',
            'fecha_de_atencion',
            'hora_de_ingreso',
            'motivo_de_consulta',
            'sintomas',
            'diagnostico_preliminar',
            'procedimientos_realizados',
            'medicamentos_administrados',
            'responsable_que_autorizo_si_aplica',
            'derivacion_si_fue_al_medico_casa_urgencias_etc',
            'observaciones_adicionales',
            'firma_o_nombre_de_la_enfermera_responsable',
            'firma_o_contacto_del_apoderado_informado_si_aplica',
            'registro_de_reincidencia_si_aplica',
            'estado_final_del_alumno_retorna_a_clase_se_retira',
            'firma_del_alumno_opcional',
        ];
    }

    protected function getTableName(): string
    {
        return 'colegium_nursing_data';
    }

    protected function getSheetName()
    {
        return 0;
    }

    protected function normalizeRow(array $row, int $numRow): ?array
    {
        $validation_errors = 0;
        $validation_messages = '';

        Log::info("Procesando fila: $numRow");

        try {
            // Validación de data
            if (!empty($row['nombre_completo_del_alumno'])) {
                $nombre_completo_del_alumno = $row['nombre_completo_del_alumno'];
            } else {
                $nombre_completo_del_alumno = null;
            }

            if (!empty($row['rut_identificacion'])) {
                if (!validateRut(trim($row['rut_identificacion']))) {
                    $validation_errors++;
                    $validation_messages .= ($validation_errors) . ': rut_identificacion inválido. ';
                } else {
                    $rut_identificacion = formateaRut($row['rut_identificacion']);
                }
            } else {
                $rut_identificacion = null;
            }

            if (!empty($row['curso'])) {
                $curso = $row['curso'];
            } else {
                $curso = null;
            }

            if (!empty($row['fecha_de_atencion'])) {
                try {
                    $fecha_de_atencion = excelDateToYmd($row['fecha_de_atencion']);
                } catch (Exception $e) {
                    $validation_errors++;
                    $validation_messages .= ($validation_errors) . ': fecha_de_atencion inválida: '  . $row['fecha_de_atencion'];
                }
            } else {
                $fecha_de_atencion = null;
            }

            if (!empty($row['hora_de_ingreso'])) {
                $hora_de_ingreso = $row['hora_de_ingreso'];
            } else {
                $hora_de_ingreso = null;
            }

            if (!empty($row['motivo_de_consulta'])) {
                $motivo_de_consulta = $row['motivo_de_consulta'];
            } else {
                $motivo_de_consulta = null;
            }

            if (!empty($row['sintomas'])) {
                $sintomas = $row['sintomas'];
            } else {
                $sintomas = null;
            }

            if (!empty($row['diagnostico_preliminar'])) {
                $diagnostico_preliminar = $row['diagnostico_preliminar'];
            } else {
                $diagnostico_preliminar = null;
            }

            if (!empty($row['procedimientos_realizados'])) {
                $procedimientos_realizados = $row['procedimientos_realizados'];
            } else {
                $procedimientos_realizados = null;
            }

            if (!empty($row['medicamentos_administrados'])) {
                $medicamentos_administrados = $row['medicamentos_administrados'];
            } else {
                $medicamentos_administrados = null;
            }

            if (!empty($row['responsable_que_autorizo_si_aplica'])) {
                $responsable_que_autorizo_si_aplica = $row['responsable_que_autorizo_si_aplica'];
            } else {
                $responsable_que_autorizo_si_aplica = null;
            }

            if (!empty($row['derivacion_si_fue_al_medico_casa_urgencias_etc'])) {
                $derivacion_si_fue_al_medico_casa_urgencias_etc = $row['derivacion_si_fue_al_medico_casa_urgencias_etc'];
            } else {
                $derivacion_si_fue_al_medico_casa_urgencias_etc = null;
            }

            if (!empty($row['observaciones_adicionales'])) {
                $observaciones_adicionales = $row['observaciones_adicionales'];
            } else {
                $observaciones_adicionales = null;
            }

            if (!empty($row['firma_o_nombre_de_la_enfermera_responsable'])) {
                $firma_o_nombre_de_la_enfermera_responsable = $row['firma_o_nombre_de_la_enfermera_responsable'];
            } else {
                $firma_o_nombre_de_la_enfermera_responsable = null;
            }

            if (!empty($row['firma_o_contacto_del_apoderado_informado_si_aplica'])) {
                $firma_o_contacto_del_apoderado_informado_si_aplica = $row['firma_o_contacto_del_apoderado_informado_si_aplica'];
            } else {
                $firma_o_contacto_del_apoderado_informado_si_aplica = null;
            }

            if (!empty($row['registro_de_reincidencia_si_aplica'])) {
                $registro_de_reincidencia_si_aplica = $row['registro_de_reincidencia_si_aplica'];
            } else {
                $registro_de_reincidencia_si_aplica = null;
            }

            if (!empty($row['estado_final_del_alumno_retorna_a_clase_se_retira'])) {
                $estado_final_del_alumno_retorna_a_clase_se_retira = $row['estado_final_del_alumno_retorna_a_clase_se_retira'];
            } else {
                $estado_final_del_alumno_retorna_a_clase_se_retira = null;
            }

            if (!empty($row['firma_del_alumno_opcional'])) {
                $firma_del_alumno_opcional = $row['firma_del_alumno_opcional'];
            } else {
                $firma_del_alumno_opcional = null;
            }

            if ($validation_errors > 0) {
                $this->hasErrors = true;
                $this->error_data[] = [
                    'numero_de_linea' => $numRow,
                    'errores' => $validation_messages,
                    'fecha_de_carga' => date('d-m-Y H:i'),
                ];
                return null;
            }

            return [
                'student_full_name' => $nombre_completo_del_alumno,
                'student_rut' => $rut_identificacion,
                'student_class' => $curso,
                'attention_date' => $fecha_de_atencion,
                'entry_time' => $hora_de_ingreso,
                'consultation_reason' => $motivo_de_consulta,
                'symptoms' => $sintomas,
                'preliminary_diagnosis' => $diagnostico_preliminar,
                'procedures_done' => $procedimientos_realizados,
                'medications_given' => $medicamentos_administrados,
                'authorized_by' => $responsable_que_autorizo_si_aplica,
                'medical_derivation' => $derivacion_si_fue_al_medico_casa_urgencias_etc,
                'additional_observations' => $observaciones_adicionales,
                'nurse_signature' => $firma_o_nombre_de_la_enfermera_responsable,
                'guardian_contact' => $firma_o_contacto_del_apoderado_informado_si_aplica,
                'recurrence_record' => $registro_de_reincidencia_si_aplica,
                'final_status' => $estado_final_del_alumno_retorna_a_clase_se_retira,
                'student_signature' => $firma_del_alumno_opcional,
                'created_at' => ahoraServidor()
            ];
        } catch (\Throwable $e) {
            $this->error_data[] = [
                'numero_de_linea' => $numRow,
                'errores' => 'Excepción: ' . $e->getMessage(),
                'fecha_de_carga' => date('d-m-Y H:i'),
            ];
            return null;
        }
    }
}