3 agosto, 2026

CREACIÓN DE ALGORITMO PARA CÁLCULO DE MASA CORPORAL Y HERRAMIENTA PARA REGISTRAR LA INFORMACIÓN

Hola a todos!

Después de hablar con un amigo sobre los índices la masa muscular (y si era o no realista), me quedó ganas de hacer algo en Power Apps para calcular el índice y a la vez para registrarlo.

Para ello construí una aplicación para calcularlo y guardar el resultado, algo que os voy a mostrar aquí:

En el botón Calcular, en la propiedad OnSelect vamos a incluir el código que calculará la IMC y a también la categoría:

If(
    IsBlank(TextInput1.Text) || TextInput1.Text = "" || IsBlank(TextInput2.Text) || TextInput2.Text = "";
    Notify("LOS CAMPOS DE PESO Y ALTURA DEBEN TENER DATOS."; NotificationType.Error);

Set(Peso; Value(TextInput1.Text));; 
Set(Altura; Value(TextInput2.Text) / 100);; 

//Calculamos IMC
Set(IMC; Peso / (Altura * Altura));;

// Determinar categoria salud
Set(CategoriaSalud;
    If(
        IMC < 18,5; "Peso bajo";
        IMC < 24,9; "Peso normal";
        IMC < 29,9; "Sobrepeso";
        "Obesidad"
    )
);;

// Mostrar miIMC
Set(miIMC;Text(IMC; "0.00"));;
)

Primero tenemos que verificar que el usuario introduce el Peso y la Altura. Si lo hace, el algoritmo calculará el índice y luego, en base a una escala determinaremos una categoría según el resultado. Finalmente pasamos los resultados a dos variables que vamos a incluir en los TextInput de IMC y Categoría.

Y esto ya nos calcularía el IMC, pero como queremos grabar los datos en la galería y en la lista de SharePoint que he creado y que se llama REGISTRO, pulsaremos en el botón GRABAR:

If(IsBlank(miIMC);
    Notify("ANTES DE GRABAR, TIENES QUE CALCULAR TU IMC"; NotificationType.Warning);

    //actualizamos si miID no está vacío
    If(!IsBlank(miID);
        Patch(
            REGISTRO;
            LookUp(REGISTRO; miID = ID);
            {
                USUARIO: User().FullName;
                FECHA: Now();
                PESO: TextInput1.Text;
                ALTURA: TextInput2.Text;
                IMC: miIMC;
                CATEGORIA: CategoriaSalud
            }
        );
        // Si miID está vacío, creamos un nuevo registro
        Patch(
            REGISTRO;
            {
                USUARIO: User().FullName;
                FECHA: Now();
                PESO: TextInput1.Text;
                ALTURA: TextInput2.Text;
                IMC: miIMC;
                CATEGORIA: CategoriaSalud
            }
        );;
    );;
    
    // Reseteamos los inputs y limpia las variables
    Reset(TextInput1);;
    Reset(TextInput2);;
    Set(miIMC; Blank());;
    Set(CategoriaSalud; Blank());;
    Set(rec; Blank());;
    Set(miID; Blank());;
)

El botón comprueba que tenemos todos los datos y una vez validado todo, usamos la función Patch para grabar los datos en la galería.

Luego en la galería, he colocado un botón para editar los datos, lo que permite recuperar la información de cada elemento para poder modificarla:

Set(
    rec;
    LookUp(
        REGISTRO;
        ThisItem.ID = ID
    )
);;

Set(miIMC;rec.IMC);;
Set(CategoriaSalud;rec.CATEGORIA);;
Set(miID;rec.ID);;

Con la variable rec, vamos a poder rescatar los datos que hemos grabado y pasarlos a las variables y guardar la información en las propied default de cada TextInput.

Para los colores, tanto en la galería como el TextInput de la Categoría vamos a incluir este código en la propiedad fill:

Switch(
    TextInput4.Text;
    "Peso bajo"; RGBA(255; 0; 0; 1);  // Rojo
    "Peso normal"; RGBA(0; 255; 0; 1);  // Verde
    "Sobrepeso"; RGBA(255; 165; 0; 1);  // Naranja
    "Obesidad"; RGBA(255; 0; 0; 1);  // Rojo
    RGBA(247; 252; 252; 1)  // Color por defecto
)

Sobre el botón de la papelera, simplemente borramos el registro seleccionado con este código en la propiedad OnSelect:

RemoveIf(REGISTRO;ThisItem.ID=ID)

Y esto es todo, espero que sea de utilidad.

Comparte este post

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies