Class: Paciente

Inherits:
Individuo show all
Includes:
Comparable
Defined in:
lib/etiqueta_nutricional/paciente.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Individuo

#obtener_edad

Constructor Details

#initialize(nombre, edad, sexo, peso, altura, circunferencia_cintura, circunferencia_cadera, actividad_fisica) ⇒ Paciente

Returns a new instance of Paciente.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/etiqueta_nutricional/paciente.rb', line 8

def initialize(nombre, edad, sexo, peso, altura, circunferencia_cintura, circunferencia_cadera, actividad_fisica)
    super(nombre, edad, sexo)
    @peso = peso
    @altura = altura
    @circunferencia_cintura = circunferencia_cintura
    @circunferencia_cadera = circunferencia_cadera
    @imc = imc
    @grasa = p_grasa
    @rcc = rcc
    @actividad_fisica = actividad_fisica
    
end

Instance Attribute Details

#actividad_fisicaObject (readonly)

Returns the value of attribute actividad_fisica.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def actividad_fisica
  @actividad_fisica
end

#alturaObject (readonly)

Returns the value of attribute altura.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def altura
  @altura
end

#circunferencia_caderaObject (readonly)

Returns the value of attribute circunferencia_cadera.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def circunferencia_cadera
  @circunferencia_cadera
end

#circunferencia_cinturaObject (readonly)

Returns the value of attribute circunferencia_cintura.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def circunferencia_cintura
  @circunferencia_cintura
end

#edadObject (readonly)

Returns the value of attribute edad.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def edad
  @edad
end

#nombreObject (readonly)

Returns the value of attribute nombre.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def nombre
  @nombre
end

#pesoObject (readonly)

Returns the value of attribute peso.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def peso
  @peso
end

#sexoObject (readonly)

Returns the value of attribute sexo.



3
4
5
# File 'lib/etiqueta_nutricional/paciente.rb', line 3

def sexo
  @sexo
end

Instance Method Details

#<=>(other) ⇒ Object



84
85
86
87
# File 'lib/etiqueta_nutricional/paciente.rb', line 84

def <=>(other)
    return nil unless other.instance_of? Paciente
    valoracion_nutricional <=> other.valoracion_nutricional 
end

#clasificacion_omsObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/etiqueta_nutricional/paciente.rb', line 33

def clasificacion_oms
    if (@imc < 18.5)
        "Bajo peso"
    elsif (@imc < 24.9)
        "Adecuado"
    elsif (@imc < 29.9)
        "Sobrepeso"
    elsif (@imc < 34.9)
        "Obesidad grado 1"
    elsif (@imc < 39.9)
        "Obesidad grado 2"
    else
        "Obesidad grado 3"
    end
end

#imcObject



21
22
23
# File 'lib/etiqueta_nutricional/paciente.rb', line 21

def imc
    @peso / (@altura * @altura)
end

#obtener_nombreObject



71
72
73
# File 'lib/etiqueta_nutricional/paciente.rb', line 71

def obtener_nombre
    @nombre
end

#p_grasaObject



25
26
27
# File 'lib/etiqueta_nutricional/paciente.rb', line 25

def p_grasa
    1.2 * @imc + 0.23 * @edad - 10.8 * @sexo - 5.4
end

#rccObject



29
30
31
# File 'lib/etiqueta_nutricional/paciente.rb', line 29

def rcc
    (((@circunferencia_cintura[0].round(2) + @circunferencia_cintura[1].round(2)) / 2) / ((@circunferencia_cadera[0].round(2) + @circunferencia_cadera[1].round(2)) / 2).round(2))
end

#riesgoObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/etiqueta_nutricional/paciente.rb', line 49

def riesgo
    if (@sexo == 0) #mujer
        if (@rcc < 0.75)
            "Riesgo bajo"
        elsif (@rcc < 0.82)
            "Riesgo moderado"
        else
            "Riesgo alto"
        end
    else            #hombre
        if (@rcc < 0.88)
            "Riesgo bajo"
        elsif (@rcc < 0.95)
            "Riesgo moderado"
        elsif (@rcc < 1.01)
            "Riesgo alto"
        else
            "Riesgo muy alto"
        end
    end
end

#to_sObject



75
76
77
78
79
80
81
82
# File 'lib/etiqueta_nutricional/paciente.rb', line 75

def to_s
    cadena = ""
    cadena = cadena + super.to_s
    cadena = cadena + "Peso: #{@peso}kg\n"
    cadena = cadena + "Altura: #{@altura}m\n"
    cadena = cadena + "Circunferencia cintura: #{@circunferencia_cintura}cm\n"
    cadena = cadena + "Circunferencia cadera: #{@circunferencia_cadera}cm\n"
end

#valoracion(menu) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/etiqueta_nutricional/paciente.rb', line 89

def valoracion(menu)
    
    gasto_energetico_basal = 0
    if (@sexo == 1) # mujer
        gasto_energetico_basal = (10 * @peso) + (6.25 * @altura) - (5 * @edad) - 161
    else # Hombre
        gasto_energetico_basal = (10 * @peso) + (6.25 * @altura) - (5 * @edad) + 5
    end
    
    efecto_termogeno = gasto_energetico_basal * 0.1
    gasto_actividad_fisica = 0
    
    if (@actividad_fisica == "reposo")
        gasto_actividad_fisica = gasto_energetico_basal * 0
    elsif (@actividad_fisica == "Actividad ligera")
        gasto_actividad_fisica = gasto_energetico_basal * 0.12
    elsif (@actividad_fisica == "Actividad moderada")
        gasto_actividad_fisica = gasto_energetico_basal * 0.27
    else
        gasto_actividad_fisica = gasto_energetico_basal * 0.54
    end
    
    gasto_energetico_total = gasto_energetico_basal + efecto_termogeno + gasto_actividad_fisica
    calorias_menu = menu.reduce(0) { |sum, value| sum + value.obtener_valor_energetico_kcal }
    
    if (gasto_energetico_total < (calorias_menu * 0.9))
        return true;
    else
        return false;
    end
end

#valoracion_nutricionalObject



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/etiqueta_nutricional/paciente.rb', line 121

def valoracion_nutricional
    
    gasto_energetico_basal = 0
    if (@sexo == 1) # mujer
        gasto_energetico_basal = (10 * @peso) + (6.25 * @altura) - (5 * @edad) - 161
    else # Hombre
        gasto_energetico_basal = (10 * @peso) + (6.25 * @altura) - (5 * @edad) + 5
    end
    
    efecto_termogeno = gasto_energetico_basal * 0.1
    gasto_actividad_fisica = 0
    
    if (@actividad_fisica == "reposo")
        gasto_actividad_fisica = gasto_energetico_basal * 0
    elsif (@actividad_fisica == "Actividad ligera")
        gasto_actividad_fisica = gasto_energetico_basal * 0.12
    elsif (@actividad_fisica == "Actividad moderada")
        gasto_actividad_fisica = gasto_energetico_basal * 0.27
    else
        gasto_actividad_fisica = gasto_energetico_basal * 0.54
    end
    
    gasto_energetico_total = gasto_energetico_basal + efecto_termogeno + gasto_actividad_fisica
    
    return gasto_energetico_total
end