candidhealth 0.26.1 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/lib/candidhealth/invoices/types/invoice.rb +169 -0
  3. data/lib/candidhealth/invoices/types/invoice_item.rb +68 -0
  4. data/lib/candidhealth/invoices/types/invoice_status.rb +16 -0
  5. data/lib/candidhealth/pre_encounter/appointments/client.rb +32 -0
  6. data/lib/candidhealth/pre_encounter/appointments/v_1/client.rb +607 -0
  7. data/lib/candidhealth/pre_encounter/appointments/v_1/types/appointment.rb +257 -0
  8. data/lib/candidhealth/pre_encounter/appointments/v_1/types/appointment_reason.rb +19 -0
  9. data/lib/candidhealth/pre_encounter/appointments/v_1/types/appointment_sort_field.rb +16 -0
  10. data/lib/candidhealth/pre_encounter/appointments/v_1/types/appointment_type.rb +17 -0
  11. data/lib/candidhealth/pre_encounter/appointments/v_1/types/appointment_work_queue.rb +17 -0
  12. data/lib/candidhealth/pre_encounter/appointments/v_1/types/mutable_appointment.rb +203 -0
  13. data/lib/candidhealth/pre_encounter/appointments/v_1/types/service.rb +82 -0
  14. data/lib/candidhealth/pre_encounter/appointments/v_1/types/universal_service_identifier.rb +18 -0
  15. data/lib/candidhealth/pre_encounter/common/types/external_provider.rb +11 -2
  16. data/lib/candidhealth/pre_encounter/common/types/external_provider_type.rb +1 -0
  17. data/lib/candidhealth/pre_encounter/common/types/resource_page.rb +72 -0
  18. data/lib/candidhealth/pre_encounter/common/types/sort_direction.rb +14 -0
  19. data/lib/candidhealth/pre_encounter/coverages/v_1/client.rb +267 -8
  20. data/lib/candidhealth/pre_encounter/coverages/v_1/types/coverage.rb +31 -3
  21. data/lib/candidhealth/pre_encounter/coverages/v_1/types/coverage_benefits.rb +88 -0
  22. data/lib/candidhealth/pre_encounter/coverages/v_1/types/coverage_eligibility_check_response.rb +94 -0
  23. data/lib/candidhealth/pre_encounter/coverages/v_1/types/coverage_value.rb +74 -0
  24. data/lib/candidhealth/pre_encounter/coverages/v_1/types/eligibility_check.rb +62 -0
  25. data/lib/candidhealth/pre_encounter/coverages/v_1/types/eligibility_check_metadata.rb +103 -0
  26. data/lib/candidhealth/pre_encounter/coverages/v_1/types/eligibility_check_status.rb +19 -0
  27. data/lib/candidhealth/pre_encounter/coverages/v_1/types/insurance_type_code.rb +0 -1
  28. data/lib/candidhealth/pre_encounter/coverages/v_1/types/mutable_coverage.rb +31 -3
  29. data/lib/candidhealth/pre_encounter/coverages/v_1/types/plan_coverage.rb +86 -0
  30. data/lib/candidhealth/pre_encounter/coverages/v_1/types/plan_coverage_details.rb +124 -0
  31. data/lib/candidhealth/pre_encounter/coverages/v_1/types/service_coverage.rb +98 -0
  32. data/lib/candidhealth/pre_encounter/coverages/v_1/types/service_coverage_details.rb +124 -0
  33. data/lib/candidhealth/pre_encounter/coverages/v_1/types/service_type_code.rb +203 -0
  34. data/lib/candidhealth/pre_encounter/patients/v_1/client.rb +108 -24
  35. data/lib/candidhealth/pre_encounter/patients/v_1/types/contact.rb +11 -2
  36. data/lib/candidhealth/pre_encounter/patients/v_1/types/patient.rb +4 -2
  37. data/lib/candidhealth/pre_encounter/patients/v_1/types/patient_page.rb +90 -0
  38. data/lib/candidhealth/service_lines/v_2/client.rb +42 -0
  39. data/lib/candidhealth/service_lines/v_2/types/service_line.rb +43 -1
  40. data/lib/candidhealth/service_lines/v_2/types/service_line_era_data.rb +78 -0
  41. data/lib/requests.rb +2 -2
  42. data/lib/types_export.rb +26 -0
  43. metadata +30 -2
