redox 1.1.1 → 1.5.0
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 +4 -4
- data/CHANGELOG.md +36 -0
- data/lib/redox.rb +10 -0
- data/lib/redox/models/financial.rb +13 -0
- data/lib/redox/models/model.rb +77 -22
- data/lib/redox/models/ordering_provider.rb +15 -0
- data/lib/redox/models/patient/demographics.rb +1 -1
- data/lib/redox/models/patient/identifier.rb +1 -1
- data/lib/redox/models/patient/p_c_p.rb +1 -5
- data/lib/redox/models/provider.rb +21 -0
- data/lib/redox/models/scheduling.rb +24 -0
- data/lib/redox/models/transaction.rb +75 -0
- data/lib/redox/models/visit.rb +54 -0
- data/lib/redox/request/financial.rb +12 -0
- data/lib/redox/request/patient_admin.rb +2 -8
- data/lib/redox/request/patient_search.rb +1 -1
- data/lib/redox/request/provider.rb +12 -0
- data/lib/redox/request/request.rb +9 -0
- data/lib/redox/request/scheduling.rb +30 -0
- data/lib/redox/version.rb +1 -1
- data/redox.gemspec +3 -3
- metadata +21 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70df1547b07206629c70b4add746e3398a31344cb650ad7ed76ed3c445b5f671
|
4
|
+
data.tar.gz: ca6e9a96303e38d2e34cbfb6919862255b05ef1d10d5a1f676788bd2257f7e89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d083b4a806a96484248be1b1e3fd03684ed24a5217f79eddd7963ac5c22fc0e327d573bcab7c6f6c986db01fee7696f30b33c4d01f04b06627be45bed1045af7
|
7
|
+
data.tar.gz: e945ddb514dcb1f0bff7fd8fd829c6d9cb828eed2787773846b4841aad6fbd86a108ad90c8cecc9ba18ade16023a65c78272896f9d3c1a086dc4a5beaa1160d6
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [1.5.0] - 2020-12-15
|
8
|
+
### Added
|
9
|
+
- Scheduling model
|
10
|
+
- Scheduling#create
|
11
|
+
- Scheduling#cancel
|
12
|
+
- Scheduling#reschedule
|
13
|
+
- Scheduling#modification
|
14
|
+
|
15
|
+
## [1.4.0] - 2020-10-13
|
16
|
+
### Added
|
17
|
+
- AbstractModel that does not add top level key
|
18
|
+
- OrderingProvider that is the base for PCP
|
19
|
+
- Provider model
|
20
|
+
- Provider#query
|
21
|
+
- Created new method that can add helpers dynamically from response
|
22
|
+
|
23
|
+
## [1.3.1] - 2020-10-02
|
24
|
+
### Added
|
25
|
+
- Transaction#as\_json
|
26
|
+
- Visit#as\_json
|
27
|
+
|
28
|
+
## [1.3.0] - 2020-09-17
|
29
|
+
### Added
|
30
|
+
- Transaction model
|
31
|
+
- Financial#create
|
32
|
+
|
33
|
+
## [1.2.0] - 2020-07-30
|
34
|
+
### Added
|
35
|
+
- Visit model
|
36
|
+
- Model#insurances helper for Patient.Insurances || Visit.Insurances
|
37
|
+
|
7
38
|
## [1.1.1] - 2020-06-15
|
8
39
|
### Changed
|
9
40
|
- Bugfix with patient param in update
|
@@ -98,6 +129,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
98
129
|
### Added
|
99
130
|
- Initial Release
|
100
131
|
|
132
|
+
[1.5.0]: https://github.com/WeInfuse/redox/compare/v1.4.0...v1.5.0
|
133
|
+
[1.4.0]: https://github.com/WeInfuse/redox/compare/v1.3.1...v1.4.0
|
134
|
+
[1.3.1]: https://github.com/WeInfuse/redox/compare/v1.3.0...v1.3.1
|
135
|
+
[1.3.0]: https://github.com/WeInfuse/redox/compare/v1.2.0...v1.3.0
|
136
|
+
[1.2.0]: https://github.com/WeInfuse/redox/compare/v1.1.1...v1.2.0
|
101
137
|
[1.1.1]: https://github.com/WeInfuse/redox/compare/v1.1.0...v1.1.1
|
102
138
|
[1.1.0]: https://github.com/WeInfuse/redox/compare/v1.0.2...v1.1.0
|
103
139
|
[1.0.2]: https://github.com/WeInfuse/redox/compare/v1.0.1...v1.0.2
|
data/lib/redox.rb
CHANGED
@@ -6,14 +6,24 @@ require 'redox/connection'
|
|
6
6
|
require 'redox/authentication'
|
7
7
|
require 'redox/models/model'
|
8
8
|
require 'redox/models/meta'
|
9
|
+
require 'redox/models/ordering_provider'
|
9
10
|
require 'redox/models/patient'
|
11
|
+
require 'redox/models/provider'
|
12
|
+
require 'redox/models/visit'
|
13
|
+
require 'redox/models/transaction'
|
14
|
+
require 'redox/models/financial'
|
10
15
|
require 'redox/models/patient/demographics'
|
11
16
|
require 'redox/models/patient/identifier'
|
12
17
|
require 'redox/models/patient/insurance'
|
13
18
|
require 'redox/models/patient/p_c_p'
|
14
19
|
require 'redox/models/potential_matches'
|
20
|
+
require 'redox/models/scheduling'
|
21
|
+
require 'redox/request/request'
|
22
|
+
require 'redox/request/financial'
|
15
23
|
require 'redox/request/patient_admin'
|
16
24
|
require 'redox/request/patient_search'
|
25
|
+
require 'redox/request/provider'
|
26
|
+
require 'redox/request/scheduling'
|
17
27
|
|
18
28
|
module Redox
|
19
29
|
class Configuration
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class Financial < AbstractModel
|
4
|
+
property :Visit, required: false, from: :visit, default: Redox::Models::Visit.new
|
5
|
+
property :Patient, required: false, from: :patient, default: Redox::Models::Patient.new
|
6
|
+
property :Transactions, required: false, from: :transactions, default: []
|
7
|
+
|
8
|
+
alias_method :patient, :Patient
|
9
|
+
alias_method :visit, :Visit
|
10
|
+
alias_method :transactions, :Transactions
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/redox/models/model.rb
CHANGED
@@ -1,19 +1,95 @@
|
|
1
1
|
module Redox
|
2
2
|
module Models
|
3
|
-
|
3
|
+
def self.format_datetime(d)
|
4
|
+
if d.respond_to?(:strftime)
|
5
|
+
d.strftime(Redox::Models::Meta::TO_DATETIME_FORMAT)
|
6
|
+
else
|
7
|
+
d
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class AbstractModel < Hashie::Trash
|
4
12
|
include Hashie::Extensions::IgnoreUndeclared
|
5
13
|
include Hashie::Extensions::IndifferentAccess
|
6
14
|
|
15
|
+
HIGH_LEVEL_KEYS = %w[Meta Patient Visit PotentialMatches]
|
16
|
+
|
7
17
|
property :Meta, from: :meta, required: false
|
8
18
|
property :Patient, from: :patient, required: false
|
19
|
+
property :Visit, from: :visit, required: false
|
9
20
|
property :PotentialMatches, from: :potential_matches, required: false
|
10
21
|
property :Extensions, from: :extensions, required: false
|
11
22
|
property :response, required: false
|
12
23
|
|
13
24
|
alias_method :potential_matches, :PotentialMatches
|
14
25
|
alias_method :patient, :Patient
|
26
|
+
alias_method :visit, :Visit
|
15
27
|
alias_method :meta, :Meta
|
16
28
|
|
29
|
+
def to_json(args = {})
|
30
|
+
return self.to_h.to_json
|
31
|
+
end
|
32
|
+
|
33
|
+
def insurances
|
34
|
+
(self.patient&.insurances || []) + (self.visit&.insurances || [])
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.from_response(response)
|
38
|
+
model = Model.new
|
39
|
+
model.response = response
|
40
|
+
|
41
|
+
HIGH_LEVEL_KEYS.each do |k|
|
42
|
+
begin
|
43
|
+
model.send("#{k}=", Module.const_get("Redox::Models::#{k}").new(response[k])) if response[k]
|
44
|
+
rescue
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
return model
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.from_response_inflected(response)
|
52
|
+
model = self.from_response(response)
|
53
|
+
|
54
|
+
if (model.response.ok?)
|
55
|
+
data = model.response.parsed_response
|
56
|
+
|
57
|
+
if data.respond_to?(:keys)
|
58
|
+
model_class = nil
|
59
|
+
|
60
|
+
if model.meta&.data_model
|
61
|
+
model_class = "Redox::Models::#{model.meta.data_model}"
|
62
|
+
|
63
|
+
begin
|
64
|
+
model_class = Object.const_get(model_class)
|
65
|
+
rescue NameError
|
66
|
+
model_class = nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
data.keys.each do |key|
|
71
|
+
next if HIGH_LEVEL_KEYS.include?(key.to_s)
|
72
|
+
|
73
|
+
helper_name = key.to_s.downcase.to_sym
|
74
|
+
|
75
|
+
if model_class.nil?
|
76
|
+
model.define_singleton_method(helper_name) { data[key] }
|
77
|
+
else
|
78
|
+
if data[key].is_a?(Array)
|
79
|
+
model.define_singleton_method(helper_name) { data[key].map {|obj| model_class.new(obj) } }
|
80
|
+
else
|
81
|
+
model.define_singleton_method(helper_name) { model_class.new(data[key]) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
return model
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class Model < AbstractModel
|
17
93
|
def initialize(data = {})
|
18
94
|
if data.is_a?(Hash)
|
19
95
|
if data.include?(key)
|
@@ -30,28 +106,7 @@ module Redox
|
|
30
106
|
return { key => super.to_h }
|
31
107
|
end
|
32
108
|
|
33
|
-
def to_json
|
34
|
-
return self.to_h.to_json
|
35
|
-
end
|
36
|
-
|
37
|
-
class << self
|
38
|
-
def from_response(response)
|
39
|
-
model = Model.new
|
40
|
-
model.response = response
|
41
|
-
|
42
|
-
%w[Meta Patient PotentialMatches].each do |k|
|
43
|
-
begin
|
44
|
-
model.send("#{k}=", Module.const_get("Redox::Models::#{k}").new(response[k])) if response[k]
|
45
|
-
rescue
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
return model
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
109
|
private
|
54
|
-
|
55
110
|
def key
|
56
111
|
return self.class.to_s.split('::').last.to_s
|
57
112
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class OrderingProvider < AbstractModel
|
4
|
+
property :ID, required: false, from: :id
|
5
|
+
property :IDType, required: false, from: :id_type
|
6
|
+
property :FirstName, required: false, from: :first_name
|
7
|
+
property :LastName, required: false, from: :last_name
|
8
|
+
|
9
|
+
alias_method :first_name, :FirstName
|
10
|
+
alias_method :last_name, :LastName
|
11
|
+
alias_method :id, :ID
|
12
|
+
alias_method :id_type, :IDType
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Redox
|
2
2
|
module Models
|
3
|
-
class Demographics <
|
3
|
+
class Demographics < AbstractModel
|
4
4
|
property :FirstName, required: false, from: :first_name
|
5
5
|
property :MiddleName, required: false, from: :middle_name
|
6
6
|
property :LastName, required: false, from: :last_name
|
@@ -1,13 +1,9 @@
|
|
1
1
|
module Redox
|
2
2
|
module Models
|
3
|
-
class PCP <
|
3
|
+
class PCP < OrderingProvider
|
4
4
|
property :NPI, from: :npi
|
5
|
-
property :FirstName, required: false, from: :first_name
|
6
|
-
property :LastName, required: false, from: :last_name
|
7
5
|
|
8
6
|
alias_method :npi, :NPI
|
9
|
-
alias_method :first_name, :FirstName
|
10
|
-
alias_method :last_name, :LastName
|
11
7
|
end
|
12
8
|
end
|
13
9
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class Provider < Model
|
4
|
+
property :Identifiers, from: :identifiers, required: false, default: []
|
5
|
+
property :Demographics, from: :demographics, required: false
|
6
|
+
|
7
|
+
alias_method :identifiers, :Identifiers
|
8
|
+
|
9
|
+
def demographics
|
10
|
+
self[:Demographics] = Demographics.new(self[:Demographics]) unless self[:Demographics].is_a?(Redox::Models::Demographics)
|
11
|
+
self[:Demographics] ||= Demographics.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_identifier(type: , value: )
|
15
|
+
self[:Identifiers] << Identifier.new({'ID' => value, 'IDType' => type})
|
16
|
+
|
17
|
+
return self
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class Scheduling < AbstractModel
|
4
|
+
property :Visit, required: false, from: :visit, default: Redox::Models::Visit.new
|
5
|
+
property :Patient, required: false, from: :patient, default: Redox::Models::Patient.new
|
6
|
+
property :AppointmentInfo, required: false, from: :appointment_info, default: []
|
7
|
+
|
8
|
+
alias_method :patient, :Patient
|
9
|
+
alias_method :visit, :Visit
|
10
|
+
alias_method :appointment_info, :AppointmentInfo
|
11
|
+
|
12
|
+
def add_appointment_info(code: nil, codeset: nil, description: nil, value: nil)
|
13
|
+
self[:AppointmentInfo] << {
|
14
|
+
Code: code,
|
15
|
+
Codeset: codeset,
|
16
|
+
Description: description,
|
17
|
+
Value: value
|
18
|
+
}
|
19
|
+
|
20
|
+
self
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class Transaction < AbstractModel
|
4
|
+
property :Chargeable, required: false, from: :chargeable, default: {}
|
5
|
+
property :DateTimeOfService, required: false, from: :start
|
6
|
+
property :Department, required: false, from: :department, default: {}
|
7
|
+
property :Diagnoses, required: false, from: :diagnoses, default: []
|
8
|
+
property :EndDateTime, required: false, from: :end
|
9
|
+
property :Extensions, required: false, from: :extensions, default: {}
|
10
|
+
property :ID, required: false, from: :id
|
11
|
+
property :NDC, required: false, from: :ndc, default: {}
|
12
|
+
property :OrderID, required: false, from: :order_id
|
13
|
+
property :OrderingProviders, required: false, from: :ordering_providers, default: []
|
14
|
+
property :Performers, required: false, from: :performers, default: []
|
15
|
+
property :Procedure, required: false, from: :procedure, default: {}
|
16
|
+
property :Type, required: false, from: :type
|
17
|
+
|
18
|
+
alias_method :chargeable, :Chargeable
|
19
|
+
alias_method :start, :DateTimeOfService
|
20
|
+
alias_method :department, :Department
|
21
|
+
alias_method :diagnoses, :Diagnoses
|
22
|
+
alias_method :end, :EndDateTime
|
23
|
+
alias_method :extensions, :Extensions
|
24
|
+
alias_method :id, :ID
|
25
|
+
alias_method :ndc, :NDC
|
26
|
+
alias_method :order_id, :OrderID
|
27
|
+
alias_method :ordering_providers, :OrderingProviders
|
28
|
+
alias_method :performers, :Performers
|
29
|
+
alias_method :procedure, :Procedure
|
30
|
+
alias_method :type, :Type
|
31
|
+
|
32
|
+
def add_medication(ndc_code: nil, quantity: nil, magnitude: nil, unit: nil, description: nil)
|
33
|
+
self[:NDC] = { Code: ndc_code, Description: description }
|
34
|
+
self[:Extensions] = {
|
35
|
+
'ndc-quantity' => {
|
36
|
+
integer: quantity&.to_s
|
37
|
+
},
|
38
|
+
'ndc-units-measure' => {
|
39
|
+
coding: {
|
40
|
+
code: magnitude&.to_s,
|
41
|
+
display: unit
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_ordering_provider(**kwargs)
|
49
|
+
self[:OrderingProviders] ||= []
|
50
|
+
self[:OrderingProviders] << OrderingProvider.new(kwargs)
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_performer(**kwargs)
|
55
|
+
self[:Performers] ||= []
|
56
|
+
self[:Performers] << OrderingProvider.new(kwargs)
|
57
|
+
self
|
58
|
+
end
|
59
|
+
|
60
|
+
def to_h
|
61
|
+
result = super.to_h
|
62
|
+
|
63
|
+
%w[EndDateTime DateTimeOfService].each do |k|
|
64
|
+
result[k] = Redox::Models.format_datetime(result[k])
|
65
|
+
end
|
66
|
+
|
67
|
+
result
|
68
|
+
end
|
69
|
+
|
70
|
+
def as_json(args)
|
71
|
+
self.to_h
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Redox
|
2
|
+
module Models
|
3
|
+
class Visit < Model
|
4
|
+
DEFAULT_LOCATION = {
|
5
|
+
Department: nil,
|
6
|
+
Facility: nil
|
7
|
+
}
|
8
|
+
|
9
|
+
property :Insurances, from: :insurances, required: false, default: []
|
10
|
+
property :Location, from: :location, required: false, default: DEFAULT_LOCATION
|
11
|
+
property :VisitDateTime, from: :start, required: false
|
12
|
+
property :Duration, from: :duration, required: false
|
13
|
+
property :VisitNumber, from: :visit_number, required: false
|
14
|
+
property :AccountNumber, from: :account_number, required: false
|
15
|
+
|
16
|
+
alias_method :insurances, :Insurances
|
17
|
+
alias_method :start, :VisitDateTime
|
18
|
+
|
19
|
+
def department=(v)
|
20
|
+
self[:Location] ||= DEFAULT_LOCATION
|
21
|
+
self[:Location][:Department] = v
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def facility=(v)
|
26
|
+
self[:Location] ||= DEFAULT_LOCATION
|
27
|
+
self[:Location][:Facility] = v
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def insurances
|
32
|
+
self[:Insurances] = self[:Insurances].map {|ins| ins.is_a?(Redox::Models::Insurance) ? ins : Insurance.new(ins) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_h
|
36
|
+
result = super.to_h
|
37
|
+
|
38
|
+
%w[VisitDateTime].each do |k|
|
39
|
+
result[key][k] = Redox::Models.format_datetime(result[key][k])
|
40
|
+
end
|
41
|
+
|
42
|
+
result
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_json(args = {})
|
46
|
+
self.to_h.to_json
|
47
|
+
end
|
48
|
+
|
49
|
+
def as_json(args = {})
|
50
|
+
self.to_h.dig('Visit')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Redox
|
2
|
+
module Request
|
3
|
+
class Financial
|
4
|
+
TRANSACTION_META = Redox::Models::Meta.new(EventType: 'Transaction', DataModel: 'Financial')
|
5
|
+
|
6
|
+
def self.create(financial, meta: Redox::Models::Meta.new)
|
7
|
+
meta = TRANSACTION_META.merge(meta)
|
8
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(financial, meta))))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -6,18 +6,12 @@ module Redox
|
|
6
6
|
|
7
7
|
def self.create(patient: , meta: Redox::Models::Meta.new)
|
8
8
|
meta = CREATE_META.merge(meta)
|
9
|
-
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request
|
9
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(patient, meta))))
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.update(patient: , meta: Redox::Models::Meta.new)
|
13
13
|
meta = UPDATE_META.merge(meta)
|
14
|
-
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.build_body(params, meta)
|
18
|
-
meta = Redox::Models::Meta.new.merge(meta)
|
19
|
-
|
20
|
-
return meta.to_h.merge(params.to_h)
|
14
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(patient, meta))))
|
21
15
|
end
|
22
16
|
end
|
23
17
|
end
|
@@ -6,7 +6,7 @@ module Redox
|
|
6
6
|
|
7
7
|
def self.query(params, meta: Redox::Models::Meta.new)
|
8
8
|
meta = QUERY_META.merge(meta)
|
9
|
-
return Redox::Models::Model.from_response((RedoxClient.connection.request(endpoint: QUERY_ENDPOINT, body: Redox::Request
|
9
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(endpoint: QUERY_ENDPOINT, body: Redox::Request.build_body(params, meta))))
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Redox
|
2
|
+
module Request
|
3
|
+
class Provider
|
4
|
+
QUERY_META = Redox::Models::Meta.new(EventType: 'ProviderQuery', DataModel: 'Provider')
|
5
|
+
|
6
|
+
def self.query(provider, meta: Redox::Models::Meta.new)
|
7
|
+
meta = QUERY_META.merge(meta)
|
8
|
+
return Redox::Models::Model.from_response_inflected((RedoxClient.connection.request(body: Redox::Request.build_body(provider, meta))))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Redox
|
2
|
+
module Request
|
3
|
+
class Scheduling
|
4
|
+
CREATE_META = Redox::Models::Meta.new(EventType: 'New', DataModel: 'Scheduling')
|
5
|
+
CANCEL_META = Redox::Models::Meta.new(EventType: 'Cancel', DataModel: 'Scheduling')
|
6
|
+
RESCHEDULE_META = Redox::Models::Meta.new(EventType: 'Reschedule', DataModel: 'Scheduling')
|
7
|
+
MODIFICATION_META = Redox::Models::Meta.new(EventType: 'Modification', DataModel: 'Scheduling')
|
8
|
+
|
9
|
+
def self.create(model, meta: Redox::Models::Meta.new)
|
10
|
+
meta = CREATE_META.merge(meta)
|
11
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(model, meta))))
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.cancel(model, meta: Redox::Models::Meta.new)
|
15
|
+
meta = CANCEL_META.merge(meta)
|
16
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(model, meta))))
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.reschedule(model, meta: Redox::Models::Meta.new)
|
20
|
+
meta = RESCHEDULE_META.merge(meta)
|
21
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(model, meta))))
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.modification(model, meta: Redox::Models::Meta.new)
|
25
|
+
meta = MODIFICATION_META.merge(meta)
|
26
|
+
return Redox::Models::Model.from_response((RedoxClient.connection.request(body: Redox::Request.build_body(model, meta))))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/redox/version.rb
CHANGED
data/redox.gemspec
CHANGED
@@ -5,8 +5,8 @@ require 'redox/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'redox'
|
7
7
|
spec.version = Redox::VERSION
|
8
|
-
spec.authors = ['Alexander Clark', 'Mike Crockett']
|
9
|
-
spec.email = ['alexander.clark@weinfuse.com', 'mike.crockett@weinfuse.com']
|
8
|
+
spec.authors = ['Alexander Clark', 'Mike Crockett', 'Mike Carr']
|
9
|
+
spec.email = ['alexander.clark@weinfuse.com', 'mike.crockett@weinfuse.com', 'michael.carr@weinfuse.com']
|
10
10
|
|
11
11
|
spec.summary = 'Ruby wrapper for the Redox Engine API'
|
12
12
|
spec.homepage = 'https://github.com/WeInfuse/redox'
|
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
spec.licenses = ['MIT']
|
30
30
|
|
31
|
-
spec.add_dependency 'httparty', '~> 0.
|
31
|
+
spec.add_dependency 'httparty', '~> 0.18'
|
32
32
|
spec.add_dependency 'hashie', '~> 3.5'
|
33
33
|
spec.add_development_dependency 'bundler', '>=1', '<3'
|
34
34
|
spec.add_development_dependency 'byebug', '~> 11'
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Clark
|
8
8
|
- Mike Crockett
|
9
|
-
|
9
|
+
- Mike Carr
|
10
|
+
autorequire:
|
10
11
|
bindir: exe
|
11
12
|
cert_chain: []
|
12
|
-
date: 2020-
|
13
|
+
date: 2020-12-15 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: httparty
|
@@ -17,14 +18,14 @@ dependencies:
|
|
17
18
|
requirements:
|
18
19
|
- - "~>"
|
19
20
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0.
|
21
|
+
version: '0.18'
|
21
22
|
type: :runtime
|
22
23
|
prerelease: false
|
23
24
|
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
26
|
- - "~>"
|
26
27
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0.
|
28
|
+
version: '0.18'
|
28
29
|
- !ruby/object:Gem::Dependency
|
29
30
|
name: hashie
|
30
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,10 +130,11 @@ dependencies:
|
|
129
130
|
- - "~>"
|
130
131
|
- !ruby/object:Gem::Version
|
131
132
|
version: '0.9'
|
132
|
-
description:
|
133
|
+
description:
|
133
134
|
email:
|
134
135
|
- alexander.clark@weinfuse.com
|
135
136
|
- mike.crockett@weinfuse.com
|
137
|
+
- michael.carr@weinfuse.com
|
136
138
|
executables: []
|
137
139
|
extensions: []
|
138
140
|
extra_rdoc_files: []
|
@@ -145,17 +147,27 @@ files:
|
|
145
147
|
- lib/redox.rb
|
146
148
|
- lib/redox/authentication.rb
|
147
149
|
- lib/redox/connection.rb
|
150
|
+
- lib/redox/models/financial.rb
|
148
151
|
- lib/redox/models/meta.rb
|
149
152
|
- lib/redox/models/model.rb
|
153
|
+
- lib/redox/models/ordering_provider.rb
|
150
154
|
- lib/redox/models/patient.rb
|
151
155
|
- lib/redox/models/patient/demographics.rb
|
152
156
|
- lib/redox/models/patient/identifier.rb
|
153
157
|
- lib/redox/models/patient/insurance.rb
|
154
158
|
- lib/redox/models/patient/p_c_p.rb
|
155
159
|
- lib/redox/models/potential_matches.rb
|
160
|
+
- lib/redox/models/provider.rb
|
161
|
+
- lib/redox/models/scheduling.rb
|
162
|
+
- lib/redox/models/transaction.rb
|
163
|
+
- lib/redox/models/visit.rb
|
156
164
|
- lib/redox/redox_exception.rb
|
165
|
+
- lib/redox/request/financial.rb
|
157
166
|
- lib/redox/request/patient_admin.rb
|
158
167
|
- lib/redox/request/patient_search.rb
|
168
|
+
- lib/redox/request/provider.rb
|
169
|
+
- lib/redox/request/request.rb
|
170
|
+
- lib/redox/request/scheduling.rb
|
159
171
|
- lib/redox/version.rb
|
160
172
|
- redox.gemspec
|
161
173
|
homepage: https://github.com/WeInfuse/redox
|
@@ -163,7 +175,7 @@ licenses:
|
|
163
175
|
- MIT
|
164
176
|
metadata:
|
165
177
|
allowed_push_host: https://rubygems.org
|
166
|
-
post_install_message:
|
178
|
+
post_install_message:
|
167
179
|
rdoc_options: []
|
168
180
|
require_paths:
|
169
181
|
- lib
|
@@ -178,9 +190,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
190
|
- !ruby/object:Gem::Version
|
179
191
|
version: '0'
|
180
192
|
requirements: []
|
181
|
-
rubyforge_project:
|
193
|
+
rubyforge_project:
|
182
194
|
rubygems_version: 2.7.6
|
183
|
-
signing_key:
|
195
|
+
signing_key:
|
184
196
|
specification_version: 4
|
185
197
|
summary: Ruby wrapper for the Redox Engine API
|
186
198
|
test_files: []
|