<?php
//Incluímos inicialmente la conexión a la base de datos
require_once "../config/Conexion.php";

class Resultado
{
    //Implementamos nuestro constructor
    public function __construct()
    {
    }

    // -------------------------------------------------------------------------
    // Helpers internos para sincronizar la receta con atencion_formatos (JSON)
    // -------------------------------------------------------------------------
    // Asegura que las columnas datos_json y fecha_modificacion existan en
    // atencion_formatos. Usa ADD COLUMN IF NOT EXISTS (MariaDB 10.0.2+).
    // Si la sentencia falla por permisos o version, lo registra y sigue.
    private function ensurarColumnasAtencionFormatos()
    {
        @ejecutarConsulta("ALTER TABLE `atencion_formatos`
            ADD COLUMN IF NOT EXISTS `datos_json` LONGTEXT NULL,
            ADD COLUMN IF NOT EXISTS `fecha_modificacion` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
            ADD COLUMN IF NOT EXISTS `usuario_creacion` int(11) NULL");
    }

    // Guarda los medicamentos como JSON estructurado en atencion_formatos.
    // Esto hace que Persona::imprimirReceta funcione via JSON moderno aunque
    // la tabla legacy `receta` no exista o tenga estructura distinta.
    private function sincronizarRecetaJson(
        $idatencion, $medicamento, $concentracion, $presentacion,
        $dosis, $duracion, $cantidad, $via_administracion, $posologia
    ) {
        if (!is_array($medicamento) || count($medicamento) === 0) {
            return;
        }
        // No persistir si todos los nombres estan vacios
        $hayAlguno = false;
        foreach ($medicamento as $m) {
            if (trim((string)$m) !== '') { $hayAlguno = true; break; }
        }
        if (!$hayAlguno) {
            return;
        }

        $this->ensurarColumnasAtencionFormatos();

        $payload = [
            'medicamento'         => array_values((array)$medicamento),
            'concentracion'       => array_values((array)($concentracion ?? [])),
            'presentacion'        => array_values((array)($presentacion ?? [])),
            'dosis'               => array_values((array)($dosis ?? [])),
            'duracion'            => array_values((array)($duracion ?? [])),
            'cantidad'            => array_values((array)($cantidad ?? [])),
            'via_administracion'  => array_values((array)($via_administracion ?? [])),
            'posologia'           => array_values((array)($posologia ?? [])),
        ];
        $json = json_encode($payload, JSON_UNESCAPED_UNICODE);
        if ($json === false) {
            error_log('[Resultado::sincronizarRecetaJson] json_encode fallo para idatencion ' . $idatencion);
            return;
        }
        // Escapar comillas simples para SQL interpolado (consistente con el resto del modelo)
        $jsonEsc = str_replace("'", "\\'", $json);

        $check = ejecutarConsultaSimpleFila(
            "SELECT id_atencion_formato FROM atencion_formatos
             WHERE idatencion='$idatencion' AND tipo_formato='RECETA' LIMIT 1"
        );
        if ($check && isset($check['id_atencion_formato'])) {
            $idFmt = $check['id_atencion_formato'];
            @ejecutarConsulta(
                "UPDATE atencion_formatos
                 SET datos_json='$jsonEsc', fecha_modificacion=NOW()
                 WHERE id_atencion_formato='$idFmt'"
            );
        } else {
            @ejecutarConsulta(
                "INSERT INTO atencion_formatos
                   (idatencion, tipo_formato, estado, datos_json, fecha_creacion, fecha_modificacion)
                 VALUES
                   ('$idatencion', 'RECETA', 'pendiente', '$jsonEsc', NOW(), NOW())"
            );
        }
    }

    //Implementamos un método para insertar registros
    public function insertar(
        $idatencion,
        $motivo_consulta,
        $tiempo_enfermedad,
        $antecedentes,
        $examen_fisico,
        $tratamiento,
        $signnose_de_alarma,
        $Indicaciones_no_farmacologicas,
        $proxima_cita,
        $iddiagnostico,
        $tipo,
        $plan,
        $alergia,
        $intervenciones_quirurgicas,
        $vacunas_completas,
        $idpersona,
        $medicamento,
        $concentracion,
        $presentacion,
        $dosis,
        $duracion,
        $cantidad,
        $via_administracion,
        $posologia,
        $presion_arterial,
        $temperatura,
        $frecuencia_respiratoria,
        $frecuencia_cardiaca,
        $saturacion,
        $peso,
        $talla,
        $imc,
        $vigencia,
        $tipo_formato,
        $datos_clinicos
    ) {

        //Actualizamos el estado de la atención
        $sql2 = "UPDATE atencion set estado='Atendido' WHERE idatencion='$idatencion'";
        ejecutarConsulta($sql2);

        //Insertamos el resultado
        $sql = "INSERT INTO resultado (
        idatencion, motivo_consulta, tiempo_enfermedad, antecedentes,
        examen_fisico, tratamiento,signnose_de_alarma,Indicaciones_no_farmacologicas,
        proxima_cita, estado, plan, fecha, hora, vigencia, tipo_formato, datos_clinicos
        ) VALUES (
            '$idatencion', '$motivo_consulta', '$tiempo_enfermedad', '$antecedentes',
            '$examen_fisico', '$tratamiento','$signnose_de_alarma','$Indicaciones_no_farmacologicas','$proxima_cita', 'Atendido',
            '$plan', curdate(), curtime(), '$vigencia', '$tipo_formato', '$datos_clinicos')";

        $idresultadonew = ejecutarConsulta_retornarID($sql);

        //Insertamos los diagnósticos
        $num_elementos = 0;
        $sw = true;

        while ($num_elementos < count($iddiagnostico)) {
            $sql_detalle = "INSERT INTO detalle_diagnostico(idresultado,iddiagnostico,tipo) VALUES('$idresultadonew','$iddiagnostico[$num_elementos]','$tipo[$num_elementos]')";
            ejecutarConsulta($sql_detalle) or $sw = false;
            $num_elementos = $num_elementos + 1;
        }

        //Insertamos las recetas
        $num_elementos2 = 0;

        while ($num_elementos2 < count($medicamento)) {
            $dosis_val = isset($dosis[$num_elementos2]) ? $dosis[$num_elementos2] : '';
            $duracion_val = isset($duracion[$num_elementos2]) ? $duracion[$num_elementos2] : '';
            $via_val = isset($via_administracion[$num_elementos2]) ? $via_administracion[$num_elementos2] : '';
            $posologia_val = isset($posologia[$num_elementos2]) ? $posologia[$num_elementos2] : '';
            $concentracion_val = isset($concentracion[$num_elementos2]) ? $concentracion[$num_elementos2] : '';

            $sql_recetas = "INSERT INTO receta(idatencion,medicamento,concentracion,presentacion,via_administracion,dosis,duracion,cantidad,posologia) VALUES('$idatencion','$medicamento[$num_elementos2]','$concentracion_val','$presentacion[$num_elementos2]','$via_val','$dosis_val','$duracion_val','$cantidad[$num_elementos2]','$posologia_val')";
            ejecutarConsulta($sql_recetas) or $sw = false;
            $num_elementos2 = $num_elementos2 + 1;
        }

        // Sincronizar JSON moderno en atencion_formatos (fuente unica de verdad)
        // Esto blinda la lectura contra fallas o ausencia de la tabla legacy `receta`.
        $this->sincronizarRecetaJson(
            $idatencion, $medicamento, $concentracion, $presentacion,
            $dosis, $duracion, $cantidad, $via_administracion, $posologia
        );

        //Actualizamos el paciente
        $sql3 = "UPDATE persona set alergia='$alergia',intervenciones_quirurgicas='$intervenciones_quirurgicas',vacunas_completas='$vacunas_completas' WHERE idpersona='$idpersona'";
        ejecutarConsulta($sql3);

        //Actualizamos el triaje
        $sql4 = "UPDATE triaje set presion_arterial='$presion_arterial',temperatura='$temperatura',frecuencia_respiratoria='$frecuencia_respiratoria',frecuencia_cardiaca='$frecuencia_cardiaca',saturacion='$saturacion',peso='$peso',talla='$talla',imc='$imc' WHERE idatencion='$idatencion'";
        ejecutarConsulta($sql4);

        return $sw;
    }