@@ -0,0 +1,607 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../requests"
4
+ require_relative "types/mutable_appointment"
5
+ require_relative "types/appointment"
6
+ require "json"
7
+ require "date"
8
+ require_relative "types/appointment_work_queue"
9
+ require_relative "types/appointment_sort_field"
10
+ require_relative "../../common/types/sort_direction"
11
+ require "async"
12
+
13
+ module CandidApiClient
14
+ module PreEncounter
15
+ module Appointments
16
+ module V1
17
+ class V1Client
18
+ # @return [CandidApiClient::RequestClient]
19
+ attr_reader :request_client
20
+
21
+ # @param request_client [CandidApiClient::RequestClient]
22
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::V1Client]
23
+ def initialize(request_client:)
24
+ @request_client = request_client
25
+ end
26
+
27
+ # Adds an appointment. VersionConflictError is returned when the
28
+ # placer_appointment_id is already in use.
29
+ #
30
+ # @param request [Hash] Request of type CandidApiClient::PreEncounter::Appointments::V1::Types::MutableAppointment, as a Hash
31
+ # * :patient_id (String)
32
+ # * :checked_in (Boolean)
33
+ # * :assigned_patient_location (String)
34
+ # * :attending_doctor (Hash)
35
+ # * :name (Hash)
36
+ # * :family (String)
37
+ # * :given (Array<String>)
38
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
39
+ # * :period (Hash)
40
+ # * :start (Date)
41
+ # * :end_ (Date)
42
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
43
+ # * :npi (String)
44
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
45
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
46
+ # * :period (Hash)
47
+ # * :start (Date)
48
+ # * :end_ (Date)
49
+ # * :canonical_id (String)
50
+ # * :referring_doctor (Hash)
51
+ # * :name (Hash)
52
+ # * :family (String)
53
+ # * :given (Array<String>)
54
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
55
+ # * :period (Hash)
56
+ # * :start (Date)
57
+ # * :end_ (Date)
58
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
59
+ # * :npi (String)
60
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
61
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
62
+ # * :period (Hash)
63
+ # * :start (Date)
64
+ # * :end_ (Date)
65
+ # * :canonical_id (String)
66
+ # * :start_timestamp (DateTime)
67
+ # * :service_duration (Integer)
68
+ # * :services (Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Service>)
69
+ # * :placer_appointment_id (String)
70
+ # * :appointment_reason (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentReason)
71
+ # * :appointment_type (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentType)
72
+ # * :location_resource_id (String)
73
+ # * :work_queue (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue)
74
+ # @param request_options [CandidApiClient::RequestOptions]
75
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
76
+ # @example
77
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
78
+ # api.pre_encounter.appointments.v_1.create(request: { patient_id: "string", checked_in: true, assigned_patient_location: "string", attending_doctor: { }, referring_doctor: { }, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z), service_duration: 1, services: [{ universal_service_identifier: MD_VISIT, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z) }], placer_appointment_id: "string", appointment_reason: CHECKUP, appointment_type: COMPLETE, location_resource_id: "string", work_queue: EMERGENT_ISSUE })
79
+ def create(request:, request_options: nil)
80
+ response = @request_client.conn.post do |req|
81
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
82
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
83
+ req.headers = {
84
+ **(req.headers || {}),
85
+ **@request_client.get_headers,
86
+ **(request_options&.additional_headers || {})
87
+ }.compact
88
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
89
+ req.url "#{@request_client.get_url(environment: PreEncounter,
90
+ request_options: request_options)}/appointments/v1"
91
+ end
92
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
93
+ end
94
+
95
+ # Gets an appointment.
96
+ #
97
+ # @param id [String]
98
+ # @param request_options [CandidApiClient::RequestOptions]
99
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
100
+ # @example
101
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
102
+ # api.pre_encounter.appointments.v_1.get(id: "string")
103
+ def get(id:, request_options: nil)
104
+ response = @request_client.conn.get do |req|
105
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
106
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
107
+ req.headers = {
108
+ **(req.headers || {}),
109
+ **@request_client.get_headers,
110
+ **(request_options&.additional_headers || {})
111
+ }.compact
112
+ req.url "#{@request_client.get_url(environment: PreEncounter,
113
+ request_options: request_options)}/appointments/v1/#{id}"
114
+ end
115
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
116
+ end
117
+
118
+ # Gets an appointment along with it's full history. The return list is ordered by
119
+ # version ascending.
120
+ #
121
+ # @param id [String]
122
+ # @param request_options [CandidApiClient::RequestOptions]
123
+ # @return [Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment>]
124
+ # @example
125
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
126
+ # api.pre_encounter.appointments.v_1.get_history(id: "string")
127
+ def get_history(id:, request_options: nil)
128
+ response = @request_client.conn.get do |req|
129
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
130
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
131
+ req.headers = {
132
+ **(req.headers || {}),
133
+ **@request_client.get_headers,
134
+ **(request_options&.additional_headers || {})
135
+ }.compact
136
+ req.url "#{@request_client.get_url(environment: PreEncounter,
137
+ request_options: request_options)}/appointments/v1/#{id}/history"
138
+ end
139
+ parsed_json = JSON.parse(response.body)
140
+ parsed_json&.map do |item|
141
+ item = item.to_json
142
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: item)
143
+ end
144
+ end
145
+
146
+ # Updates an appointment. The path must contain the most recent version to prevent
147
+ # race conditions. Updating historic versions is not supported.
148
+ #
149
+ # @param id [String]
150
+ # @param version [String]
151
+ # @param request [Hash] Request of type CandidApiClient::PreEncounter::Appointments::V1::Types::MutableAppointment, as a Hash
152
+ # * :patient_id (String)
153
+ # * :checked_in (Boolean)
154
+ # * :assigned_patient_location (String)
155
+ # * :attending_doctor (Hash)
156
+ # * :name (Hash)
157
+ # * :family (String)
158
+ # * :given (Array<String>)
159
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
160
+ # * :period (Hash)
161
+ # * :start (Date)
162
+ # * :end_ (Date)
163
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
164
+ # * :npi (String)
165
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
166
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
167
+ # * :period (Hash)
168
+ # * :start (Date)
169
+ # * :end_ (Date)
170
+ # * :canonical_id (String)
171
+ # * :referring_doctor (Hash)
172
+ # * :name (Hash)
173
+ # * :family (String)
174
+ # * :given (Array<String>)
175
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
176
+ # * :period (Hash)
177
+ # * :start (Date)
178
+ # * :end_ (Date)
179
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
180
+ # * :npi (String)
181
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
182
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
183
+ # * :period (Hash)
184
+ # * :start (Date)
185
+ # * :end_ (Date)
186
+ # * :canonical_id (String)
187
+ # * :start_timestamp (DateTime)
188
+ # * :service_duration (Integer)
189
+ # * :services (Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Service>)
190
+ # * :placer_appointment_id (String)
191
+ # * :appointment_reason (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentReason)
192
+ # * :appointment_type (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentType)
193
+ # * :location_resource_id (String)
194
+ # * :work_queue (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue)
195
+ # @param request_options [CandidApiClient::RequestOptions]
196
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
197
+ # @example
198
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
199
+ # api.pre_encounter.appointments.v_1.update(
200
+ # id: "string",
201
+ # version: "string",
202
+ # request: { patient_id: "string", checked_in: true, assigned_patient_location: "string", attending_doctor: { }, referring_doctor: { }, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z), service_duration: 1, services: [{ universal_service_identifier: MD_VISIT, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z) }], placer_appointment_id: "string", appointment_reason: CHECKUP, appointment_type: COMPLETE, location_resource_id: "string", work_queue: EMERGENT_ISSUE }
203
+ # )
204
+ def update(id:, version:, request:, request_options: nil)
205
+ response = @request_client.conn.put do |req|
206
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
207
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
208
+ req.headers = {
209
+ **(req.headers || {}),
210
+ **@request_client.get_headers,
211
+ **(request_options&.additional_headers || {})
212
+ }.compact
213
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
214
+ req.url "#{@request_client.get_url(environment: PreEncounter,
215
+ request_options: request_options)}/appointments/v1/#{id}/#{version}"
216
+ end
217
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
218
+ end
219
+
220
+ # Sets an appointment as deactivated. The path must contain the most recent
221
+ # version to prevent race conditions. Deactivating historic versions is not
222
+ # supported. Subsequent updates via PUT to the appointment will "reactivate" the
223
+ # appointment and set the deactivated flag to false.
224
+ #
225
+ # @param id [String]
226
+ # @param version [String]
227
+ # @param request_options [CandidApiClient::RequestOptions]
228
+ # @return [Void]
229
+ # @example
230
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
231
+ # api.pre_encounter.appointments.v_1.deactivate(id: "string", version: "string")
232
+ def deactivate(id:, version:, request_options: nil)
233
+ @request_client.conn.delete do |req|
234
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
235
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
236
+ req.headers = {
237
+ **(req.headers || {}),
238
+ **@request_client.get_headers,
239
+ **(request_options&.additional_headers || {})
240
+ }.compact
241
+ req.url "#{@request_client.get_url(environment: PreEncounter,
242
+ request_options: request_options)}/appointments/v1/#{id}/#{version}"
243
+ end
244
+ end
245
+
246
+ # Searches for appointments that match the query parameters.
247
+ #
248
+ # @param checked_in [Boolean]
249
+ # @param patient_id [String]
250
+ # @param min_start_timestamp [DateTime]
251
+ # @param max_start_timestamp [DateTime]
252
+ # @param placer_appointment_id [String]
253
+ # @param work_queue [CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue]
254
+ # @param sort_field [CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentSortField] Defaults to start_timestamp.
255
+ # @param sort_direction [CandidApiClient::PreEncounter::Common::Types::SortDirection] Defaults to asc.
256
+ # @param limit [Integer] Defaults to 1000.
257
+ # @param request_options [CandidApiClient::RequestOptions]
258
+ # @return [Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment>]
259
+ # @example
260
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
261
+ # api.pre_encounter.appointments.v_1.get_multi(
262
+ # checked_in: true,
263
+ # patient_id: "string",
264
+ # min_start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z),
265
+ # max_start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z),
266
+ # placer_appointment_id: "string",
267
+ # work_queue: EMERGENT_ISSUE,
268
+ # sort_field: START_TIMESTAMP,
269
+ # sort_direction: ASC,
270
+ # limit: 1
271
+ # )
272
+ def get_multi(checked_in: nil, patient_id: nil, min_start_timestamp: nil, max_start_timestamp: nil,
273
+ placer_appointment_id: nil, work_queue: nil, sort_field: nil, sort_direction: nil, limit: nil, request_options: nil)
274
+ response = @request_client.conn.get do |req|
275
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
276
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
277
+ req.headers = {
278
+ **(req.headers || {}),
279
+ **@request_client.get_headers,
280
+ **(request_options&.additional_headers || {})
281
+ }.compact
282
+ req.params = {
283
+ **(request_options&.additional_query_parameters || {}),
284
+ "checked_in": checked_in,
285
+ "patient_id": patient_id,
286
+ "min_start_timestamp": min_start_timestamp,
287
+ "max_start_timestamp": max_start_timestamp,
288
+ "placer_appointment_id": placer_appointment_id,
289
+ "work_queue": work_queue,
290
+ "sort_field": sort_field,
291
+ "sort_direction": sort_direction,
292
+ "limit": limit
293
+ }.compact
294
+ req.url "#{@request_client.get_url(environment: PreEncounter,
295
+ request_options: request_options)}/appointments/v1"
296
+ end
297
+ parsed_json = JSON.parse(response.body)
298
+ parsed_json&.map do |item|
299
+ item = item.to_json
300
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: item)
301
+ end
302
+ end
303
+ end
304
+
305
+ class AsyncV1Client
306
+ # @return [CandidApiClient::AsyncRequestClient]
307
+ attr_reader :request_client
308
+
309
+ # @param request_client [CandidApiClient::AsyncRequestClient]
310
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::AsyncV1Client]
311
+ def initialize(request_client:)
312
+ @request_client = request_client
313
+ end
314
+
315
+ # Adds an appointment. VersionConflictError is returned when the
316
+ # placer_appointment_id is already in use.
317
+ #
318
+ # @param request [Hash] Request of type CandidApiClient::PreEncounter::Appointments::V1::Types::MutableAppointment, as a Hash
319
+ # * :patient_id (String)
320
+ # * :checked_in (Boolean)
321
+ # * :assigned_patient_location (String)
322
+ # * :attending_doctor (Hash)
323
+ # * :name (Hash)
324
+ # * :family (String)
325
+ # * :given (Array<String>)
326
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
327
+ # * :period (Hash)
328
+ # * :start (Date)
329
+ # * :end_ (Date)
330
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
331
+ # * :npi (String)
332
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
333
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
334
+ # * :period (Hash)
335
+ # * :start (Date)
336
+ # * :end_ (Date)
337
+ # * :canonical_id (String)
338
+ # * :referring_doctor (Hash)
339
+ # * :name (Hash)
340
+ # * :family (String)
341
+ # * :given (Array<String>)
342
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
343
+ # * :period (Hash)
344
+ # * :start (Date)
345
+ # * :end_ (Date)
346
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
347
+ # * :npi (String)
348
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
349
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
350
+ # * :period (Hash)
351
+ # * :start (Date)
352
+ # * :end_ (Date)
353
+ # * :canonical_id (String)
354
+ # * :start_timestamp (DateTime)
355
+ # * :service_duration (Integer)
356
+ # * :services (Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Service>)
357
+ # * :placer_appointment_id (String)
358
+ # * :appointment_reason (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentReason)
359
+ # * :appointment_type (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentType)
360
+ # * :location_resource_id (String)
361
+ # * :work_queue (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue)
362
+ # @param request_options [CandidApiClient::RequestOptions]
363
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
364
+ # @example
365
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
366
+ # api.pre_encounter.appointments.v_1.create(request: { patient_id: "string", checked_in: true, assigned_patient_location: "string", attending_doctor: { }, referring_doctor: { }, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z), service_duration: 1, services: [{ universal_service_identifier: MD_VISIT, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z) }], placer_appointment_id: "string", appointment_reason: CHECKUP, appointment_type: COMPLETE, location_resource_id: "string", work_queue: EMERGENT_ISSUE })
367
+ def create(request:, request_options: nil)
368
+ Async do
369
+ response = @request_client.conn.post do |req|
370
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
371
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
372
+ req.headers = {
373
+ **(req.headers || {}),
374
+ **@request_client.get_headers,
375
+ **(request_options&.additional_headers || {})
376
+ }.compact
377
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
378
+ req.url "#{@request_client.get_url(environment: PreEncounter,
379
+ request_options: request_options)}/appointments/v1"
380
+ end
381
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
382
+ end
383
+ end
384
+
385
+ # Gets an appointment.
386
+ #
387
+ # @param id [String]
388
+ # @param request_options [CandidApiClient::RequestOptions]
389
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
390
+ # @example
391
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
392
+ # api.pre_encounter.appointments.v_1.get(id: "string")
393
+ def get(id:, request_options: nil)
394
+ Async do
395
+ response = @request_client.conn.get do |req|
396
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
397
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
398
+ req.headers = {
399
+ **(req.headers || {}),
400
+ **@request_client.get_headers,
401
+ **(request_options&.additional_headers || {})
402
+ }.compact
403
+ req.url "#{@request_client.get_url(environment: PreEncounter,
404
+ request_options: request_options)}/appointments/v1/#{id}"
405
+ end
406
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
407
+ end
408
+ end
409
+
410
+ # Gets an appointment along with it's full history. The return list is ordered by
411
+ # version ascending.
412
+ #
413
+ # @param id [String]
414
+ # @param request_options [CandidApiClient::RequestOptions]
415
+ # @return [Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment>]
416
+ # @example
417
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
418
+ # api.pre_encounter.appointments.v_1.get_history(id: "string")
419
+ def get_history(id:, request_options: nil)
420
+ Async do
421
+ response = @request_client.conn.get do |req|
422
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
423
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
424
+ req.headers = {
425
+ **(req.headers || {}),
426
+ **@request_client.get_headers,
427
+ **(request_options&.additional_headers || {})
428
+ }.compact
429
+ req.url "#{@request_client.get_url(environment: PreEncounter,
430
+ request_options: request_options)}/appointments/v1/#{id}/history"
431
+ end
432
+ parsed_json = JSON.parse(response.body)
433
+ parsed_json&.map do |item|
434
+ item = item.to_json
435
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: item)
436
+ end
437
+ end
438
+ end
439
+
440
+ # Updates an appointment. The path must contain the most recent version to prevent
441
+ # race conditions. Updating historic versions is not supported.
442
+ #
443
+ # @param id [String]
444
+ # @param version [String]
445
+ # @param request [Hash] Request of type CandidApiClient::PreEncounter::Appointments::V1::Types::MutableAppointment, as a Hash
446
+ # * :patient_id (String)
447
+ # * :checked_in (Boolean)
448
+ # * :assigned_patient_location (String)
449
+ # * :attending_doctor (Hash)
450
+ # * :name (Hash)
451
+ # * :family (String)
452
+ # * :given (Array<String>)
453
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
454
+ # * :period (Hash)
455
+ # * :start (Date)
456
+ # * :end_ (Date)
457
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
458
+ # * :npi (String)
459
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
460
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
461
+ # * :period (Hash)
462
+ # * :start (Date)
463
+ # * :end_ (Date)
464
+ # * :canonical_id (String)
465
+ # * :referring_doctor (Hash)
466
+ # * :name (Hash)
467
+ # * :family (String)
468
+ # * :given (Array<String>)
469
+ # * :use (CandidApiClient::PreEncounter::Common::Types::NameUse)
470
+ # * :period (Hash)
471
+ # * :start (Date)
472
+ # * :end_ (Date)
473
+ # * :type (CandidApiClient::PreEncounter::Common::Types::ExternalProviderType)
474
+ # * :npi (String)
475
+ # * :telecoms (Array<CandidApiClient::PreEncounter::Common::Types::ContactPoint>)
476
+ # * :addresses (Array<CandidApiClient::PreEncounter::Common::Types::Address>)
477
+ # * :period (Hash)
478
+ # * :start (Date)
479
+ # * :end_ (Date)
480
+ # * :canonical_id (String)
481
+ # * :start_timestamp (DateTime)
482
+ # * :service_duration (Integer)
483
+ # * :services (Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Service>)
484
+ # * :placer_appointment_id (String)
485
+ # * :appointment_reason (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentReason)
486
+ # * :appointment_type (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentType)
487
+ # * :location_resource_id (String)
488
+ # * :work_queue (CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue)
489
+ # @param request_options [CandidApiClient::RequestOptions]
490
+ # @return [CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment]
491
+ # @example
492
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
493
+ # api.pre_encounter.appointments.v_1.update(
494
+ # id: "string",
495
+ # version: "string",
496
+ # request: { patient_id: "string", checked_in: true, assigned_patient_location: "string", attending_doctor: { }, referring_doctor: { }, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z), service_duration: 1, services: [{ universal_service_identifier: MD_VISIT, start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z) }], placer_appointment_id: "string", appointment_reason: CHECKUP, appointment_type: COMPLETE, location_resource_id: "string", work_queue: EMERGENT_ISSUE }
497
+ # )
498
+ def update(id:, version:, request:, request_options: nil)
499
+ Async do
500
+ response = @request_client.conn.put do |req|
501
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
502
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
503
+ req.headers = {
504
+ **(req.headers || {}),
505
+ **@request_client.get_headers,
506
+ **(request_options&.additional_headers || {})
507
+ }.compact
508
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
509
+ req.url "#{@request_client.get_url(environment: PreEncounter,
510
+ request_options: request_options)}/appointments/v1/#{id}/#{version}"
511
+ end
512
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: response.body)
513
+ end
514
+ end
515
+
516
+ # Sets an appointment as deactivated. The path must contain the most recent
517
+ # version to prevent race conditions. Deactivating historic versions is not
518
+ # supported. Subsequent updates via PUT to the appointment will "reactivate" the
519
+ # appointment and set the deactivated flag to false.
520
+ #
521
+ # @param id [String]
522
+ # @param version [String]
523
+ # @param request_options [CandidApiClient::RequestOptions]
524
+ # @return [Void]
525
+ # @example
526
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
527
+ # api.pre_encounter.appointments.v_1.deactivate(id: "string", version: "string")
528
+ def deactivate(id:, version:, request_options: nil)
529
+ Async do
530
+ @request_client.conn.delete do |req|
531
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
532
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
533
+ req.headers = {
534
+ **(req.headers || {}),
535
+ **@request_client.get_headers,
536
+ **(request_options&.additional_headers || {})
537
+ }.compact
538
+ req.url "#{@request_client.get_url(environment: PreEncounter,
539
+ request_options: request_options)}/appointments/v1/#{id}/#{version}"
540
+ end
541
+ end
542
+ end
543
+
544
+ # Searches for appointments that match the query parameters.
545
+ #
546
+ # @param checked_in [Boolean]
547
+ # @param patient_id [String]
548
+ # @param min_start_timestamp [DateTime]
549
+ # @param max_start_timestamp [DateTime]
550
+ # @param placer_appointment_id [String]
551
+ # @param work_queue [CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentWorkQueue]
552
+ # @param sort_field [CandidApiClient::PreEncounter::Appointments::V1::Types::AppointmentSortField] Defaults to start_timestamp.
553
+ # @param sort_direction [CandidApiClient::PreEncounter::Common::Types::SortDirection] Defaults to asc.
554
+ # @param limit [Integer] Defaults to 1000.
555
+ # @param request_options [CandidApiClient::RequestOptions]
556
+ # @return [Array<CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment>]
557
+ # @example
558
+ # api = CandidApiClient::Client.new(base_url: "https://api.example.com", environment: CandidApiClient::Environment::PRODUCTION)
559
+ # api.pre_encounter.appointments.v_1.get_multi(
560
+ # checked_in: true,
561
+ # patient_id: "string",
562
+ # min_start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z),
563
+ # max_start_timestamp: DateTime.parse(2024-01-15T09:30:00.000Z),
564
+ # placer_appointment_id: "string",
565
+ # work_queue: EMERGENT_ISSUE,
566
+ # sort_field: START_TIMESTAMP,
567
+ # sort_direction: ASC,
568
+ # limit: 1
569
+ # )
570
+ def get_multi(checked_in: nil, patient_id: nil, min_start_timestamp: nil, max_start_timestamp: nil,
571
+ placer_appointment_id: nil, work_queue: nil, sort_field: nil, sort_direction: nil, limit: nil, request_options: nil)
572
+ Async do
573
+ response = @request_client.conn.get do |req|
574
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
575
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
576
+ req.headers = {
577
+ **(req.headers || {}),
578
+ **@request_client.get_headers,
579
+ **(request_options&.additional_headers || {})
580
+ }.compact
581
+ req.params = {
582
+ **(request_options&.additional_query_parameters || {}),
583
+ "checked_in": checked_in,
584
+ "patient_id": patient_id,
585
+ "min_start_timestamp": min_start_timestamp,
586
+ "max_start_timestamp": max_start_timestamp,
587
+ "placer_appointment_id": placer_appointment_id,
588
+ "work_queue": work_queue,
589
+ "sort_field": sort_field,
590
+ "sort_direction": sort_direction,
591
+ "limit": limit
592
+ }.compact
593
+ req.url "#{@request_client.get_url(environment: PreEncounter,
594
+ request_options: request_options)}/appointments/v1"
595
+ end
596
+ parsed_json = JSON.parse(response.body)
597
+ parsed_json&.map do |item|
598
+ item = item.to_json
599
+ CandidApiClient::PreEncounter::Appointments::V1::Types::Appointment.from_json(json_object: item)
600
+ end
601
+ end
602
+ end
603
+ end
604
+ end
605
+ end
606
+ end
607
+ end