redox-engine 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbf1723442626f96794b5ab2fc8ed408cde77aaf75696a03983a3a99424e7f7a
4
- data.tar.gz: b1c7bf8bebbb5e7497b01ebd200b93acfe0ce5c7f303163cfacae837141f73e1
3
+ metadata.gz: 8ecef52e6dcbca9882a871ce572fc23ab8779997b098b2ef7570cd70d1201257
4
+ data.tar.gz: ec4580d43ba4347f26be8e295fb281f0a813e61f7a41915116792e66cdbe48a6
5
5
  SHA512:
6
- metadata.gz: d4ad4310d97ded5b77f6b6d15752b4553590bfcd6d868556006217d9ec435bba9eb424f14b55dbc1af8ddbac1e0cd4746ffdf924676b2a7a67b4ae8004fe1e74
7
- data.tar.gz: d6007f25aa329618c18261c8e53ce30c553f6d6f88ee17f0303a1d154336d5c5e2b9c12240141414a8246ee41823e3e59ac81e1f27b8a09c60c2e6cbc06b7742
6
+ metadata.gz: 57c9aaded6bc7ea8752e7563d747decefd932b6167407084a7a6365032d5d791b718107f8afa6a1f3852a3ea3ec9a68a3ff3b17b798999f2918c09c09bb45ebb
7
+ data.tar.gz: 842d07675d0ed7d60605dffe5af08938574d7db7d1ba04cd391087c7cda5ed85bd7fb11d009606791437c94a9b26d14bf94525b825ea58f54fdbdac98b302d49
data/README.md CHANGED
@@ -117,4 +117,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
117
117
 
118
118
  ## Contributing
119
119
 
120
- Bug reports and pull requests are welcome on GitHub at https://github.com/WeInfuse/redox.
120
+ Bug reports and pull requests are welcome on GitHub at https://github.com/pdeona/redox.
@@ -45,9 +45,13 @@ module RedoxEngine
45
45
  # @return [Hash] parsed response object
46
46
  # @example
47
47
  # RedoxEngine::Client.new(*connection_params).add_patient(
48
- # Identifiers: [],
48
+ # Identifiers: [{
49
+ # ID: string
50
+ # IDType: string
51
+ # }*],
49
52
  # Demographics: {
50
- # FirstName: 'Joe'
53
+ # FirstName: string
54
+ # ...
51
55
  # }
52
56
  # )
53
57
  def add_patient(patient_params)
@@ -60,13 +64,18 @@ module RedoxEngine
60
64
 
61
65
  # Send PatientAdmin#PatientUpdate message
62
66
  #
63
- # @param [Hash] patient_params data to send in the Patient JSON object
67
+ # @param [Hash] <Patient> patient_params data to send in the
68
+ # Patient JSON object
64
69
  # @return [Hash] parsed response object
65
70
  # @example
66
71
  # RedoxEngine::Client.new(*connection_params).update_patient(
67
- # Identifiers: [],
72
+ # Identifiers: [{
73
+ # ID: string
74
+ # IDType: string
75
+ # }*],
68
76
  # Demographics: {
69
- # FirstName: 'Joe'
77
+ # FirstName: string
78
+ # ...
70
79
  # }
71
80
  # )
72
81
  def update_patient(patient_params)
@@ -79,12 +88,12 @@ module RedoxEngine
79
88
 
80
89
  # Send PatientSearch#Query message
81
90
  #
82
- # @param [Hash] patient_params data to send in the Patient JSON object
91
+ # @param [Hash] <Patient> data to send in the Patient JSON object
83
92
  # @return [Hash] parsed response object
84
93
  # @example
85
94
  # RedoxEngine::Client.new(*connection_params).search_patient(
86
95
  # demographics: {
87
- # FirstName: 'Joe'
96
+ # FirstName: string
88
97
  # ...
89
98
  # }
90
99
  # )
@@ -98,14 +107,14 @@ module RedoxEngine
98
107
 
99
108
  # Send ClinicalSummary#PatientQuery message
100
109
  #
101
- # @param [Hash] patient_params data to send in the Patient JSON object
110
+ # @param [Hash] <Patient> data to send in the Patient JSON object
102
111
  # @return [Hash] parsed response object
103
112
  # @example
104
113
  # RedoxEngine::Client.new(*connection_params).search_patient(
105
114
  # identifiers: [
106
115
  # {
107
- # id: '4681'
108
- # id_type: 'AthenaNet Enterprise ID'
116
+ # id: string
117
+ # id_type: string
109
118
  # }
110
119
  # ]
111
120
  # )
@@ -122,34 +131,81 @@ module RedoxEngine
122
131
 
123
132
  # Send Scheduling#BookedSlots message
124
133
  #
125
- # @param [Hash] visit data to send in the Visit JSON object
134
+ # NOTE: Endpoint not supported by all Health Systems, talk to your
135
+ # redox rep for more information
136
+ # @param [Hash] query_data to send in the <Visit>/<Patient> JSON objects
126
137
  # @param [String|Time] start_time datetime to search from
127
138
  # @params [String|Time] end_time datetime to search until
128
139
  # @return [Hash] parsed response object
129
140
  # @example
