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;
}
}
}