fhir_client 4.0.5 → 5.0.2

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: 7031a100f52d6a39207aeb7d33cd6f891ffd20f9fc920455bffcf7c18939a573
4
- data.tar.gz: eea574c3405cf4796b81af0c828169e59e53371fa26862a35756fb5c430d2e91
3
+ metadata.gz: 7905c5354fc56e64e14a11e14a78bdfe7b51b920f1d44474e6bbcff476f92ce6
4
+ data.tar.gz: 1daf7017f7c259c5d766203471e13b85cb4b3f1230c7963b1ff58a399d960175
5
5
  SHA512:
6
- metadata.gz: 1b456acf0953615754397c38f1b5bd4c05d8150f41a73f9269dc005f4829c5001c2eae92d5f8e3600e56d9c330178d67231bca4ee6d39f7a235081fa7c655afa
7
- data.tar.gz: 637593dc2f61702e28a2853b1cb073dc7af8ebe12bfca4f1f3b33fac88e0766370a0a1218106ac6ded1393398bd2ba7fedd2d05192a8c4dcd25e8e1e2830d07d
6
+ metadata.gz: 92bb53557dda1a4436ac0eb2dcd99265267abc483bd299c25cdfe9e676b778e27be89502e92b7c86f74a49c51842aa825667a663b6363e1cdb2c3d61206ae72a
7
+ data.tar.gz: 0eda4aaf91a73af6dca172ec1b43b39434bc6422faeb56a3bc8b95023db951004a024e6ae6467be22a5387449b29acb4ab384c8c3d92ee0512fca3e6116a45a8
@@ -0,0 +1,26 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.6', '2.7']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
23
+ - name: Run tests
24
+ run: bundle exec rake
25
+ - name: Rubocop
26
+ run: bundle exec rubocop
data/Rakefile CHANGED
@@ -19,8 +19,4 @@ task :rubocop do
19
19
  RuboCop::RakeTask.new
20
20
  end
21
21
 
22
- task test: [:rubocop] do
23
- system('open coverage/index.html')
24
- end
25
-
26
22
  task default: [:test]
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.0.2'
27
- spec.add_dependency 'fhir_stu3_models', '>= 3.0.1'
28
- spec.add_dependency 'fhir_dstu2_models', '>= 1.0.10'
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'
@@ -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 = nil
319
- begin
320
- res = 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
- res.client = self unless res.nil?
340
- rescue => e
341
- FHIR.logger.error "Failed to parse #{format} as resource #{klass}: #{e.message}"
342
- res = nil
343
- end
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.send :include, InstanceMethods
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
@@ -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.client = self
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 resource_url(options), params, fhir_headers({content_type: "#{format || @default_format}",
136
- accept: "#{format || @default_format}"})
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 resource_url(options), params, fhir_headers(headers)
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 resource_url(options), params, fhir_headers(headers)
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
@@ -12,7 +12,7 @@ module FHIR
12
12
  options[:resource] = klass
13
13
  options[:format] = format
14
14
 
15
- reply = if options.dig(:search, :flag).nil? && options.dig(:search, :body).nil?
15
+ reply = if options.dig(:search, :flag) != true && options.dig(:search, :body).nil?
16
16
  get resource_url(options), fhir_headers
17
17
  else
18
18
  options[:search][:flag] = true
@@ -74,6 +74,7 @@ module FHIR
74
74
  rescue
75
75
  reply.resource = nil
76
76
  end
77
+ set_client_on_resource(reply.resource)
77
78
  reply.resource_class = reply.resource.class
78
79
  reply
79
80
  end
@@ -1,5 +1,5 @@
1
1
  module FHIR
2
2
  class Client
3
- VERSION = '4.0.5'.freeze
3
+ VERSION = '5.0.2'.freeze
4
4
  end
5
5
  end
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: 4.0.5
4
+ version: 5.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andre Quina
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-03-31 00:00:00.000000000 Z
14
+ date: 2021-09-23 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.0.2
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.0.2
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.0.1
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.0.1
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.0.10
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.0.10
85
+ version: 1.1.1
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: nokogiri
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -248,11 +248,11 @@ files:
248
248
  - ".csslintrc"
249
249
  - ".eslintignore"
250
250
  - ".eslintrc"
251
+ - ".github/workflows/ruby.yml"
251
252
  - ".gitignore"
252
253
  - ".rubocop.yml"
253
254
  - ".rubocop_todo.yml"
254
255
  - ".simplecov"
255
- - ".travis.yml"
256
256
  - Gemfile
257
257
  - LICENSE
258
258
  - README.md
@@ -302,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
302
302
  - !ruby/object:Gem::Version
303
303
  version: '0'
304
304
  requirements: []
305
- rubygems_version: 3.1.4
305
+ rubygems_version: 3.1.6
306
306
  signing_key:
307
307
  specification_version: 4
308
308
  summary: A Gem for handling FHIR client requests in ruby
data/.travis.yml DELETED
@@ -1,20 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.6
4
- - 2.7
5
- before_install:
6
- - gem update --system
7
- - gem install bundler
8
- before_script:
9
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
10
- - chmod +x ./cc-test-reporter
11
- - ./cc-test-reporter before-build
12
- script:
13
- - bundle exec rake test
14
- after_script:
15
- - ./cc-test-reporter after-build -t simplecov --exit-code $TRAVIS_TEST_RESULT
16
- notifications:
17
- email:
18
- recipients:
19
- - fhir-testing-list@lists.mitre.org
20
- on_failure: change