130
141
  # RedoxEngine::Client.new(*connection_params).get_booked_slots(
131
- # visit: {
132
- # reason?: string
133
- # attending_providers: Provider[]
134
- # location: {
135
- # type: string
136
- # facility: string
137
- # department: string | number
138
- # room: string | number
139
- # }
140
- # }
142
+ # query_data: {
143
+ # visit: <Visit>
144
+ # patient: <Patient>
145
+ # }
146
+ # start_time?: Time | String (ISO-8601 Time String)
147
+ # end_time?: Time | String (ISO-8601 Time String)
148
+ # )
149
+ def get_booked_slots(visit:, patient: nil, start_time: nil, end_time: nil)
150
+ request_body = scheduling_query(
151
+ query_data: { visit: visit, patient: patient },
152
+ start_time: start_time,
153
+ end_time: end_time,
154
+ type: 'Booked'
155
+ )
156
+ handle_request(
157
+ request_body,
158
+ 'Error fetching Booked Slots.'
159
+ )
160
+ end
161
+
162
+ # Send Scheduling#AvailableSlots message
163
+ #
164
+ # NOTE: Endpoint not supported by all Health Systems, talk to your
165
+ # redox rep for more information
166
+ # @param [Hash] query_data to send in the <Visit>/<Patient> JSON objects
167
+ # @param [String|Time] start_time datetime to search from
168
+ # @params [String|Time] end_time datetime to search until
169
+ # @return [Hash] parsed response object
170
+ # @example
171
+ # RedoxEngine::Client.new(*connection_params).get_available_slots(
172
+ # query_data: {
173
+ # visit: <Visit>
174
+ # patient: <Patient>
175
+ # }
141
176
  # start_time?: Time | String (ISO-8601 Time String)
142
177
  # end_time?: Time | String (ISO-8601 Time String)
143
178
  # )
144
- def get_booked_slots(visit:, start_time: nil, end_time: nil)
179
+ def get_available_slots(
180
+ visit:, patient: nil, start_time: nil, end_time: nil
181
+ )
182
+ visit[:reasons] = ['-1']
145
183
  request_body = scheduling_query(
146
- visit: visit,
184
+ query_data: { visit: visit, patient: patient },
147
185
  start_time: start_time,
148
- end_time: end_time
186
+ end_time: end_time,
187
+ type: 'AvailableSlots'
188
+ )
189
+ handle_request(request_body, 'Error fetching Available Slots.')
190
+ end
191
+
192
+ # Send Scheduling#New message
193
+ #
194
+ # @param [Hash] <Visit>
195
+ # @param [Hash] <Patient>
196
+ # @return [Hash] parsed response object
197
+ # @example
198
+ # RedoxEngine::Client.new(*connection_params).get_available_slots(
199
+ # visit: <Visit>
200
+ # patient: <Patient>
201
+ # )
202
+ def add_appointment(visit:, patient:)
203
+ request_body = scheduling_query(
204
+ query_data: { visit: visit, patient: patient }, type: 'New'
149
205
  )
150
206
  handle_request(
151
207
  request_body,
152
- 'Error fetching Booked Slots'
208
+ 'Error posting New Appointment.'
153
209
  )
154
210
  end
155
211
  end
@@ -28,7 +28,7 @@ module RedoxEngine
28
28
  meta: {
29
29
  data_model: data_model,
30
30
  event_type: event_type,
31
- event_date_time: Time.now.iso8601,
31
+ event_date_time: Time.now.utc.iso8601,
32
32
  test: @test,
33
33
  source: @source,
34
34
  destinations: find_destination(data_model)
@@ -36,16 +36,27 @@ module RedoxEngine
36
36
  }.redoxify_keys
37
37
  end
38
38
 
39
- def scheduling_query(visit:, start_time: nil, end_time: nil)
39
+ def scheduling_query(query_data:, start_time: nil, end_time: nil, type:)
40
+ request_meta(data_model: 'Scheduling', event_type: type)
41
+ .merge(
42
+ scheduling_body(
43
+ query_data: query_data,
44
+ start_time: start_time,
45
+ end_time: end_time
46
+ )
47
+ ).redoxify_keys
48
+ end
49
+
50
+ def scheduling_body(query_data:, start_time: nil, end_time: nil)
40
51
  start_time = start_time ? Time.parse(start_time.to_s) : Time.now
41
52
  end_time = end_time ? Time.parse(end_time.to_s) : start_time + 864_000
42
- request_meta(data_model: 'Scheduling', event_type: 'Booked')
43
- .merge(
44
- visit: visit,
45
- start_date_time: start_time.iso8601,
46
- end_date_time: end_time.iso8601
47
- )
48
- .redoxify_keys
53
+ {
54
+ visit: query_data[:visit],
55
+ start_date_time: start_time.utc.iso8601,
56
+ end_date_time: end_time.utc.iso8601,
57
+ patient: query_data[:patient],
58
+ visit_number: query_data[:visit][:visit_number]
59
+ }
49
60
  end
50
61
 
51
62
  def login_request(refresh_token = nil)
@@ -1,3 +1,3 @@
1
1
  module RedoxEngine
2
- VERSION = '1.0.2'.freeze
2
+ VERSION = '1.0.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redox-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Clark (forked from)