daisybill_api 0.1.0 → 0.1.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/lib/daisybill_api/data/client.rb +9 -3
- data/lib/daisybill_api/ext/crud.rb +5 -0
- data/lib/daisybill_api/ext/crud/search.rb +41 -0
- data/lib/daisybill_api/models.rb +2 -0
- data/lib/daisybill_api/models/attachment.rb +5 -0
- data/lib/daisybill_api/models/billing_provider.rb +1 -0
- data/lib/daisybill_api/models/billing_provider_attachment.rb +25 -0
- data/lib/daisybill_api/models/claims_administrator.rb +3 -0
- data/lib/daisybill_api/models/patient.rb +1 -1
- data/lib/daisybill_api/models/payer.rb +16 -0
- data/lib/daisybill_api/models/service_line_item.rb +2 -1
- data/lib/daisybill_api/version.rb +1 -1
- data/spec/daisybill_api/data/client_spec.rb +55 -0
- data/spec/daisybill_api/models/attachment_spec.rb +3 -1
- data/spec/daisybill_api/models/billing_provider_attachment_spec.rb +10 -0
- data/spec/daisybill_api/models/billing_provider_spec.rb +1 -0
- data/spec/daisybill_api/models/claims_administrator_spec.rb +2 -1
- data/spec/daisybill_api/models/patient_spec.rb +1 -1
- data/spec/daisybill_api/models/payer_spec.rb +8 -0
- data/spec/daisybill_api/models/service_line_item_spec.rb +2 -2
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0abccdc5a2212a74a5b2b18892ab3dd689add83a
|
4
|
+
data.tar.gz: d716e83dfd7c5bb3645dacb41b93976394214f6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b93853d2c9774511620a43832e96ebe653c7602f48ca75dbb69614aedbb831f0174fe0b8e7f05c1d9678e055d583e304182bbe0da74f1f5ef21641ee23458852
|
7
|
+
data.tar.gz: 4f5be29dfc21dd1c313936c9875f61556af5e42e4bbc6a4d9d532fadf401393225c0c93e6c0a248f4d1055fe33cf75c0258003148618284133c653e0744ee36f
|
@@ -5,14 +5,16 @@ module DaisybillApi
|
|
5
5
|
# @private
|
6
6
|
module Data
|
7
7
|
class Client
|
8
|
-
class
|
9
|
-
|
10
|
-
class UnauthorizedError <
|
8
|
+
class BasicError < Exception; end
|
9
|
+
class InternalServerError < BasicError; end
|
10
|
+
class UnauthorizedError < BasicError; end
|
11
|
+
class InvalidParams < BasicError; end
|
11
12
|
|
12
13
|
def self.build(method, path, params = {})
|
13
14
|
client = new method, path, params
|
14
15
|
raise InternalServerError.new(client.response['error']) if client.error?
|
15
16
|
raise UnauthorizedError.new(client.response['error']) if client.unauthorized?
|
17
|
+
raise InvalidParams.new(client.response['error']) if client.forbidden?
|
16
18
|
client
|
17
19
|
end
|
18
20
|
|
@@ -58,6 +60,10 @@ module DaisybillApi
|
|
58
60
|
status == '404'
|
59
61
|
end
|
60
62
|
|
63
|
+
def forbidden?
|
64
|
+
status == '403'
|
65
|
+
end
|
66
|
+
|
61
67
|
def error?
|
62
68
|
status == '500'
|
63
69
|
end
|
@@ -3,6 +3,7 @@ require 'daisybill_api/ext/crud/create'
|
|
3
3
|
require 'daisybill_api/ext/crud/show'
|
4
4
|
require 'daisybill_api/ext/crud/update'
|
5
5
|
require 'daisybill_api/ext/crud/destroy'
|
6
|
+
require 'daisybill_api/ext/crud/search'
|
6
7
|
|
7
8
|
module DaisybillApi
|
8
9
|
module Ext
|
@@ -64,6 +65,10 @@ module DaisybillApi
|
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
68
|
+
def search_path(prefix_id)
|
69
|
+
"#{index_path(prefix_id)}/search"
|
70
|
+
end
|
71
|
+
|
67
72
|
def client(method, path, params = {})
|
68
73
|
DaisybillApi::Data::Client.build method, path, params
|
69
74
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module DaisybillApi
|
2
|
+
module Ext
|
3
|
+
module CRUD
|
4
|
+
module Search
|
5
|
+
module ClassMethods
|
6
|
+
# Retrieves a list of records
|
7
|
+
#
|
8
|
+
# @patients = DaisybillApi::Models::Patient.search(billing_provider_id: 2)
|
9
|
+
# # => #<DaisybillApi::Ext::PageableCollection>
|
10
|
+
#
|
11
|
+
# @param [Hash] options
|
12
|
+
# @return [Object] a {DaisybillApi::Ext::PageableCollection PageableCollection} that includes Enumerable
|
13
|
+
def search(options = {})
|
14
|
+
id = options[@prefix_property]
|
15
|
+
c = client(:get, search_path(id), options)
|
16
|
+
|
17
|
+
if c.success?
|
18
|
+
DaisybillApi::Ext::PageableCollection.new(
|
19
|
+
c.response[plural_key.to_s].map { |attributes|
|
20
|
+
instance = new(attributes)
|
21
|
+
instance.send("#{prefix_property}=", id) if path_prefix?
|
22
|
+
instance
|
23
|
+
},
|
24
|
+
{
|
25
|
+
headers: c.headers,
|
26
|
+
params: options,
|
27
|
+
resource_class: self
|
28
|
+
}
|
29
|
+
)
|
30
|
+
else
|
31
|
+
DaisybillApi::Ext::PageableCollection.new([])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# @private
|
37
|
+
module InstanceMethods; end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/daisybill_api/models.rb
CHANGED
@@ -2,6 +2,7 @@ require 'daisybill_api/models/address'
|
|
2
2
|
require 'daisybill_api/models/contact'
|
3
3
|
require 'daisybill_api/models/base'
|
4
4
|
require 'daisybill_api/models/claims_administrator'
|
5
|
+
require 'daisybill_api/models/payer'
|
5
6
|
require 'daisybill_api/models/bill_submission'
|
6
7
|
require 'daisybill_api/models/billing_provider'
|
7
8
|
require 'daisybill_api/models/employer'
|
@@ -11,6 +12,7 @@ require 'daisybill_api/models/place_of_service'
|
|
11
12
|
require 'daisybill_api/models/referring_provider'
|
12
13
|
require 'daisybill_api/models/rendering_provider'
|
13
14
|
require 'daisybill_api/models/attachment'
|
15
|
+
require 'daisybill_api/models/billing_provider_attachment'
|
14
16
|
require 'daisybill_api/models/service_line_item'
|
15
17
|
require 'daisybill_api/models/bill'
|
16
18
|
require 'daisybill_api/models/bill_payment'
|
@@ -8,6 +8,11 @@ module DaisybillApi
|
|
8
8
|
id: :integer,
|
9
9
|
document_url: :string,
|
10
10
|
inactive: :boolean,
|
11
|
+
review_status: :string,
|
12
|
+
review_errors: [:string],
|
13
|
+
document_file_name: :string,
|
14
|
+
document_content_type: :string,
|
15
|
+
document_file_size: :integer,
|
11
16
|
readonly: true
|
12
17
|
)
|
13
18
|
|
@@ -20,6 +20,7 @@ module DaisybillApi
|
|
20
20
|
has_many :rendering_providers, class: 'RenderingProvider'
|
21
21
|
has_many :referring_providers, class: 'ReferringProvider'
|
22
22
|
has_many :places_of_service, class: 'PlaceOfService'
|
23
|
+
has_many :attachments, class: 'BillingProviderAttachment'
|
23
24
|
end
|
24
25
|
end
|
25
26
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DaisybillApi
|
2
|
+
module Models
|
3
|
+
class BillingProviderAttachment < DaisybillApi::Models::Base
|
4
|
+
rest_actions :index
|
5
|
+
self.path = '/attachments'
|
6
|
+
path_prefix '/billing_providers', :billing_provider_id
|
7
|
+
|
8
|
+
attributes(
|
9
|
+
id: :integer,
|
10
|
+
document_url: :string,
|
11
|
+
inactive: :boolean,
|
12
|
+
review_status: :string,
|
13
|
+
review_errors: [:string],
|
14
|
+
document_file_name: :string,
|
15
|
+
document_content_type: :string,
|
16
|
+
document_file_size: :integer,
|
17
|
+
report_type: :string,
|
18
|
+
document: :attachment,
|
19
|
+
readonly: true
|
20
|
+
)
|
21
|
+
|
22
|
+
link :bill, class: 'Bill'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -2,7 +2,7 @@ module DaisybillApi
|
|
2
2
|
module Models
|
3
3
|
class Patient < DaisybillApi::Models::Base
|
4
4
|
path_prefix '/billing_providers', :billing_provider_id
|
5
|
-
rest_actions :index, :show, :create, :update, :destroy
|
5
|
+
rest_actions :index, :show, :create, :update, :destroy, :search
|
6
6
|
|
7
7
|
attributes(
|
8
8
|
id: :integer,
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module DaisybillApi
|
2
|
+
module Models
|
3
|
+
class Payer < DaisybillApi::Models::Base
|
4
|
+
path_prefix '/claims_administrators', :claims_administrator_id
|
5
|
+
rest_actions :index
|
6
|
+
|
7
|
+
attributes(
|
8
|
+
id: :integer,
|
9
|
+
name: :string,
|
10
|
+
description: :string,
|
11
|
+
main: :boolean,
|
12
|
+
readonly: true
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -33,6 +33,13 @@ describe DaisybillApi::Data::Client, :vcr do
|
|
33
33
|
it_behaves_like 'returned error with status', '401'
|
34
34
|
end
|
35
35
|
|
36
|
+
context 'when invalid params' do
|
37
|
+
let(:params) { { created_on: 'invalid' } }
|
38
|
+
let(:path) { '/invalid/params' }
|
39
|
+
|
40
|
+
it_behaves_like 'returned error with status', '403'
|
41
|
+
end
|
42
|
+
|
36
43
|
context 'when record was not found' do
|
37
44
|
let(:path) { '/billing_providers/unknown-id' }
|
38
45
|
|
@@ -44,4 +51,52 @@ describe DaisybillApi::Data::Client, :vcr do
|
|
44
51
|
|
45
52
|
it_behaves_like 'returned error with status', '500'
|
46
53
|
end
|
54
|
+
|
55
|
+
context '.build' do
|
56
|
+
subject { -> { described_class.build :method, '/path' } }
|
57
|
+
let(:status) { 200 }
|
58
|
+
let(:message) { '' }
|
59
|
+
|
60
|
+
before do
|
61
|
+
client = doubled_client(status, { 'error' => message })
|
62
|
+
allow(DaisybillApi::Data::Client).to receive(:new).and_return(client)
|
63
|
+
end
|
64
|
+
|
65
|
+
it { is_expected.not_to raise_error }
|
66
|
+
|
67
|
+
context 'when bad request' do
|
68
|
+
let(:status) { 400 }
|
69
|
+
let(:message) { 'invalid record' }
|
70
|
+
|
71
|
+
it { is_expected.not_to raise_error }
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when unauthorized' do
|
75
|
+
let(:status) { 401 }
|
76
|
+
let(:message) { 'invalid or missed api token' }
|
77
|
+
|
78
|
+
it { is_expected.to raise_error(DaisybillApi::Data::Client::UnauthorizedError).with_message(message) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when forbidden' do
|
82
|
+
let(:status) { 403 }
|
83
|
+
let(:message) { 'invalid params or incorrect url endpoint' }
|
84
|
+
|
85
|
+
it { is_expected.to raise_error(DaisybillApi::Data::Client::InvalidParams).with_message(message) }
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'when page not found' do
|
89
|
+
let(:status) { 404 }
|
90
|
+
let(:response) { { error: 'Record Not Found' } }
|
91
|
+
|
92
|
+
it { is_expected.to_not raise_error }
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'when internal server error' do
|
96
|
+
let(:status) { 500 }
|
97
|
+
let(:message) { 'Internal Server Error' }
|
98
|
+
|
99
|
+
it { is_expected.to raise_error(DaisybillApi::Data::Client::InternalServerError).with_message(message) }
|
100
|
+
end
|
101
|
+
end
|
47
102
|
end
|
@@ -2,7 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe DaisybillApi::Models::Attachment do
|
4
4
|
it_behaves_like DaisybillApi::Ext::Attributes, :id, :document_url, :inactive, :report_type, :document,
|
5
|
-
:bill_id, :created_at, :updated_at
|
5
|
+
:bill_id, :created_at, :updated_at, :review_status, :document_file_name,
|
6
|
+
:document_content_type, :document_file_size, review_errors: :collection
|
7
|
+
|
6
8
|
it_behaves_like DaisybillApi::Ext::Attributes::SendAs, :report_type, :document, :bill_id
|
7
9
|
it_behaves_like DaisybillApi::Ext::CRUD, :all, :find, :create, :update, :destroy, '/attachments', bill_id: '/bills'
|
8
10
|
it_behaves_like DaisybillApi::Ext::Links, bill: DaisybillApi::Models::Bill
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DaisybillApi::Models::BillingProviderAttachment do
|
4
|
+
it_behaves_like DaisybillApi::Ext::Attributes, :id, :document_url, :inactive, :report_type, :document,
|
5
|
+
:billing_provider_id, :bill_id, :created_at, :updated_at, :review_status, :document_file_name,
|
6
|
+
:document_content_type, :document_file_size, review_errors: :collection
|
7
|
+
|
8
|
+
it_behaves_like DaisybillApi::Ext::CRUD, :all, '/attachments', billing_provider_id: '/billing_providers'
|
9
|
+
it_behaves_like DaisybillApi::Ext::Links, bill: DaisybillApi::Models::Bill
|
10
|
+
end
|
@@ -9,5 +9,6 @@ describe DaisybillApi::Models::BillingProvider do
|
|
9
9
|
it_behaves_like DaisybillApi::Ext::Associations, :rendering_providers
|
10
10
|
it_behaves_like DaisybillApi::Ext::Associations, :referring_providers
|
11
11
|
it_behaves_like DaisybillApi::Ext::Associations, :places_of_service
|
12
|
+
it_behaves_like DaisybillApi::Ext::Associations, :attachments
|
12
13
|
it_behaves_like DaisybillApi::Ext::Links
|
13
14
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DaisybillApi::Models::ClaimsAdministrator do
|
4
|
-
it_behaves_like DaisybillApi::Ext::Attributes, :id, :name, :created_at, :updated_at
|
4
|
+
it_behaves_like DaisybillApi::Ext::Attributes, :id, :name, :created_at, :updated_at, :description
|
5
5
|
it_behaves_like DaisybillApi::Ext::Attributes::SendAs
|
6
|
+
it_behaves_like DaisybillApi::Ext::Associations, :payers
|
6
7
|
it_behaves_like DaisybillApi::Ext::CRUD, :all, '/claims_administrators'
|
7
8
|
end
|
@@ -7,7 +7,7 @@ describe DaisybillApi::Models::Patient do
|
|
7
7
|
it_behaves_like DaisybillApi::Ext::Attributes::SendAs, :first_name, :last_name, :gender, :date_of_birth,
|
8
8
|
:ssn, :address_attributes, :suffix, :middle_initial, :practice_internal_id, :telephone,
|
9
9
|
:billing_provider_id
|
10
|
-
it_behaves_like DaisybillApi::Ext::CRUD, :all, :find, :create, :update, :destroy, '/patients',
|
10
|
+
it_behaves_like DaisybillApi::Ext::CRUD, :all, :find, :create, :update, :destroy, :search, '/patients',
|
11
11
|
billing_provider_id: '/billing_providers'
|
12
12
|
it_behaves_like DaisybillApi::Ext::Associations, :injuries
|
13
13
|
it_behaves_like DaisybillApi::Ext::Links, billing_provider: DaisybillApi::Models::BillingProvider
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DaisybillApi::Models::Payer do
|
4
|
+
it_behaves_like DaisybillApi::Ext::Attributes, :id, :name, :description, :main, :claims_administrator_id,
|
5
|
+
:created_at, :updated_at
|
6
|
+
it_behaves_like DaisybillApi::Ext::Attributes::SendAs
|
7
|
+
it_behaves_like DaisybillApi::Ext::CRUD, :all, '/payers', claims_administrator_id: '/claims_administrators'
|
8
|
+
end
|
@@ -4,8 +4,8 @@ describe DaisybillApi::Models::ServiceLineItem do
|
|
4
4
|
it_behaves_like DaisybillApi::Ext::Attributes, :id, :units, :supplemental_data, :procedure_code,
|
5
5
|
:diagnosis_code_1, :diagnosis_code_2, :diagnosis_code_3, :diagnosis_code_4, :charge_cents,
|
6
6
|
:expected_payment_cents, :allowed_cents, :balance_due_cents, :write_off_cents, :created_at,
|
7
|
-
:updated_at, :custom_unit_charge_cents, modifier_codes: :collection
|
7
|
+
:updated_at, :custom_unit_charge_cents, :_destroy, modifier_codes: :collection
|
8
8
|
it_behaves_like DaisybillApi::Ext::Attributes::SendAs, :id, :procedure_code, :units, :supplemental_data,
|
9
9
|
:diagnosis_code_1, :diagnosis_code_2, :diagnosis_code_3, :diagnosis_code_4, :custom_unit_charge_cents,
|
10
|
-
:modifier_codes
|
10
|
+
:_destroy, :modifier_codes
|
11
11
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daisybill_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Liscio
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-04-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activemodel
|
@@ -190,6 +190,7 @@ files:
|
|
190
190
|
- lib/daisybill_api/ext/crud/create.rb
|
191
191
|
- lib/daisybill_api/ext/crud/destroy.rb
|
192
192
|
- lib/daisybill_api/ext/crud/index.rb
|
193
|
+
- lib/daisybill_api/ext/crud/search.rb
|
193
194
|
- lib/daisybill_api/ext/crud/show.rb
|
194
195
|
- lib/daisybill_api/ext/crud/update.rb
|
195
196
|
- lib/daisybill_api/ext/links.rb
|
@@ -203,11 +204,13 @@ files:
|
|
203
204
|
- lib/daisybill_api/models/bill_payment.rb
|
204
205
|
- lib/daisybill_api/models/bill_submission.rb
|
205
206
|
- lib/daisybill_api/models/billing_provider.rb
|
207
|
+
- lib/daisybill_api/models/billing_provider_attachment.rb
|
206
208
|
- lib/daisybill_api/models/claims_administrator.rb
|
207
209
|
- lib/daisybill_api/models/contact.rb
|
208
210
|
- lib/daisybill_api/models/employer.rb
|
209
211
|
- lib/daisybill_api/models/injury.rb
|
210
212
|
- lib/daisybill_api/models/patient.rb
|
213
|
+
- lib/daisybill_api/models/payer.rb
|
211
214
|
- lib/daisybill_api/models/place_of_service.rb
|
212
215
|
- lib/daisybill_api/models/referring_provider.rb
|
213
216
|
- lib/daisybill_api/models/rendering_provider.rb
|
@@ -226,12 +229,14 @@ files:
|
|
226
229
|
- spec/daisybill_api/models/bill_payment_spec.rb
|
227
230
|
- spec/daisybill_api/models/bill_spec.rb
|
228
231
|
- spec/daisybill_api/models/bill_submission_spec.rb
|
232
|
+
- spec/daisybill_api/models/billing_provider_attachment_spec.rb
|
229
233
|
- spec/daisybill_api/models/billing_provider_spec.rb
|
230
234
|
- spec/daisybill_api/models/claims_administrator_spec.rb
|
231
235
|
- spec/daisybill_api/models/contact_spec.rb
|
232
236
|
- spec/daisybill_api/models/employer_spec.rb
|
233
237
|
- spec/daisybill_api/models/injury_spec.rb
|
234
238
|
- spec/daisybill_api/models/patient_spec.rb
|
239
|
+
- spec/daisybill_api/models/payer_spec.rb
|
235
240
|
- spec/daisybill_api/models/place_of_service_spec.rb
|
236
241
|
- spec/daisybill_api/models/referring_provider_spec.rb
|
237
242
|
- spec/daisybill_api/models/rendering_provider_spec.rb
|
@@ -275,12 +280,14 @@ test_files:
|
|
275
280
|
- spec/daisybill_api/models/bill_payment_spec.rb
|
276
281
|
- spec/daisybill_api/models/bill_spec.rb
|
277
282
|
- spec/daisybill_api/models/bill_submission_spec.rb
|
283
|
+
- spec/daisybill_api/models/billing_provider_attachment_spec.rb
|
278
284
|
- spec/daisybill_api/models/billing_provider_spec.rb
|
279
285
|
- spec/daisybill_api/models/claims_administrator_spec.rb
|
280
286
|
- spec/daisybill_api/models/contact_spec.rb
|
281
287
|
- spec/daisybill_api/models/employer_spec.rb
|
282
288
|
- spec/daisybill_api/models/injury_spec.rb
|
283
289
|
- spec/daisybill_api/models/patient_spec.rb
|
290
|
+
- spec/daisybill_api/models/payer_spec.rb
|
284
291
|
- spec/daisybill_api/models/place_of_service_spec.rb
|
285
292
|
- spec/daisybill_api/models/referring_provider_spec.rb
|
286
293
|
- spec/daisybill_api/models/rendering_provider_spec.rb
|