    //Implementamos un método para editar registros
    public function editar($idatencion, $idresultado, $motivo_consulta, $tiempo_enfermedad, $antecedentes, $examen_fisico, $tratamiento, $proxima_cita, $iddiagnostico, $tipo, $plan, $alergia, $intervenciones_quirurgicas, $vacunas_completas, $idpersona, $medicamento, $concentracion, $presentacion, $dosis, $duracion, $cantidad, $via_administracion, $posologia, $presion_arterial, $temperatura, $frecuencia_respiratoria, $frecuencia_cardiaca, $saturacion, $peso, $talla, $imc, $vigencia, $tipo_formato, $datos_clinicos)
    {

        //Actualizamos el estado de la atención
        //$sql2="UPDATE atencion set estado='Atendido' WHERE idatencion='$idatencion'";
        //ejecutarConsulta($sql2);

        //actualizamos el resultado
        $sql = "UPDATE resultado  set motivo_consulta='$motivo_consulta', tiempo_enfermedad='$tiempo_enfermedad', antecedentes='$antecedentes', examen_fisico='$examen_fisico', tratamiento='$tratamiento', proxima_cita='$proxima_cita', plan='$plan',fecha=curdate(),hora=curtime(),vigencia='$vigencia', tipo_formato='$tipo_formato', datos_clinicos='$datos_clinicos' WHERE idresultado='$idresultado'";
        ejecutarConsulta($sql);

        //Antes de insertar los diagnósticos, eliminamos los antiguos
        $sqldd = "DELETE FROM detalle_diagnostico WHERE idresultado='$idresultado'";
        ejecutarConsulta($sqldd);

        //Insertamos los diagnósticos
        $num_elementos = 0;
        $sw = true;

        while ($num_elementos < count($iddiagnostico)) {
            $sql_detalle = "INSERT INTO detalle_diagnostico(idresultado,iddiagnostico,tipo) VALUES('$idresultado','$iddiagnostico[$num_elementos]','$tipo[$num_elementos]')";
            ejecutarConsulta($sql_detalle) or $sw = false;
            $num_elementos = $num_elementos + 1;
        }

        //Antes de insertar la receta, eliminamos las recetas antiguas
        $sqldr = "DELETE FROM receta WHERE idatencion='$idatencion'";
        ejecutarConsulta($sqldr);

        //Insertamos las recetas
        $num_elementos2 = 0;

        while ($num_elementos2 < count($medicamento)) {
            $dosis_val = isset($dosis[$num_elementos2]) ? $dosis[$num_elementos2] : '';
            $duracion_val = isset($duracion[$num_elementos2]) ? $duracion[$num_elementos2] : '';
            $via_val = isset($via_administracion[$num_elementos2]) ? $via_administracion[$num_elementos2] : '';
            $posologia_val = isset($posologia[$num_elementos2]) ? $posologia[$num_elementos2] : '';
            $concentracion_val = isset($concentracion[$num_elementos2]) ? $concentracion[$num_elementos2] : '';

            $sql_recetas = "INSERT INTO receta(idatencion,medicamento,concentracion,presentacion,via_administracion,dosis,duracion,cantidad,posologia) VALUES('$idatencion','$medicamento[$num_elementos2]','$concentracion_val','$presentacion[$num_elementos2]','$via_val','$dosis_val','$duracion_val','$cantidad[$num_elementos2]','$posologia_val')";
            ejecutarConsulta($sql_recetas) or $sw = false;
            $num_elementos2 = $num_elementos2 + 1;
        }

        // Sincronizar JSON moderno en atencion_formatos (igual que en insertar).
        $this->sincronizarRecetaJson(
            $idatencion, $medicamento, $concentracion, $presentacion,
            $dosis, $duracion, $cantidad, $via_administracion, $posologia
        );

        //Actualizamos el paciente
        $sql3 = "UPDATE persona set alergia='$alergia',intervenciones_quirurgicas='$intervenciones_quirurgicas',vacunas_completas='$vacunas_completas' WHERE idpersona='$idpersona'";
        ejecutarConsulta($sql3);

        //Actualizamos el triaje
        $sql4 = "UPDATE triaje set presion_arterial='$presion_arterial',temperatura='$temperatura',frecuencia_respiratoria='$frecuencia_respiratoria',frecuencia_cardiaca='$frecuencia_cardiaca',saturacion='$saturacion',peso='$peso',talla='$talla',imc='$imc' WHERE idatencion='$idatencion'";
        ejecutarConsulta($sql4);

        return $sw;
    }


