public static function calcularPercentilMargens($imc, $sexo, $nascimento) { $curva = new Curva(); // Margens dos percentis baseado no cálculo inicial. $margemIMCInferior = $imc - MARGEM_LIMITE_PERCENTIL; $margemIMCSuperior = $imc + MARGEM_LIMITE_PERCENTIL; // Valores crescentes e decrescentes do IMC. $imcDecrescente = $imc; $imcCrescente = $imc; $idadeMeses = DataUtil::calcularIdadeMeses($nascimento); $db = new DbHandler(); // Verificação do percentil inferior. $percentilInferior = NULL; while (empty($percentilInferior) && $imcDecrescente >= $margemIMCInferior) { // Decrescer gradativamente os valores do IMC na escala. $imcDecrescente = $imcDecrescente - ESCALA_IMC_PERCENTIL; $percentilInferior = $db->selecionarPercentil($imcDecrescente, $sexo, $idadeMeses); } $curva->setPercentilInferior($percentilInferior); // Verificação do percentil superior. $percentilSuperior = NULL; while (empty($percentilSuperior) && $imcCrescente <= $margemIMCSuperior) { // Crescer gradativamente os valores do IMC na escala. $imcCrescente = $imcCrescente + ESCALA_IMC_PERCENTIL; $percentilSuperior = $db->selecionarPercentil($imcCrescente, $sexo, $idadeMeses); } $curva->setPercentilSuperior($percentilSuperior); return $curva; }
/** * * @param type $name Description * * @return type Description */ function calcularPerfilAntropometrico() { /** * Anamnese: Peso, altura, idade, sexo * Acima de 19 calcular IMC * Abaixo de 19 anos verificar percentil: IMC x Idade. */ $request = \Slim\Slim::getInstance()->request(); $body = $request->getBody(); $anamneseJson = json_decode($body); // Entrevistado $nascimento = $anamneseJson->entrevistado->nascimento; $sexo = strtoupper($anamneseJson->entrevistado->sexo); // Anamnese. $peso = $anamneseJson->peso; $altura = $anamneseJson->altura; $validacao = PerfilAntropometricoValidate::validate($peso, $altura, $sexo, $nascimento); if ($validacao == VALIDO) { $anamnese = new Anamnese(); $anamnese->setPeso($peso); $anamnese->setAltura($altura); // Entrevistado $entrevistado = new Entrevistado(); $entrevistado->setNascimento($nascimento); $entrevistado->setSexo($sexo); $anamnese->setEntrevistado($entrevistado); // Calcular IMC $imcValor = IMCController::calculaIMC($peso, $altura); $idadeMeses = DataUtil::calcularIdadeMeses($nascimento); $idadeAnos = DataUtil::calcularIdadeAnos($nascimento); $curva = new Curva(); // Acima de 19 calcular IMC. if ($idadeMeses > IDADE_PERCENTIL_19) { // Cálculo do IMC para entrevistado acima de 19 anos. $imc = new Imc(); $imc->setValor($imcValor); $curva->setImc($imc); } else { $percentilMediano = PercentilController::calcularPercentil($imcValor, $sexo, $nascimento); if (!empty($percentilMediano)) { $curva->setPercentilMediano($percentilMediano); } else { $curva = PercentilController::calcularPercentilMargens($imcValor, $sexo, $nascimento); } } // IMC padrão. $imc = new Imc(); $imc->setValor($imcValor); $curva->setImc($imc); $diagnostico = PercentilController::determinarDiagnosticoNutricional($curva); $curva->setDiagnostico($diagnostico); echoRespnse(HTTP_OK, $curva); } else { } }