redox-engine 1.0.2 → 1.0.3

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: 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)