fhir_client 4.0.6 → 5.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +0 -4
- data/fhir_client.gemspec +3 -3
- data/lib/fhir_client/client.rb +37 -26
- data/lib/fhir_client/ext/model.rb +4 -7
- data/lib/fhir_client/ext/reference.rb +2 -2
- data/lib/fhir_client/sections/crud.rb +1 -1
- data/lib/fhir_client/sections/operations.rb +9 -4
- data/lib/fhir_client/sections/transactions.rb +1 -0
- data/lib/fhir_client/version.rb +1 -1
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9842da03d68bf3f56e22b6c8c6e6645c88f0a25e876233f0ab45f95517362c43
|
4
|
+
data.tar.gz: f202c9a2252b630b13afc67adce9c314f42eec3b2da88bec05ccff227211e73b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e71f7c84fa1b9559fe085ef8d26317a29d3ab902c666694880d2d545deb8dbfeb645d961cb667a4a60408a50fc8754e6c8a3fabe06e2aa7e8954030992e8e26
|
7
|
+
data.tar.gz: c87f346a09f1ac9a2a5f84cd80489e014cbaa768679061831e87900a7608da3d954157b4c76bb1fe97519595f8b00090230da5021f8b31dc25c3b4af71023b66
|
data/Rakefile
CHANGED
data/fhir_client.gemspec
CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_dependency 'activesupport', '>= 3'
|
25
25
|
spec.add_dependency 'addressable', '>= 2.3'
|
26
|
-
spec.add_dependency 'fhir_models', '>= 4.
|
27
|
-
spec.add_dependency 'fhir_stu3_models', '>= 3.
|
28
|
-
spec.add_dependency 'fhir_dstu2_models', '>= 1.
|
26
|
+
spec.add_dependency 'fhir_models', '>= 4.2.1'
|
27
|
+
spec.add_dependency 'fhir_stu3_models', '>= 3.1.1'
|
28
|
+
spec.add_dependency 'fhir_dstu2_models', '>= 1.1.1'
|
29
29
|
spec.add_dependency 'nokogiri', '>= 1.10.4'
|
30
30
|
spec.add_dependency 'oauth2', '~> 1.1'
|
31
31
|
spec.add_dependency 'rack', '>= 1.5'
|
data/lib/fhir_client/client.rb
CHANGED
@@ -315,35 +315,46 @@ module FHIR
|
|
315
315
|
def parse_reply(klass, format, response)
|
316
316
|
FHIR.logger.debug "Parsing response with {klass: #{klass}, format: #{format}, code: #{response.code}}."
|
317
317
|
return nil unless [200, 201].include? response.code
|
318
|
-
res =
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
318
|
+
res =
|
319
|
+
begin
|
320
|
+
if(@fhir_version == :dstu2 || klass&.ancestors&.include?(FHIR::DSTU2::Model))
|
321
|
+
if(format.include?('xml'))
|
322
|
+
FHIR::DSTU2::Xml.from_xml(response.body)
|
323
|
+
else
|
324
|
+
FHIR::DSTU2::Json.from_json(response.body)
|
325
|
+
end
|
326
|
+
elsif(@fhir_version == :r4 || klass&.ancestors&.include?(FHIR::Model))
|
327
|
+
if(format.include?('xml'))
|
328
|
+
FHIR::Xml.from_xml(response.body)
|
329
|
+
else
|
330
|
+
FHIR::Json.from_json(response.body)
|
331
|
+
end
|
332
|
+
else
|
333
|
+
if(format.include?('xml'))
|
334
|
+
FHIR::STU3::Xml.from_xml(response.body)
|
335
|
+
else
|
336
|
+
FHIR::STU3::Json.from_json(response.body)
|
337
|
+
end
|
338
|
+
end
|
339
|
+
rescue => e
|
340
|
+
FHIR.logger.error "Failed to parse #{format} as resource #{klass}: #{e.message}"
|
341
|
+
nil
|
342
|
+
end
|
343
|
+
set_client_on_resource(res) unless res.nil?
|
344
344
|
res
|
345
345
|
end
|
346
346
|
|
347
|
+
def set_client_on_resource(resource)
|
348
|
+
return if resource.nil?
|
349
|
+
|
350
|
+
resource.client = self
|
351
|
+
resource.each_element do |element, _, _|
|
352
|
+
if element.is_a?(Reference) || element.is_a?(STU3::Reference) || element.is_a?(DSTU2::Reference) || element.respond_to?(:resourceType)
|
353
|
+
element.client = self
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
347
358
|
def strip_base(path)
|
348
359
|
path.gsub(@base_service_url, '')
|
349
360
|
end
|
@@ -2,17 +2,14 @@ module FHIR
|
|
2
2
|
module ModelExtras
|
3
3
|
|
4
4
|
def self.included base
|
5
|
-
base.
|
5
|
+
base.include InstanceMethods
|
6
6
|
base.extend ClassMethods
|
7
|
+
base.attr_writer :client
|
7
8
|
end
|
8
9
|
|
9
10
|
module InstanceMethods
|
10
11
|
def client
|
11
|
-
FHIR::Model.client
|
12
|
-
end
|
13
|
-
|
14
|
-
def client=(client)
|
15
|
-
FHIR::Model.client = client
|
12
|
+
@client || FHIR::Model.client
|
16
13
|
end
|
17
14
|
|
18
15
|
def vread(version_id)
|
@@ -146,4 +143,4 @@ module FHIR
|
|
146
143
|
include FHIR::ModelExtras
|
147
144
|
end
|
148
145
|
end
|
149
|
-
end
|
146
|
+
end
|
@@ -54,7 +54,7 @@ module FHIR
|
|
54
54
|
parts[:base_uri]
|
55
55
|
end
|
56
56
|
|
57
|
-
def read
|
57
|
+
def read(client = self.client)
|
58
58
|
return if !(relative? || absolute?)
|
59
59
|
if relative? || reference == client.full_resource_url(resource: resource_class, id: reference_id)
|
60
60
|
read_client = client
|
@@ -64,7 +64,7 @@ module FHIR
|
|
64
64
|
resource_class.read(reference_id, read_client)
|
65
65
|
end
|
66
66
|
|
67
|
-
def vread
|
67
|
+
def vread(client = self.client)
|
68
68
|
return if !(relative? || absolute?) || version_id.blank?
|
69
69
|
if relative? || reference == client.full_resource_url(resource: resource_class, id: reference_id)
|
70
70
|
read_client = client
|
@@ -226,7 +226,7 @@ module FHIR
|
|
226
226
|
resource.id = FHIR::ResourceAddress.pull_out_id(resource.class.name.demodulize, reply.self_link)
|
227
227
|
reply.resource = resource # just send back the submitted resource
|
228
228
|
end
|
229
|
-
reply.resource
|
229
|
+
set_client_on_resource(reply.resource)
|
230
230
|
reply.resource_class = resource.class
|
231
231
|
reply
|
232
232
|
end
|
@@ -132,8 +132,11 @@ module FHIR
|
|
132
132
|
add_resource_parameter(params, 'resource', resource)
|
133
133
|
add_parameter(params, 'onlyCertainMatches', 'Boolean', options[:onlyCertainMatches]) unless options[:onlyCertainMatches].nil?
|
134
134
|
add_parameter(params, 'count', 'Integer', options[:matchCount]) if options[:matchCount].is_a?(Integer)
|
135
|
-
post
|
136
|
-
|
135
|
+
post(
|
136
|
+
resource_url(options),
|
137
|
+
params,
|
138
|
+
fhir_headers({content_type: "#{format || @default_format}", accept: "#{format || @default_format}"})
|
139
|
+
).tap { |reply| set_client_on_resource(reply.resource) }
|
137
140
|
end
|
138
141
|
|
139
142
|
#
|
@@ -154,7 +157,8 @@ module FHIR
|
|
154
157
|
params = versioned_resource_class('Parameters').new
|
155
158
|
add_resource_parameter(params, 'resource', resource)
|
156
159
|
add_parameter(params, 'profile', 'Uri', options[:profile_uri]) unless options[:profile_uri].nil?
|
157
|
-
post
|
160
|
+
post(resource_url(options), params, fhir_headers(headers))
|
161
|
+
.tap { |reply| set_client_on_resource(reply.resource) }
|
158
162
|
end
|
159
163
|
|
160
164
|
def validate_existing(resource, id, options = {}, format = @default_format)
|
@@ -165,7 +169,8 @@ module FHIR
|
|
165
169
|
params = versioned_resource_class('Parameters').new
|
166
170
|
add_resource_parameter(params, 'resource', resource)
|
167
171
|
add_parameter(params, 'profile', 'Uri', options[:profile_uri]) unless options[:profile_uri].nil?
|
168
|
-
post
|
172
|
+
post(resource_url(options), params, fhir_headers(headers))
|
173
|
+
.tap { |reply| set_client_on_resource(reply.resource) }
|
169
174
|
end
|
170
175
|
|
171
176
|
private
|
data/lib/fhir_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fhir_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Quina
|
8
8
|
- Jason Walonoski
|
9
9
|
- Robert Scanlon
|
10
10
|
- Reece Adamson
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-
|
14
|
+
date: 2021-12-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -47,42 +47,42 @@ dependencies:
|
|
47
47
|
requirements:
|
48
48
|
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 4.
|
50
|
+
version: 4.2.1
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 4.
|
57
|
+
version: 4.2.1
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: fhir_stu3_models
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 3.
|
64
|
+
version: 3.1.1
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 3.
|
71
|
+
version: 3.1.1
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: fhir_dstu2_models
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
76
|
- - ">="
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 1.
|
78
|
+
version: 1.1.1
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - ">="
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 1.
|
85
|
+
version: 1.1.1
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: nokogiri
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
@@ -287,7 +287,7 @@ homepage: https://github.com/fhir-crucible/fhir_client
|
|
287
287
|
licenses:
|
288
288
|
- Apache-2.0
|
289
289
|
metadata: {}
|
290
|
-
post_install_message:
|
290
|
+
post_install_message:
|
291
291
|
rdoc_options: []
|
292
292
|
require_paths:
|
293
293
|
- lib
|
@@ -302,8 +302,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
302
|
- !ruby/object:Gem::Version
|
303
303
|
version: '0'
|
304
304
|
requirements: []
|
305
|
-
|
306
|
-
|
305
|
+
rubyforge_project:
|
306
|
+
rubygems_version: 2.7.6.2
|
307
|
+
signing_key:
|
307
308
|
specification_version: 4
|
308
309
|
summary: A Gem for handling FHIR client requests in ruby
|
309
310
|
test_files: []
|