candidhealth 0.19.1.pre.6de2b0d → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 793252ca4daa7586c13132c62e5c8358ba764bccd9c7f0c58119abacf116bfa7
4
- data.tar.gz: 90ad15dad0a9f420ffbb36d422e9448f15c2df6702c2b0b0ac19339225ced3d6
3
+ metadata.gz: 7ce8f1bb83c0488c695d4d690baa38b002d36af4ad712b07182545371b16e2e6
4
+ data.tar.gz: 154eef6e1ed858c1c46ac1dc0bb62b00b7d3fb5b721778e9f8f841d959c782c8
5
5
  SHA512:
6
- metadata.gz: f67737e90de29e05858644ed7ffb54663d6dbb23dac2dcab896c3b6c9b31db00387616d006209dce5aa4dea924d72fac4859bb15468b3b840b51000708c2e7f8
7
- data.tar.gz: f64c9440c49927a37caddf29cd567184c6ed92a806500300545680eecba0059fec8b59045ba215196b106851e6b946a885bb674b7d9dc4b382632979a0e61205
6
+ metadata.gz: 5969b02e29ba1d494dd89416f694b7e8604482df5048278cb84fbb0f4b93825790ceec96b027d6e77d4d98b2a2f6bb97836739a0e0b700f52b92ba63ab654192
7
+ data.tar.gz: b5b3fd3c33a18ddc3d204e56cadd122f2206f35a9dfbe12f08f5c6ca0288fbabbfc4ef8f210a96fecfbc2060e8766d535110c03ecbd42f1343a56043cf684876
@@ -44,6 +44,10 @@ module CandidApiClient
44
44
  response.body
45
45
  end
46
46
 
47
+ # **Availity has transitioned their GET endpoint to a POST endpoint. Candid has updated their pass-through integration to enable backwards compatibility for the GET endpoint so that customers do not have to immediately update their integrations.**
48
+ #
49
+ # **Candid recommends integrations with the [POST endpoint](https://docs.joincandidhealth.com/api-reference/eligibility/v-2/submit-eligibility-check-availity-post) to ensure the best possible integration experience. Given the transition, Availity’s documentation will be out of sync with this endpoint.**
50
+ #
47
51
  # If you'd like access to this endpoint, please reach out to support@joincandidhealth.com with the subject line "Action: Activate Availity Eligibility API Endpoint
48
52
  #
49
53
  # This API is a wrapper around Availity's coverages API. Below are some helpful documentation links:
@@ -139,6 +143,10 @@ module CandidApiClient
139
143
  end
140
144
  end
141
145
 
146
+ # **Availity has transitioned their GET endpoint to a POST endpoint. Candid has updated their pass-through integration to enable backwards compatibility for the GET endpoint so that customers do not have to immediately update their integrations.**
147
+ #
148
+ # **Candid recommends integrations with the [POST endpoint](https://docs.joincandidhealth.com/api-reference/eligibility/v-2/submit-eligibility-check-availity-post) to ensure the best possible integration experience. Given the transition, Availity’s documentation will be out of sync with this endpoint.**
149
+ #
142
150
  # If you'd like access to this endpoint, please reach out to support@joincandidhealth.com with the subject line "Action: Activate Availity Eligibility API Endpoint
143
151
  #
