コード例 #1
0
function calcularPercentil($rowEntrevistado)
{
    $dados = $rowEntrevistado;
    $percentilInferior = 0;
    $percentilSuperior = 0;
    $percentilMediano = 0;
    $perfilIMC = 0;
    $perfilPercentil = 0;
    // Para idade abaixo de 228 meses (19 Anos)
    if ($dados['idadeMeses'] <= IDADE_PERCENTIL_19) {
        $dao = new dao_class();
        $percentilMediano = $dao->selectPercentil($dados['imc'], $dados['sexo'], $dados['idadeMeses']);
        // Buscar percentis nas proximidades
        if (!$percentilMediano) {
            // Margens dos percentis baseado no cálculo inicial.
            $margemIMCInferior = $dados['imc'] - MARGEM_LIMITE_PERCENTIL;
            $margemIMCSuperior = $dados['imc'] + MARGEM_LIMITE_PERCENTIL;
            // Valores crescentes e decrescentes do IMC.
            $imcDecrescente = $dados['imc'];
            $imcCrescente = $dados['imc'];
            // Verificação do percentil inferior.
            while ($percentilInferior == 0 && $imcDecrescente >= $margemIMCInferior) {
                $imcDecrescente = $imcDecrescente - 0.1;
                $percentilInferior = $dao->selectPercentil($imcDecrescente, $dados['sexo'], $dados['idadeMeses']);
            }
            // Verificação do percentil superior.
            while ($percentilSuperior == 0 && $imcCrescente <= $margemIMCSuperior) {
                $imcCrescente = $imcCrescente + 0.1;
                $percentilSuperior = $dao->selectPercentil($imcCrescente, $dados['sexo'], $dados['idadeMeses']);
            }
        }
        //Verificar situação do percentil
        if (isset($percentilMediano) || isset($percentilInferior) || isset($percentilSuperior)) {
            if ($percentilMediano) {
                if ($percentilMediano['vl_percentil'] < 0.1) {
                    $perfilPercentil = "Magreza acentuada";
                } else {
                    if ($percentilMediano['vl_percentil'] >= 0.1 && $percentilMediano['vl_percentil'] < 3) {
                        $perfilPercentil = "Magreza";
                    } else {
                        if ($percentilMediano['vl_percentil'] >= 3 && $percentilMediano['vl_percentil'] <= 85) {
                            $perfilPercentil = "Eutrofia";
                        } else {
                            if ($percentilMediano['vl_percentil'] >= 85 && $percentilMediano['vl_percentil'] <= 97) {
                                $perfilPercentil = "Sobrepeso";
                            } else {
                                if ($percentilMediano['vl_percentil'] > 97 && $percentilMediano['vl_percentil'] <= 99.90000000000001) {
                                    $perfilPercentil = "Obesidade";
                                } else {
                                    if ($percentilMediano['vl_percentil'] > 99.90000000000001) {
                                        $perfilPercentil = "Obesidade grave";
                                    }
                                }
                            }
                        }
                    }
                }
            } else {
                if ($percentilInferior['vl_percentil'] && $percentilSuperior['vl_percentil']) {
                    if ($percentilInferior['vl_percentil'] < 0.1) {
                        return "Magreza acentuada";
                    } else {
                        if ($percentilInferior['vl_percentil'] >= 0.1 && $percentilSuperior['vl_percentil'] < 3) {
                            $perfilPercentil = "Magreza";
                        } else {
                            if ($percentilInferior['vl_percentil'] >= 3 && $percentilSuperior['vl_percentil'] <= 85) {
                                $perfilPercentil = "Eutrofia";
                            } else {
                                if ($percentilInferior['vl_percentil'] >= 85 && $percentilSuperior['vl_percentil'] <= 97) {
                                    $perfilPercentil = "Sobrepeso";
                                } else {
                                    if ($percentilInferior['vl_percentil'] > 97 && $percentilSuperior['vl_percentil'] <= 99.90000000000001) {
                                        $perfilPercentil = "Obesidade";
                                    } else {
                                        if ($percentilInferior['vl_percentil'] > 99.90000000000001) {
                                            $perfilPercentil = "Obesidade grave";
                                        }
                                    }
                                }
                            }
                        }
                    }
                } else {
                    if ($percentilInferior && !$percentilSuperior) {
                        if ($percentilInferior['vl_percentil'] < 0.1) {
                            return "Magreza acentuada";
                        } else {
                            if ($percentilInferior['vl_percentil'] >= 0.1 && $percentilInferior['vl_percentil'] < 3) {
                                $perfilPercentil = "Magreza";
                            } else {
                                if ($percentilInferior['vl_percentil'] >= 3 && $percentilInferior['vl_percentil'] <= 85) {
                                    $perfilPercentil = "Eutrofia";
                                } else {
                                    if ($percentilInferior['vl_percentil'] >= 85 && $percentilInferior['vl_percentil'] <= 97) {
                                        $perfilPercentil = "Sobrepeso";
                                    } else {
                                        if ($percentilInferior['vl_percentil'] > 97 && $percentilInferior['vl_percentil'] <= 99.90000000000001) {
                                            $perfilPercentil = "Obesidade";
                                        } else {
                                            if ($percentilInferior['vl_percentil'] > 99.90000000000001) {
                                                $perfilPercentil = "Obesidade grave";
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    } else {
                        if ($percentilSuperior && !$percentilInferior) {
                            if ($percentilSuperior['vl_percentil'] < 0.1) {
                                return "Magreza acentuada";
                            } else {
                                if ($percentilSuperior['vl_percentil'] >= 0.1 && $percentilSuperior['vl_percentil'] < 3) {
                                    $perfilPercentil = "Magreza";
                                } else {
                                    if ($percentilSuperior['vl_percentil'] >= 3 && $percentilSuperior['vl_percentil'] <= 85) {
                                        $perfilPercentil = "Eutrofia";
                                    } else {
                                        if ($percentilSuperior['vl_percentil'] >= 85 && $percentilSuperior['vl_percentil'] <= 97) {
                                            $perfilPercentil = "Sobrepeso";
                                        } else {
                                            if ($percentilSuperior['vl_percentil'] > 97 && $percentilSuperior['vl_percentil'] <= 99.90000000000001) {
                                                $perfilPercentil = "Obesidade";
                                            } else {
                                                if ($percentilSuperior['vl_percentil'] > 99.90000000000001) {
                                                    $perfilPercentil = "Obesidade grave";
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        } else {
            $_SESSION['medidasInvalidas'] = "medidasInvalidas";
        }
    } else {
        // Tratar pessoas maiores de 19 anos
        if ($dados['imc'] < 18.5) {
            $perfilIMC = PERFIL_MAGREZA;
        } else {
            if ($dados['imc'] >= 18.5 && $dados['imc'] <= 24.9) {
                $perfilIMC = PERFIL_EUTROFICO;
            } else {
                if ($dados['imc'] >= 25.0 && $dados['imc'] <= 29.9) {
                    $perfilIMC = PERFIL_SOBREPESO;
                } else {
                    if ($dados['imc'] >= 30.0 && $dados['imc'] <= 34.9) {
                        $perfilIMC = PERFIL_OBESO;
                    } else {
                        if ($dados['imc'] >= 35.0) {
                            $perfilIMC = PERFIL_OBESO_MORBIDO;
                        }
                    }
                }
            }
        }
    }
    $resultados = array('percentilMediano' => $percentilMediano['vl_percentil'], 'percentilInferior' => $percentilInferior['vl_percentil'], 'percentilSuperior' => $percentilSuperior['vl_percentil'], 'perfilIMC' => $perfilIMC, 'perfilPercentil' => $perfilPercentil, 'idadeMeses' => $dados['idadeMeses'], 'imc' => $dados['imc']);
    return $resultados;
}