trizetto-api 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +4 -4
- data/README.md +22 -5
- data/lib/trizetto/api/eligibility/web_service.rb +9 -10
- data/lib/trizetto/api/eligibility/web_service/do_inquiry_response.rb +51 -2
- data/lib/trizetto/api/eligibility/web_service/node.rb +2 -0
- data/lib/trizetto/api/eligibility/web_service/patient.rb +29 -1
- data/lib/trizetto/api/eligibility/web_service/subscriber.rb +0 -1
- data/lib/trizetto/api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3d7816b2c859d5c94ed3433e86421c54a8c2fca
|
4
|
+
data.tar.gz: 1d932011c08b984fc4fc260cdf57165aedfc29df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5ef664108b8e07fbe0e343a4cb840bf651f27706f15e528c70b1ce60077b65bacada2d2410c9ba49f1ae3366566a918f7d7d07291b1a33d740089e5c66dd288
|
7
|
+
data.tar.gz: db5f856514b0c8e4e850ba31e6b4fc5bf81ca4c97b778bedb7605f73a7c277defe46849a02d071fc70521ff952a0047841b4ff5031e79f9450ebce975720ee8e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.2.2 (January 19, 2018) ##
|
2
|
+
|
3
|
+
* The response from the DoInquiry eligiblity check now captures the raw XML and
|
4
|
+
can be recreated from stored XML.
|
5
|
+
* Traces are available as part of the DoInquiry eligibility response. Trizetto
|
6
|
+
adds a trace_id ("99Trizetto") and a trace_number to each request that can be
|
7
|
+
provided to them later as part of a support request. The payer may also add
|
8
|
+
a trace which is available also.
|
9
|
+
|
1
10
|
## 0.2.1 (January 18, 2018) ##
|
2
11
|
|
3
12
|
* Sets required minimum version for ruby to 2.3
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
trizetto-api (0.2.
|
4
|
+
trizetto-api (0.2.1)
|
5
5
|
savon (~> 2.0)
|
6
6
|
savon-multipart (~> 2.0)
|
7
7
|
|
@@ -43,12 +43,12 @@ GEM
|
|
43
43
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
44
|
rspec-support (~> 3.7.0)
|
45
45
|
rspec-support (3.7.0)
|
46
|
-
savon (2.
|
46
|
+
savon (2.12.0)
|
47
47
|
akami (~> 1.2)
|
48
48
|
builder (>= 2.1.2)
|
49
49
|
gyoku (~> 1.2)
|
50
50
|
httpi (~> 2.3)
|
51
|
-
nokogiri (>= 1.
|
51
|
+
nokogiri (>= 1.8.1)
|
52
52
|
nori (~> 2.4)
|
53
53
|
wasabi (~> 3.4)
|
54
54
|
savon-multipart (2.1.1)
|
@@ -67,7 +67,7 @@ PLATFORMS
|
|
67
67
|
|
68
68
|
DEPENDENCIES
|
69
69
|
bundler (~> 1.16)
|
70
|
-
byebug (
|
70
|
+
byebug (~> 9.0)
|
71
71
|
rake (~> 10.0)
|
72
72
|
rspec (~> 3.0)
|
73
73
|
trizetto-api!
|
data/README.md
CHANGED
@@ -8,10 +8,27 @@ Ruby wrapper for Trizetto APIs for Ruby 2.3 and above.
|
|
8
8
|
|
9
9
|
<b>Requires Ruby 2.3 or above</b>
|
10
10
|
|
11
|
-
Add this line to your application's Gemfile:
|
11
|
+
Add this line, and maybe some others, to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
14
|
gem 'trizetto-api'
|
15
|
+
|
16
|
+
# Savon-multipart is used in the CORE II API. savon-multipart 2.1.1 has the
|
17
|
+
# mail gem, pinned to exactly 2.5.4. As of Jan 18, 2018, there is an
|
18
|
+
# unreleased version that uses ~> 2.6. Depending on your existing gems
|
19
|
+
# you may need to add an explicit dependency on savon-multipart if bundle
|
20
|
+
# install fails with a mail gem dependency.
|
21
|
+
#
|
22
|
+
# You can savon-multipart, or use git diretly with one of the below
|
23
|
+
#
|
24
|
+
# savon-multipart as of Jan 18, 2018:
|
25
|
+
# gem 'savon-multipart', git: "git@github.com:savonrb/savon-multipart.git", ref: 'd9a138b6c166cd7c30c28e8888ff19011f8ec071'
|
26
|
+
#
|
27
|
+
# live on the edge
|
28
|
+
# gem 'savon-multipart', git: "git@github.com:savonrb/savon-multipart.git", branch: :master
|
29
|
+
#
|
30
|
+
# Your fork?
|
31
|
+
# gem 'savon-multipart', git: "git@github.com:YOU/savon-multipart.git"
|
15
32
|
```
|
16
33
|
|
17
34
|
And then execute:
|
@@ -22,9 +39,9 @@ Or install it yourself as:
|
|
22
39
|
|
23
40
|
$ gem install trizetto-api
|
24
41
|
|
25
|
-
|
26
42
|
## Usage
|
27
43
|
|
44
|
+
|
28
45
|
### Use the Eligibility Web Service with an XML payload to check eligibility in realtime
|
29
46
|
|
30
47
|
This uses name/value pairs in a request and returns an XML docunment as a response.
|
@@ -32,9 +49,8 @@ This uses name/value pairs in a request and returns an XML docunment as a respon
|
|
32
49
|
To simply check if the patient is covered by a health plan
|
33
50
|
|
34
51
|
```ruby
|
35
|
-
GENERAL_HEALTH_PLAN_COVERAGE_CODE = "30"
|
36
52
|
response = client.do_inquiry({...})
|
37
|
-
response.active_coverage_for?(
|
53
|
+
response.active_coverage_for?("30`") #=> true | false
|
38
54
|
```
|
39
55
|
|
40
56
|
```ruby
|
@@ -53,7 +69,7 @@ client = Trizetto::Api::Eligibility::WebService::Client.new({
|
|
53
69
|
})
|
54
70
|
|
55
71
|
response = client.do_inquiry({
|
56
|
-
'ProviderLastName': '
|
72
|
+
'ProviderLastName': 'YOUR_COMPANY_NAME',
|
57
73
|
'NPI': 'YOUR NPI HERE',
|
58
74
|
'InsuredFirstName': 'Mickey',
|
59
75
|
'InsuredLastName': 'Mouse',
|
@@ -72,6 +88,7 @@ response.errors.validation_failures.first.message # => "Please enter In
|
|
72
88
|
response.success? # => true
|
73
89
|
response.success_code # => "Success"
|
74
90
|
response.transaction_id # => "c6eb40c5584f0496be3f3a48d0ddfd"
|
91
|
+
response.trace_number # => "88213481"
|
75
92
|
response.payer_name # => "BLUE CROSS BLUE SHIELD OF MASSACHUSETTS"
|
76
93
|
response.active_coverage_for?("30") # => true
|
77
94
|
|
@@ -116,16 +116,15 @@ module Trizetto
|
|
116
116
|
#
|
117
117
|
# @return DoInquiryResponse
|
118
118
|
def do_inquiry(parameters={})
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
'
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
)
|
119
|
+
savon_response = @client.call( :do_inquiry, message: { 'Inquiry': {
|
120
|
+
'ResponseDataType': 'Xml',
|
121
|
+
'Parameters': {
|
122
|
+
'MyNameValue': parameters.map { |name, value|
|
123
|
+
{'Name': name, 'Value': value}
|
124
|
+
}
|
125
|
+
}
|
126
|
+
}})
|
127
|
+
DoInquiryResponse.new(savon_response.body, savon_response.to_xml)
|
129
128
|
end
|
130
129
|
|
131
130
|
alias_method :check_eligibility, :do_inquiry
|
@@ -64,9 +64,42 @@ module Trizetto
|
|
64
64
|
# @see InfoReceiver
|
65
65
|
attr_accessor :info_receiver
|
66
66
|
|
67
|
+
# The full XML response from Trizetto if it was provided.
|
68
|
+
attr_accessor :raw_xml
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
+
# Parses the SOAP response from a DoInquiry request into ruby objects
|
71
|
+
#
|
72
|
+
# *Example*
|
73
|
+
#
|
74
|
+
# DoInquiryResponse.new({
|
75
|
+
# do_inquiry_response: {
|
76
|
+
# do_inquiry_result: {
|
77
|
+
# success_code: "Success",
|
78
|
+
# response_as_xml: "...",
|
79
|
+
# extra_processing_info: { ... }
|
80
|
+
# }
|
81
|
+
# }
|
82
|
+
# })
|
83
|
+
#
|
84
|
+
# *Example*
|
85
|
+
#
|
86
|
+
# client = Savon.client.new(...)
|
87
|
+
# savon_response = client.call( :do_inquiry, message: {...} )
|
88
|
+
# DoInquiryResponse.new(savon_response.body, savon_response.to_xml)
|
89
|
+
#
|
90
|
+
# *Example*
|
91
|
+
#
|
92
|
+
# parser = Nori.new(convert_tags_to: lambda { |tag| tag.snakecase.to_sym })
|
93
|
+
# raw_xml = File.read( xml_saved_on_disk_path )
|
94
|
+
# body = parser.parse(raw_xml).dig(:"soap:envelope", :"soap:body")
|
95
|
+
# DoInquiryResponse.new(body, raw_xml)
|
96
|
+
#
|
97
|
+
# @param body [Hash] the body of the SOAP request.
|
98
|
+
# @param xml [string] the raw XML of the SOAP request including the envelope
|
99
|
+
def initialize(body, xml = nil)
|
100
|
+
self.raw_xml = xml
|
101
|
+
|
102
|
+
response = body.dig(:do_inquiry_response, :do_inquiry_result) || {}
|
70
103
|
|
71
104
|
self.success_code = response[:success_code]
|
72
105
|
self.response_as_xml = response[:response_as_xml]
|
@@ -161,6 +194,22 @@ module Trizetto
|
|
161
194
|
benefit.active_coverage? && benefit.service_type_codes.include?(service_type_code.to_s)
|
162
195
|
end)
|
163
196
|
end
|
197
|
+
|
198
|
+
# Trizetto adds a trace number to the subscriber or dependent that can
|
199
|
+
# be given to them later as part of a support request. Additionally
|
200
|
+
# the payer may add a trace. All the traces are available through
|
201
|
+
# `patient.traces`
|
202
|
+
#
|
203
|
+
# <b>Example</b>
|
204
|
+
#
|
205
|
+
# response.trace_number # => "81238881"
|
206
|
+
# response.trace_number('99Trizetto') # => "81238881"
|
207
|
+
# response.traces # => {"99TRIZETTO": "81238881"}
|
208
|
+
#
|
209
|
+
# @return [String] - a number that can be given to support for help with this request
|
210
|
+
def trace_number(trace_id="99Trizetto")
|
211
|
+
patient&.trace_number(trace_id)
|
212
|
+
end
|
164
213
|
end
|
165
214
|
end
|
166
215
|
end
|
@@ -8,6 +8,8 @@ module Trizetto
|
|
8
8
|
# Base class for parsed reponses in the eligibility response.
|
9
9
|
class Node < OpenStruct
|
10
10
|
def initialize(raw_hash = {})
|
11
|
+
raw_hash ||= {} # handle <Node/> tags - the hash comes through, but its nil
|
12
|
+
|
11
13
|
required_keys = self.class.constants.include?(:REQUIRED_KEYS) ? self.class::REQUIRED_KEYS : {}
|
12
14
|
clean_hash = required_keys.merge(raw_hash)
|
13
15
|
|
@@ -11,15 +11,29 @@ module Trizetto
|
|
11
11
|
attr_accessor :name
|
12
12
|
|
13
13
|
# The benefits this patient has.
|
14
|
-
#
|
15
14
|
attr_accessor :benefits
|
16
15
|
|
16
|
+
# The traces, by source (uppercased), in the response
|
17
|
+
#
|
18
|
+
# *Example*
|
19
|
+
#
|
20
|
+
# patient.traces # => {"99TRIZETTO" => "812341292"}
|
21
|
+
#
|
22
|
+
# *Example*
|
23
|
+
#
|
24
|
+
# patient.trace_number("99TRIZETTO") # => "812341292"
|
25
|
+
# patient.trace_number("99Trizeeto") # => "812341292"
|
26
|
+
attr_accessor :traces
|
27
|
+
|
17
28
|
KEY_CLEANUP = {
|
18
29
|
:patientid => :id
|
19
30
|
}
|
20
31
|
|
21
32
|
def initialize(raw_hash = {})
|
33
|
+
trace_ids, trace_numbers = Array(raw_hash.delete(:trace_id)), Array(raw_hash.delete(:trace_number))
|
34
|
+
|
22
35
|
super(raw_hash)
|
36
|
+
|
23
37
|
self.name = PatientName.new(raw_hash[:patientname]) if raw_hash.has_key?(:patientname)
|
24
38
|
|
25
39
|
benefits_xml = raw_hash[:benefit] || []
|
@@ -28,6 +42,20 @@ module Trizetto
|
|
28
42
|
self.benefits = benefits_xml.map do |benefit_xml|
|
29
43
|
Benefit.new(benefit_xml)
|
30
44
|
end
|
45
|
+
|
46
|
+
self.traces = {}
|
47
|
+
if trace_ids.length == trace_numbers.length
|
48
|
+
trace_ids.each.with_index do |id, index|
|
49
|
+
traces[id.upcase] = trace_numbers[index]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Looks for a trace number by trace_id (who added the trace).
|
55
|
+
#
|
56
|
+
# @return [String]
|
57
|
+
def trace_number(trace_id="99Trizetto")
|
58
|
+
self.traces[trace_id&.upcase]
|
31
59
|
end
|
32
60
|
end
|
33
61
|
end
|
data/lib/trizetto/api/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.2
|
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-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|