Class: Paciente

Inherits:
Individuo show all
Defined in:
lib/InforNutricional/icc.rb

Overview

Clase Paciente que hereda de Individuo

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, peso, talla, edad, sexo, cintura, cadera, brazo, tricipital, bicipital, subescapular, suprailiaco, actividad) ⇒ Paciente

Método initialize:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/InforNutricional/icc.rb', line 39

def initialize(nombre, peso, talla, edad, sexo, cintura, cadera, brazo, tricipital, bicipital, subescapular, suprailiaco, actividad)
    
    # Heredando datos básicos de Individuo
    super(nombre, edad, sexo)
    
    #Variables de instancia:
    @peso = peso
    @talla = talla
    @cintura = cintura
    @cadera = cadera
    @brazo = brazo
    @tricipital = tricipital
    @bicipital = bicipital
    @subescapular = subescapular
    @suprailiaco = suprailiaco
    @actividad = actividad
    
    #Metodos:
    calculo_imc(peso, talla)
    clasificar_imc(imc)
    descripcion_popular(imc)
    calculo_grasa(imc, edad, sexo)
    calculo_rcc(cintura, cadera, sexo)
    calculo_circunferencia_brazo(brazo)
    calculo_media_pliegues(tricipital, bicipital, subescapular, suprailiaco)
    calculo_peso_teorico_ideal()
    calculo_gasto_energetico_basal()
    calculo_efecto_termogeno()
    calculo_gasto_actividad_fisica()
    calculo_gasto_energ_total()
end

Instance Attribute Details

#actividadObject (readonly)

Returns the value of attribute actividad.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def actividad
  @actividad
end

#bicipitalObject (readonly)

Returns the value of attribute bicipital.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def bicipital
  @bicipital
end

#brazoObject (readonly)

Returns the value of attribute brazo.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def brazo
  @brazo
end

#caderaObject (readonly)

Returns the value of attribute cadera.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def cadera
  @cadera
end

#cinturaObject (readonly)

Returns the value of attribute cintura.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def cintura
  @cintura
end

#descripcionObject (readonly)

Returns the value of attribute descripcion.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def descripcion
  @descripcion
end

#descripcion_rccObject (readonly)

Returns the value of attribute descripcion_rcc.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def descripcion_rcc
  @descripcion_rcc
end

#edadObject (readonly)

Returns the value of attribute edad.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def edad
  @edad
end

#efecto_termogenoObject (readonly)

Returns the value of attribute efecto_termogeno.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def efecto_termogeno
  @efecto_termogeno
end

#gasto_actividadObject (readonly)

Returns the value of attribute gasto_actividad.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def gasto_actividad
  @gasto_actividad
end

#gasto_energ_basalObject (readonly)

Returns the value of attribute gasto_energ_basal.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def gasto_energ_basal
  @gasto_energ_basal
end

#gasto_energ_totalObject (readonly)

Returns the value of attribute gasto_energ_total.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def gasto_energ_total
  @gasto_energ_total
end

#grasaObject (readonly)

Returns the value of attribute grasa.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def grasa
  @grasa
end

#imcObject (readonly)

Returns the value of attribute imc.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def imc
  @imc
end

#nombreObject (readonly)

Returns the value of attribute nombre.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def nombre
  @nombre
end

#omsObject (readonly)

Returns the value of attribute oms.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def oms
  @oms
end

#pesoObject (readonly)

Returns the value of attribute peso.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def peso
  @peso
end

#peso_t_iObject (readonly)

Returns the value of attribute peso_t_i.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def peso_t_i
  @peso_t_i
end

#rccObject (readonly)

Returns the value of attribute rcc.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def rcc
  @rcc
end

#sexoObject (readonly)

Returns the value of attribute sexo.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def sexo
  @sexo
end

#subescapularObject (readonly)

Returns the value of attribute subescapular.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def subescapular
  @subescapular
end

#suprailiacoObject (readonly)

Returns the value of attribute suprailiaco.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def suprailiaco
  @suprailiaco
end

#tallaObject (readonly)

Returns the value of attribute talla.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def talla
  @talla
end

#tricipitalObject (readonly)

Returns the value of attribute tricipital.



35
36
37
# File 'lib/InforNutricional/icc.rb', line 35

def tricipital
  @tricipital
end

Instance Method Details

#<=>(other) ⇒ Object

Método comparable



122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/InforNutricional/icc.rb', line 122

