Class: Candid::ChargeCapture::V1::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/candid/charge_capture/v_1/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(client:, base_url: nil, environment: nil) ⇒ void

Parameters:



12
13
14
15
16
# File 'lib/candid/charge_capture/v_1/client.rb', line 12

def initialize(client:, base_url: nil, environment: nil)
  @client = client
  @base_url = base_url
  @environment = environment
end

Instance Method Details

#create(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapture

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/candid/charge_capture/v_1/client.rb', line 27

def create(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "POST",
    path: "/api/charge_captures/v1",
    body: Candid::ChargeCapture::V1::Types::CreateChargeCaptureRequest.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapture.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#create_from_pre_encounter_patient(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapture

Create a Charge Capture from a pre-encounter patient and appointment. This endpoint is intended to be used by consumers who are managing patients and appointments in the pre-encounter service and is currently under development. Consumers who are not taking advantage of the pre-encounter service should use the standard create endpoint.

At encounter creation time, information from the provided patient and appointment objects will be populated where applicable. In particular, the following fields are populated from the patient and appointment objects:

- Patient
- Referring Provider
- Subscriber Primary
- Subscriber Secondary
- Referral Number
- Responsible Party
- Guarantor

Note that these fields should not be populated in the ChargeCaptureData property of this endpoint, as they will be overwritten at encounter creation time.

Utilizing this endpoint opts you into automatic updating of the encounter when the patient or appointment is updated, assuming the encounter has not already been submitted or adjudicated.

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/candid/charge_capture/v_1/client.rb', line 82

def create_from_pre_encounter_patient(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "POST",
    path: "/api/charge_captures/v1/create-from-pre-encounter",
    body: Candid::ChargeCapture::V1::Types::CreateChargeCaptureFromPreEncounterRequest.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapture.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#find_by_metadata(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapturePage

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:



339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
# File 'lib/candid/charge_capture/v_1/client.rb', line 339

def (request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "POST",
    path: "/api/charge_captures/v1/find-by-metadata",
    body: Candid::ChargeCapture::V1::Types::FindByMetadataRequest.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapturePage.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#get(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapture

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (Hash)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

Returns:



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'lib/candid/charge_capture/v_1/client.rb', line 182

def get(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "GET",
    path: "/api/charge_captures/v1/#{params[:charge_capture_id]}",
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapture.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#get_all(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapturePage

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (Hash)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

  • :limit (Integer, nil)
  • :sort (Candid::ChargeCapture::V1::Types::ChargeCaptureSortField, nil)
  • :sort_direction (Candid::Commons::Types::SortDirection, nil)
  • :page_token (String, nil)
  • :patient_external_id (String, nil)
  • :status (Candid::ChargeCapture::V1::Types::ChargeCaptureStatus, nil)
  • :charge_external_id (String, nil)
  • :date_of_service_min (String, nil)
  • :date_of_service_max (String, nil)
  • :claim_ids (String, nil)
  • :claim_creation_ids (String, nil)
  • :billing_provider_npis (String, nil)
  • :service_facility_name (String, nil)
  • :primary_payer_ids (String, nil)
  • :rendering_provider_npis (String, nil)
  • :rendering_provider_names (String, nil)
  • :supervising_provider_npis (String, nil)
  • :supervising_provider_names (String, nil)
  • :claim_creation_category (String, nil)
  • :tags (String, nil)
  • :primary_payer_names (String, nil)
  • :patient_names (String, nil)
  • :exclude_charges_linked_to_claims (Boolean, nil)
  • :patient_external_id_ranked_sort (String, nil)
  • :status_ranked_sort (Candid::ChargeCapture::V1::Types::ChargeCaptureStatus, nil)
  • :charge_external_id_ranked_sort (String, nil)
  • :date_of_service_min_ranked_sort (String, nil)
  • :date_of_service_max_ranked_sort (String, nil)
  • :search_term (String, nil)
  • :billable_status (Candid::Encounters::V4::Types::BillableStatusType, nil)
  • :responsible_party (Candid::Encounters::V4::Types::ResponsiblePartyType, nil)
  • :claim_ids_ranked_sort (String, nil)
  • :claim_creation_ids_ranked_sort (String, nil)
  • :billing_provider_npis_ranked_sort (String, nil)
  • :service_facility_name_ranked_sort (String, nil)
  • :primary_payer_ids_ranked_sort (String, nil)
  • :rendering_provider_npis_ranked_sort (String, nil)
  • :rendering_provider_names_ranked_sort (String, nil)
  • :supervising_provider_npis_ranked_sort (String, nil)
  • :supervising_provider_names_ranked_sort (String, nil)
  • :claim_status (Candid::Claims::Types::ClaimStatus, nil)
  • :claim_creation_category_ranked_sort (String, nil)
  • :tags_ranked_sort (String, nil)
  • :primary_payer_names_ranked_sort (String, nil)
  • :patient_names_ranked_sort (String, nil)

Returns:



258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
# File 'lib/candid/charge_capture/v_1/client.rb', line 258

def get_all(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  query_param_names = %i[limit sort sort_direction page_token patient_external_id status charge_external_id date_of_service_min date_of_service_max claim_ids claim_creation_ids billing_provider_npis service_facility_name primary_payer_ids rendering_provider_npis rendering_provider_names supervising_provider_npis supervising_provider_names claim_creation_category tags primary_payer_names patient_names exclude_charges_linked_to_claims patient_external_id_ranked_sort status_ranked_sort charge_external_id_ranked_sort date_of_service_min_ranked_sort date_of_service_max_ranked_sort search_term billable_status responsible_party claim_ids_ranked_sort claim_creation_ids_ranked_sort billing_provider_npis_ranked_sort service_facility_name_ranked_sort primary_payer_ids_ranked_sort rendering_provider_npis_ranked_sort rendering_provider_names_ranked_sort supervising_provider_npis_ranked_sort supervising_provider_names_ranked_sort claim_status claim_creation_category_ranked_sort tags_ranked_sort primary_payer_names_ranked_sort patient_names_ranked_sort]
  query_params = {}
  query_params["limit"] = params[:limit] if params.key?(:limit)
  query_params["sort"] = params[:sort] if params.key?(:sort)
  query_params["sort_direction"] = params[:sort_direction] if params.key?(:sort_direction)
  query_params["page_token"] = params[:page_token] if params.key?(:page_token)
  query_params["patient_external_id"] = params[:patient_external_id] if params.key?(:patient_external_id)
  query_params["status"] = params[:status] if params.key?(:status)
  query_params["charge_external_id"] = params[:charge_external_id] if params.key?(:charge_external_id)
  query_params["date_of_service_min"] = params[:date_of_service_min] if params.key?(:date_of_service_min)
  query_params["date_of_service_max"] = params[:date_of_service_max] if params.key?(:date_of_service_max)
  query_params["claim_ids"] = params[:claim_ids] if params.key?(:claim_ids)
  query_params["claim_creation_ids"] = params[:claim_creation_ids] if params.key?(:claim_creation_ids)
  query_params["billing_provider_npis"] = params[:billing_provider_npis] if params.key?(:billing_provider_npis)
  query_params["service_facility_name"] = params[:service_facility_name] if params.key?(:service_facility_name)
  query_params["primary_payer_ids"] = params[:primary_payer_ids] if params.key?(:primary_payer_ids)
  query_params["rendering_provider_npis"] = params[:rendering_provider_npis] if params.key?(:rendering_provider_npis)
  query_params["rendering_provider_names"] = params[:rendering_provider_names] if params.key?(:rendering_provider_names)
  query_params["supervising_provider_npis"] = params[:supervising_provider_npis] if params.key?(:supervising_provider_npis)
  query_params["supervising_provider_names"] = params[:supervising_provider_names] if params.key?(:supervising_provider_names)
  query_params["claim_creation_category"] = params[:claim_creation_category] if params.key?(:claim_creation_category)
  query_params["tags"] = params[:tags] if params.key?(:tags)
  query_params["primary_payer_names"] = params[:primary_payer_names] if params.key?(:primary_payer_names)
  query_params["patient_names"] = params[:patient_names] if params.key?(:patient_names)
  query_params["exclude_charges_linked_to_claims"] = params[:exclude_charges_linked_to_claims] if params.key?(:exclude_charges_linked_to_claims)
  query_params["patient_external_id_ranked_sort"] = params[:patient_external_id_ranked_sort] if params.key?(:patient_external_id_ranked_sort)
  query_params["status_ranked_sort"] = params[:status_ranked_sort] if params.key?(:status_ranked_sort)
  query_params["charge_external_id_ranked_sort"] = params[:charge_external_id_ranked_sort] if params.key?(:charge_external_id_ranked_sort)
  query_params["date_of_service_min_ranked_sort"] = params[:date_of_service_min_ranked_sort] if params.key?(:date_of_service_min_ranked_sort)
  query_params["date_of_service_max_ranked_sort"] = params[:date_of_service_max_ranked_sort] if params.key?(:date_of_service_max_ranked_sort)
  query_params["search_term"] = params[:search_term] if params.key?(:search_term)
  query_params["billable_status"] = params[:billable_status] if params.key?(:billable_status)
  query_params["responsible_party"] = params[:responsible_party] if params.key?(:responsible_party)
  query_params["claim_ids_ranked_sort"] = params[:claim_ids_ranked_sort] if params.key?(:claim_ids_ranked_sort)
  query_params["claim_creation_ids_ranked_sort"] = params[:claim_creation_ids_ranked_sort] if params.key?(:claim_creation_ids_ranked_sort)
  query_params["billing_provider_npis_ranked_sort"] = params[:billing_provider_npis_ranked_sort] if params.key?(:billing_provider_npis_ranked_sort)
  query_params["service_facility_name_ranked_sort"] = params[:service_facility_name_ranked_sort] if params.key?(:service_facility_name_ranked_sort)
  query_params["primary_payer_ids_ranked_sort"] = params[:primary_payer_ids_ranked_sort] if params.key?(:primary_payer_ids_ranked_sort)
  query_params["rendering_provider_npis_ranked_sort"] = params[:rendering_provider_npis_ranked_sort] if params.key?(:rendering_provider_npis_ranked_sort)
  query_params["rendering_provider_names_ranked_sort"] = params[:rendering_provider_names_ranked_sort] if params.key?(:rendering_provider_names_ranked_sort)
  query_params["supervising_provider_npis_ranked_sort"] = params[:supervising_provider_npis_ranked_sort] if params.key?(:supervising_provider_npis_ranked_sort)
  query_params["supervising_provider_names_ranked_sort"] = params[:supervising_provider_names_ranked_sort] if params.key?(:supervising_provider_names_ranked_sort)
  query_params["claim_status"] = params[:claim_status] if params.key?(:claim_status)
  query_params["claim_creation_category_ranked_sort"] = params[:claim_creation_category_ranked_sort] if params.key?(:claim_creation_category_ranked_sort)
  query_params["tags_ranked_sort"] = params[:tags_ranked_sort] if params.key?(:tags_ranked_sort)
  query_params["primary_payer_names_ranked_sort"] = params[:primary_payer_names_ranked_sort] if params.key?(:primary_payer_names_ranked_sort)
  query_params["patient_names_ranked_sort"] = params[:patient_names_ranked_sort] if params.key?(:patient_names_ranked_sort)
  params.except(*query_param_names)

  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "GET",
    path: "/api/charge_captures/v1",
    query: query_params,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapturePage.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#update(request_options: {}, **params) ⇒ Candid::ChargeCapture::V1::Types::ChargeCapture

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

Returns:



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/candid/charge_capture/v_1/client.rb', line 145

def update(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request_data = Candid::ChargeCapture::V1::Types::ChargeCaptureUpdate.new(params).to_h
  non_body_param_names = ["charge_capture_id"]
  body = request_data.except(*non_body_param_names)

  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "PATCH",
    path: "/api/charge_captures/v1/#{params[:charge_capture_id]}",
    body: body,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Candid::ChargeCapture::V1::Types::ChargeCapture.load(response.body)
  else
    error_class = Candid::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#update_post_billed_changes(request_options: {}, **params) ⇒ Array[Candid::ChargeCapture::V1::Types::ChargeCapturePostBilledChange]

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Returns:

Raises:

  • (error_class)


114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/candid/charge_capture/v_1/client.rb', line 114

def update_post_billed_changes(request_options: {}, **params)
  params = Candid::Internal::Types::Utils.normalize_keys(params)
  request = Candid::Internal::JSON::Request.new(
    base_url: request_options[:base_url] || @base_url || @environment&.dig(:candid_api),
    method: "PATCH",
    path: "/api/charge_captures/v1/changes",
    body: Candid::ChargeCapture::V1::Types::ChargeCapturePostBilledChangeUpdate.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Candid::Errors::TimeoutError
  end
  code = response.code.to_i
  return if code.between?(200, 299)

  error_class = Candid::Errors::ResponseError.subclass_for_code(code)
  raise error_class.new(response.body, code: code)
end