eligible 2.1 → 2.2
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 +7 -0
- data/.gitignore +1 -0
- data/README.md +92 -157
- data/lib/eligible.rb +15 -3
- data/lib/eligible/claim.rb +1 -1
- data/lib/eligible/enrollment.rb +8 -0
- data/lib/eligible/errors/invalid_request_error.rb +4 -0
- data/lib/eligible/version.rb +1 -1
- data/lib/eligible/x12.rb +19 -0
- data/test/test_eligible.rb +34 -34
- metadata +53 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a4997734c6c3bc08f26486f24b423abf9aa42cda
|
4
|
+
data.tar.gz: dec4c20fa5afade770a8bf15ccc001f0407d7737
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d956ab6db3fa44141f7a829974158d282cbf1a3f0d1d5e2517f575dc9d27a9d9f9339f2cf4ad1b8465cf98f5a1011bc27d07a664c3608f5456706ebf1b9b15ea
|
7
|
+
data.tar.gz: 6cf83993819f65db71fadf831ebe4f4aa900e75bd40b3db8038089b717b961f270f2b730d4e73a7a8356f8d20aa0560550ed51725345e22aee84b6cf8c89486c
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -20,34 +20,18 @@ Or install it yourself with:
|
|
20
20
|
|
21
21
|
### Setup
|
22
22
|
require 'eligible'
|
23
|
-
Eligible.api_key = YOUR_KEY
|
24
|
-
|
23
|
+
Eligible.api_key = 'YOUR_KEY'
|
24
|
+
### Test
|
25
|
+
```ruby
|
26
|
+
Eligible.test = true
|
27
|
+
```
|
28
|
+
Include `{ :test => "true" }` in the params for sandbox access.
|
25
29
|
### Format
|
26
30
|
|
27
31
|
Include `{ :format => "X12" }` in the params hash to get back the raw X12 response.
|
28
32
|
|
29
|
-
### Retrieve Plan object and query it
|
30
33
|
|
31
|
-
|
32
|
-
params = {
|
33
|
-
:payer_name => "Aetna",
|
34
|
-
:payer_id => "000001",
|
35
|
-
:provider_last_name => "Last",
|
36
|
-
:provider_first_name => "First",
|
37
|
-
:provider_npi => "12345678",
|
38
|
-
:member_id => "12345678",
|
39
|
-
:member_last_name => "Austen",
|
40
|
-
:member_first_name => "Jane",
|
41
|
-
:member_dob => "1955-12-14"
|
42
|
-
}
|
43
|
-
|
44
|
-
plan = Eligible::Plan.get(params)
|
45
|
-
plan.all # returns all fields on the plan, per the plan/all endpoint
|
46
|
-
plan.status # returns status fields on the plan, per the plan/status endpoint
|
47
|
-
## Etc.: plan.deductible, plan.dates, plan.balance, plan.stop_loss
|
48
|
-
```
|
49
|
-
|
50
|
-
### Retrieve Service object and query it
|
34
|
+
### Retrieve Demographic object and query it
|
51
35
|
|
52
36
|
```ruby
|
53
37
|
params = {
|
@@ -62,21 +46,17 @@ params = {
|
|
62
46
|
:member_dob => "1955-12-14"
|
63
47
|
}
|
64
48
|
|
65
|
-
|
66
|
-
|
67
|
-
service.visits # returns the visits for the service, per service/visits
|
68
|
-
## Etc.: service.copayment, service.coinsurance, service.deductible
|
69
|
-
|
70
|
-
## The endpoints 'general' and 'list' have a slightly different syntax than the others:
|
71
|
-
json = Eligible::Service.general(params)
|
72
|
-
json = Eligible::Service.list(params)
|
49
|
+
demographic = Eligible::Demographic.get(params)
|
50
|
+
demographic.all # returns all fields for the demographic, per demographic/all
|
73
51
|
```
|
74
52
|
|
75
|
-
|
53
|
+
|
54
|
+
### Retrieve Coverage object
|
76
55
|
|
77
56
|
```ruby
|
78
57
|
params = {
|
79
|
-
:
|
58
|
+
:service_type => "33",
|
59
|
+
:network => "OUT",
|
80
60
|
:payer_id => "000001",
|
81
61
|
:provider_last_name => "Last",
|
82
62
|
:provider_first_name => "First",
|
@@ -87,51 +67,16 @@ params = {
|
|
87
67
|
:member_dob => "1955-12-14"
|
88
68
|
}
|
89
69
|
|
90
|
-
|
91
|
-
|
92
|
-
demographic.zip # returns the patient's zip code, per demographic/zip
|
93
|
-
## Etc.: demographic.employer, demographic.address, demographic.dob
|
70
|
+
coverage = Eligible::Coverage.get(params)
|
71
|
+
coverage.all # returns all coverage info for the request
|
94
72
|
```
|
95
73
|
|
96
|
-
### Retrieve Claim object
|
97
|
-
|
98
|
-
```ruby
|
99
|
-
params = {
|
100
|
-
:payer_name => "Aetna",
|
101
|
-
:payer_id => "000001",
|
102
|
-
:information_receiver_organization_name => "Organization",
|
103
|
-
:information_receiver_last_name => "Last",
|
104
|
-
:information_receiver_first_name => "First",
|
105
|
-
:information_receiver_etin => "12345678",
|
106
|
-
:provider_organization_name => "Marshall Group",
|
107
|
-
:provider_last_name => "Last",
|
108
|
-
:provider_first_name => "First",
|
109
|
-
:provider_npi => "12345678",
|
110
|
-
:provider_tax_id => "12345678",
|
111
|
-
:member_id => "12345678",
|
112
|
-
:member_last_name => "Last",
|
113
|
-
:member_first_name => "First",
|
114
|
-
:member_dob => "1955-12-14",
|
115
|
-
:dependent_last_name => "Last",
|
116
|
-
:dependent_first_name => "First",
|
117
|
-
:dependent_dob => "1975-12-14",
|
118
|
-
:dependent_gender => "M",
|
119
|
-
:trace_number => "12345",
|
120
|
-
:claim_control_number => "67890",
|
121
|
-
:claim_charge_amount => "45.00",
|
122
|
-
:claim_start_date => "2013-01-05",
|
123
|
-
:claim_end_date => "2013-01-05"
|
124
|
-
}
|
125
|
-
|
126
|
-
claim = Eligible::Claim.get(params)
|
127
|
-
claim.status # Returns in real time the status (paid, not paid, rejected, denied, etc) of claim specified.
|
128
|
-
```
|
129
74
|
|
130
75
|
### Post Enrollment object
|
131
76
|
|
132
77
|
```ruby
|
133
78
|
params = {
|
134
|
-
"
|
79
|
+
"service_provider_list" => [
|
135
80
|
{
|
136
81
|
"facility_name" => "Quality",
|
137
82
|
"provider_name" => "Jane Austen",
|
@@ -170,129 +115,118 @@ Eligible::Enrollment.post(params)
|
|
170
115
|
params = { "enrollment_request_id" => "123" }
|
171
116
|
|
172
117
|
enrollment = Eligible::Enrollment.get(params)
|
173
|
-
enrollment.status # returns the status of the request to enroll the provider(s)
|
174
|
-
```
|
175
|
-
|
176
|
-
### Retrieve Coverage object
|
177
|
-
|
178
|
-
```ruby
|
179
|
-
params = {
|
180
|
-
:service_type => "33",
|
181
|
-
:network => "OUT",
|
182
|
-
:payer_id => "000001",
|
183
|
-
:provider_last_name => "Last",
|
184
|
-
:provider_first_name => "First",
|
185
|
-
:provider_npi => "12345678",
|
186
|
-
:member_id => "12345678",
|
187
|
-
:member_last_name => "Austen",
|
188
|
-
:member_first_name => "Jane",
|
189
|
-
:member_dob => "1955-12-14"
|
190
|
-
}
|
191
118
|
|
192
|
-
|
193
|
-
coverage.all # returns all coverage info for the request
|
119
|
+
enrollment.enrollment_npis # returns a list of enroll the provider(s)
|
194
120
|
```
|
195
121
|
|
196
122
|
### Post Claim object
|
197
123
|
|
198
124
|
```ruby
|
199
125
|
params = {
|
200
|
-
"
|
201
|
-
|
202
|
-
"
|
203
|
-
|
204
|
-
|
205
|
-
"
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
"
|
210
|
-
"
|
126
|
+
"receiver" => {
|
127
|
+
"name" => "AETNA",
|
128
|
+
"id" => "60054"
|
129
|
+
},
|
130
|
+
"billing_provider" => {
|
131
|
+
"taxonomy_code" => "332B00000X",
|
132
|
+
"practice_name" => "Jane Austen Practice",
|
133
|
+
"npi" => "1922222222",
|
134
|
+
"address" => {
|
135
|
+
"street_line_1" => "419 Fulton",
|
136
|
+
"street_line_2" => "",
|
137
|
+
"city" => "San Francisco",
|
138
|
+
"state" => "CA",
|
139
|
+
"zip" => "94102"
|
211
140
|
},
|
212
|
-
"tin"
|
141
|
+
"tin" => "43291023"
|
213
142
|
},
|
214
|
-
"subscriber"
|
215
|
-
"last_name"
|
216
|
-
"first_name"
|
217
|
-
"member_id"
|
218
|
-
"group_id"
|
219
|
-
"group_name"
|
220
|
-
"dob"
|
221
|
-
"gender"
|
222
|
-
"address"
|
223
|
-
"street_line_1"
|
224
|
-
"street_line_2"
|
225
|
-
"city"
|
226
|
-
"state"
|
227
|
-
"zip"
|
143
|
+
"subscriber" => {
|
144
|
+
"last_name" => "Franklin",
|
145
|
+
"first_name" => "Benjamin",
|
146
|
+
"member_id" => "12312312",
|
147
|
+
"group_id" => "455716",
|
148
|
+
"group_name" => "",
|
149
|
+
"dob" => "1734-05-04",
|
150
|
+
"gender" => "M",
|
151
|
+
"address" => {
|
152
|
+
"street_line_1" => "435 Sugar Lane",
|
153
|
+
"street_line_2" => "",
|
154
|
+
"city" => "Sweet",
|
155
|
+
"state" => "OH",
|
156
|
+
"zip" => "436233127"
|
228
157
|
}
|
229
158
|
},
|
230
|
-
"payer"
|
231
|
-
"name"
|
232
|
-
"id"
|
233
|
-
"address"
|
234
|
-
"street_line_1"
|
235
|
-
"street_line_2"
|
236
|
-
"city"
|
237
|
-
"state"
|
238
|
-
"zip"
|
159
|
+
"payer" => {
|
160
|
+
"name" => "AETNA",
|
161
|
+
"id" => "60054",
|
162
|
+
"address" => {
|
163
|
+
"street_line_1" => "Po Box 981106",
|
164
|
+
"street_line_2" => "",
|
165
|
+
"city" => "El Paso",
|
166
|
+
"state" => "TX",
|
167
|
+
"zip" => "799981222"
|
239
168
|
}
|
240
169
|
},
|
241
|
-
"claim"
|
242
|
-
"total_charge_amount"
|
243
|
-
"claim_frequency"
|
244
|
-
"patient_signature_on_file"
|
245
|
-
"provider_plan_participation"
|
246
|
-
"direct_payment_authorized"
|
247
|
-
"release_of_information"
|
248
|
-
"service_lines"
|
170
|
+
"claim" => {
|
171
|
+
"total_charge_amount" => "275",
|
172
|
+
"claim_frequency" => "1",
|
173
|
+
"patient_signature_on_file" => "Y",
|
174
|
+
"provider_plan_participation" => "A",
|
175
|
+
"direct_payment_authorized" => "Y",
|
176
|
+
"release_of_information" => "I",
|
177
|
+
"service_lines" => [
|
249
178
|
{
|
250
|
-
"line_number"
|
251
|
-
"service_start"
|
252
|
-
"service_end"
|
253
|
-
"place_of_service"
|
254
|
-
"charge_amount"
|
255
|
-
"product_service"
|
256
|
-
"qualifier"
|
257
|
-
"diagnosis_1"
|
179
|
+
"line_number" => "1",
|
180
|
+
"service_start" => "2013-03-07",
|
181
|
+
"service_end" => "2013-03-07",
|
182
|
+
"place_of_service" => "11",
|
183
|
+
"charge_amount" => "275",
|
184
|
+
"product_service" => "99213",
|
185
|
+
"qualifier" => "HC",
|
186
|
+
"diagnosis_1" => "32723"
|
258
187
|
}
|
259
188
|
]
|
260
189
|
}
|
261
190
|
}
|
262
191
|
|
263
|
-
|
264
192
|
Eligible::Claim.post(params)
|
265
193
|
```
|
266
194
|
|
267
195
|
### Retrieve all Claim objects/acknowledgments
|
268
196
|
|
269
197
|
```ruby
|
270
|
-
claims = Eligible::Claim.all # returns
|
198
|
+
claims = Eligible::Claim.all # returns acknowlegdement information for all claims that have been submitted with the API key
|
271
199
|
```
|
272
200
|
|
273
|
-
### Retrieve
|
201
|
+
### Retrieve individual Claim object/acknowledgment
|
274
202
|
|
275
|
-
|
203
|
+
```ruby
|
204
|
+
params = {
|
276
205
|
:reference_id => "12345"
|
277
206
|
}
|
278
207
|
|
279
|
-
|
208
|
+
claim = Eligible::Claim.get(params) # returns acknoweldement information on an individual claim identified by its reference_id
|
209
|
+
```
|
280
210
|
|
281
|
-
### Retrieve
|
211
|
+
### Retrieve Payment status
|
282
212
|
|
283
|
-
|
284
|
-
|
213
|
+
```ruby
|
214
|
+
params = { :reference_id => "89898989" }
|
285
215
|
|
286
|
-
|
216
|
+
Eligible::Payment.get(params) # returns status information on an individual payment identified by its reference_id
|
217
|
+
```
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
### X12 post
|
287
222
|
|
288
223
|
```ruby
|
289
|
-
|
290
|
-
:response_id => "12345"
|
291
|
-
}
|
224
|
+
param = "ISA*00* *00* *ZZ*SENDERID *ZZ*ELIGIB *130610*0409*^*00501*100000001*0*T*:~GS*HS*SENDERID*ELIGIB*20130610*0409*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*137083739083716126837*20130610*0409~HL*1**20*1~NM1*PR*2*UnitedHealthCare*****PI*112~HL*2*1*21*1~NM1*1P*1*AUSTEN*JANE****XX*1222494919~HL*3*2*22*0~TRN*1*1*1453915417~NM1*IL*1*FRANKLIN*BENJAMIN****MI*23412342~DMG*D8*17371207~DTP*291*D8*20130610~EQ*30~SE*13*0001~GE*1*1~IEA*1*100000001~"
|
292
225
|
|
293
|
-
|
226
|
+
Eligible::X12.post param # <Net::HTTPOK 200 OK readbody=true>
|
294
227
|
```
|
295
228
|
|
229
|
+
|
296
230
|
## Tests
|
297
231
|
|
298
232
|
You can run tests with
|
@@ -313,7 +247,8 @@ If you do send a pull request, please add passing tests for the new feature/fix.
|
|
313
247
|
6. Create new Pull Request
|
314
248
|
|
315
249
|
## Changelog
|
316
|
-
|
250
|
+
#### 2.2
|
251
|
+
- New endpoint for x12 POST
|
317
252
|
#### 2.1
|
318
253
|
|
319
254
|
- New endpoint for payment status
|
@@ -329,4 +264,4 @@ If you do send a pull request, please add passing tests for the new feature/fix.
|
|
329
264
|
|
330
265
|
#### 1.0
|
331
266
|
|
332
|
-
- Initial release
|
267
|
+
- Initial release
|
data/lib/eligible.rb
CHANGED
@@ -20,15 +20,18 @@ require 'eligible/claim'
|
|
20
20
|
require 'eligible/enrollment'
|
21
21
|
require 'eligible/coverage'
|
22
22
|
require 'eligible/payment'
|
23
|
+
require 'eligible/x12'
|
23
24
|
|
24
25
|
# Errors
|
25
26
|
require 'eligible/errors/eligible_error'
|
26
27
|
require 'eligible/errors/api_connection_error'
|
27
28
|
require 'eligible/errors/authentication_error'
|
28
29
|
require 'eligible/errors/api_error'
|
30
|
+
require 'eligible/errors/invalid_request_error'
|
29
31
|
|
30
32
|
module Eligible
|
31
33
|
@@api_key = nil
|
34
|
+
@@test = false
|
32
35
|
@@api_base = "https://gds.eligibleapi.com/v1.1"
|
33
36
|
@@api_version = 1.1
|
34
37
|
|
@@ -44,6 +47,15 @@ module Eligible
|
|
44
47
|
@@api_key = api_key
|
45
48
|
end
|
46
49
|
|
50
|
+
|
51
|
+
def self.test
|
52
|
+
@@test? 'true':'false'
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.test=(is_test)
|
56
|
+
@@test = is_test
|
57
|
+
end
|
58
|
+
|
47
59
|
def self.api_version=(version)
|
48
60
|
@@api_version = version
|
49
61
|
end
|
@@ -95,11 +107,11 @@ module Eligible
|
|
95
107
|
query_string = Util.flatten_params(params).collect{|key, value| "#{key}=#{Util.url_encode(value)}"}.join('&')
|
96
108
|
url += "&#{query_string}"
|
97
109
|
end
|
110
|
+
url +="&test=#{self.test}"
|
98
111
|
payload = nil
|
99
112
|
else
|
100
|
-
payload = params.merge!({
|
113
|
+
payload = params.merge!({'api_key' => api_key ,'test' => self.test }).to_json #Util.flatten_params(params).collect{|(key, value)| "#{key}=#{Util.url_encode(value)}"}.join('&')
|
101
114
|
end
|
102
|
-
|
103
115
|
begin
|
104
116
|
headers = { :x_eligible_client_user_agent => Eligible::JSON.dump(ua) }.merge(headers)
|
105
117
|
rescue => e
|
@@ -190,7 +202,7 @@ module Eligible
|
|
190
202
|
end
|
191
203
|
|
192
204
|
def self.invalid_request_error(error, rcode, rbody, error_obj)
|
193
|
-
InvalidRequestError.new(error
|
205
|
+
InvalidRequestError.new(error, rcode, rbody, error_obj)
|
194
206
|
end
|
195
207
|
|
196
208
|
def self.authentication_error(error, rcode, rbody, error_obj)
|
data/lib/eligible/claim.rb
CHANGED
@@ -6,7 +6,7 @@ module Eligible
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.post(params, api_key=nil)
|
9
|
-
response, api_key = Eligible.request(:
|
9
|
+
response, api_key = Eligible.request(:post, "/claims.json", api_key, params)
|
10
10
|
Util.convert_to_eligible_object(response, api_key)
|
11
11
|
end
|
12
12
|
|
data/lib/eligible/enrollment.rb
CHANGED
data/lib/eligible/version.rb
CHANGED
data/lib/eligible/x12.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Eligible
|
2
|
+
class X12 < APIResource
|
3
|
+
|
4
|
+
def self.post(params, api_key=nil)
|
5
|
+
require 'net/http'
|
6
|
+
require 'net/https'
|
7
|
+
require 'uri'
|
8
|
+
uri = URI.parse("https://gds.eligibleapi.com")
|
9
|
+
|
10
|
+
post_args = "x12=#{params}&api_key=#{Eligible.api_key}&test=#{Eligible.test}"
|
11
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
12
|
+
http.use_ssl = true
|
13
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
14
|
+
path = "/v1.1/x12"
|
15
|
+
response = http.post(path, post_args)
|
16
|
+
Util.convert_to_eligible_object(response, Eligible.api_key)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/test_eligible.rb
CHANGED
@@ -7,15 +7,15 @@ require 'rest-client'
|
|
7
7
|
class TestEligible < Test::Unit::TestCase
|
8
8
|
include Mocha
|
9
9
|
|
10
|
-
context
|
11
|
-
should
|
10
|
+
context 'Version' do
|
11
|
+
should 'have a version number' do
|
12
12
|
assert_not_nil Eligible::VERSION
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
context "General API" do
|
16
|
+
context' "General API"' do
|
17
17
|
setup do
|
18
|
-
Eligible.api_key =
|
18
|
+
Eligible.api_key = 'TEST'
|
19
19
|
@mock = mock
|
20
20
|
Eligible.mock_rest_client = @mock
|
21
21
|
end
|
@@ -25,15 +25,15 @@ class TestEligible < Test::Unit::TestCase
|
|
25
25
|
Eligible.api_key = nil
|
26
26
|
end
|
27
27
|
|
28
|
-
should
|
28
|
+
should 'not specifying api credentials should raise an exception' do
|
29
29
|
Eligible.api_key = nil
|
30
30
|
assert_raises Eligible::AuthenticationError do
|
31
31
|
Eligible::Plan.get({})
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
should
|
36
|
-
Eligible.api_key =
|
35
|
+
should 'specifying invalid api credentials should raise an exception' do
|
36
|
+
Eligible.api_key = 'invalid'
|
37
37
|
response = test_response(test_invalid_api_key_error, 401)
|
38
38
|
assert_raises Eligible::AuthenticationError do
|
39
39
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 401))
|
@@ -42,9 +42,9 @@ class TestEligible < Test::Unit::TestCase
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
context
|
45
|
+
context 'Plan' do
|
46
46
|
setup do
|
47
|
-
Eligible.api_key =
|
47
|
+
Eligible.api_key = 'TEST'
|
48
48
|
@mock = mock
|
49
49
|
Eligible.mock_rest_client = @mock
|
50
50
|
end
|
@@ -54,7 +54,7 @@ class TestEligible < Test::Unit::TestCase
|
|
54
54
|
Eligible.api_key = nil
|
55
55
|
end
|
56
56
|
|
57
|
-
should
|
57
|
+
should 'return an error if no params are supplied' do
|
58
58
|
params = {}
|
59
59
|
response = test_response(test_plan_missing_params)
|
60
60
|
@mock.expects(:get).returns(response)
|
@@ -62,7 +62,7 @@ class TestEligible < Test::Unit::TestCase
|
|
62
62
|
assert_not_nil plan.error
|
63
63
|
end
|
64
64
|
|
65
|
-
should
|
65
|
+
should 'return plan information if valid params are supplied' do
|
66
66
|
params = {
|
67
67
|
:payer_name => "Aetna",
|
68
68
|
:payer_id => "000001",
|
@@ -81,7 +81,7 @@ class TestEligible < Test::Unit::TestCase
|
|
81
81
|
assert_not_nil plan.all
|
82
82
|
end
|
83
83
|
|
84
|
-
should
|
84
|
+
should 'return the right subsets of the data when requested' do
|
85
85
|
params = {
|
86
86
|
:payer_name => "Aetna",
|
87
87
|
:payer_id => "000001",
|
@@ -111,9 +111,9 @@ class TestEligible < Test::Unit::TestCase
|
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
-
context
|
114
|
+
context 'Service' do
|
115
115
|
setup do
|
116
|
-
Eligible.api_key =
|
116
|
+
Eligible.api_key = 'TEST'
|
117
117
|
@mock = mock
|
118
118
|
Eligible.mock_rest_client = @mock
|
119
119
|
end
|
@@ -123,7 +123,7 @@ class TestEligible < Test::Unit::TestCase
|
|
123
123
|
Eligible.api_key = nil
|
124
124
|
end
|
125
125
|
|
126
|
-
should
|
126
|
+
should 'return an error if no params are supplied' do
|
127
127
|
params = {}
|
128
128
|
response = test_response(test_service_missing_params)
|
129
129
|
@mock.expects(:get).returns(response)
|
@@ -131,7 +131,7 @@ class TestEligible < Test::Unit::TestCase
|
|
131
131
|
assert_not_nil service.error
|
132
132
|
end
|
133
133
|
|
134
|
-
should
|
134
|
+
should 'return eligibility information if valid params are supplied' do
|
135
135
|
params = {
|
136
136
|
:payer_name => "Aetna",
|
137
137
|
:payer_id => "000001",
|
@@ -150,7 +150,7 @@ class TestEligible < Test::Unit::TestCase
|
|
150
150
|
assert_not_nil service.all
|
151
151
|
end
|
152
152
|
|
153
|
-
should
|
153
|
+
should 'return the right subsets of the data when requested' do
|
154
154
|
params = {
|
155
155
|
:payer_name => "Aetna",
|
156
156
|
:payer_id => "000001",
|
@@ -178,9 +178,9 @@ class TestEligible < Test::Unit::TestCase
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
-
context
|
181
|
+
context 'Demographic' do
|
182
182
|
setup do
|
183
|
-
Eligible.api_key =
|
183
|
+
Eligible.api_key = 'TEST'
|
184
184
|
@mock = mock
|
185
185
|
Eligible.mock_rest_client = @mock
|
186
186
|
end
|
@@ -190,7 +190,7 @@ class TestEligible < Test::Unit::TestCase
|
|
190
190
|
Eligible.api_key = nil
|
191
191
|
end
|
192
192
|
|
193
|
-
should
|
193
|
+
should 'return an error if no params are supplied' do
|
194
194
|
params = {}
|
195
195
|
response = test_response(test_demographic_missing_params)
|
196
196
|
@mock.expects(:get).returns(response)
|
@@ -198,7 +198,7 @@ class TestEligible < Test::Unit::TestCase
|
|
198
198
|
assert_not_nil demographic.error
|
199
199
|
end
|
200
200
|
|
201
|
-
should
|
201
|
+
should 'return demographic information if valid params are supplied' do
|
202
202
|
params = {
|
203
203
|
:payer_name => "Aetna",
|
204
204
|
:payer_id => "000001",
|
@@ -217,7 +217,7 @@ class TestEligible < Test::Unit::TestCase
|
|
217
217
|
assert_not_nil demographic.all
|
218
218
|
end
|
219
219
|
|
220
|
-
should
|
220
|
+
should 'return the right subsets of the data when requested' do
|
221
221
|
params = {
|
222
222
|
:payer_name => "Aetna",
|
223
223
|
:payer_id => "000001",
|
@@ -245,9 +245,9 @@ class TestEligible < Test::Unit::TestCase
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
248
|
-
context
|
248
|
+
context 'Claim' do
|
249
249
|
setup do
|
250
|
-
Eligible.api_key =
|
250
|
+
Eligible.api_key = 'TEST'
|
251
251
|
@mock = mock
|
252
252
|
Eligible.mock_rest_client = @mock
|
253
253
|
end
|
@@ -257,7 +257,7 @@ class TestEligible < Test::Unit::TestCase
|
|
257
257
|
Eligible.api_key = nil
|
258
258
|
end
|
259
259
|
|
260
|
-
should
|
260
|
+
should 'return an error if no params are supplied' do
|
261
261
|
params = {}
|
262
262
|
response = test_response(test_claim_missing_params)
|
263
263
|
@mock.expects(:get).returns(response)
|
@@ -265,15 +265,15 @@ class TestEligible < Test::Unit::TestCase
|
|
265
265
|
assert claim["success"] == "false"
|
266
266
|
end
|
267
267
|
|
268
|
-
should
|
268
|
+
should 'post a claim' do
|
269
269
|
params = {"api_key"=>"asdfsdfsd21132ddsfsdfd", "billing_provider"=>{"taxonomy_code"=>"332B00000X", "practice_name"=>"Jane Austen Practice", "npi"=>"1922222222", "address"=>{"street_line_1"=>"419 Fulton", "street_line_2"=>"", "city"=>"San Francisco", "state"=>"CA", "zip"=>"94102"}, "tin"=>"43291023", "insurance_provider_id"=>"129873210"}, "pay_to_provider"=>{"address"=>{"street_line_1"=>"", "street_line_2"=>"", "city"=>"", "state"=>"", "zip"=>""}}, "subscriber"=>{"last_name"=>"Franklin", "first_name"=>"Benjamin", "member_id"=>"W2832032427", "group_id"=>"455716", "group_name"=>"none", "dob"=>"1734-05-04", "gender"=>"M", "address"=>{"street_line_1"=>"435 Sugar Lane", "street_line_2"=>"", "city"=>"Sweet", "state"=>"OH", "zip"=>"436233127"}}, "payer"=>{"name"=>"AETNA", "id"=>"60054", "address"=>{"street_line_1"=>"Po Box 981106", "street_line_2"=>"", "city"=>"El Paso", "state"=>"TX", "zip"=>"799981222"}}, "dependent"=>{"relationship"=>"", "last_name"=>"", "first_name"=>"", "dob"=>"", "gender"=>"", "address"=>{"street_line_1"=>"", "street_line_2"=>"", "city"=>"", "state"=>"", "zip"=>""}}, "claim"=>{"total_charge_amount"=>"275", "claim_frequency"=>"1", "patient_signature_on_file"=>"Y", "provider_plan_participation"=>"A", "direct_payment_authorized"=>"Y", "release_of_information"=>"I", "service_lines"=>[{"line_number"=>"1", "service_start"=>"2013-03-07", "service_end"=>"2013-03-07", "authorization_code"=>"", "place_of_service"=>"11", "charge_amount"=>"275", "product_service"=>"99213", "qualifier"=>"HC", "description"=>"", "modifier_1"=>"", "diagnosis_1"=>"32723"}]}}
|
270
270
|
response = test_response(test_post_claim)
|
271
271
|
end
|
272
272
|
end
|
273
273
|
|
274
|
-
context
|
274
|
+
context 'Coverage' do
|
275
275
|
setup do
|
276
|
-
Eligible.api_key =
|
276
|
+
Eligible.api_key = 'TEST'
|
277
277
|
@mock = mock
|
278
278
|
Eligible.mock_rest_client = @mock
|
279
279
|
end
|
@@ -283,7 +283,7 @@ class TestEligible < Test::Unit::TestCase
|
|
283
283
|
Eligible.api_key = nil
|
284
284
|
end
|
285
285
|
|
286
|
-
should
|
286
|
+
should 'return an error if no params are supplied' do
|
287
287
|
params = {}
|
288
288
|
response = test_response(test_coverage_missing_params)
|
289
289
|
@mock.expects(:get).returns(response)
|
@@ -291,7 +291,7 @@ class TestEligible < Test::Unit::TestCase
|
|
291
291
|
assert_not_nil coverage.error
|
292
292
|
end
|
293
293
|
|
294
|
-
should
|
294
|
+
should 'return coverage information if valid params are supplied' do
|
295
295
|
params = {
|
296
296
|
:payer_name => "Aetna",
|
297
297
|
:payer_id => "000001",
|
@@ -311,9 +311,9 @@ class TestEligible < Test::Unit::TestCase
|
|
311
311
|
end
|
312
312
|
end
|
313
313
|
|
314
|
-
context
|
314
|
+
context 'Enrollment' do
|
315
315
|
setup do
|
316
|
-
Eligible.api_key =
|
316
|
+
Eligible.api_key = 'TEST'
|
317
317
|
@mock = mock
|
318
318
|
Eligible.mock_rest_client = @mock
|
319
319
|
end
|
@@ -323,7 +323,7 @@ class TestEligible < Test::Unit::TestCase
|
|
323
323
|
Eligible.api_key = nil
|
324
324
|
end
|
325
325
|
|
326
|
-
should
|
326
|
+
should 'post an enrollment request' do
|
327
327
|
params = {"service_provider_list"=>[{"facility_name"=>"Quality", "provider_name"=>"Jane Austen", "tax_id"=>"12345678", "address"=>"125 Snow Shoe Road", "city"=>"Sacramento", "state"=>"CA", "zip"=>"94107", "ptan"=>"54321", "npi"=>"987654321"}, {"facility_name"=>"Aetna", "provider_name"=>"Jack Austen", "tax_id"=>"12345678", "address"=>"985 Snow Shoe Road", "city"=>"Menlo Park", "state"=>"CA", "zip"=>"94107", "ptan"=>"54321", "npi"=>"987654321"}], "payer_ids"=>["00431", "00282"]}
|
328
328
|
response = test_response(test_post_enrollment)
|
329
329
|
|
@@ -333,7 +333,7 @@ class TestEligible < Test::Unit::TestCase
|
|
333
333
|
assert_not_nil enrollment.all[:enrollment_request]
|
334
334
|
end
|
335
335
|
|
336
|
-
should
|
336
|
+
should 'get the status of an enrollment request' do
|
337
337
|
params = { "NPI" => "1028384219" }
|
338
338
|
response = test_response(test_get_enrollment)
|
339
339
|
@mock.expects(:get).returns(response)
|
metadata
CHANGED
@@ -1,77 +1,90 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eligible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
5
|
-
prerelease:
|
4
|
+
version: '2.2'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Andy Brett
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mocha
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: shoulda
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: test-unit
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: rake
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rest-client
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
73
|
- - ~>
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '1.4'
|
66
76
|
type: :runtime
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.4'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: multi_json
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
|
-
- -
|
87
|
+
- - '>='
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: 1.0.4
|
77
90
|
- - <
|
@@ -79,7 +92,14 @@ dependencies:
|
|
79
92
|
version: '2'
|
80
93
|
type: :runtime
|
81
94
|
prerelease: false
|
82
|
-
version_requirements:
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.0.4
|
100
|
+
- - <
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '2'
|
83
103
|
description: Eligible is a developer-friendly way to process health care eligibility
|
84
104
|
checks. Learn more at https://eligibleapi.com
|
85
105
|
email:
|
@@ -106,6 +126,7 @@ files:
|
|
106
126
|
- lib/eligible/errors/api_error.rb
|
107
127
|
- lib/eligible/errors/authentication_error.rb
|
108
128
|
- lib/eligible/errors/eligible_error.rb
|
129
|
+
- lib/eligible/errors/invalid_request_error.rb
|
109
130
|
- lib/eligible/json.rb
|
110
131
|
- lib/eligible/payment.rb
|
111
132
|
- lib/eligible/plan.rb
|
@@ -113,32 +134,32 @@ files:
|
|
113
134
|
- lib/eligible/util.rb
|
114
135
|
- lib/eligible/version.rb
|
115
136
|
- lib/eligible/webhook.rb
|
137
|
+
- lib/eligible/x12.rb
|
116
138
|
- test/test_eligible.rb
|
117
139
|
- test/test_helper.rb
|
118
140
|
homepage: https://eligibleapi.com/
|
119
141
|
licenses:
|
120
142
|
- MIT
|
143
|
+
metadata: {}
|
121
144
|
post_install_message:
|
122
145
|
rdoc_options: []
|
123
146
|
require_paths:
|
124
147
|
- lib
|
125
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
149
|
requirements:
|
128
|
-
- -
|
150
|
+
- - '>='
|
129
151
|
- !ruby/object:Gem::Version
|
130
152
|
version: '0'
|
131
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
154
|
requirements:
|
134
|
-
- -
|
155
|
+
- - '>='
|
135
156
|
- !ruby/object:Gem::Version
|
136
157
|
version: '0'
|
137
158
|
requirements: []
|
138
159
|
rubyforge_project:
|
139
|
-
rubygems_version:
|
160
|
+
rubygems_version: 2.0.3
|
140
161
|
signing_key:
|
141
|
-
specification_version:
|
162
|
+
specification_version: 4
|
142
163
|
summary: Ruby wrapper for the Eligible API
|
143
164
|
test_files:
|
144
165
|
- test/test_eligible.rb
|