144
152
  # This API is a wrapper around Availity's coverages API. Below are some helpful documentation links:
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "v_1/client"
5
+
6
+ module CandidApiClient
7
+ module ImportInvoice
8
+ class Client
9
+ attr_reader :v_1
10
+
11
+ # @param request_client [RequestClient]
12
+ # @return [ImportInvoice::Client]
13
+ def initialize(request_client:)
14
+ @v_1 = ImportInvoice::V1::V1Client.new(request_client: request_client)
15
+ end
16
+ end
17
+
18
+ class AsyncClient
19
+ attr_reader :v_1
20
+
21
+ # @param request_client [RequestClient]
22
+ # @return [ImportInvoice::AsyncClient]
23
+ def initialize(request_client:)
24
+ @v_1 = ImportInvoice::V1::AsyncV1Client.new(request_client: request_client)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../requests"
4
+ require_relative "types/create_import_invoice_request"
5
+ require_relative "types/import_invoice"
6
+ require_relative "../../commons/types/invoice_id"
7
+ require_relative "types/import_invoice_update_request"
8
+ require "async"
9
+
10
+ module CandidApiClient
11
+ module ImportInvoice
12
+ module V1
13
+ class V1Client
14
+ attr_reader :request_client
15
+
16
+ # @param request_client [RequestClient]
17
+ # @return [ImportInvoice::V1::V1Client]
18
+ def initialize(request_client:)
19
+ # @type [RequestClient]
20
+ @request_client = request_client
21
+ end
22
+
23
+ # Import an existing invoice from a third party service to reflect state in Candid.
24
+ #
25
+ # @param request [Hash] Request of type ImportInvoice::V1::CreateImportInvoiceRequest, as a Hash
26
+ # * :patient_external_id (Commons::PATIENT_EXTERNAL_ID)
27
+ # * :external_customer_identifier (String)
28
+ # * :note (String)
29
+ # * :due_date (Date)
30
+ # * :items (Array<Invoices::V2::InvoiceItemCreate>)
31
+ # * :status (Invoices::V2::InvoiceStatus)
32
+ # * :external_identifier (String)
33
+ # * :customer_invoice_url (String)
34
+ # @param request_options [RequestOptions]
35
+ # @return [ImportInvoice::V1::ImportInvoice]
36
+ def import_invoice(request:, request_options: nil)
37
+ response = @request_client.conn.post("/api/import-invoice/v1") do |req|
38
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
39
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
40
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
41
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
42
+ end
43
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
44
+ end
45
+
46
+ # Retrieve and view an import invoice
47
+ #
48
+ # @param invoice_id [Commons::INVOICE_ID] InvoiceId to be returned
49
+ # @param request_options [RequestOptions]
50
+ # @return [ImportInvoice::V1::ImportInvoice]
51
+ def get(invoice_id:, request_options: nil)
52
+ response = @request_client.conn.get("/api/import-invoice/v1/#{invoice_id}") do |req|
53
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
54
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
55
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
56
+ end
57
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
58
+ end
59
+
60
+ # Update the information on the imported invoice
61
+ #
62
+ # @param invoice_id [Commons::INVOICE_ID]
63
+ # @param request [Hash] Request of type ImportInvoice::V1::ImportInvoiceUpdateRequest, as a Hash
64
+ # * :customer_invoice_url (String)
65
+ # * :status (Invoices::V2::InvoiceStatus)
66
+ # * :note (String)
67
+ # * :due_date (Date)
68
+ # * :items (Hash)
69
+ # * :update_type (ImportInvoice::V1::InvoiceItemUpdateType)
70
+ # * :items (Array<Invoices::V2::InvoiceItemCreate>)
71
+ # @param request_options [RequestOptions]
72
+ # @return [ImportInvoice::V1::ImportInvoice]
73
+ def update(invoice_id:, request:, request_options: nil)
74
+ response = @request_client.conn.patch("/api/import-invoice/v1/#{invoice_id}") do |req|
75
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
76
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
77
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
78
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
79
+ end
80
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
81
+ end
82
+ end
83
+
84
+ class AsyncV1Client
85
+ attr_reader :request_client
86
+
87
+ # @param request_client [AsyncRequestClient]
88
+ # @return [ImportInvoice::V1::AsyncV1Client]
89
+ def initialize(request_client:)
90
+ # @type [AsyncRequestClient]
91
+ @request_client = request_client
92
+ end
93
+
94
+ # Import an existing invoice from a third party service to reflect state in Candid.
95
+ #
96
+ # @param request [Hash] Request of type ImportInvoice::V1::CreateImportInvoiceRequest, as a Hash
97
+ # * :patient_external_id (Commons::PATIENT_EXTERNAL_ID)
98
+ # * :external_customer_identifier (String)
99
+ # * :note (String)
100
+ # * :due_date (Date)
101
+ # * :items (Array<Invoices::V2::InvoiceItemCreate>)
102
+ # * :status (Invoices::V2::InvoiceStatus)
103
+ # * :external_identifier (String)
104
+ # * :customer_invoice_url (String)
105
+ # @param request_options [RequestOptions]
106
+ # @return [ImportInvoice::V1::ImportInvoice]
107
+ def import_invoice(request:, request_options: nil)
108
+ Async do
109
+ response = @request_client.conn.post("/api/import-invoice/v1") do |req|
110
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
111
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
112
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
113
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
114
+ end
115
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
116
+ end
117
+ end
118
+
119
+ # Retrieve and view an import invoice
120
+ #
121
+ # @param invoice_id [Commons::INVOICE_ID] InvoiceId to be returned
122
+ # @param request_options [RequestOptions]
123
+ # @return [ImportInvoice::V1::ImportInvoice]
124
+ def get(invoice_id:, request_options: nil)
125
+ Async do
126
+ response = @request_client.conn.get("/api/import-invoice/v1/#{invoice_id}") do |req|
127
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
128
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
129
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
130
+ end
131
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
132
+ end
133
+ end
134
+
135
+ # Update the information on the imported invoice
136
+ #
137
+ # @param invoice_id [Commons::INVOICE_ID]
138
+ # @param request [Hash] Request of type ImportInvoice::V1::ImportInvoiceUpdateRequest, as a Hash
139
+ # * :customer_invoice_url (String)
140
+ # * :status (Invoices::V2::InvoiceStatus)
141
+ # * :note (String)
142
+ # * :due_date (Date)
143
+ # * :items (Hash)
144
+ # * :update_type (ImportInvoice::V1::InvoiceItemUpdateType)
145
+ # * :items (Array<Invoices::V2::InvoiceItemCreate>)
146
+ # @param request_options [RequestOptions]
147
+ # @return [ImportInvoice::V1::ImportInvoice]
148
+ def update(invoice_id:, request:, request_options: nil)
149
+ Async do
150
+ response = @request_client.conn.patch("/api/import-invoice/v1/#{invoice_id}") do |req|
151
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
152
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
153
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
154
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
155
+ end
156
+ ImportInvoice::V1::ImportInvoice.from_json(json_object: response.body)
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../commons/types/patient_external_id"
4
+ require "date"
5
+ require_relative "../../../invoices/v_2/types/invoice_item_create"
6
+ require_relative "../../../invoices/v_2/types/invoice_status"
7
+ require "json"
8
+
9
+ module CandidApiClient
10
+ module ImportInvoice
11
+ module V1
12
+ class CreateImportInvoiceRequest
13
+ attr_reader :patient_external_id, :external_customer_identifier, :note, :due_date, :items, :status,
14
+ :external_identifier, :customer_invoice_url, :additional_properties
15
+
16
+ # @param patient_external_id [Commons::PATIENT_EXTERNAL_ID]
17
+ # @param external_customer_identifier [String] Id of the customer in the source system
18
+ # @param note [String]
19
+ # @param due_date [Date] If given as None, days_until_due in the payment config will be used to create a default date
20
+ # @param items [Array<Invoices::V2::InvoiceItemCreate>]
21
+ # @param status [Invoices::V2::InvoiceStatus]
22
+ # @param external_identifier [String] Id of the invoice being imported in the source system. Warning - This field CANNOT be updated.
23
+ # @param customer_invoice_url [String] Link to the patient view of the invoice in the third-party service
24
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
25
+ # @return [ImportInvoice::V1::CreateImportInvoiceRequest]
26
+ def initialize(patient_external_id:, external_customer_identifier:, items:, status:, external_identifier:,
27
+ note: nil, due_date: nil, customer_invoice_url: nil, additional_properties: nil)
28
+ # @type [Commons::PATIENT_EXTERNAL_ID]
29
+ @patient_external_id = patient_external_id
30
+ # @type [String] Id of the customer in the source system
31
+ @external_customer_identifier = external_customer_identifier
32
+ # @type [String]
33
+ @note = note
34
+ # @type [Date] If given as None, days_until_due in the payment config will be used to create a default date
35
+ @due_date = due_date
36
+ # @type [Array<Invoices::V2::InvoiceItemCreate>]
37
+ @items = items
38
+ # @type [Invoices::V2::InvoiceStatus]
39
+ @status = status
40
+ # @type [String] Id of the invoice being imported in the source system. Warning - This field CANNOT be updated.
41
+ @external_identifier = external_identifier
42
+ # @type [String] Link to the patient view of the invoice in the third-party service
43
+ @customer_invoice_url = customer_invoice_url
44
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
45
+ @additional_properties = additional_properties
46
+ end
47
+
48
+ # Deserialize a JSON object to an instance of CreateImportInvoiceRequest
49
+ #
50
+ # @param json_object [JSON]
51
+ # @return [ImportInvoice::V1::CreateImportInvoiceRequest]
52
+ def self.from_json(json_object:)
53
+ struct = JSON.parse(json_object, object_class: OpenStruct)
54
+ parsed_json = JSON.parse(json_object)
55
+ patient_external_id = struct.patient_external_id
56
+ external_customer_identifier = struct.external_customer_identifier
57
+ note = struct.note
58
+ due_date = (Date.parse(parsed_json["due_date"]) unless parsed_json["due_date"].nil?)
59
+ items = parsed_json["items"]&.map do |v|
60
+ v = v.to_json
61
+ Invoices::V2::InvoiceItemCreate.from_json(json_object: v)
62
+ end
63
+ status = struct.status
64
+ external_identifier = struct.external_identifier
65
+ customer_invoice_url = struct.customer_invoice_url
66
+ new(patient_external_id: patient_external_id, external_customer_identifier: external_customer_identifier,
67
+ note: note, due_date: due_date, items: items, status: status, external_identifier: external_identifier, customer_invoice_url: customer_invoice_url, additional_properties: struct)
68
+ end
69
+
70
+ # Serialize an instance of CreateImportInvoiceRequest to a JSON object
71
+ #
72
+ # @return [JSON]
73
+ def to_json(*_args)
74
+ {
75
+ "patient_external_id": @patient_external_id,
76
+ "external_customer_identifier": @external_customer_identifier,
77
+ "note": @note,
78
+ "due_date": @due_date,
79
+ "items": @items,
80
+ "status": @status,
81
+ "external_identifier": @external_identifier,
82
+ "customer_invoice_url": @customer_invoice_url
83
+ }.to_json
84
+ end
85
+
86
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
87
+ #
88
+ # @param obj [Object]
89
+ # @return [Void]
90
+ def self.validate_raw(obj:)
91
+ obj.patient_external_id.is_a?(String) != false || raise("Passed value for field obj.patient_external_id is not the expected type, validation failed.")
92
+ obj.external_customer_identifier.is_a?(String) != false || raise("Passed value for field obj.external_customer_identifier is not the expected type, validation failed.")
93
+ obj.note&.is_a?(String) != false || raise("Passed value for field obj.note is not the expected type, validation failed.")
94
+ obj.due_date&.is_a?(Date) != false || raise("Passed value for field obj.due_date is not the expected type, validation failed.")
95
+ obj.items.is_a?(Array) != false || raise("Passed value for field obj.items is not the expected type, validation failed.")
96
+ obj.status.is_a?(Invoices::V2::InvoiceStatus) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
97
+ obj.external_identifier.is_a?(String) != false || raise("Passed value for field obj.external_identifier is not the expected type, validation failed.")
98
+ obj.customer_invoice_url&.is_a?(String) != false || raise("Passed value for field obj.customer_invoice_url is not the expected type, validation failed.")
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../commons/types/invoice_id"
4
+ require "date"
5
+ require_relative "../../../invoices/v_2/types/invoice_item_info"
6
+ require_relative "../../../commons/types/patient_external_id"
7
+ require_relative "../../../invoices/v_2/types/invoice_status"
8
+ require "json"
9
+
10
+ module CandidApiClient
11
+ module ImportInvoice
12
+ module V1
13
+ class ImportInvoice
14
+ attr_reader :id, :created_at, :updated_at, :items, :patient_external_id, :external_customer_identifier,
15
+ :status, :external_identifier, :note, :customer_invoice_url, :due_date, :amount_cents, :additional_properties
16
+
17
+ # @param id [Commons::INVOICE_ID]
18
+ # @param created_at [DateTime]
19
+ # @param updated_at [DateTime]
20
+ # @param items [Invoices::V2::InvoiceItemInfo] The InvoiceItem rollup which contains all claim and service line invoice items
21
+ # @param patient_external_id [Commons::PATIENT_EXTERNAL_ID]
22
+ # @param external_customer_identifier [String] Id of the customer in the source system
23
+ # @param status [Invoices::V2::InvoiceStatus]
24
+ # @param external_identifier [String] Id of the invoice being imported in the source system
25
+ # @param note [String]
26
+ # @param customer_invoice_url [String] Link to the patient view of the invoice in the third-party service
27
+ # @param due_date [Date]
28
+ # @param amount_cents [Integer] Total monetary amount (in cents) of all Invoice Items
29
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
30
+ # @return [ImportInvoice::V1::ImportInvoice]
31
+ def initialize(id:, created_at:, updated_at:, items:, patient_external_id:, external_customer_identifier:,
32
+ status:, external_identifier:, due_date:, amount_cents:, note: nil, customer_invoice_url: nil, additional_properties: nil)
33
+ # @type [Commons::INVOICE_ID]
34
+ @id = id
35
+ # @type [DateTime]
36
+ @created_at = created_at
37
+ # @type [DateTime]
38
+ @updated_at = updated_at
39
+ # @type [Invoices::V2::InvoiceItemInfo] The InvoiceItem rollup which contains all claim and service line invoice items
40
+ @items = items
41
+ # @type [Commons::PATIENT_EXTERNAL_ID]
42
+ @patient_external_id = patient_external_id
43
+ # @type [String] Id of the customer in the source system
44
+ @external_customer_identifier = external_customer_identifier
45
+ # @type [Invoices::V2::InvoiceStatus]
46
+ @status = status
47
+ # @type [String] Id of the invoice being imported in the source system
48
+ @external_identifier = external_identifier
49
+ # @type [String]
50
+ @note = note
51
+ # @type [String] Link to the patient view of the invoice in the third-party service
52
+ @customer_invoice_url = customer_invoice_url
53
+ # @type [Date]
54
+ @due_date = due_date
55
+ # @type [Integer] Total monetary amount (in cents) of all Invoice Items
56
+ @amount_cents = amount_cents
57
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
58
+ @additional_properties = additional_properties
59
+ end
60
+
61
+ # Deserialize a JSON object to an instance of ImportInvoice
62
+ #
63
+ # @param json_object [JSON]
64
+ # @return [ImportInvoice::V1::ImportInvoice]
65
+ def self.from_json(json_object:)
66
+ struct = JSON.parse(json_object, object_class: OpenStruct)
67
+ parsed_json = JSON.parse(json_object)
68
+ id = struct.id
69
+ created_at = (DateTime.parse(parsed_json["created_at"]) unless parsed_json["created_at"].nil?)
70
+ updated_at = (DateTime.parse(parsed_json["updated_at"]) unless parsed_json["updated_at"].nil?)
71
+ if parsed_json["items"].nil?
72
+ items = nil
73
+ else
74
+ items = parsed_json["items"].to_json
75
+ items = Invoices::V2::InvoiceItemInfo.from_json(json_object: items)
76
+ end
77
+ patient_external_id = struct.patient_external_id
78
+ external_customer_identifier = struct.external_customer_identifier
79
+ status = struct.status
80
+ external_identifier = struct.external_identifier
81
+ note = struct.note
82
+ customer_invoice_url = struct.customer_invoice_url
83
+ due_date = (Date.parse(parsed_json["due_date"]) unless parsed_json["due_date"].nil?)
84
+ amount_cents = struct.amount_cents
85
+ new(id: id, created_at: created_at, updated_at: updated_at, items: items,
86
+ patient_external_id: patient_external_id, external_customer_identifier: external_customer_identifier, status: status, external_identifier: external_identifier, note: note, customer_invoice_url: customer_invoice_url, due_date: due_date, amount_cents: amount_cents, additional_properties: struct)
87
+ end
88
+
89
+ # Serialize an instance of ImportInvoice to a JSON object
90
+ #
91
+ # @return [JSON]
92
+ def to_json(*_args)
93
+ {
94
+ "id": @id,
95
+ "created_at": @created_at,
96
+ "updated_at": @updated_at,
97
+ "items": @items,
98
+ "patient_external_id": @patient_external_id,
99
+ "external_customer_identifier": @external_customer_identifier,
100
+ "status": @status,
101
+ "external_identifier": @external_identifier,
102
+ "note": @note,
103
+ "customer_invoice_url": @customer_invoice_url,
104
+ "due_date": @due_date,
105
+ "amount_cents": @amount_cents
106
+ }.to_json
107
+ end
108
+
109
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
110
+ #
111
+ # @param obj [Object]
112
+ # @return [Void]
113
+ def self.validate_raw(obj:)
114
+ obj.id.is_a?(UUID) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
115
+ obj.created_at.is_a?(DateTime) != false || raise("Passed value for field obj.created_at is not the expected type, validation failed.")
116
+ obj.updated_at.is_a?(DateTime) != false || raise("Passed value for field obj.updated_at is not the expected type, validation failed.")
117
+ Invoices::V2::InvoiceItemInfo.validate_raw(obj: obj.items)
118
+ obj.patient_external_id.is_a?(String) != false || raise("Passed value for field obj.patient_external_id is not the expected type, validation failed.")
119
+ obj.external_customer_identifier.is_a?(String) != false || raise("Passed value for field obj.external_customer_identifier is not the expected type, validation failed.")
120
+ obj.status.is_a?(Invoices::V2::InvoiceStatus) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
121
+ obj.external_identifier.is_a?(String) != false || raise("Passed value for field obj.external_identifier is not the expected type, validation failed.")
122
+ obj.note&.is_a?(String) != false || raise("Passed value for field obj.note is not the expected type, validation failed.")
123
+ obj.customer_invoice_url&.is_a?(String) != false || raise("Passed value for field obj.customer_invoice_url is not the expected type, validation failed.")
124
+ obj.due_date.is_a?(Date) != false || raise("Passed value for field obj.due_date is not the expected type, validation failed.")
125
+ obj.amount_cents.is_a?(Integer) != false || raise("Passed value for field obj.amount_cents is not the expected type, validation failed.")
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../invoices/v_2/types/invoice_status"
4
+ require "date"
5
+ require_relative "invoice_item_info_update"
6
+ require "json"
7
+
8
+ module CandidApiClient
9
+ module ImportInvoice
10
+ module V1
11
+ class ImportInvoiceUpdateRequest
12
+ attr_reader :customer_invoice_url, :status, :note, :due_date, :items, :additional_properties
13
+
14
+ # @param customer_invoice_url [String] Link to the patient view of the invoice in the third-party service
15
+ # @param status [Invoices::V2::InvoiceStatus]
16
+ # @param note [String]
17
+ # @param due_date [Date]
18
+ # @param items [ImportInvoice::V1::InvoiceItemInfoUpdate] None here represents there is no update to the invoice items
19
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
20
+ # @return [ImportInvoice::V1::ImportInvoiceUpdateRequest]
21
+ def initialize(customer_invoice_url: nil, status: nil, note: nil, due_date: nil, items: nil,
22
+ additional_properties: nil)
23
+ # @type [String] Link to the patient view of the invoice in the third-party service
24
+ @customer_invoice_url = customer_invoice_url
25
+ # @type [Invoices::V2::InvoiceStatus]
26
+ @status = status
27
+ # @type [String]
28
+ @note = note
29
+ # @type [Date]
30
+ @due_date = due_date
31
+ # @type [ImportInvoice::V1::InvoiceItemInfoUpdate] None here represents there is no update to the invoice items
32
+ @items = items
33
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
34
+ @additional_properties = additional_properties
35
+ end
36
+
37
+ # Deserialize a JSON object to an instance of ImportInvoiceUpdateRequest
38
+ #
39
+ # @param json_object [JSON]
40
+ # @return [ImportInvoice::V1::ImportInvoiceUpdateRequest]
41
+ def self.from_json(json_object:)
42
+ struct = JSON.parse(json_object, object_class: OpenStruct)
43
+ parsed_json = JSON.parse(json_object)
44
+ customer_invoice_url = struct.customer_invoice_url
45
+ status = struct.status
46
+ note = struct.note
47
+ due_date = (Date.parse(parsed_json["due_date"]) unless parsed_json["due_date"].nil?)
48
+ if parsed_json["items"].nil?
49
+ items = nil
50
+ else
51
+ items = parsed_json["items"].to_json
52
+ items = ImportInvoice::V1::InvoiceItemInfoUpdate.from_json(json_object: items)
53
+ end
54
+ new(customer_invoice_url: customer_invoice_url, status: status, note: note, due_date: due_date, items: items,
55
+ additional_properties: struct)
56
+ end
57
+
58
+ # Serialize an instance of ImportInvoiceUpdateRequest to a JSON object
59
+ #
60
+ # @return [JSON]
61
+ def to_json(*_args)
62
+ {
63
+ "customer_invoice_url": @customer_invoice_url,
64
+ "status": @status,
65
+ "note": @note,
66
+ "due_date": @due_date,
67
+ "items": @items
68
+ }.to_json
69
+ end
70
+
71
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
72
+ #
73
+ # @param obj [Object]
74
+ # @return [Void]
75
+ def self.validate_raw(obj:)
76
+ obj.customer_invoice_url&.is_a?(String) != false || raise("Passed value for field obj.customer_invoice_url is not the expected type, validation failed.")
77
+ obj.status&.is_a?(Invoices::V2::InvoiceStatus) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
78
+ obj.note&.is_a?(String) != false || raise("Passed value for field obj.note is not the expected type, validation failed.")
79
+ obj.due_date&.is_a?(Date) != false || raise("Passed value for field obj.due_date is not the expected type, validation failed.")
80
+ obj.items.nil? || ImportInvoice::V1::InvoiceItemInfoUpdate.validate_raw(obj: obj.items)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "invoice_item_update_type"
4
+ require_relative "../../../invoices/v_2/types/invoice_item_create"
5
+ require "json"
6
+
7
+ module CandidApiClient
8
+ module ImportInvoice
9
+ module V1
10
+ class InvoiceItemInfoUpdate
11
+ attr_reader :update_type, :items, :additional_properties
12
+
13
+ # @param update_type [ImportInvoice::V1::InvoiceItemUpdateType] The only supported update operations for invoice items is to either overwrite the entire list of invoice items
14
+ # or to append new invoice items
15
+ # @param items [Array<Invoices::V2::InvoiceItemCreate>]
16
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
17
+ # @return [ImportInvoice::V1::InvoiceItemInfoUpdate]
18
+ def initialize(update_type:, items:, additional_properties: nil)
19
+ # @type [ImportInvoice::V1::InvoiceItemUpdateType] The only supported update operations for invoice items is to either overwrite the entire list of invoice items
20
+ # or to append new invoice items
21
+ @update_type = update_type
22
+ # @type [Array<Invoices::V2::InvoiceItemCreate>]
23
+ @items = items
24
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
25
+ @additional_properties = additional_properties
26
+ end
27
+
28
+ # Deserialize a JSON object to an instance of InvoiceItemInfoUpdate
29
+ #
30
+ # @param json_object [JSON]
31
+ # @return [ImportInvoice::V1::InvoiceItemInfoUpdate]
32
+ def self.from_json(json_object:)
33
+ struct = JSON.parse(json_object, object_class: OpenStruct)
34
+ parsed_json = JSON.parse(json_object)
35
+ update_type = struct.update_type
36
+ items = parsed_json["items"]&.map do |v|
37
+ v = v.to_json
38
+ Invoices::V2::InvoiceItemCreate.from_json(json_object: v)
39
+ end
40
+ new(update_type: update_type, items: items, additional_properties: struct)
41
+ end
42
+
43
+ # Serialize an instance of InvoiceItemInfoUpdate to a JSON object
44
+ #
45
+ # @return [JSON]
46
+ def to_json(*_args)
47
+ { "update_type": @update_type, "items": @items }.to_json
48
+ end
49
+
50
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
51
+ #
52
+ # @param obj [Object]
53
+ # @return [Void]
54
+ def self.validate_raw(obj:)
55
+ obj.update_type.is_a?(ImportInvoice::V1::InvoiceItemUpdateType) != false || raise("Passed value for field obj.update_type is not the expected type, validation failed.")
56
+ obj.items.is_a?(Array) != false || raise("Passed value for field obj.items is not the expected type, validation failed.")
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CandidApiClient
4
+ module ImportInvoice
5
+ module V1
6
+ class InvoiceItemUpdateType
7
+ APPEND = "APPEND"
8
+ OVERWRITE = "OVERWRITE"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "../../../commons/types/service_line_id"
5
+ require_relative "../../../commons/types/claim_id"
6
+
7
+ module CandidApiClient
8
+ module Invoices
9
+ module V2
10
+ # Points to the claim or service line that this invoice is attributed to
11
+ class InvoiceItemAttributionCreate
12
+ attr_reader :member, :discriminant
13
+
14
+ private_class_method :new
15
+ alias kind_of? is_a?
16
+ # @param member [Object]
17
+ # @param discriminant [String]
18
+ # @return [Invoices::V2::InvoiceItemAttributionCreate]
19
+ def initialize(member:, discriminant:)
20
+ # @type [Object]
21
+ @member = member
22
+ # @type [String]
23
+ @discriminant = discriminant
24
+ end
25
+
26
+ # Deserialize a JSON object to an instance of InvoiceItemAttributionCreate
27
+ #
28
+ # @param json_object [JSON]
29
+ # @return [Invoices::V2::InvoiceItemAttributionCreate]
30
+ def self.from_json(json_object:)
31
+ struct = JSON.parse(json_object, object_class: OpenStruct)
32
+ member = case struct.type
33
+ when "service_line_id"
34
+ json_object.value
35
+ when "claim_id"
36
+ json_object.value
37
+ when "unattributed"
38
+ nil
39
+ else
40
+ json_object
41
+ end
42
+ new(member: member, discriminant: struct.type)
43
+ end
44
+
45
+ # For Union Types, to_json functionality is delegated to the wrapped member.
46
+ #
47
+ # @return [JSON]
48
+ def to_json(*_args)
49
+ case @discriminant
50
+ when "service_line_id"
51
+ { "type": @discriminant, "value": @member }.to_json
52
+ when "claim_id"
53
+ { "type": @discriminant, "value": @member }.to_json
54
+ when "unattributed"
55
+ { type: @discriminant }.to_json
56
+ else
57
+ { "type": @discriminant, value: @member }.to_json
58
+ end
59
+ @member.to_json
60
+ end
61
+
62
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
63
+ #
64
+ # @param obj [Object]
65
+ # @return [Void]
66
+ def self.validate_raw(obj:)
67
+ case obj.type
68
+ when "service_line_id"
69
+ obj.is_a?(UUID) != false || raise("Passed value for field obj is not the expected type, validation failed.")
70
+ when "claim_id"
71
+ obj.is_a?(UUID) != false || raise("Passed value for field obj is not the expected type, validation failed.")
72
+ when "unattributed"
73
+ # noop
74
+ else
75
+ raise("Passed value matched no type within the union, validation failed.")
76
+ end
77
+ end
78
+
79
+ # For Union Types, is_a? functionality is delegated to the wrapped member.
80
+ #
81
+ # @param obj [Object]
82
+ # @return [Boolean]
83
+ def is_a?(obj)
84
+ @member.is_a?(obj)
85
+ end
86
+
87
+ # @param member [Commons::SERVICE_LINE_ID]
88
+ # @return [Invoices::V2::InvoiceItemAttributionCreate]
89
+ def self.service_line_id(member:)
90
+ new(member: member, discriminant: "service_line_id")
91
+ end
92
+
93
+ # @param member [Commons::CLAIM_ID]
94
+ # @return [Invoices::V2::InvoiceItemAttributionCreate]
95
+ def self.claim_id(member:)
96
+ new(member: member, discriminant: "claim_id")
97
+ end
98
+
99
+ # @return [Invoices::V2::InvoiceItemAttributionCreate]
100
+ def self.unattributed
101
+ new(member: nil, discriminant: "unattributed")
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "invoice_item_attribution_create"
4
+ require "json"
5
+
6
+ module CandidApiClient
7
+ module Invoices
8
+ module V2
9
+ class InvoiceItemCreate
10
+ attr_reader :attribution, :amount_cents, :additional_properties
11
+
12
+ # @param attribution [Invoices::V2::InvoiceItemAttributionCreate]
13
+ # @param amount_cents [Integer]
14
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
15
+ # @return [Invoices::V2::InvoiceItemCreate]
16
+ def initialize(attribution:, amount_cents:, additional_properties: nil)
17
+ # @type [Invoices::V2::InvoiceItemAttributionCreate]
18
+ @attribution = attribution
19
+ # @type [Integer]
20
+ @amount_cents = amount_cents
21
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
22
+ @additional_properties = additional_properties
23
+ end
24
+
25
+ # Deserialize a JSON object to an instance of InvoiceItemCreate
26
+ #
27
+ # @param json_object [JSON]
28
+ # @return [Invoices::V2::InvoiceItemCreate]
29
+ def self.from_json(json_object:)
30
+ struct = JSON.parse(json_object, object_class: OpenStruct)
31
+ parsed_json = JSON.parse(json_object)
32
+ if parsed_json["attribution"].nil?
33
+ attribution = nil
34
+ else
35
+ attribution = parsed_json["attribution"].to_json
36
+ attribution = Invoices::V2::InvoiceItemAttributionCreate.from_json(json_object: attribution)
37
+ end
38
+ amount_cents = struct.amount_cents
39
+ new(attribution: attribution, amount_cents: amount_cents, additional_properties: struct)
40
+ end
41
+
42
+ # Serialize an instance of InvoiceItemCreate to a JSON object
43
+ #
44
+ # @return [JSON]
45
+ def to_json(*_args)
46
+ { "attribution": @attribution, "amount_cents": @amount_cents }.to_json
47
+ end
48
+
49
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
50
+ #
51
+ # @param obj [Object]
52
+ # @return [Void]
53
+ def self.validate_raw(obj:)
54
+ Invoices::V2::InvoiceItemAttributionCreate.validate_raw(obj: obj.attribution)
55
+ obj.amount_cents.is_a?(Integer) != false || raise("Passed value for field obj.amount_cents is not the expected type, validation failed.")
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
data/lib/requests.rb CHANGED
@@ -20,7 +20,7 @@ module CandidApiClient
20
20
  @headers = {
21
21
  "X-Fern-Language": "Ruby",
22
22
  "X-Fern-SDK-Name": "candidhealth",
23
- "X-Fern-SDK-Version": "0.19.1-6de2b0d",
23
+ "X-Fern-SDK-Version": "0.20.0",
24
24
  "Authorization": "Bearer #{token}"
25
25
  }
