trizetto-api 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,50 @@
1
+ module Trizetto
2
+ module Api
3
+ module Eligibility
4
+ module WebService
5
+
6
+ # The <PatientName> in either a Subscriber or Dependent
7
+ #
8
+ # <b>XML Example</b>
9
+ #
10
+ # <patientname>
11
+ # <first>Derek</first>
12
+ # <middle>D</middle>
13
+ # <last>Walter</last>
14
+ # <patientaddress>1634 Maverick Glen</patientaddress>
15
+ # <patientcity>Starkbury</patientcity>
16
+ # <patientstate>IA</patientstate>
17
+ # <patientzip>38592</patientzip>
18
+ # </patientname>
19
+ #
20
+ # <b>Example</b>
21
+ #
22
+ # patient = Patient.new(patientname: {first: 'Derek', last: 'Walter', patientaddress: '1634 Maverick Glen'})
23
+ # patient.name.first # => Derek
24
+ # patient.name.last # => Walter
25
+ # patient.name.address # => 1634 Maverick Glen
26
+ #
27
+ class PatientName < Node
28
+ REQUIRED_KEYS =
29
+ {
30
+ first: '',
31
+ last: '',
32
+ }
33
+
34
+ KEY_CLEANUP =
35
+ {
36
+ patientaddress: :address,
37
+ patientaddress2: :address_2,
38
+ patientcity: :city,
39
+ patientstate: :state,
40
+ patientzip: :zip
41
+ }
42
+
43
+ def initialize(raw_hash = {})
44
+ super(raw_hash)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,62 @@
1
+ module Trizetto
2
+ module Api
3
+ module Eligibility
4
+ module WebService
5
+
6
+ # Rejections appear in a few places in the eligibility response.
7
+ # Any node that can have a rejection should prepend this module
8
+ #
9
+ # *Example*
10
+ # class InfoReciever < Node
11
+ # prepend Rejectable
12
+ # end
13
+ #
14
+ # <b>Example XML</b>
15
+ # <infosource>
16
+ # <rejection>
17
+ # <rejectreason>Unable to Respond at Current Time</rejectreason>
18
+ # <followupaction>Resubmission Allowed</followupaction>
19
+ # </rejection>
20
+ # <i/nfosource>
21
+ #
22
+ # <b>Example XML</b>
23
+ # <inforeceiver>
24
+ # <rejection>
25
+ # <rejectreason>Provider Not on File</rejectreason>
26
+ # <followupaction>Please Correct and Resubmit</followupaction>
27
+ # </rejection>
28
+ # </inforeceiver>
29
+ #
30
+ # <b>Example XML</b>
31
+ # <subscriber>
32
+ # <rejection>
33
+ # <rejectreason>Invalid/Missing Subscriber/Insured Name</rejectreason>
34
+ # <followupaction>Please Correct and Resubmit</followupaction>
35
+ # </rejection>
36
+ # <rejection>
37
+ # <rejectreason>Patient Birth Date Does Not Match That for the Patient on the Database</rejectreason>
38
+ # <followupaction>Please Correct and Resubmit</followupaction>
39
+ # </rejection>
40
+ # </subscriber>
41
+ #
42
+ module Rejectable
43
+ def after_inititlize(hash)
44
+ super(hash)
45
+
46
+ # This is in an openstruct and after inititalize, :rejection in the
47
+ # hash will have created an accessor, so nil that out here, we're using
48
+ # rejections (plural) not rejection (singular)
49
+ self.rejection = nil
50
+
51
+ rejections_xml = hash[:rejection] || []
52
+ rejections_xml = [rejections_xml] if rejections_xml.is_a?(Hash)
53
+
54
+ self.rejections = rejections_xml.map do |rejection_xml|
55
+ Rejection.new(rejection_xml).tap {|r| r.source = self }
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,31 @@
1
+ module Trizetto
2
+ module Api
3
+ module Eligibility
4
+ module WebService
5
+
6
+ # A rejection in the eligibility response.
7
+ #
8
+ # <b>Example XML</b>
9
+ # <rejection>
10
+ # <rejectreason>Subscriber/Insured Not Found</rejectreason>
11
+ # <followupaction>Please Correct and Resubmit</followupaction>
12
+ # </rejection>
13
+ #
14
+ # @see Rejectable
15
+ class Rejection < Node
16
+ KEY_CLEANUP =
17
+ {
18
+ rejectreason: :reason,
19
+ followupaction: :follow_up_action,
20
+ }
21
+
22
+ attr_accessor :source
23
+
24
+ def initialize(raw_hash = {})
25
+ super(raw_hash)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
1
+ module Trizetto
2
+ module Api
3
+ module Eligibility
4
+ module WebService
5
+
6
+ # The subscriber is who holds the insurance. They may be the patient, or
7
+ # they may have dependents who are the patients.
8
+ class Subscriber < Patient
9
+ prepend Rejectable
10
+
11
+ def initialize(raw_hash = {})
12
+ # If we are in subscriber / depdent relationship, we get back subscribername
13
+ # instead of patientname (as the subscriber is _not_ the patient). For
14
+ # convience, we'll transform the subscriber name into a name
15
+
16
+ clean_hash = raw_hash.dup
17
+ if clean_hash.has_key?(:subscribername) && !clean_hash.has_key?(:patientname) && clean_hash[:subscribername].is_a?(Hash)
18
+ clean_hash[:patientname] = clean_hash.delete(:subscribername)
19
+ clean_hash[:patientname].keys.each do |key|
20
+ if key.to_s =~ /^subscriber(.*)$/
21
+ clean_hash[:patientname]["patient#{$1}".to_sym] = clean_hash[:patientname].delete(key)
22
+ end
23
+ end
24
+ end
25
+
26
+ super(clean_hash)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,47 @@
1
+ module Trizetto
2
+ module Api
3
+ module Eligibility
4
+ module WebService
5
+ # Wraps a validation error returned in the SOAP response body
6
+ #
7
+ # <b>Example</b>
8
+ #
9
+ # failure = ValidationFailure.new({affected_fields: {string: "InsuranceNum"}, message: "Please enter InsuranceNum."}`)
10
+ # failure.affected_fields # =>["InsuranceNum"]
11
+ # failure.message # => "Please enter InsuranceNum."
12
+ #
13
+ class ValidationFailure
14
+
15
+ # An array of strings indicating which fields had a validation failure.
16
+ #
17
+ # While the WSDL has this as an array, in practice, there is one field in that array
18
+ #
19
+ # <b>WSDL Reference</b>
20
+ #
21
+ # <s:element minOccurs="0" maxOccurs="1" name="AffectedFields" type="tns:ArrayOfString" />
22
+ #
23
+ attr_accessor :affected_fields
24
+
25
+ # The validation error associated with the affected fields
26
+ #
27
+ # <b>WSDL Reference</b>
28
+ #
29
+ # <s:element minOccurs="0" maxOccurs="1" name="Message" type="s:string" />
30
+ #
31
+ attr_accessor :message
32
+
33
+ # Initialize the Validation failure from a parsed DoInquiry response hash
34
+ #
35
+ def initialize(validation_failure_hash)
36
+ self.affected_fields = Array((validation_failure_hash.dig(:affected_fields) || {})[:string])
37
+ self.message = validation_failure_hash[:message]
38
+ end
39
+
40
+ def to_h
41
+ {affected_fields: affected_fields, message: message}
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -4,11 +4,11 @@ module Trizetto
4
4
 