def  <=>(other)
    return nil unless other.instance_of?Paciente
    # @peso <=> other.peso
    # @talla <=> other.talla
    # @cintura <=> other.cintura
    # @cadera <=> other.cadera
    # @brazo <=> other.brazo
    # @tricipital <=> other.tricipital
    # @bicipital <=> other.bicipital
    # @subescapular <=> other.subescapular
    # @suprailiaco <=> other.suprailiaco
    @gasto_energ_total <=> other.gasto_energ_total
end

#calculo_circunferencia_brazo(brazo) ⇒ Object

Método para calcular la circunferencia del brazo que faltaba por calcular:



273
274
275
276
277
278
279
# File 'lib/InforNutricional/icc.rb', line 273

def calculo_circunferencia_brazo(brazo)

    suma = 0
    brazo.each { |num| suma += num }
    @brazo = (suma/brazo.length).round(2)
    
end

#calculo_efecto_termogenoObject

Método que calcula el efecto termógeno del paciente.



89
90
91
92
93
94
95
96
97
# File 'lib/InforNutricional/icc.rb', line 89

def calculo_efecto_termogeno()
    if (@sexo == 0)
        @efecto_termogeno = @gasto_energ_basal*0.10
    else
        @efecto_termogeno = @gasto_energ_basal*0.10
    end
    
    @efecto_termogeno = @efecto_termogeno.round(3)
end

#calculo_gasto_actividad_fisicaObject

Método que calcula el gasto de actividad física del paciente, en función a su actividad.



100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/InforNutricional/icc.rb', line 100

def calculo_gasto_actividad_fisica()
    case @actividad
        when "reposo"
            @factor_act = 0.0
        when "ligera"
            @factor_act = 0.12
        when "moderada"
            @factor_act = 0.27
        else 
            @factor_act = 0.54
    end
    @gasto_actividad = @gasto_energ_basal * @factor_act
    @gasto_actividad = @gasto_actividad.round(4)
end

#calculo_gasto_energ_totalObject

Método que calcula el gasto energético total del paciente



116
117
118
119
# File 'lib/InforNutricional/icc.rb', line 116

def calculo_gasto_energ_total()
    @gasto_energ_total = @gasto_energ_basal + @efecto_termogeno + @gasto_actividad
    @gasto_energ_total.round(3)
end

#calculo_gasto_energetico_basalObject

Método que calcula el gasto energético basal según el sexo del paciente.



79
80
81
82
83
84
85
86
# File 'lib/InforNutricional/icc.rb', line 79

def calculo_gasto_energetico_basal()
    if (@sexo == 0)
        @gasto_energ_basal = (10.0*@peso) + (6.25 * @talla) - (5.0*@edad) - 161.0
    else
        @gasto_energ_basal = (10.0*@peso) + (6.25 * @talla) - (5.0*@edad) + 5.0
    end
    @gasto_energ_basal.round(3)
end

#calculo_grasa(imc, edad, sexo) ⇒ Object

Método para calcular el porcentaje de grasa según el valor del imc, edad y sexo de la persona. Son necesarios datos auxiliares para realizar el cálculo:



202
203
204
205
206
207
208
209
210
211
# File 'lib/InforNutricional/icc.rb', line 202

def calculo_grasa(imc, edad, sexo)
    aux1 = 1.2
    aux2 = 0.23
    aux3 = 10.8
    aux4 = 5.4
    
    grasa = (aux1*imc) + (aux2*edad) - (aux3*sexo) - aux4
    @grasa = grasa.round(2)

end

#calculo_imc(peso, talla) ⇒ Object

Método para calcular el valor de imc dado el peso y altura de la persona:



137
138
139
140
# File 'lib/InforNutricional/icc.rb', line 137

def calculo_imc(peso, talla)
    imc = peso/(talla*talla)
    @imc = imc.round(2)
end

#calculo_media_pliegues(tricipital, bicipital, subescapular, suprailiaco) ⇒ Object

Método para calcular la media de cada uno de los pliegues:



283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/InforNutricional/icc.rb', line 283

def calculo_media_pliegues(tricipital, bicipital, subescapular, suprailiaco)
    suma = 0
    tricipital.each { |num| suma += num }
    @tricipital = (suma/tricipital.length).round(2)
    
    suma = 0
    bicipital.each { |num| suma += num }
    @bicipital = (suma/bicipital.length).round(2)
    
    suma = 0
    subescapular.each { |num| suma += num }
    @subescapular = (suma/subescapular.length).round(2)
    
    suma = 0
    suprailiaco.each { |num| suma += num }
    @suprailiaco = (suma/suprailiaco.length).round(2)

end

