trizetto-api 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  - - ">="