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