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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -1
- data/.yardopts +1 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile.lock +3 -1
- data/README.md +55 -11
- data/lib/trizetto/api/eligibility/core2.rb +16 -15
- data/lib/trizetto/api/eligibility/web_service.rb +121 -59
- data/lib/trizetto/api/eligibility/web_service/benefit.rb +117 -0
- data/lib/trizetto/api/eligibility/web_service/benefit_entity.rb +54 -0
- data/lib/trizetto/api/eligibility/web_service/dependent.rb +72 -0
- data/lib/trizetto/api/eligibility/web_service/do_inquiry_response.rb +168 -0
- data/lib/trizetto/api/eligibility/web_service/extra_processing_info.rb +41 -0
- data/lib/trizetto/api/eligibility/web_service/info_reciever.rb +14 -0
- data/lib/trizetto/api/eligibility/web_service/info_source.rb +14 -0
- data/lib/trizetto/api/eligibility/web_service/node.rb +43 -0
- data/lib/trizetto/api/eligibility/web_service/patient.rb +36 -0
- data/lib/trizetto/api/eligibility/web_service/patient_name.rb +50 -0
- data/lib/trizetto/api/eligibility/web_service/rejectable.rb +62 -0
- data/lib/trizetto/api/eligibility/web_service/rejection.rb +31 -0
- data/lib/trizetto/api/eligibility/web_service/subscriber.rb +32 -0
- data/lib/trizetto/api/eligibility/web_service/validation_failure.rb +47 -0
- data/lib/trizetto/api/payer_list/web_service.rb +10 -8
- data/lib/trizetto/api/version.rb +1 -1
- data/trizetto-api.gemspec +4 -0
- metadata +32 -3
@@ -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
|
-
#
|
7
|
+
# <b>References</b>
|
8
8
|
#
|
9
|
-
# -
|
10
|
-
# -
|
11
|
-
# -
|
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
|
-
#
|
24
|
-
# -
|
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
|
-
#
|
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
|
data/lib/trizetto/api/version.rb
CHANGED
data/trizetto-api.gemspec
CHANGED
@@ -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
|
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-
|
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:
|
155
|
+
version: 2.3.0
|
127
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
157
|
requirements:
|
129
158
|
- - ">="
|