    //Implementar un método para mostrar los datos de un registro a modificar
    public function mostrar($idatencion)
    {
        $sql = "SELECT a.idatencion,a.idpersona,concat(p.apaterno,' ',p.amaterno,' ',p.nombre) as paciente,CONCAT((YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1, 
IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento),IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0))),' años, ',(MONTH(CURDATE()) - MONTH( fecha_nacimiento) + 12 * IF( MONTH(CURDATE())<MONTH(fecha_nacimiento), 1,IF(MONTH(CURDATE())=MONTH(fecha_nacimiento),IF (DAY(CURDATE())<DAY(fecha_nacimiento),1,0),0)) - IF(MONTH(CURDATE())<>MONTH(fecha_nacimiento),(DAY(CURDATE())<DAY(fecha_nacimiento)), IF (DAY(CURDATE())<DAY(fecha_nacimiento),1,0 ))),' meses, ',(DAY( CURDATE( ) ) - DAY( fecha_nacimiento ) +30 * ( DAY(CURDATE( )) < DAY(fecha_nacimiento) )),' días') as edad,p.num_documento,p.alergia,p.intervenciones_quirurgicas,p.vacunas_completas,p.sexo,p.tipo_sangre,p.persona_responsable,p.fecha_nacimiento,a.fecha,(select concat(apaterno,' ',amaterno,' ',nombre) from persona where idpersona=a.idempleado) as especialista,s.nombre as servicio,t.presion_arterial,t.temperatura,t.frecuencia_respiratoria,t.frecuencia_cardiaca,t.saturacion,t.peso,t.talla,t.imc FROM atencion a INNER JOIN persona p ON a.idpersona=p.idpersona inner join servicio s on a.idservicio=s.idservicio LEFT JOIN triaje t ON a.idatencion=t.idatencion WHERE a.idatencion='$idatencion'";
        return ejecutarConsultaSimpleFila($sql);
    }


    //Implementar un método para mostrar los datos de la atención que se va a modificar
    public function modificar($idatencion)
    {
        $sql = "SELECT a.idatencion, a.estado, a.idpersona,concat(p.apaterno,' ',p.amaterno,' ',p.nombre) as paciente,CONCAT((YEAR( CURDATE( ) ) - YEAR( fecha_nacimiento ) - IF( MONTH( CURDATE( ) ) < MONTH( fecha_nacimiento), 1, 
IF ( MONTH(CURDATE( )) = MONTH(fecha_nacimiento),IF (DAY( CURDATE( ) ) < DAY( fecha_nacimiento ),1,0 ),0))),' años, ',(MONTH(CURDATE()) - MONTH( fecha_nacimiento) + 12 * IF( MONTH(CURDATE())<MONTH(fecha_nacimiento), 1,IF(MONTH(CURDATE())=MONTH(fecha_nacimiento),IF (DAY(CURDATE())<DAY(fecha_nacimiento),1,0),0)) - IF(MONTH(CURDATE())<>MONTH(fecha_nacimiento),(DAY(CURDATE())<DAY(fecha_nacimiento)), IF (DAY(CURDATE())<DAY(fecha_nacimiento),1,0 ))),' meses, ',(DAY( CURDATE( ) ) - DAY( fecha_nacimiento ) +30 * ( DAY(CURDATE( )) < DAY(fecha_nacimiento) )),' días') as edad,p.num_documento,p.alergia,p.intervenciones_quirurgicas,p.vacunas_completas,p.sexo,p.tipo_sangre,p.persona_responsable,p.fecha_nacimiento,a.fecha,(select concat(apaterno,' ',amaterno,' ',nombre) from persona where idpersona=a.idempleado) as especialista,s.nombre as servicio,t.presion_arterial,t.temperatura,t.frecuencia_respiratoria,t.frecuencia_cardiaca,t.saturacion,t.peso,t.talla,t.imc,r.motivo_consulta,r.idresultado,r.tiempo_enfermedad,r.antecedentes,r.examen_fisico,r.tratamiento,r.proxima_cita,r.plan,r.tipo_formato,r.datos_clinicos,coalesce(img.img_varios, '../public/img/no-image.png') as img_varios,coalesce(img.img_eco, '../public/img/no-image.png') as img_eco, coalesce(img.img_inv, '../public/img/no-image.png') as img_inv, coalesce(img.img_rx, '../public/img/no-image.png') as img_rx FROM atencion a INNER JOIN persona p ON a.idpersona=p.idpersona inner join servicio s on a.idservicio=s.idservicio LEFT JOIN triaje t ON t.idtriaje = (SELECT MAX(idtriaje) FROM triaje WHERE idatencion = a.idatencion) LEFT JOIN resultado r ON a.idatencion=r.idatencion LEFT JOIN imagenes img on img.id_atencion = r.idatencion  WHERE a.idatencion='$idatencion'";

        return ejecutarConsultaSimpleFila($sql);
    }

    //Implementar un método para listar las recetas
    public function listarRecetas($idatencion)
    {
        $sql = "SELECT * FROM receta WHERE idatencion='$idatencion'";
        return ejecutarConsulta($sql);
    }

    //Implementar un método para listar los diagnosticos
    public function listarDetalles($idresultado)
    {
        $sql = "SELECT d.iddiagnostico,concat(d.codigo,'-',d.enfermedad) as nenfermedad,dd.tipo FROM detalle_diagnostico dd INNER JOIN diagnostico d ON d.iddiagnostico=dd.iddiagnostico WHERE idresultado='$idresultado'";
        return ejecutarConsulta($sql);
    }

    public function guardarImagenes($idpersona, $idatencion, $varios, $ecografias, $examenes_invasivos, $rayosX)
    {
        $fields = array(
            'id_persona' => $idpersona,
            'id_atencion' => $idatencion,
            'img_varios' => $varios,
            'img_eco' => $ecografias,
            'img_inv' => $examenes_invasivos,
            'img_rx' => $rayosX,
        );
        return insertIntoTable('imagenes', $fields);
    }

    public function actualizarImagenes($idpersona, $idatencion, $varios, $ecografias, $examenes_invasivos, $rayosX)
    {
        $fields = array();
        if (!is_null($varios)) {
            $fields['img_varios'] = $varios;
        }
        if (!is_null($ecografias)) {
            $fields['img_eco'] = $ecografias;
        }
        if (!is_null($examenes_invasivos)) {
            $fields['img_inv'] = $examenes_invasivos;
        }
        if (!is_null($rayosX)) {
            $fields['img_rx'] = $rayosX;
        }
        $whereClause = "id_persona = $idpersona and id_atencion = $idatencion";
        return updateTableRow('imagenes', $fields, $whereClause);
    }
    // ===============================================
    // MÉTODOS PARA FORMATOS MSP ESPECÍFICOS
    // ===============================================

    public function insertar_msp_001($idatencion, $datos)
    {
        $tipo_admision = isset($datos['tipo_admision']) ? $datos['tipo_admision'] : '';
        $establecimiento_origen = isset($datos['establecimiento_origen']) ? $datos['establecimiento_origen'] : '';
        $numero_historia_clinica = isset($datos['numero_historia_clinica']) ? $datos['numero_historia_clinica'] : '';
        $grupo_etnico = isset($datos['grupo_etnico']) ? $datos['grupo_etnico'] : '';
        $pueblo_nacionalidad = isset($datos['pueblo_nacionalidad']) ? $datos['pueblo_nacionalidad'] : '';
        $nivel_instruccion = isset($datos['nivel_instruccion']) ? $datos['nivel_instruccion'] : '';
        $ocupacion_actual = isset($datos['ocupacion_actual']) ? $datos['ocupacion_actual'] : '';
        $empresa_trabajo = isset($datos['empresa_trabajo']) ? $datos['empresa_trabajo'] : '';
        $seguro_salud = isset($datos['seguro_salud']) ? $datos['seguro_salud'] : '';
        $tipo_vivienda = isset($datos['tipo_vivienda']) ? $datos['tipo_vivienda'] : '';
        $servicios_basicos = isset($datos['servicios_basicos']) ? $datos['servicios_basicos'] : '';
        $animales_domesticos = isset($datos['animales_domesticos']) ? $datos['animales_domesticos'] : '';
        $fecha_egreso = isset($datos['fecha_egreso']) ? $datos['fecha_egreso'] : '';
        $hora_egreso = isset($datos['hora_egreso']) ? $datos['hora_egreso'] : '';
        $dias_estancia = isset($datos['dias_estancia']) ? $datos['dias_estancia'] : '';
        $condicion_egreso = isset($datos['condicion_egreso']) ? $datos['condicion_egreso'] : '';
        $destino_egreso = isset($datos['destino_egreso']) ? $datos['destino_egreso'] : '';

        $sql = "REPLACE INTO msp_001_admision (
            idatencion, tipo_admision, establecimiento_origen, numero_historia_clinica,
            grupo_etnico, pueblo_nacionalidad, nivel_instruccion, ocupacion_actual,
            empresa_trabajo, seguro_salud, tipo_vivienda, servicios_basicos,
            animales_domesticos, fecha_egreso, hora_egreso, dias_estancia,
            condicion_egreso, destino_egreso
        ) VALUES (
            '$idatencion', '$tipo_admision', '$establecimiento_origen', '$numero_historia_clinica',
            '$grupo_etnico', '$pueblo_nacionalidad', '$nivel_instruccion', '$ocupacion_actual',
            '$empresa_trabajo', '$seguro_salud', '$tipo_vivienda', '$servicios_basicos',
            '$animales_domesticos', '$fecha_egreso', '$hora_egreso', '$dias_estancia',
            '$condicion_egreso', '$destino_egreso'
        )";
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_002($idatencion, $datos)
    {
        $motivo_consulta = isset($datos['motivo_consulta']) ? $datos['motivo_consulta'] : '';
        $antecedentes_personales = isset($datos['antecedentes_personales']) ? $datos['antecedentes_personales'] : '';
        
        $ant_fam_cardiopatia = isset($datos['ant_fam_cardiopatia']) ? 1 : 0;
        $ant_fam_diabetes = isset($datos['ant_fam_diabetes']) ? 1 : 0;
        $ant_fam_enf_vascular = isset($datos['ant_fam_enf_vascular']) ? 1 : 0;
        $ant_fam_hipertension = isset($datos['ant_fam_hipertension']) ? 1 : 0;
        $ant_fam_cancer = isset($datos['ant_fam_cancer']) ? 1 : 0;
        $ant_fam_tuberculosis = isset($datos['ant_fam_tuberculosis']) ? 1 : 0;
        $ant_fam_enf_mental = isset($datos['ant_fam_enf_mental']) ? 1 : 0;
        $ant_fam_enf_infecciosa = isset($datos['ant_fam_enf_infecciosa']) ? 1 : 0;
        $ant_fam_malformacion = isset($datos['ant_fam_malformacion']) ? 1 : 0;
        $ant_fam_otro = isset($datos['ant_fam_otro']) ? 1 : 0;
        $antecedentes_familiares_obs = isset($datos['antecedentes_familiares_obs']) ? $datos['antecedentes_familiares_obs'] : '';
        
        $enfermedad_actual = isset($datos['enfermedad_actual']) ? $datos['enfermedad_actual'] : '';
        
        $rev_sentidos = isset($datos['rev_sentidos']) ? $datos['rev_sentidos'] : 'SP';
        $rev_respiratorio = isset($datos['rev_respiratorio']) ? $datos['rev_respiratorio'] : 'SP';
        $rev_cardio_vascular = isset($datos['rev_cardio_vascular']) ? $datos['rev_cardio_vascular'] : 'SP';
        $rev_digestivo = isset($datos['rev_digestivo']) ? $datos['rev_digestivo'] : 'SP';
        $rev_genital = isset($datos['rev_genital']) ? $datos['rev_genital'] : 'SP';
        $rev_urinario = isset($datos['rev_urinario']) ? $datos['rev_urinario'] : 'SP';
        $rev_musculo_esqueletico = isset($datos['rev_musculo_esqueletico']) ? $datos['rev_musculo_esqueletico'] : 'SP';
        $rev_endocrino = isset($datos['rev_endocrino']) ? $datos['rev_endocrino'] : 'SP';
        $rev_hemo_linfatico = isset($datos['rev_hemo_linfatico']) ? $datos['rev_hemo_linfatico'] : 'SP';
        $rev_nervioso = isset($datos['rev_nervioso']) ? $datos['rev_nervioso'] : 'SP';
        $rev_sistemas_obs = isset($datos['rev_sistemas_obs']) ? $datos['rev_sistemas_obs'] : '';
        
        $ef_cabeza = isset($datos['ef_cabeza']) ? $datos['ef_cabeza'] : 'SP';
        $ef_cuello = isset($datos['ef_cuello']) ? $datos['ef_cuello'] : 'SP';
        $ef_torax = isset($datos['ef_torax']) ? $datos['ef_torax'] : 'SP';
        $ef_abdomen = isset($datos['ef_abdomen']) ? $datos['ef_abdomen'] : 'SP';
        $ef_pelvis = isset($datos['ef_pelvis']) ? $datos['ef_pelvis'] : 'SP';
        $ef_extremidades = isset($datos['ef_extremidades']) ? $datos['ef_extremidades'] : 'SP';
        $examen_fisico_obs = isset($datos['examen_fisico']) ? $datos['examen_fisico'] : ''; // Map name 'examen_fisico' to obs
        
        $tratamiento_plan = isset($datos['tratamiento']) ? $datos['tratamiento'] : '';

        $sql = "REPLACE INTO msp_002_consulta_externa (
            idatencion, motivo_consulta, antecedentes_personales, 
            ant_fam_cardiopatia, ant_fam_diabetes, ant_fam_enf_vascular, ant_fam_hipertension,
            ant_fam_cancer, ant_fam_tuberculosis, ant_fam_enf_mental, ant_fam_enf_infecciosa,
            ant_fam_malformacion, ant_fam_otro, antecedentes_familiares_obs,
            enfermedad_actual, rev_sentidos, rev_respiratorio, rev_cardio_vascular,
            rev_digestivo, rev_genital, rev_urinario, rev_musculo_esqueletico,
            rev_endocrino, rev_hemo_linfatico, rev_nervioso, rev_sistemas_obs,
            ef_cabeza, ef_cuello, ef_torax, ef_abdomen, ef_pelvis, ef_extremidades,
            examen_fisico_obs, tratamiento_plan
        ) VALUES (
            '$idatencion', '$motivo_consulta', '$antecedentes_personales',
            '$ant_fam_cardiopatia', '$ant_fam_diabetes', '$ant_fam_enf_vascular', '$ant_fam_hipertension',
            '$ant_fam_cancer', '$ant_fam_tuberculosis', '$ant_fam_enf_mental', '$ant_fam_enf_infecciosa',
            '$ant_fam_malformacion', '$ant_fam_otro', '$antecedentes_familiares_obs',
            '$enfermedad_actual', '$rev_sentidos', '$rev_respiratorio', '$rev_cardio_vascular',
            '$rev_digestivo', '$rev_genital', '$rev_urinario', '$rev_musculo_esqueletico',
            '$rev_endocrino', '$rev_hemo_linfatico', '$rev_nervioso', '$rev_sistemas_obs',
            '$ef_cabeza', '$ef_cuello', '$ef_torax', '$ef_abdomen', '$ef_pelvis', '$ef_extremidades',
            '$examen_fisico_obs', '$tratamiento_plan'
        )";
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_008($idatencion, $datos)
    {
        $fecha_ingreso = isset($datos['fecha_ingreso']) ? $datos['fecha_ingreso'] : '';
        $hora_ingreso = isset($datos['hora_ingreso']) ? $datos['hora_ingreso'] : '';
        $medio_llegada = isset($datos['medio_llegada']) ? $datos['medio_llegada'] : '';
        $acompañante = isset($datos['acompañante']) ? $datos['acompañante'] : '';
        $clasificacion_triaje = isset($datos['clasificacion_triaje']) ? $datos['clasificacion_triaje'] : '';
        $prioridad = isset($datos['prioridad']) ? $datos['prioridad'] : '';
        $motivo_consulta_emergencia = isset($datos['motivo_consulta_emergencia']) ? $datos['motivo_consulta_emergencia'] : '';
        $sintomas_principales = isset($datos['sintomas_principales']) ? $datos['sintomas_principales'] : '';
        $tiempo_evolucion = isset($datos['tiempo_evolucion']) ? $datos['tiempo_evolucion'] : '';
        $pa_emergencia = isset($datos['pa_emergencia']) ? $datos['pa_emergencia'] : '';
        $fc_emergencia = isset($datos['fc_emergencia']) ? $datos['fc_emergencia'] : '';
        $fr_emergencia = isset($datos['fr_emergencia']) ? $datos['fr_emergencia'] : '';
        $temp_emergencia = isset($datos['temp_emergencia']) ? $datos['temp_emergencia'] : '';
        $sat_o2_emergencia = isset($datos['sat_o2_emergencia']) ? $datos['sat_o2_emergencia'] : '';
        $glasgow_total = isset($datos['glasgow_total']) ? $datos['glasgow_total'] : '';
        $glasgow_ocular = isset($datos['glasgow_ocular']) ? $datos['glasgow_ocular'] : '';
        $glasgow_verbal = isset($datos['glasgow_verbal']) ? $datos['glasgow_verbal'] : '';
        $glasgow_motor = isset($datos['glasgow_motor']) ? $datos['glasgow_motor'] : '';
        $diagnostico_emergencia = isset($datos['diagnostico_emergencia']) ? $datos['diagnostico_emergencia'] : '';
        $tratamiento_emergencia = isset($datos['tratamiento_emergencia']) ? $datos['tratamiento_emergencia'] : '';
        $procedimientos_emergencia = isset($datos['procedimientos_emergencia']) ? $datos['procedimientos_emergencia'] : '';
        $destino = isset($datos['destino']) ? $datos['destino'] : '';
        $observaciones_destino = isset($datos['observaciones_destino']) ? $datos['observaciones_destino'] : '';
        $fecha_salida_emergencia = isset($datos['fecha_salida_emergencia']) ? $datos['fecha_salida_emergencia'] : '';
        $hora_salida_emergencia = isset($datos['hora_salida_emergencia']) ? $datos['hora_salida_emergencia'] : '';

        $sql = "REPLACE INTO msp_008_emergencia (
            idatencion, fecha_ingreso, hora_ingreso, medio_llegada, acompañante,
            clasificacion_triaje, prioridad, motivo_consulta_emergencia, sintomas_principales,
            tiempo_evolucion, pa_emergencia, fc_emergencia, fr_emergencia,
            temp_emergencia, sat_o2_emergencia, glasgow_total, glasgow_ocular,
            glasgow_verbal, glasgow_motor, diagnostico_emergencia, tratamiento_emergencia,
            procedimientos_emergencia, destino, observaciones_destino,
            fecha_salida_emergencia, hora_salida_emergencia
        ) VALUES (
            '$idatencion', '$fecha_ingreso', '$hora_ingreso', '$medio_llegada', '$acompañante',
            '$clasificacion_triaje', '$prioridad', '$motivo_consulta_emergencia', '$sintomas_principales',
            '$tiempo_evolucion', '$pa_emergencia', '$fc_emergencia', '$fr_emergencia',
            '$temp_emergencia', '$sat_o2_emergencia', '$glasgow_total', '$glasgow_ocular',
            '$glasgow_verbal', '$glasgow_motor', '$diagnostico_emergencia', '$tratamiento_emergencia',
            '$procedimientos_emergencia', '$destino', '$observaciones_destino',
            '$fecha_salida_emergencia', '$hora_salida_emergencia'
        )";
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_003($idatencion, $datos)
    {
        $fecha_ingreso = isset($datos['fecha_ingreso']) ? $datos['fecha_ingreso'] : '';
        $hora_ingreso = isset($datos['hora_ingreso']) ? $datos['hora_ingreso'] : '';
        $servicio_ingreso = isset($datos['servicio_ingreso']) ? $datos['servicio_ingreso'] : '';
        $cama = isset($datos['cama']) ? $datos['cama'] : '';
        $sala = isset($datos['sala']) ? $datos['sala'] : '';

        $motivo_consulta = isset($datos['motivo_consulta']) ? $datos['motivo_consulta'] : '';
        $antecedentes_personales = isset($datos['antecedentes_personales']) ? $datos['antecedentes_personales'] : '';
        $antecedentes_familiares = isset($datos['antecedentes_familiares']) ? $datos['antecedentes_familiares'] : '';
        $alergias = isset($datos['alergias']) ? $datos['alergias'] : '';
        $enfermedad_actual = isset($datos['enfermedad_actual']) ? $datos['enfermedad_actual'] : '';

        $rev_sentidos = isset($datos['rev_sentidos']) ? $datos['rev_sentidos'] : '';
        $rev_respiratorio = isset($datos['rev_respiratorio']) ? $datos['rev_respiratorio'] : '';
        $rev_cardio_vascular = isset($datos['rev_cardio_vascular']) ? $datos['rev_cardio_vascular'] : '';
        $rev_digestivo = isset($datos['rev_digestivo']) ? $datos['rev_digestivo'] : '';
        $rev_genito_urinario = isset($datos['rev_genito_urinario']) ? $datos['rev_genito_urinario'] : '';
        $rev_musculo_esqueletico = isset($datos['rev_musculo_esqueletico']) ? $datos['rev_musculo_esqueletico'] : '';
        $rev_endocrino = isset($datos['rev_endocrino']) ? $datos['rev_endocrino'] : '';
        $rev_nervioso = isset($datos['rev_nervioso']) ? $datos['rev_nervioso'] : '';
        $rev_hemo_linfatico = isset($datos['rev_hemo_linfatico']) ? $datos['rev_hemo_linfatico'] : '';

        $ef_cabeza_cuello = isset($datos['ef_cabeza_cuello']) ? $datos['ef_cabeza_cuello'] : '';
        $ef_torax = isset($datos['ef_torax']) ? $datos['ef_torax'] : '';
        $ef_abdomen = isset($datos['ef_abdomen']) ? $datos['ef_abdomen'] : '';
        $ef_pelvis = isset($datos['ef_pelvis']) ? $datos['ef_pelvis'] : '';
        $ef_extremidades = isset($datos['ef_extremidades']) ? $datos['ef_extremidades'] : '';

        $plan_tratamiento = isset($datos['plan_tratamiento']) ? $datos['plan_tratamiento'] : '';

        $sql = "REPLACE INTO msp_003_hospitalizacion (
            idatencion, fecha_ingreso, hora_ingreso, servicio_ingreso, cama, sala,
            motivo_consulta, antecedentes_personales, antecedentes_familiares, alergias,
            enfermedad_actual, rev_sentidos, rev_respiratorio, rev_cardio_vascular,
            rev_digestivo, rev_genito_urinario, rev_musculo_esqueletico, rev_endocrino,
            rev_nervioso, rev_hemo_linfatico, ef_cabeza_cuello, ef_torax, ef_abdomen,
            ef_pelvis, ef_extremidades, plan_tratamiento
        ) VALUES (
            '$idatencion', '$fecha_ingreso', '$hora_ingreso', '$servicio_ingreso', '$cama', '$sala',
            '$motivo_consulta', '$antecedentes_personales', '$antecedentes_familiares', '$alergias',
            '$enfermedad_actual', '$rev_sentidos', '$rev_respiratorio', '$rev_cardio_vascular',
            '$rev_digestivo', '$rev_genito_urinario', '$rev_musculo_esqueletico', '$rev_endocrino',
            '$rev_nervioso', '$rev_hemo_linfatico', '$ef_cabeza_cuello', '$ef_torax', '$ef_abdomen',
            '$ef_pelvis', '$ef_extremidades', '$plan_tratamiento'
        )";
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_005($idatencion, $datos)
    {
        $fecha_evolucion = isset($datos['fecha_evolucion']) ? $datos['fecha_evolucion'] : '';
        $hora_evolucion = isset($datos['hora_evolucion']) ? $datos['hora_evolucion'] : '';
        $tipo_nota_evolucion = isset($datos['tipo_nota_evolucion']) ? $datos['tipo_nota_evolucion'] : '';

        $nota_texto = isset($datos['nota_evolucion']) ? $datos['nota_evolucion'] : '';
        if (!empty($tipo_nota_evolucion)) {
            $nota_texto = "[$tipo_nota_evolucion] " . $nota_texto;
        }

        $nota_evolucion = $nota_texto;
        $evolucion_subjetiva = isset($datos['evolucion_subjetiva']) ? $datos['evolucion_subjetiva'] : '';
        $evolucion_objetiva = isset($datos['evolucion_objetiva']) ? $datos['evolucion_objetiva'] : '';
        $evolucion_analisis = isset($datos['evolucion_analisis']) ? $datos['evolucion_analisis'] : '';
        $evolucion_plan = isset($datos['evolucion_plan']) ? $datos['evolucion_plan'] : '';
        $cambios_tratamiento = isset($datos['cambios_tratamiento']) ? $datos['cambios_tratamiento'] : '';

        // Verificar si ya existe
        $sqlCheck = "SELECT id FROM evolucion_diaria WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE evolucion_diaria SET
                fecha_evolucion='$fecha_evolucion',
                hora_evolucion='$hora_evolucion',
                nota_evolucion='$nota_evolucion',
                evolucion_subjetiva='$evolucion_subjetiva',
                evolucion_objetiva='$evolucion_objetiva',
                evolucion_analisis='$evolucion_analisis',
                evolucion_plan='$evolucion_plan',
                cambios_tratamiento='$cambios_tratamiento'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO evolucion_diaria (
                idatencion, fecha_evolucion, hora_evolucion, nota_evolucion,
                evolucion_subjetiva, evolucion_objetiva, evolucion_analisis,
                evolucion_plan, cambios_tratamiento
            ) VALUES (
                '$idatencion', '$fecha_evolucion', '$hora_evolucion', '$nota_evolucion',
                '$evolucion_subjetiva', '$evolucion_objetiva', '$evolucion_analisis',
                '$evolucion_plan', '$cambios_tratamiento'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_012($idatencion, $datos)
    {
        $fecha_solicitud = isset($datos['fecha_solicitud']) ? $datos['fecha_solicitud'] : '';
        $tipo_estudio = isset($datos['tipo_estudio']) ? $datos['tipo_estudio'] : '';
        $region_anatomica = isset($datos['region_anatomica']) ? $datos['region_anatomica'] : '';
        $motivo_solicitud = isset($datos['motivo_solicitud']) ? $datos['motivo_solicitud'] : '';
        $datos_clinicos_relevantes = isset($datos['datos_clinicos_relevantes']) ? $datos['datos_clinicos_relevantes'] : '';
        $puede_movilizarse = isset($datos['puede_movilizarse']) ? $datos['puede_movilizarse'] : 0;

        $sqlCheck = "SELECT id FROM msp_012_imagenologia WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_012_imagenologia SET
                fecha_solicitud='$fecha_solicitud',
                tipo_estudio='$tipo_estudio',
                region_anatomica='$region_anatomica',
                motivo_solicitud='$motivo_solicitud',
                datos_clinicos_relevantes='$datos_clinicos_relevantes',
                puede_movilizarse='$puede_movilizarse'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_012_imagenologia (
                idatencion, fecha_solicitud, tipo_estudio, region_anatomica,
                motivo_solicitud, datos_clinicos_relevantes, puede_movilizarse
            ) VALUES (
                '$idatencion', '$fecha_solicitud', '$tipo_estudio', '$region_anatomica',
                '$motivo_solicitud', '$datos_clinicos_relevantes', '$puede_movilizarse'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_010($idatencion, $datos)
    {
        $fecha_solicitud = isset($datos['fecha_solicitud']) ? $datos['fecha_solicitud'] : date('Y-m-d');
        $hora_solicitud = isset($datos['hora_solicitud']) ? $datos['hora_solicitud'] : date('H:i');
        $prioridad = isset($datos['prioridad']) ? $datos['prioridad'] : 'RUTINA';

        // Manejo de arrays/checkboxes para examenes
        $hematologia = isset($datos['hematologia']) ? $datos['hematologia'] : '';
        if (is_array($hematologia))
            $hematologia = implode(',', $hematologia);

        $quimica_sanguinea = isset($datos['quimica_sanguinea']) ? $datos['quimica_sanguinea'] : '';
        if (is_array($quimica_sanguinea))
            $quimica_sanguinea = implode(',', $quimica_sanguinea);

        $uroanalisis = isset($datos['uroanalisis']) ? $datos['uroanalisis'] : '';
        if (is_array($uroanalisis))
            $uroanalisis = implode(',', $uroanalisis);

        $coprologico = isset($datos['coprologico']) ? $datos['coprologico'] : '';
        if (is_array($coprologico))
            $coprologico = implode(',', $coprologico);

        $otros_examenes = isset($datos['otros_examenes']) ? $datos['otros_examenes'] : '';
        $diagnostico_presuntivo = isset($datos['diagnostico_presuntivo']) ? $datos['diagnostico_presuntivo'] : '';

        $sqlCheck = "SELECT id FROM msp_010_laboratorio WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_010_laboratorio SET
                fecha_solicitud='$fecha_solicitud',
                hora_solicitud='$hora_solicitud',
                prioridad='$prioridad',
                hematologia='$hematologia',
                quimica_sanguinea='$quimica_sanguinea',
                uroanalisis='$uroanalisis',
                coprologico='$coprologico',
                otros_examenes='$otros_examenes',
                diagnostico_presuntivo='$diagnostico_presuntivo'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_010_laboratorio (
                idatencion, fecha_solicitud, hora_solicitud, prioridad,
                hematologia, quimica_sanguinea, uroanalisis, coprologico,
                otros_examenes, diagnostico_presuntivo
            ) VALUES (
                '$idatencion', '$fecha_solicitud', '$hora_solicitud', '$prioridad',
                '$hematologia', '$quimica_sanguinea', '$uroanalisis', '$coprologico',
                '$otros_examenes', '$diagnostico_presuntivo'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_006($idatencion, $datos)
    {
        // Epicrisis
        $motivo_ingreso_resumen = isset($datos['motivo_ingreso_resumen']) ? $datos['motivo_ingreso_resumen'] : '';
        $resumen_evolucion = isset($datos['resumen_evolucion']) ? $datos['resumen_evolucion'] : '';
        $examenes_realizados = isset($datos['examenes_realizados']) ? $datos['examenes_realizados'] : '';
        $procedimientos_realizados = isset($datos['procedimientos_realizados']) ? $datos['procedimientos_realizados'] : '';
        $diagnostico_principal = isset($datos['diagnostico_principal']) ? $datos['diagnostico_principal'] : '';
        $condicion_egreso = isset($datos['condicion_egreso']) ? $datos['condicion_egreso'] : '';
        $tratamiento_egreso = isset($datos['tratamiento_egreso']) ? $datos['tratamiento_egreso'] : '';
        $recomendaciones_generales = isset($datos['recomendaciones_generales']) ? $datos['recomendaciones_generales'] : '';

        $sqlCheck = "SELECT id FROM msp_006_epicrisis WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_006_epicrisis SET
                motivo_ingreso_resumen='$motivo_ingreso_resumen',
                resumen_evolucion='$resumen_evolucion',
                examenes_realizados='$examenes_realizados',
                procedimientos_realizados='$procedimientos_realizados',
                diagnostico_principal='$diagnostico_principal',
                condicion_egreso='$condicion_egreso',
                tratamiento_egreso='$tratamiento_egreso',
                recomendaciones_generales='$recomendaciones_generales'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_006_epicrisis (
                idatencion, motivo_ingreso_resumen, resumen_evolucion, examenes_realizados,
                procedimientos_realizados, diagnostico_principal, condicion_egreso,
                tratamiento_egreso, recomendaciones_generales
            ) VALUES (
                '$idatencion', '$motivo_ingreso_resumen', '$resumen_evolucion', '$examenes_realizados',
                '$procedimientos_realizados', '$diagnostico_principal', '$condicion_egreso',
                '$tratamiento_egreso', '$recomendaciones_generales'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_007($idatencion, $datos)
    {
        // Interconsulta
        $servicio_solicitante = isset($datos['servicio_solicitante']) ? $datos['servicio_solicitante'] : 'Consulta Externa';
        $medico_solicitante = isset($datos['medico_solicitante']) ? $datos['medico_solicitante'] : 1; // Default ID
        $fecha_solicitud = isset($datos['fecha_solicitud']) ? $datos['fecha_solicitud'] : date('Y-m-d');
        $hora_solicitud = isset($datos['hora_solicitud']) ? $datos['hora_solicitud'] : date('H:i');
        $motivo_interconsulta = isset($datos['motivo_interconsulta']) ? $datos['motivo_interconsulta'] : '';
        $resumen_clinico = isset($datos['resumen_clinico']) ? $datos['resumen_clinico'] : '';
        $pregunta_especifica = isset($datos['pregunta_especifica']) ? $datos['pregunta_especifica'] : '';

        $sqlCheck = "SELECT id FROM msp_007_interconsulta WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_007_interconsulta SET
                servicio_solicitante='$servicio_solicitante',
                motivo_interconsulta='$motivo_interconsulta',
                resumen_clinico='$resumen_clinico',
                pregunta_especifica='$pregunta_especifica'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_007_interconsulta (
                idatencion, servicio_solicitante, medico_solicitante, fecha_solicitud,
                hora_solicitud, motivo_interconsulta, resumen_clinico, pregunta_especifica
            ) VALUES (
                '$idatencion', '$servicio_solicitante', '$medico_solicitante', '$fecha_solicitud',
                '$hora_solicitud', '$motivo_interconsulta', '$resumen_clinico', '$pregunta_especifica'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_msp_024($idatencion, $datos)
    {
        // Consentimiento Informado
        $tipo_procedimiento = isset($datos['tipo_procedimiento']) ? $datos['tipo_procedimiento'] : '';
        $descripcion_procedimiento = isset($datos['descripcion_procedimiento']) ? $datos['descripcion_procedimiento'] : '';
        $riesgos = isset($datos['riesgos']) ? $datos['riesgos'] : '';
        $beneficios = isset($datos['beneficios']) ? $datos['beneficios'] : '';
        $paciente_acepta = isset($datos['paciente_acepta']) ? $datos['paciente_acepta'] : 0;
        $fecha_consentimiento = isset($datos['fecha_consentimiento']) ? $datos['fecha_consentimiento'] : date('Y-m-d');
        $hora_consentimiento = isset($datos['hora_consentimiento']) ? $datos['hora_consentimiento'] : date('H:i');
        $idempleado = isset($datos['idempleado']) ? $datos['idempleado'] : 1;

        $sqlCheck = "SELECT id FROM msp_024_consentimiento WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_024_consentimiento SET
                tipo_procedimiento='$tipo_procedimiento',
                descripcion_procedimiento='$descripcion_procedimiento',
                riesgos='$riesgos',
                beneficios='$beneficios',
                paciente_acepta='$paciente_acepta',
                fecha_consentimiento='$fecha_consentimiento',
                hora_consentimiento='$hora_consentimiento'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_024_consentimiento (
                idatencion, tipo_procedimiento, descripcion_procedimiento, riesgos,
                beneficios, paciente_acepta, fecha_consentimiento, hora_consentimiento, idempleado
            ) VALUES (
                '$idatencion', '$tipo_procedimiento', '$descripcion_procedimiento', '$riesgos',
                '$beneficios', '$paciente_acepta', '$fecha_consentimiento', '$hora_consentimiento', '$idempleado'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_anexo_1($idatencion, $datos)
    {
        // Ficha Familiar - Nota: La tabla linkea a idpersona_cabeza, pero aqui la simplificamos por idatencion si no tenemos cabeza
        // Pero en la estructura SQL: idpersona_cabeza.
        // Asumiremos que idatencion nos da idpersona
        $direccion = isset($datos['direccion']) ? $datos['direccion'] : '';
        $referencia = isset($datos['referencia']) ? $datos['referencia'] : '';
        $tipo_familia = isset($datos['tipo_familia']) ? $datos['tipo_familia'] : '';
        $ciclo_vital_familiar = isset($datos['ciclo_vital_familiar']) ? $datos['ciclo_vital_familiar'] : '';
        $riesgos_biologicos = isset($datos['riesgos_biologicos']) ? $datos['riesgos_biologicos'] : '';
        $riesgos_socioeconomicos = isset($datos['riesgos_socioeconomicos']) ? $datos['riesgos_socioeconomicos'] : '';

        // Obtener idpersona desde atencion
        $sqlP = "SELECT idpersona FROM atencion WHERE idatencion='$idatencion'";
        $resP = ejecutarConsultaSimpleFila($sqlP);
        $idpersona = $resP['idpersona'];

        // Revisar si existe por idpersona (es familiar, no por atencion quizas?)
        // Pero para simplificar, permitimos 1 ficha por atencion o por persona.
        // La tabla msp_anexo1_ficha_familiar NO tiene idatencion.

        $sqlCheck = "SELECT id FROM msp_anexo1_ficha_familiar WHERE idpersona_cabeza='$idpersona'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_anexo1_ficha_familiar SET
                direccion='$direccion',
                referencia='$referencia',
                tipo_familia='$tipo_familia',
                ciclo_vital_familiar='$ciclo_vital_familiar',
                riesgos_biologicos='$riesgos_biologicos',
                riesgos_socioeconomicos='$riesgos_socioeconomicos'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_anexo1_ficha_familiar (
                idpersona_cabeza, direccion, referencia, tipo_familia,
                ciclo_vital_familiar, riesgos_biologicos, riesgos_socioeconomicos
            ) VALUES (
                '$idpersona', '$direccion', '$referencia', '$tipo_familia',
                '$ciclo_vital_familiar', '$riesgos_biologicos', '$riesgos_socioeconomicos'
            )";
        }
        return ejecutarConsulta($sql);
    }

    public function insertar_anexo_2($idatencion, $datos)
    {
        // Prehospitalaria
        $fecha_atencion = isset($datos['fecha_atencion']) ? $datos['fecha_atencion'] : date('Y-m-d');
        $motivo_llamada = isset($datos['motivo_llamada']) ? $datos['motivo_llamada'] : '';
        $escenario = isset($datos['escenario']) ? $datos['escenario'] : '';
        $evaluacion_primaria = isset($datos['evaluacion_primaria']) ? $datos['evaluacion_primaria'] : '';

        $sqlCheck = "SELECT id FROM msp_anexo2_prehospitalaria WHERE idatencion='$idatencion'";
        $exists = ejecutarConsultaSimpleFila($sqlCheck);

        if ($exists && isset($exists['id'])) {
            $id = $exists['id'];
            $sql = "UPDATE msp_anexo2_prehospitalaria SET
                fecha_atencion='$fecha_atencion',
                motivo_llamada='$motivo_llamada',
                escenario='$escenario',
                evaluacion_primaria='$evaluacion_primaria'
                WHERE id='$id'";
        } else {
            $sql = "INSERT INTO msp_anexo2_prehospitalaria (
                idatencion, fecha_atencion, motivo_llamada, escenario, evaluacion_primaria
            ) VALUES (
                '$idatencion', '$fecha_atencion', '$motivo_llamada', '$escenario', '$evaluacion_primaria'
            )";
        }
        return ejecutarConsulta($sql);
    }
    // Método específico para guardar solo recetas desde el módulo de formatos por lote
    public function guardarSoloRecetas2($idatencion, $medicamento, $concentracion, $presentacion, $dosis, $duracion, $cantidad, $via_administracion, $posologia)
    {
        // Limpiar recetas anteriores para evitar duplicados
        $sqldr = "DELETE FROM receta WHERE idatencion='$idatencion'";
        ejecutarConsulta($sqldr);

        $num_elementos = 0;
        $sw = true;

        if (is_array($medicamento)) {
            while ($num_elementos < count($medicamento)) {
                $med_val = $medicamento[$num_elementos];
                // Solo insertar si hay nombre de medicamento
                if (!empty($med_val)) {
                    $concentracion_val = isset($concentracion[$num_elementos]) ? $concentracion[$num_elementos] : '';
                    $presentacion_val = isset($presentacion[$num_elementos]) ? $presentacion[$num_elementos] : '';
                    $dosis_val = isset($dosis[$num_elementos]) ? $dosis[$num_elementos] : '';
                    $duracion_val = isset($duracion[$num_elementos]) ? $duracion[$num_elementos] : '';
                    $cantidad_val = isset($cantidad[$num_elementos]) ? $cantidad[$num_elementos] : '';
                    $via_val = isset($via_administracion[$num_elementos]) ? $via_administracion[$num_elementos] : '';
                    $posologia_val = isset($posologia[$num_elementos]) ? $posologia[$num_elementos] : '';

                    $sql = "INSERT INTO receta (
                        idatencion, medicamento, concentracion, presentacion, 
                        dosis, duracion, cantidad, via_administracion, posologia
                    ) VALUES (
                        '$idatencion', '$med_val', '$concentracion_val', '$presentacion_val',
                        '$dosis_val', '$duracion_val', '$cantidad_val', '$via_val', '$posologia_val'
                    )";
                    ejecutarConsulta($sql) or $sw = false;
                }
                $num_elementos++;
            }
        }
        return $sw;
    }
}
