module Framingham::Diabetes
Constants
- BETA_ZERO
- ERRORS
- NORMAL
Public Instance Methods
eval(options = {})
click to toggle source
# File framingham/diabetes.rb, line 4 def eval options = {} begin #initialize options = NORMAL.merge options @age = options[:age].to_f @blood_pressure = options[:blood_pressure].to_f @body_mass_index = options[:body_mass_index].to_f @diabetes_relative = options[:diabetes_relative].to_s.to_sym @fasting_glucose = options[:fasting_glucose].to_f @gender = options[:gender].to_sym @hdl = options[:hdl].to_f @triglyceride = options[:triglyceride].to_f #validate raise ERRORS[:gender] unless GENDERS.include? @gender rescue => exception abort "\033[31merror: " + exception.message + "\033[0m" else #calculate =begin debug stuff puts options.to_s puts "50-65: " + (50...65).include?(@age).to_s puts "65+: " + (@age >= 65).to_s puts "blood_pressure >130: " + (@blood_pressure > 130).to_s puts "bmi 25-30: " + (25...30).include?(@body_mass_index).to_s puts "bmi >=30: " + (@body_mass_index >= 30).to_s puts "diabetes_relative: " + @diabetes_relative.eql?(:true).to_s puts "fasting_glucose: " + (100..126).include?(@fasting_glucose).to_s puts "gender: " + @gender.to_s puts "hdl: " + (@gender.eql?(:female) and @hdl < 50 or @hdl < 40).to_s puts "triglyceride >= 150: " + (@triglyceride >= 150).to_s =end risk_factor = BETA_ZERO[@gender] risk_factor += 0.018 if (50...65).include? @age risk_factor += 0.081 if @age >= 65 risk_factor -= 0.565 if @diabetes_relative.eql? :true risk_factor -= 0.301 if (25...30).include? @body_mass_index risk_factor -= 0.920 if @body_mass_index >= 30 risk_factor -= 0.498 if @blood_pressure > 130 risk_factor -= 0.944 if @gender.eql? :female and @hdl < 50 or @hdl < 40 risk_factor -= 0.575 if @triglyceride >= 150 risk_factor -= 1.980 if (100..126).include? @fasting_glucose 1 / (1 + Math.exp(risk_factor)) end end
help()
click to toggle source
# File framingham/diabetes.rb, line 49 def help "Evaluate 8 year diabetes risk" end