Class: ChangeHealth::Response::EligibilityData
- Inherits:
-
ResponseData
show all
- Defined in:
- lib/change_health/response/eligibility/eligibility_data.rb
Constant Summary
collapse
- ACTIVE =
'1'
- INACTIVE =
'6'
Instance Attribute Summary
Attributes inherited from ResponseData
#raw, #response
Instance Method Summary
collapse
#errors, #errors?, #initialize, #recommend_retry?, #server_error
Instance Method Details
#active?(service_code: '30') ⇒ Boolean
8
9
10
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 8
def active?(service_code: '30')
plan_status(service_code: service_code, single: false).any? {|status| ACTIVE == status['statusCode'] }
end
|
#benefits ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 56
def benefits
kname = "ChangeHealth::Response::EligibilityBenefits#{self.trading_partner_id&.upcase}"
klazz = Object.const_get(kname) if Module.const_defined?(kname)
klazz ||= ChangeHealth::Response::EligibilityBenefits
if klazz.respond_to?(:factory)
klazz = klazz.factory(self)
end
klazz.new(self.benefitsInformation || [])
end
|
#dependents? ⇒ Boolean
16
17
18
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 16
def dependents?
true == self.dependents&.any?
end
|
#inactive?(service_code: '30') ⇒ Boolean
12
13
14
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 12
def inactive?(service_code: '30')
plan_status(service_code: service_code, single: false).any? {|status| INACTIVE == status['statusCode'] }
end
|
#medicare?(**kwargs) ⇒ Boolean
68
69
70
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 68
def medicare?(**kwargs)
false == benefits.empty? && benefits.where(**kwargs).all? {|b| b.medicare? }
end
|
#plan?(name) ⇒ Boolean
72
73
74
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 72
def plan?(name)
self.plan_names.any? {|pname| name == pname }
end
|
#plan_date_range ⇒ Object
35
36
37
38
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 35
def plan_date_range
pd = self.date_info&.dig('plan') || ''
pd.split('-')
end
|
#plan_date_range_end ⇒ Object
44
45
46
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 44
def plan_date_range_end
ChangeHealth::Models::PARSE_DATE.call(self.plan_date_range[1])
end
|
#plan_date_range_start ⇒ Object
40
41
42
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 40
def plan_date_range_start
ChangeHealth::Models::PARSE_DATE.call(self.plan_date_range[0])
end
|
#plan_names ⇒ Object
76
77
78
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 76
def plan_names
self.planStatus&.map {|plan_status| plan_status['planDetails'] }&.compact || []
end
|
#plan_status(service_code:, single: true) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 48
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
|
#trading_partner?(name) ⇒ Boolean
80
81
82
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 80
def trading_partner?(name)
self.trading_partner_id == name
end
|
#trading_partner_id ⇒ Object
84
85
86
|
# File 'lib/change_health/response/eligibility/eligibility_data.rb', line 84
def trading_partner_id
@raw['tradingPartnerServiceId']
end
|