class ChangeHealth::Models::EligibilityBenefits

Public Class Methods

new(benefits) click to toggle source
Calls superclass method
# File lib/change_health/models/eligibility_benefits.rb, line 4
def initialize(benefits)
  super(benefits.map {|benefit| ChangeHealth::Models::EligibilityBenefit.new(benefit) })
end

Public Instance Methods

+(other_obj) click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 16
def +(other_obj)
  self.class.new(self.to_a + other_obj.to_a)
end
find_by(**kwargs) click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 20
def find_by(**kwargs)
  self.find {|benefit| kwargs.all? {|k,v| benefit[k].is_a?(Array) ? benefit[k].include?(v) : v == benefit[k] } }
end
in_network() click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 24
def in_network
  self.where(inPlanNetworkIndicatorCode: 'Y')
end
where(**kwargs) click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 8
def where(**kwargs)
  self.class.new(self.select {|benefit| kwargs.all? {|k,v| benefit_matches?(benefit, k, v) } })
end
where_not(**kwargs) click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 12
def where_not(**kwargs)
  self.class.new(self.reject {|benefit| kwargs.all? {|k,v| benefit_matches?(benefit, k, v) } })
end

Private Instance Methods

benefit_matches?(benefit, k, v) click to toggle source
# File lib/change_health/models/eligibility_benefits.rb, line 88
def benefit_matches?(benefit, k, v)
  if benefit[k].is_a?(Array)
    if v.is_a?(Array)
      return v.any? {|possible_v| benefit[k].include?(possible_v) }
    else
      return benefit[k].include?(v)
    end
  else
    if v.is_a?(Array)
      return v.include?(benefit[k])
    elsif benefit.medicare?
      if :inPlanNetworkIndicatorCode == k.to_sym
        return false == benefit.in_plan_network? if 'N' == v
        return benefit.in_plan_network? if 'Y' == v
      elsif :coverageLevelCode == k.to_sym
        return false == benefit.individual? if EligibilityBenefit::INDIVIDUAL != v
        return benefit.individual? if EligibilityBenefit::INDIVIDUAL == v
      end
    end

    return v == benefit[k]
  end
end