#calculo_peso_teorico_idealObject

Método que calcula el peso teórico ideal del paciente



72
73
74
75
76
# File 'lib/InforNutricional/icc.rb', line 72

def calculo_peso_teorico_ideal()
    
   @peso_t_i = (@talla - 1.50) * 0.75 + 50
   @peso_t_i.round(3)
end

#calculo_rcc(cintura, cadera, sexo) ⇒ Object

Método para calcular la relación cadera-cintura dado las medias de estas y el sexo de la persona:



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/InforNutricional/icc.rb', line 214

def calculo_rcc(cintura, cadera, sexo)
    
    #Necesito calcular las medias de cintura
    suma = 0
    cintura.each { |num| suma += num }
    @cintura = (suma/cintura.length).round(2)
    
    #Necesito calcular las medias de cadera
    suma = 0
    cadera.each { |num| suma += num }
    @cadera = (suma/cadera.length).round(2)
    
    #Una vez tengo los datos calculo su rcc
    rcc = (@cintura/@cadera).round(2)
    @rcc = "#{rcc}"
    
    
     
    #Determinando a partir del valor del rcc, el riesgo de la persona.
    
    #Hombres
    if (sexo == 1)
        case rcc
            when (0 .. 0.82)
                 @descripcion_rcc = "que los datos obtenidos son demasiado bajos." 
            when (0.83 .. 0.88) 
                @descripcion_rcc = "bajo."
            when (0.89 .. 0.95)  
                @descripcion_rcc = "moderado." 
            when (0.96 .. 1.01) 
                @descripcion_rcc = "alto." 
                
            else
                @descripcion_rcc = "muy alto." 
            
        end
    end

    #Mujeres
    if (sexo == 0)
        case rcc
            when 0 .. 0.71
                 @descripcion_rcc = "que los datos obtenidos son demasiado bajos." 
            when 0.72 .. 0.75
                @descripcion_rcc = "bajo."
            when 0.76 .. 0.78
                @descripcion_rcc = "bajo-moderado." 
            when 0.78 .. 0.82 
                @descripcionn_rcc = "moderado." 
                
            else
                @descripcion_rcc = "alto."
        end   
    end

end

#clasificar_imc(imc) ⇒ Object

Método para clasificar el imc según la tabla:



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/InforNutricional/icc.rb', line 160

def clasificar_imc(imc)
    case @imc
    
        when 0 .. 18.49
            @oms = "bajo peso"
        when 18.5 .. 24.9
            @oms = "adecuado"
        when 25.0 .. 29.9
            @oms = "sobrepeso"
        when 30.0 .. 34.9
            @oms = "obesidad grado 1"
        when 35.0 .. 39.9
            @oms = "obesidad grado 2"
                  
        else
            @oms = "obesidad grado 3"
    end

end

Método para clasificar el imc según la descripción popular:



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/InforNutricional/icc.rb', line 181

def descripcion_popular(imc)
    case @imc

        when (0 .. 18.49)
            @descripcion = "delgado."
        when (18.5 .. 24.9)
            @descripcion = "aceptable."
        when (25.0 .. 29.9)
            @descripcion = "sobrepeso."
        when (30.0 .. 34.9)
            @descripcion = "obesidad."
        when (35.0 .. 39.9)
            @descripcion = "obesidad."
                  
        else
            @descripcion = "obesidad."
    end
    
end

#to_sObject

Método para poder ver los valores que toman nuestras variables de instancia y así poder verificar la veracidad de los datos con respecto a los resultados de las pruebas:



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/InforNutricional/icc.rb', line 145

def to_s()
    
    @output = super
    
    @output <<
    
        "El IMC de la persona #{@nombre} es #{@imc}. Su peso es #{@peso} y su altura es #{@talla}. \nTeniendo en cuenta el imc se clasifica como #{@oms} y se considera #{@descripcion}" +
        " \n#{@nombre} tiene #{@edad} años, es con sexo=#{@sexo} y tiene un porcentaje de grasa de #{@grasa}." +
        " \nLa media de cintura es #{@cintura} y la media de cadera es #{@cadera}, por lo tanto la relación cadera-cintura(RCC) es #{@rcc}, parece ser #{@descripcion_rcc}" +
        " Asimismo, la media de la circunferencia de su brazo es #{@brazo}." +
        " \nLa media de los pliegues cutáneos(mm) es la siguiente: Media tricipital: #{@tricipital}; Media bicipital: #{@bicipital}; Media subescapular: #{@subescapular}; Media suprailiaco: #{@suprailiaco}."
end