26
26
  @conn = Faraday.new(@base_url, headers: @headers) do |faraday|
@@ -46,7 +46,7 @@ module CandidApiClient
46
46
  @headers = {
47
47
  "X-Fern-Language": "Ruby",
48
48
  "X-Fern-SDK-Name": "candidhealth",
49
- "X-Fern-SDK-Version": "0.19.1-6de2b0d",
49
+ "X-Fern-SDK-Version": "0.20.0",
50
50
  "Authorization": "Bearer #{token}"
51
51
  }
52
52
  @conn = Faraday.new(@base_url, headers: @headers) do |faraday|
data/lib/types_export.rb CHANGED
@@ -116,6 +116,11 @@ require_relative "candidhealth/guarantor/v_1/types/guarantor_base"
116
116
  require_relative "candidhealth/guarantor/v_1/types/guarantor"
117
117
  require_relative "candidhealth/guarantor/v_1/types/guarantor_create"
118
118
  require_relative "candidhealth/guarantor/v_1/types/encounter_has_existing_guarantor_error_type"
119
+ require_relative "candidhealth/import_invoice/v_1/types/import_invoice"
120
+ require_relative "candidhealth/import_invoice/v_1/types/create_import_invoice_request"
121
+ require_relative "candidhealth/import_invoice/v_1/types/invoice_item_update_type"
122
+ require_relative "candidhealth/import_invoice/v_1/types/invoice_item_info_update"
123
+ require_relative "candidhealth/import_invoice/v_1/types/import_invoice_update_request"
119
124
  require_relative "candidhealth/insurance_adjudications/v_1/types/insurance_adjudication_id"
