class ChangeHealth::Models::EligibilityData

Constants

ACTIVE
INACTIVE
PARSE_DATE

Attributes

raw[R]
response[R]

Public Class Methods

new(data: nil, response: nil) click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 71
def initialize(data: nil, response: nil)
  @response = response
  @raw      = data

  begin
    @raw ||= response&.parsed_response
  rescue JSON::ParserError
  end

  @raw ||= {}
end

Public Instance Methods

active?(service_code: '30') click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 83
def active?(service_code: '30')
  plan_status(service_code: service_code, single: false).any? {|status| ACTIVE == status['statusCode'] }
end
benefits() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 153
def benefits
  kname   = "ChangeHealth::Models::EligibilityBenefits#{self.trading_partner_id&.upcase}"
  klazz   = Object.const_get(kname) if Module.const_defined?(kname)
  klazz ||= ChangeHealth::Models::EligibilityBenefits

  if klazz.respond_to?(:factory)
    klazz = klazz.factory(self)
  end

  klazz.new(self.benefitsInformation || [])
end
dependents?() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 113
def dependents?
  true == self.dependents&.any?
end
errors() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 95
def errors
  errors = @raw.dig('errors') || []

  errors.flatten.map {|error| ChangeHealth::Models::Error.new(error) }
end
errors?() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 91
def errors?
  self.errors.is_a?(Array) && false == self.errors.empty?
end
inactive?(service_code: '30') click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 87
def inactive?(service_code: '30')
  plan_status(service_code: service_code, single: false).any? {|status| INACTIVE == status['statusCode'] }
end
medicare?(**kwargs) click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 165
def medicare?(**kwargs)
  false == benefits.empty? && benefits.where(kwargs).all? {|b| b.medicare? }
end
plan?(name) click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 169
def plan?(name)
  self.plan_names.any? {|pname| name == pname }
end
plan_date_range() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 132
def plan_date_range
  pd = self.date_info&.dig('plan') || ''
  pd.split('-')
end
plan_date_range_end() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 141
def plan_date_range_end
  ChangeHealth::Models::EligibilityData::PARSE_DATE.call(self.plan_date_range[1])
end
plan_date_range_start() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 137
def plan_date_range_start
  ChangeHealth::Models::EligibilityData::PARSE_DATE.call(self.plan_date_range[0])
end
plan_names() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 173
def plan_names
  self.planStatus&.map {|plan_status| plan_status['planDetails'] }&.compact || []
end
plan_status(service_code: , single: true) click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 145
def plan_status(service_code: , single: true)
  if true == single
    self.planStatus&.find {|plan| plan.dig('serviceTypeCodes')&.include?(service_code) } || {}
  else
    self.planStatus&.select {|plan| plan.dig('serviceTypeCodes')&.include?(service_code) } || []
  end
end
recommend_retry?() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 101
def recommend_retry?
  return false unless errors?

  return true if errors.any?(&:represents_down?)

  error_codes = errors.select(&:code?)

  return false if error_codes.empty?

  return error_codes.all?(&:retryable?)
end
trading_partner?(name) click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 177
def trading_partner?(name)
  self.trading_partner_id == name
end
trading_partner_id() click to toggle source
# File lib/change_health/models/eligibility_data.rb, line 181
def trading_partner_id
  @raw['tradingPartnerServiceId']
end