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.
- 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
|
- - ">="
|