120
125
  require_relative "candidhealth/insurance_adjudications/v_1/types/service_line_adjudication_id"
121
126
  require_relative "candidhealth/insurance_adjudications/v_1/types/insurance_adjudication_create"
@@ -143,6 +148,8 @@ require_relative "candidhealth/invoices/v_2/types/invoice_status"
143
148
  require_relative "candidhealth/invoices/v_2/types/invoice_destination_metadata"
144
149
  require_relative "candidhealth/invoices/v_2/types/invoice"
145
150
  require_relative "candidhealth/invoices/v_2/types/invoice_info"
151
+ require_relative "candidhealth/invoices/v_2/types/invoice_item_attribution_create"
152
+ require_relative "candidhealth/invoices/v_2/types/invoice_item_create"
146
153
  require_relative "candidhealth/invoices/v_2/types/service_line_invoice_item"
147
154
  require_relative "candidhealth/invoices/v_2/types/claim_invoice_item"
148
155
  require_relative "candidhealth/invoices/v_2/types/claim_invoice_item_info"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: candidhealth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.1.pre.6de2b0d
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-11 00:00:00.000000000 Z
11
+ date: 2024-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-http-faraday
@@ -322,6 +322,13 @@ files:
322
322
  - lib/candidhealth/identifiers/types/medicaid_provider_identifier.rb
