Sha256: fb77795a2d89a882e077eae217f0ed51e768fea35417a704c48524c7b08440a1

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require 'ruby-units'

require 'paciente/paciente'
require 'valoracion/datos_antropometricos'

# Representa un paciente cuyos datos han sido registrados
class PacienteConDatos < Paciente
  include Comparable

  attr_accessor :datos

  def initialize(nombre, apellidos, sexo, fecha_nac, ocupacion, consulta,
                 datos)
    super(nombre, apellidos, sexo, fecha_nac, ocupacion, consulta)
    @datos = datos
  end

  # Cálculo del Indice de Masa Corporal
  def imc
    @datos.peso / (@datos.talla * @datos.talla)
  end

  # Cálculo del porcentaje de grasa
  def porcentaje_grasa
    (1.2 * imc + 0.23 * @edad - 10.8 * @sexo - 5.4).round(2)
  end

  # Cálculo de la Relación Cadera-Cintura
  def rcc
    (@datos.ccintura.to_f / @datos.ccadera).round(2)
  end

  # Cálculo del peso teórico ideal
  def peso_teorico_ideal
    (@datos.talla * 100 - 150) * 0.75 + 50
  end

  # Cálculo del gasto energético basal (teniendo en cuenta el sexo)
  def gasto_energetico_basal
    (10 * @datos.peso) + (6.25 * @datos.talla) - (5 * @edad) + (@sexo ?
                                                                5 : -161)
  end

  # Cálculo del efecto termógeno
  def efecto_termogeno
    gasto_energetico_basal * 0.10
  end

  # Cálculo del gasto por el factor de actividad fisica
  def gasto_actividad_fisica
    gasto_energetico_basal * @datos.actividad_fisica
  end

  # Cálculo del gasto energético total (en kcal)
  def gasto_energetico_total
    Unit.new("#{gasto_energetico_basal + efecto_termogeno +
     gasto_actividad_fisica} kcal")
  end

  def <=>(other)
    [gasto_energetico_total, datos] <=> [other.gasto_energetico_total, other.datos]
  end

  def to_s
"#{super}\n
 - Datos antropométricos:
#{@datos}"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gematdd-dibad-0.1.1 lib/gematdd/paciente/paciente_datos.rb