fhir_client 3.0.2 → 3.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 +4 -4
- data/.rubocop.yml +11 -1147
- data/Gemfile +1 -1
- data/README.md +31 -2
- data/fhir_client.gemspec +2 -1
- data/lib/fhir_client.rb +1 -0
- data/lib/fhir_client/client.rb +160 -38
- data/lib/fhir_client/ext/bundle.rb +25 -5
- data/lib/fhir_client/ext/model.rb +104 -79
- data/lib/fhir_client/ext/reference.rb +24 -5
- data/lib/fhir_client/fhir_api_validation.json +1 -1
- data/lib/fhir_client/model/client_reply.rb +20 -4
- data/lib/fhir_client/resource_address.rb +2 -0
- data/lib/fhir_client/sections/crud.rb +17 -11
- data/lib/fhir_client/sections/history.rb +2 -1
- data/lib/fhir_client/sections/operations.rb +22 -17
- data/lib/fhir_client/sections/transactions.rb +7 -7
- data/lib/fhir_client/tasks/tasks.rake +1 -1
- data/lib/fhir_client/version.rb +1 -1
- metadata +18 -4
@@ -11,14 +11,14 @@ module FHIR
|
|
11
11
|
# http://hl7.org/implement/standards/FHIR-Develop/patient-operations.html#everything
|
12
12
|
# Fetches resources for a given patient record, scoped by a start and end time, and returns a Bundle of results
|
13
13
|
def fetch_patient_record(id = nil, startTime = nil, endTime = nil, method = 'GET', format = @default_format)
|
14
|
-
fetch_record(id, [startTime, endTime], method,
|
14
|
+
fetch_record(id, [startTime, endTime], method, versioned_resource_class('Patient'), format)
|
15
15
|
end
|
16
16
|
|
17
17
|
def fetch_encounter_record(id = nil, method = 'GET', format = @default_format)
|
18
|
-
fetch_record(id, [nil, nil], method,
|
18
|
+
fetch_record(id, [nil, nil], method, versioned_resource_class('Encounter'), format)
|
19
19
|
end
|
20
20
|
|
21
|
-
def fetch_record(id = nil, time = [nil, nil], method = 'GET', klass =
|
21
|
+
def fetch_record(id = nil, time = [nil, nil], method = 'GET', klass = versioned_resource_class('Patient'), format = @default_format)
|
22
22
|
options = { resource: klass, format: format, operation: { name: :fetch_patient_record, method: method } }
|
23
23
|
options.deep_merge!(id: id) unless id.nil?
|
24
24
|
options[:operation][:parameters] = {} if options[:operation][:parameters].nil?
|
@@ -30,9 +30,9 @@ module FHIR
|
|
30
30
|
else
|
31
31
|
# create Parameters body
|
32
32
|
if options[:operation] && options[:operation][:parameters]
|
33
|
-
p =
|
33
|
+
p = versioned_resource_class('Parameters').new
|
34
34
|
options[:operation][:parameters].each do |key, value|
|
35
|
-
parameter =
|
35
|
+
parameter = versioned_resource_class('Parameters::Parameter').new.from_hash(name: key.to_s)
|
36
36
|
parameter.method("value#{value[:type]}=").call(value[:value])
|
37
37
|
p.parameter << parameter
|
38
38
|
end
|
@@ -40,7 +40,7 @@ module FHIR
|
|
40
40
|
reply = post resource_url(options), p, fhir_headers(options)
|
41
41
|
end
|
42
42
|
|
43
|
-
reply.resource = parse_reply(
|
43
|
+
reply.resource = parse_reply(versioned_resource_class('Bundle'), format, reply)
|
44
44
|
reply.resource_class = options[:resource]
|
45
45
|
reply
|
46
46
|
end
|
@@ -53,7 +53,7 @@ module FHIR
|
|
53
53
|
# http://hl7.org/implement/standards/FHIR-Develop/valueset-operations.html#expand
|
54
54
|
# The definition of a value set is used to create a simple collection of codes suitable for use for data entry or validation.
|
55
55
|
def value_set_expansion(params = {}, format = @default_format)
|
56
|
-
options = { resource:
|
56
|
+
options = { resource: versioned_resource_class('ValueSet'), operation: { name: :value_set_expansion } }
|
57
57
|
options.deep_merge!(params)
|
58
58
|
terminology_operation(options, format)
|
59
59
|
end
|
@@ -62,21 +62,26 @@ module FHIR
|
|
62
62
|
# http://hl7.org/implement/standards/FHIR-Develop/valueset-operations.html#validate
|
63
63
|
# Validate that a coded value is in the set of codes allowed by a value set.
|
64
64
|
def value_set_code_validation(params = {}, format = @default_format)
|
65
|
-
options = { resource:
|
65
|
+
options = { resource: versioned_resource_class('ValueSet'), operation: { name: :value_set_based_validation } }
|
66
66
|
options.deep_merge!(params)
|
67
67
|
terminology_operation(options, format)
|
68
68
|
end
|
69
69
|
|
70
70
|
# Concept Look Up [base]/CodeSystem/$lookup
|
71
71
|
def code_system_lookup(params = {}, format = @default_format)
|
72
|
-
|
72
|
+
klass = if @fhir_version == :stu3
|
73
|
+
FHIR::CodeSystem
|
74
|
+
else
|
75
|
+
FHIR::DSTU2::ValueSet
|
76
|
+
end
|
77
|
+
options = { resource: klass, operation: { name: :code_system_lookup } }
|
73
78
|
options.deep_merge!(params)
|
74
79
|
terminology_operation(options, format)
|
75
80
|
end
|
76
81
|
|
77
82
|
# ConceptMap Translation
|
78
83
|
def concept_map_translate(params = {}, format = @default_format)
|
79
|
-
options = { resource:
|
84
|
+
options = { resource: versioned_resource_class('ConceptMap'), operation: { name: :concept_map_translate } }
|
80
85
|
options.deep_merge!(params)
|
81
86
|
terminology_operation(options, format)
|
82
87
|
end
|
@@ -98,9 +103,9 @@ module FHIR
|
|
98
103
|
else
|
99
104
|
# create Parameters body
|
100
105
|
if options[:operation] && options[:operation][:parameters]
|
101
|
-
p =
|
106
|
+
p = versioned_resource_class('Parameters').new
|
102
107
|
options[:operation][:parameters].each do |key, value|
|
103
|
-
parameter =
|
108
|
+
parameter = versioned_resource_class('Parameters::Parameter').new.from_hash(name: key.to_s)
|
104
109
|
parameter.method("value#{value[:type]}=").call(value[:value])
|
105
110
|
p.parameter << parameter
|
106
111
|
end
|
@@ -115,7 +120,7 @@ module FHIR
|
|
115
120
|
|
116
121
|
def match(resource, options = {}, format = @default_format)
|
117
122
|
options.merge!(resource: resource.class, match: true, format: format)
|
118
|
-
params =
|
123
|
+
params = versioned_resource_class('Parameters').new
|
119
124
|
add_resource_parameter(params, 'resource', resource)
|
120
125
|
add_parameter(params, 'onlyCertainMatches', 'Boolean', options[:onlyCertainMatches]) unless options[:onlyCertainMatches].nil?
|
121
126
|
add_parameter(params, 'count', 'Integer', options[:matchCount]) if options[:matchCount].is_a?(Integer)
|
@@ -134,7 +139,7 @@ module FHIR
|
|
134
139
|
|
135
140
|
def validate(resource, options = {}, format = @default_format)
|
136
141
|
options.merge!(resource: resource.class, validate: true, format: format)
|
137
|
-
params =
|
142
|
+
params = versioned_resource_class('Parameters').new
|
138
143
|
add_resource_parameter(params, 'resource', resource)
|
139
144
|
add_parameter(params, 'profile', 'Uri', options[:profile_uri]) unless options[:profile_uri].nil?
|
140
145
|
post resource_url(options), params, fhir_headers(options)
|
@@ -142,7 +147,7 @@ module FHIR
|
|
142
147
|
|
143
148
|
def validate_existing(resource, id, options = {}, format = @default_format)
|
144
149
|
options.merge!(resource: resource.class, id: id, validate: true, format: format)
|
145
|
-
params =
|
150
|
+
params = versioned_resource_class('Parameters').new
|
146
151
|
add_resource_parameter(params, 'resource', resource)
|
147
152
|
add_parameter(params, 'profile', 'Uri', options[:profile_uri]) unless options[:profile_uri].nil?
|
148
153
|
post resource_url(options), params, fhir_headers(options)
|
@@ -152,14 +157,14 @@ module FHIR
|
|
152
157
|
|
153
158
|
def add_parameter(params, name, type, value)
|
154
159
|
params.parameter ||= []
|
155
|
-
parameter =
|
160
|
+
parameter = versioned_resource_class('Parameters::Parameter').new.from_hash(name: name)
|
156
161
|
parameter.method("value#{type}=").call(value)
|
157
162
|
params.parameter << parameter
|
158
163
|
end
|
159
164
|
|
160
165
|
def add_resource_parameter(params, name, resource)
|
161
166
|
params.parameter ||= []
|
162
|
-
parameter =
|
167
|
+
parameter = versioned_resource_class('Parameters::Parameter').new.from_hash(name: name)
|
163
168
|
parameter.resource = resource
|
164
169
|
params.parameter << parameter
|
165
170
|
end
|
@@ -4,14 +4,14 @@ module FHIR
|
|
4
4
|
attr_accessor :transaction_bundle
|
5
5
|
|
6
6
|
def begin_transaction
|
7
|
-
@transaction_bundle =
|
7
|
+
@transaction_bundle = versioned_resource_class('Bundle').new
|
8
8
|
@transaction_bundle.type = 'transaction'
|
9
9
|
@transaction_bundle.entry ||= []
|
10
10
|
@transaction_bundle
|
11
11
|
end
|
12
12
|
|
13
13
|
def begin_batch
|
14
|
-
@transaction_bundle =
|
14
|
+
@transaction_bundle = versioned_resource_class('Bundle').new
|
15
15
|
@transaction_bundle.type = 'batch'
|
16
16
|
@transaction_bundle.entry ||= []
|
17
17
|
@transaction_bundle
|
@@ -26,8 +26,8 @@ module FHIR
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def add_batch_request(method, url, resource = nil, if_none_exist = nil)
|
29
|
-
request =
|
30
|
-
request.local_method = if
|
29
|
+
request = versioned_resource_class('Bundle::Entry::Request').new
|
30
|
+
request.local_method = if versioned_resource_class('Bundle::Entry::Request::METADATA')['method']['valid_codes'].values.first.include?(method.upcase)
|
31
31
|
method.upcase
|
32
32
|
else
|
33
33
|
'POST'
|
@@ -43,7 +43,7 @@ module FHIR
|
|
43
43
|
request.url = url
|
44
44
|
end
|
45
45
|
|
46
|
-
entry =
|
46
|
+
entry = versioned_resource_class('Bundle::Entry').new
|
47
47
|
entry.resource = resource
|
48
48
|
entry.request = request
|
49
49
|
|
@@ -65,9 +65,9 @@ module FHIR
|
|
65
65
|
reply = post resource_url(options), @transaction_bundle, fhir_headers(options)
|
66
66
|
begin
|
67
67
|
reply.resource = if format.downcase.include?('xml')
|
68
|
-
|
68
|
+
versioned_resource_class('Xml').from_xml(reply.body)
|
69
69
|
else
|
70
|
-
|
70
|
+
versioned_resource_class('Json').from_json(reply.body)
|
71
71
|
end
|
72
72
|
rescue
|
73
73
|
reply.resource = nil
|
data/lib/fhir_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fhir_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Quina
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-03-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -46,14 +46,28 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 3.0.
|
49
|
+
version: 3.0.2
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 3.0.
|
56
|
+
version: 3.0.2
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: fhir_dstu2_models
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.0.3
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.0.3
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: nokogiri
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|