5
5
  # Ruby wrapper for the PayerList WebService
6
6
  #
7
- # See Also:
7
+ # <b>References</b>
8
8
  #
9
- # - Service Documentation: https://mytools.gatewayedi.com/Help/documents/Eligibility/WS%20PayerList%20Vendor%20Toolkit.pdf
10
- # - WSDL: https://services.gatewayedi.com/PayerList/PayerList.asmx?WSDL
11
- # - Service Description: https://services.gatewayedi.com/PayerList/PayerList.asmx
9
+ # - {https://mytools.gatewayedi.com/Help/documents/Eligibility/WS%20PayerList%20Vendor%20Toolkit.pdf Service Documentation}
10
+ # - {https://services.gatewayedi.com/PayerList/PayerList.asmx?WSDL WSDL}
11
+ # - {https://services.gatewayedi.com/PayerList/PayerList.asmx Service Description}
12
12
  class WebService < Trizetto::Api::WebService
13
13
 
14
14
  def initialize(options = {})
@@ -20,8 +20,8 @@ module Trizetto
20
20
 
21
21
  # Tests to see if the service is up
22
22
  #
23
- # See Also:
24
- # - Service Description https://services.gatewayedi.com/PayerList/PayerList.asmx?op=Ping
23
+ # <b>References</b>
24
+ # - {https://services.gatewayedi.com/PayerList/PayerList.asmx?op=Ping Service Description }
25
25
  def ping
