change_health 0.15.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23b7246464a9cee50b55cda5e50f5f39360f12ab3185bead7d17d1138b7be6d6
4
- data.tar.gz: 4642b90b2cea31a84180093211abba8017fb690a53077e8b563f52fc153eeb00
3
+ metadata.gz: e3aefe8f92bcd2320ffd7cf26a436144b7a76b5e90d6d3f56377b37d0278a705
4
+ data.tar.gz: 25d4efc4c61e6356408d9df77fb9daecc93aadd10d687c0fcce530f51ea3fe30
5
5
  SHA512:
6
- metadata.gz: 0cdcd134c67d6e935da27de8db74a3371368477d2548cd9252ca5d6b1ee62d6469a6db473f0454cf457564513d6bb2570a4af1bc438d1ea0995a81b019d6ff5f
7
- data.tar.gz: 9bdbc8f2cc8373896c07c614ea954f43a7684ddfa9e95d13842055158b86c16bee6871111e212b400c5a9f8f65739f35c1a8d988cbc9c2dc960441fb5c6a3713
6
+ metadata.gz: 892a5e89e6204506c34eeb696ef52717441e3a15e9cc0c64461af2ec9fe5203ff884a8ff9919ebff0c4a4d13330d7ecbb9600d727514ab53a1f066f7f55204d6
7
+ data.tar.gz: 2b05c1ba8a94cf1d9a299476b8faf673ae3ab8f41337913159a068e724e3bbf37db57803e1e674b7fb065dc6fc7169f2d8abf2f72ef5348b4a7dffe7ad354b6a
data/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.0.0] - [2021-03-17]
8
+ ### Added
9
+ - Model::Error - help with error codes
10
+ - EligibilityData#recommend_retry? - if it looks like you can retry the exact same request
11
+ - EligibilityData#inactive? - looks for plan status 6
12
+
7
13
  ## [0.15.0] - [2020-06-12]
8
14
  ### Added
9
15
  - Extensions - InNetworkMissing for plans that don't provide in network indicators.
@@ -1,8 +1,55 @@
1
1
  module ChangeHealth
2
2
  module Models
3
+ class Error
4
+ attr_reader :data
5
+
6
+ SIMPLE_RETRY_CODES = %w[
7
+ 42
8
+ 80
9
+ ].freeze
10
+
11
+ NO_RESUBMIT_MESSAGES = %w[
12
+ resubmission not allowed
13
+ do not resubmit
14
+ ].freeze
15
+
16
+ def initialize(data)
17
+ @data = data
18
+ end
19
+
20
+ def message
21
+ field_message || code_message
22
+ end
23
+
24
+ def field_message
25
+ "#{field}: #{description}" if field?
26
+ end
27
+
28
+ def code_message
29
+ "#{code}: #{description}" if code?
30
+ end
31
+
32
+ def retryable?
33
+ code? && SIMPLE_RETRY_CODES.include?(code) && followupAction? && NO_RESUBMIT_MESSAGES.none? {|msg| followupAction.downcase.include?(msg) }
34
+ end
35
+
36
+ %w[field description code followupAction location].each do |method_name|
37
+ define_method("#{method_name}?") do
38
+ false == send(method_name).nil?
39
+ end
40
+
41
+ define_method("#{method_name}") do
42
+ @data[method_name]
43
+ end
44
+ end
45
+ end
46
+
3
47
  class EligibilityData
4
48
  attr_reader :response, :raw
5
49
 
50
+ ACTIVE = '1'
51
+ INACTIVE = '6'
52
+
6
53
  PARSE_DATE = ->(d) {
7
54
  begin
8
55
  d = Date.strptime(d, ChangeHealth::Models::DATE_FORMAT)
@@ -25,18 +72,38 @@ module ChangeHealth
25
72
  end
26
73
 
27
74
  def active?(service_code: '30')
28
- return '1' == plan_status(service_code: service_code).dig('statusCode')
75
+ return ACTIVE == plan_status(service_code: service_code).dig('statusCode')
76
+ end
77
+
78
+ def inactive?(service_code: '30')
79
+ return INACTIVE == plan_status(service_code: service_code).dig('statusCode')
29
80
  end
30
81
 
31
82
  def errors?
32
83
  self.errors.is_a?(Array) && false == self.errors.empty?
33
84
  end
34
85
 
86
+ def errors
87
+ errors = @raw.dig('errors') || []
88
+
89
+ errors.flatten.map {|error| ChangeHealth::Models::Error.new(error) }
90
+ end
91
+
92
+ def recommend_retry?
93
+ return false if errors.empty?
94
+
95
+ error_codes = errors.select(&:code?)
96
+
97
+ return false if error_codes.empty?
98
+
99
+ return error_codes.all?(&:retryable?)
100
+ end
101
+
35
102
  def dependents?
36
103
  true == self.dependents&.any?
37
104
  end
38
105
 
39
- %w(planStatus benefitsInformation controlNumber planDateInformation dependents errors).each do |v|
106
+ %w(planStatus benefitsInformation controlNumber planDateInformation dependents).each do |v|
40
107
  define_method(v) do
41
108
  @raw.dig(v)
42
109
  end
@@ -1,3 +1,3 @@
1
1
  module ChangeHealth
2
- VERSION = '0.15.0'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: change_health
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Crockett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2021-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -180,8 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []
183
- rubyforge_project:
184
- rubygems_version: 2.7.6
183
+ rubygems_version: 3.1.4
185
184
  signing_key:
186
185
  specification_version: 4
187
186
  summary: Ruby wrapper for the ChangeHealth API