class Quby::Questionnaires::Entities::Charting::LineChart

Attributes

baseline[RW]

@return [Proc]

clinically_relevant_change[RW]

@return [Float]

tonality[RW]

@return [Symbol]

y_label[RW]

@return [String]

Public Class Methods

new(key, y_label: nil, tonality: :lower_is_better, baseline: nil, clinically_relevant_change: nil, **kwargs) click to toggle source
# File lib/quby/questionnaires/entities/charting/line_chart.rb, line 22
def initialize(key, y_label: nil, tonality: :lower_is_better, baseline: nil, clinically_relevant_change: nil, **kwargs)
  super(key, **kwargs)
  self.y_label = y_label
  self.tonality = tonality
  self.baseline = baseline
  self.clinically_relevant_change = clinically_relevant_change
end

Public Instance Methods

tonality=(value) click to toggle source
# File lib/quby/questionnaires/entities/charting/line_chart.rb, line 34
def tonality=(value)
  fail "Invalid tonality: #{value}" unless [:higher_is_better, :lower_is_better].include?(value)
  @tonality = value
end

Private Instance Methods

make_baseline_proc() click to toggle source
# File lib/quby/questionnaires/entities/charting/line_chart.rb, line 41
def make_baseline_proc
  return unless @baseline

  case @baseline
  when Hash
    ->(age, gender) {
      age_match = @baseline.find { |age_range, _v| age && age_range === age }
      hash_by_gender = (age_match&.last || @baseline.stringify_keys["default"])

      gender_match = hash_by_gender.find {|gender_key, _v| gender && gender_key.to_s == gender.to_s }
      gender_match&.last || hash_by_gender.stringify_keys['default']
    }
  else
    ->(age, gender) { @baseline }
  end
end