26
26
  @client.call(:ping, message: {})
27
27
  end
@@ -30,7 +30,7 @@ module Trizetto
30
30
  # servicing states and links to their enrollment documentation, if it exists.
31
31
  #
32
32
  # The service provides the following information for each payer
33
- # Type – HCFA or UB.
33
+ # - Type – HCFA or UB.
34
34
  # - Payer ID – The Gateway EDI payer identification number.
35
35
  # - Payer Name – The payer name.
36
36
  # - Nation Wide – Yes or No.
@@ -43,7 +43,9 @@ module Trizetto
43
43
  # - Provider ID Required – Yes or No.
44
44
  # - NPI Enabled – Yes or No.
45
45
  # - Last Date Modified – Last date that payer information was modified.
46
- # Note: You probably need to set a long timeout to make this call
46
+ #
47
+ # <b>Note</b>: You probably need to set a long timeout to make this call
48
+ # <b>Note</b>: I've never got this request to complete
47
49
  def payer_list
48
50
  @client.call(:get_xml_payer_list, message: {})
49
51
  end
@@ -1,5 +1,5 @@
1
1
  module Trizetto
2
2
  module Api
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -24,7 +24,11 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "bundler", "~> 1.16"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "byebug", "~> 9.0"
27
28
 
28
29
  spec.add_dependency "savon", "~> 2.0"
29
30
  spec.add_dependency "savon-multipart", "~> 2.0"
31
+
32
+ # Hash#dig is usedbu
33
+ spec.required_ruby_version = '>= 2.3.0'
30
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trizetto-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Naegle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-12 00:00:00.000000000 Z
11
+ date: 2018-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '9.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '9.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: savon
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +104,7 @@ files:
90
104
  - ".gitignore"
91
105
  - ".rspec"
92
106
  - ".travis.yml"
107
+ - ".yardopts"
93
108
  - CHANGELOG.md
94
109
  - CODE_OF_CONDUCT.md
95
110
  - Gemfile
@@ -106,6 +121,20 @@ files:
106
121
  - lib/trizetto/api/eligibility/core2.wsdl
107
122
  - lib/trizetto/api/eligibility/web_service.rb
108
123
  - lib/trizetto/api/eligibility/web_service.wsdl
124
+ - lib/trizetto/api/eligibility/web_service/benefit.rb
125
+ - lib/trizetto/api/eligibility/web_service/benefit_entity.rb
126
+ - lib/trizetto/api/eligibility/web_service/dependent.rb
127
+ - lib/trizetto/api/eligibility/web_service/do_inquiry_response.rb
128
+ - lib/trizetto/api/eligibility/web_service/extra_processing_info.rb
129
+ - lib/trizetto/api/eligibility/web_service/info_reciever.rb
130
+ - lib/trizetto/api/eligibility/web_service/info_source.rb
131
+ - lib/trizetto/api/eligibility/web_service/node.rb
132
+ - lib/trizetto/api/eligibility/web_service/patient.rb
133
+ - lib/trizetto/api/eligibility/web_service/patient_name.rb
134
+ - lib/trizetto/api/eligibility/web_service/rejectable.rb
135
+ - lib/trizetto/api/eligibility/web_service/rejection.rb
136
+ - lib/trizetto/api/eligibility/web_service/subscriber.rb
137
+ - lib/trizetto/api/eligibility/web_service/validation_failure.rb
109
138
  - lib/trizetto/api/payer_list/web_service.rb
110
139
  - lib/trizetto/api/payer_list/web_service.wsdl
111
140
  - lib/trizetto/api/version.rb
@@ -123,7 +152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
152
  requirements:
124
153
  - - ">="
125
154
  - !ruby/object:Gem::Version
126
- version: '0'
155
+ version: 2.3.0
127
156
  required_rubygems_version: !ruby/object:Gem::Requirement
128
157
  requirements:
129
158
  - - ">="