Não sei se é só isso, pois não testei seu código, mas na função imcFaixas há um erro pois você recebe o imc já calculado, e recalcula usando os parâmetros que peso e altura que não foram passados para essa função.
Comente essa linha e verifique se isso resolve seu problema.
function imcFaixas(imc){
var faixa = paciente.querySelector(".info-imcIdeal");
// var imc = calculaImc(peso,altura);
if(imc < 18.5){
faixa.textContent = "Magreza";
faixa.classList.add("faixaPerigosa");
}else if(imc > 18.5 && imc < 24.9){
faixa.textContent = "Peso Saudável";
faixa.classList.add("faixaSaudavel");
}else if(imc > 25 && imc < 29.9){
faixa.textContent = "Sobrepeso";
faixa.classList.add("faixasobrePeso");
}else if(imc > 30 && imc < 39.9){
faixa.textContent = "Obeso";
faixa.classList.add("faixaObeso");
}else if(imc > 40){
faixa.textContent = "Muito obeso";
faixa.classList.add("faixaPerigosa");
}
return faixa;
// Menos de 18,5 - abaixo do peso
// 18,5 a 24,9 - peso saudável
// 25 a 29,9 - sobrepeso
// 30 a 39,9 - obeso
// + de 40 - muito obeso (também conhecido como obeso mórbido)
}