323
323
  - lib/candidhealth/identifiers/types/medicare_provider_identifier.rb
324
324
  - lib/candidhealth/identifiers/types/updatable_identifier.rb
325
+ - lib/candidhealth/import_invoice/client.rb
326
+ - lib/candidhealth/import_invoice/v_1/client.rb
327
+ - lib/candidhealth/import_invoice/v_1/types/create_import_invoice_request.rb
328
+ - lib/candidhealth/import_invoice/v_1/types/import_invoice.rb
329
+ - lib/candidhealth/import_invoice/v_1/types/import_invoice_update_request.rb
330
+ - lib/candidhealth/import_invoice/v_1/types/invoice_item_info_update.rb
331
+ - lib/candidhealth/import_invoice/v_1/types/invoice_item_update_type.rb
325
332
  - lib/candidhealth/individual/types/gender.rb
326
333
  - lib/candidhealth/individual/types/individual_base.rb
327
334
  - lib/candidhealth/individual/types/individual_id.rb
@@ -368,6 +375,8 @@ files:
368
375
  - lib/candidhealth/invoices/v_2/types/invoice_destination.rb
369
376
  - lib/candidhealth/invoices/v_2/types/invoice_destination_metadata.rb
370
377
  - lib/candidhealth/invoices/v_2/types/invoice_info.rb
378
+ - lib/candidhealth/invoices/v_2/types/invoice_item_attribution_create.rb
379
+ - lib/candidhealth/invoices/v_2/types/invoice_item_create.rb
371
380
  - lib/candidhealth/invoices/v_2/types/invoice_item_info.rb
372
381
  - lib/candidhealth/invoices/v_2/types/invoice_status.rb
373
382
  - lib/candidhealth/invoices/v_2/types/service_line_invoice_item.rb
@@ -500,9 +509,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
500
509
  version: 2.7.0
501
510
  required_rubygems_version: !ruby/object:Gem::Requirement
502
511
  requirements:
503
- - - ">"
512
+ - - ">="
504
513
  - !ruby/object:Gem::Version
505
- version: 1.3.1
514
+ version: '0'
506
515
  requirements: []
507
516
  rubygems_version: 3.1.6
508
517
  signing_key: