Sha256: 729af19acb390dd519b2b7a281cddb5c5ddc80a7bb7ad3629b9ec4f1263cd7b1

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

class Percentil < ApplicationRecord
  def self.calcular(paciente, valor, tipo)
    resposta = Hash.new
    idade = 0

    if tipo == 'circunferencia_abdominal'
      if paciente.meses_vividos < 60 or paciente.meses_vividos > 192
        resposta[:status] = 'indisponivel'
        return resposta
      end
      idade = paciente.meses_vividos
    end

    if tipo == 'estatura'
      if paciente.meses_vividos > 240
        resposta[:status] = 'indisponivel'
        return resposta
      end
      idade = paciente.meses_vividos
    end

    percentis = self.where("sexo = #{paciente.sexo} and tipo = '#{tipo}' and idade <= #{idade}")

    percentis.each do |percentil|
      if percentil.valor == valor
        resposta[:status] = 'exatamente'
        resposta[:percentil] = percentil
        return resposta
      end
    end

    if valor < percentis.first.valor
      resposta[:status] = 'abaixo'
      resposta[:percentil] = percentis.first
      return resposta
    end

    if valor > percentis.last.valor
      resposta[:status] = 'acima'
      resposta[:percentil] = percentis.last
      return resposta
    end

    percentis.each_cons(2) { |percentil_anterior, percentil_atual|
      if percentil_atual.valor > valor
        resposta[:status] = 'entre'
        resposta[:min] = percentil_anterior
        resposta[:max] = percentil_atual
        return resposta
      end
    }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-sabia-1.0.1 app/models/percentil.rb