fhir_client 4.0.1 → 4.0.6

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: de2db655e9aa4f23b90a44efa2d9a146e5727e1fedef627360007d8028afd1fb
4
- data.tar.gz: 6f82d636f18c43c3dbee6124614d41d03a94721ba2879c2bb1bc10b57571e989
3
+ metadata.gz: 7a320805ef8a57a99df11a56953314c3fd6243d0e05becea117695bd350965b3
4
+ data.tar.gz: 8f313d29a48f593964f28b1029fb7abb02f8de7131237815be1fe248ab326147
5
5
  SHA512:
6
- metadata.gz: 9f0c5e8cc73b5106950b998d008e4086f9d8338f3acf0a026901fb6d78f8da7b4fef85f3b6fa8d9f13b15072151a82f8f7c5bcbb6764abced0c89138c790d627
7
- data.tar.gz: db57bea6921f6a7ba8b7386d5197b1eeff39685b6368df51f8458574da0337532df466a5ad99a16a8d26d04ef8663173bcdfb57c6d1d85584725bed645669569
6
+ metadata.gz: 756910586865db0f779cbafde0d65d56ba5fd4549de71dddd15319e87363518cae11601912dd346d65474eec1ef6a0fc8caf7514ff72ef4c987c003014069f4c
7
+ data.tar.gz: 96548027100932535419c6d8fd403e75997669cb3b83c644b66b195053f53e4af78d0ca7ef4bd15c06fb37e317e67b0aaa008a08426f38324391e7f5f14f812c
@@ -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/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :test do
6
- gem 'codeclimate-test-reporter', require: nil
7
6
  gem 'rubocop', '~> 0.52.1', require: false
8
7
  gem 'awesome_print', require: 'ap'
9
8
  end
data/README.md CHANGED
@@ -151,9 +151,14 @@ client.destroy(FHIR::Patient, patient_id)
151
151
 
152
152
  ### Searching
153
153
  ```ruby
154
+ # via GET
154
155
  reply = client.search(FHIR::Patient, search: {parameters: {name: 'P'}})
156
+
157
+ # via POST
158
+ reply = client.search(FHIR::Patient, search: {body: {name: 'P'}})
159
+
155
160
  bundle = reply.resource
156
- patient = bundle.entry.first.resource
161
+ patient = bundle&.entry&.first&.resource
157
162
  ```
158
163
 
159
164
  ### Fetching a Bundle
@@ -215,7 +220,7 @@ end
215
220
 
216
221
  # License
217
222
 
218
- Copyright 2014-2019 The MITRE Corporation
223
+ Copyright 2014-2022 The MITRE Corporation
219
224
 
220
225
  Licensed under the Apache License, Version 2.0 (the "License");
221
226
  you may not use this file except in compliance with the License.
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ task :rubocop do
19
19
  RuboCop::RakeTask.new
20
20
  end
21
21
 
22
- task test: [:rubocop] do
22
+ task :test do
23
23
  system('open coverage/index.html')
24
24
  end
25
25
 
data/fhir_client.gemspec CHANGED
@@ -6,8 +6,9 @@ require 'fhir_client/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'fhir_client'
8
8
  spec.version = FHIR::Client::VERSION
9
- spec.authors = ['Andre Quina', 'Jason Walonoski', 'Janoo Fernandes']
9
+ spec.authors = ['Andre Quina', 'Jason Walonoski', 'Robert Scanlon', 'Reece Adamson']
10
10
  spec.email = ['jwalonoski@mitre.org']
11
+ spec.licenses = ['Apache-2.0']
11
12
 
12
13
  spec.summary = %q{A Gem for handling FHIR client requests in ruby}
13
14
  spec.description = %q{A Gem for handling FHIR client requests in ruby}
@@ -22,17 +23,17 @@ Gem::Specification.new do |spec|
22
23
 
23
24
  spec.add_dependency 'activesupport', '>= 3'
24
25
  spec.add_dependency 'addressable', '>= 2.3'
25
- spec.add_dependency 'fhir_models', '>= 4.0.0'
26
- spec.add_dependency 'fhir_stu3_models', '>= 3.0.0'
27
- spec.add_dependency 'fhir_dstu2_models', '>= 1.0.9'
28
- spec.add_dependency 'nokogiri', '>= 1.8.2'
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'
29
+ spec.add_dependency 'nokogiri', '>= 1.10.4'
29
30
  spec.add_dependency 'oauth2', '~> 1.1'
30
31
  spec.add_dependency 'rack', '>= 1.5'
31
32
  spec.add_dependency 'rest-client', '~> 2.0'
32
33
  spec.add_dependency 'tilt', '>= 1.1'
33
34
 
34
35
  spec.add_development_dependency 'bundler', '~> 2.0'
35
- spec.add_development_dependency 'rake', '~> 10.0'
36
+ spec.add_development_dependency 'rake', '>= 12.3.3'
36
37
  spec.add_development_dependency 'pry'
37
38
  spec.add_development_dependency 'webmock'
38
39
  spec.add_development_dependency 'test-unit'
data/lib/fhir_client.rb CHANGED
@@ -3,6 +3,11 @@ require 'fhir_dstu2_models'
3
3
  require 'fhir_stu3_models'
4
4
  require 'active_support/all'
5
5
 
6
+ # Default to INFO level logging for all FHIR namespaced logging. Since there is
7
+ # no single gem that 'owns' the FHIR namespace, we use the client as the spot
8
+ # to set the default. Otherwise the default is set to DEBUG, which is too high.
9
+ FHIR.logger.level = Logger::INFO
10
+
6
11
  root = File.expand_path '.', File.dirname(File.absolute_path(__FILE__))
7
12
  Dir.glob(File.join(root, 'fhir_client', 'sections', '**', '*.rb')).each do |file|
8
13
  require file
@@ -337,7 +337,6 @@ module FHIR
337
337
  end
338
338
  end
339
339
  res.client = self unless res.nil?
340
- FHIR.logger.warn "Expected #{klass} but got #{res.class}" if res.class != klass
341
340
  rescue => e
342
341
  FHIR.logger.error "Failed to parse #{format} as resource #{klass}: #{e.message}"
343
342
  res = nil
@@ -375,6 +374,7 @@ module FHIR
375
374
  end
376
375
 
377
376
  # Extract the request payload in the specified format, defaults to XML
377
+ # Note that the payload is usually a resource, but could be a form post for searches depending on content type
378
378
  def request_payload(resource, headers)
379
379
  if headers
380
380
  format_specified = headers['Content-Type']
@@ -384,6 +384,10 @@ module FHIR
384
384
  resource.to_xml
385
385
  elsif format_specified.downcase.include?('json')
386
386
  resource.to_json
387
+ elsif format_specified.downcase == 'application/x-www-form-urlencoded'
388
+ # Special case where this is a search body and not a resource.
389
+ # Leave as hash because underlying libraries automatically URL encode it.
390
+ resource
387
391
  else
388
392
  resource.to_xml
389
393
  end
@@ -433,7 +437,7 @@ module FHIR
433
437
  begin
434
438
  response = @client.get(url, headers: headers)
435
439
  rescue => e
436
- unless e.response
440
+ if !e.respond_to?(:response) || e.response.nil?
437
441
  # Re-raise the client error if there's no response. Otherwise, logging
438
442
  # and other things break below!
439
443
  FHIR.logger.error "GET - Request: #{url} failed! No response from server: #{e}"
@@ -480,7 +484,7 @@ module FHIR
480
484
  @reply = FHIR::ClientReply.new(req, res, self)
481
485
  return @reply
482
486
  rescue => e
483
- unless e.response
487
+ if !e.respond_to?(:response) || e.response.nil?
484
488
  # Re-raise the client error if there's no response. Otherwise, logging
485
489
  # and other things break below!
486
490
  FHIR.logger.error "GET - Request: #{url} failed! No response from server: #{e}"
@@ -515,7 +519,7 @@ module FHIR
515
519
  begin
516
520
  response = @client.post(url, headers: headers, body: payload)
517
521
  rescue => e
518
- unless e.response
522
+ if !e.respond_to?(:response) || e.response.nil?
519
523
  # Re-raise the client error if there's no response. Otherwise, logging
520
524
  # and other things break below!
521
525
  FHIR.logger.error "POST - Request: #{url} failed! No response from server: #{e}"
@@ -562,7 +566,7 @@ module FHIR
562
566
  begin
563
567
  response = @client.put(url, headers: headers, body: payload)
564
568
  rescue => e
565
- unless e.response
569
+ if !e.respond_to?(:response) || e.response.nil?
566
570
  # Re-raise the client error if there's no response. Otherwise, logging
567
571
  # and other things break below!
568
572
  FHIR.logger.error "PUT - Request: #{url} failed! No response from server: #{e}"
@@ -609,7 +613,7 @@ module FHIR
609
613
  begin
610
614
  response = @client.patch(url, headers: headers, body: payload)
611
615
  rescue => e
612
- unless e.response
616
+ if !e.respond_to?(:response) || e.response.nil?
613
617
  # Re-raise the client error if there's no response. Otherwise, logging
614
618
  # and other things break below!
615
619
  FHIR.logger.error "PATCH - Request: #{url} failed! No response from server: #{e}"
@@ -645,7 +649,7 @@ module FHIR
645
649
  @reply = FHIR::ClientReply.new(request.args, res, self)
646
650
  end
647
651
  rescue => e
648
- unless e.response
652
+ if !e.respond_to?(:response) || e.response.nil?
649
653
  # Re-raise the client error if there's no response. Otherwise, logging
650
654
  # and other things break below!
651
655
  FHIR.logger.error "PATCH - Request: #{url} failed! No response from server: #{e}"
@@ -677,7 +681,7 @@ module FHIR
677
681
  begin
678
682
  response = @client.delete(url, headers: headers)
679
683
  rescue => e
680
- unless e.response
684
+ if !e.respond_to?(:response) || e.response.nil?
681
685
  # Re-raise the client error if there's no response. Otherwise, logging
682
686
  # and other things break below!
683
687
  FHIR.logger.error "DELETE - Request: #{url} failed! No response from server: #{e}"
@@ -12,40 +12,28 @@ module FHIR
12
12
  options[:resource] = klass
13
13
  options[:format] = format
14
14
 
15
- reply = if options[:search] && options[:search][:flag]
16
- post resource_url(options), nil, fhir_headers({content_type: 'application/x-www-form-urlencoded'})
17
- else
15
+ reply = if options.dig(:search, :flag) != true && options.dig(:search, :body).nil?
18
16
  get resource_url(options), fhir_headers
17
+ else
18
+ options[:search][:flag] = true
19
+ post resource_url(options), options.dig(:search, :body), fhir_headers({content_type: 'application/x-www-form-urlencoded'})
19
20
  end
20
- # reply = get resource_url(options), fhir_headers(options)
21
+
21
22
  reply.resource = parse_reply(klass, format, reply)
22
23
  reply.resource_class = klass
23
24
  reply
24
25
  end
25
26
 
27
+ # It does not appear that this is part of the specification (any more?)
28
+ # Investigate removing in next major version.
26
29
  def search_existing(klass, id, options = {}, format = @default_format)
27
- options.merge!(resource: klass, id: id, format: format)
28
- # if options[:search][:flag]
29
- reply = if options[:search] && options[:search][:flag]
30
- post resource_url(options), nil, fhir_headers({content_type: 'application/x-www-form-urlencoded'})
31
- else
32
- get resource_url(options), fhir_headers
33
- end
34
- reply.resource = parse_reply(klass, format, reply)
35
- reply.resource_class = klass
36
- reply
30
+ options[:id] = id
31
+ search(klass, options, format)
37
32
  end
38
33
 
39
34
  def search_all(options = {}, format = @default_format)
40
35
  options[:format] = format
41
- reply = if options[:search] && options[:search][:flag]
42
- post resource_url(options), nil, fhir_headers({content_type: 'application/x-www-form-urlencoded'})
43
- else
44
- get resource_url(options), fhir_headers
45
- end
46
- reply.resource = parse_reply(nil, format, reply)
47
- reply.resource_class = nil
48
- reply
36
+ search(nil, options, format)
49
37
  end
50
38
  end
51
39
  end
@@ -1,5 +1,5 @@
1
1
  module FHIR
2
2
  class Client
3
- VERSION = '4.0.1'
3
+ VERSION = '4.0.6'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fhir_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andre Quina
8
8
  - Jason Walonoski
9
- - Janoo Fernandes
9
+ - Robert Scanlon
10
+ - Reece Adamson
10
11
  autorequire:
11
12
  bindir: exe
12
13
  cert_chain: []
13
- date: 2019-08-16 00:00:00.000000000 Z
14
+ date: 2021-04-30 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: activesupport
@@ -46,56 +47,56 @@ dependencies:
46
47
  requirements:
47
48
  - - ">="
48
49
  - !ruby/object:Gem::Version
49
- version: 4.0.0
50
+ version: 4.0.2
50
51
  type: :runtime
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
53
54
  requirements:
54
55
  - - ">="
55
56
  - !ruby/object:Gem::Version
56
- version: 4.0.0
57
+ version: 4.0.2
57
58
  - !ruby/object:Gem::Dependency
58
59
  name: fhir_stu3_models
59
60
  requirement: !ruby/object:Gem::Requirement
60
61
  requirements:
61
62
  - - ">="
62
63
  - !ruby/object:Gem::Version
63
- version: 3.0.0
64
+ version: 3.0.1
64
65
  type: :runtime
65
66
  prerelease: false
66
67
  version_requirements: !ruby/object:Gem::Requirement
67
68
  requirements:
68
69
  - - ">="
69
70
  - !ruby/object:Gem::Version
70
- version: 3.0.0
71
+ version: 3.0.1
71
72
  - !ruby/object:Gem::Dependency
72
73
  name: fhir_dstu2_models
73
74
  requirement: !ruby/object:Gem::Requirement
74
75
  requirements:
75
76
  - - ">="
76
77
  - !ruby/object:Gem::Version
77
- version: 1.0.9
78
+ version: 1.0.10
78
79
  type: :runtime
79
80
  prerelease: false
80
81
  version_requirements: !ruby/object:Gem::Requirement
81
82
  requirements:
82
83
  - - ">="
83
84
  - !ruby/object:Gem::Version
84
- version: 1.0.9
85
+ version: 1.0.10
85
86
  - !ruby/object:Gem::Dependency
86
87
  name: nokogiri
87
88
  requirement: !ruby/object:Gem::Requirement
88
89
  requirements:
89
90
  - - ">="
90
91
  - !ruby/object:Gem::Version
91
- version: 1.8.2
92
+ version: 1.10.4
92
93
  type: :runtime
93
94
  prerelease: false
94
95
  version_requirements: !ruby/object:Gem::Requirement
95
96
  requirements:
96
97
  - - ">="
97
98
  - !ruby/object:Gem::Version
98
- version: 1.8.2
99
+ version: 1.10.4
99
100
  - !ruby/object:Gem::Dependency
100
101
  name: oauth2
101
102
  requirement: !ruby/object:Gem::Requirement
@@ -170,16 +171,16 @@ dependencies:
170
171
  name: rake
171
172
  requirement: !ruby/object:Gem::Requirement
172
173
  requirements:
173
- - - "~>"
174
+ - - ">="
174
175
  - !ruby/object:Gem::Version
175
- version: '10.0'
176
+ version: 12.3.3
176
177
  type: :development
177
178
  prerelease: false
178
179
  version_requirements: !ruby/object:Gem::Requirement
179
180
  requirements:
180
- - - "~>"
181
+ - - ">="
181
182
  - !ruby/object:Gem::Version
182
- version: '10.0'
183
+ version: 12.3.3
183
184
  - !ruby/object:Gem::Dependency
184
185
  name: pry
185
186
  requirement: !ruby/object:Gem::Requirement
@@ -247,11 +248,11 @@ files:
247
248
  - ".csslintrc"
248
249
  - ".eslintignore"
249
250
  - ".eslintrc"
251
+ - ".github/workflows/ruby.yml"
250
252
  - ".gitignore"
251
253
  - ".rubocop.yml"
252
254
  - ".rubocop_todo.yml"
253
255
  - ".simplecov"
254
- - ".travis.yml"
255
256
  - Gemfile
256
257
  - LICENSE
257
258
  - README.md
@@ -283,7 +284,8 @@ files:
283
284
  - lib/fhir_client/version.rb
284
285
  - lib/fhir_client/version_management.rb
285
286
  homepage: https://github.com/fhir-crucible/fhir_client
286
- licenses: []
287
+ licenses:
288
+ - Apache-2.0
287
289
  metadata: {}
288
290
  post_install_message:
289
291
  rdoc_options: []
@@ -300,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
302
  - !ruby/object:Gem::Version
301
303
  version: '0'
302
304
  requirements: []
303
- rubygems_version: 3.0.2
305
+ rubygems_version: 3.1.4
304
306
  signing_key:
305
307
  specification_version: 4
306
308
  summary: A Gem for handling FHIR client requests in ruby
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4
4
- - 2.5
5
- - 2.6
6
- before_install:
7
- - gem update --system
8
- - gem install bundler
9
- script:
10
- - bundle exec rake test
11
- - bundle exec codeclimate-test-reporter
12
- notifications:
13
- email:
14
- recipients:
15
- - fhir-testing-list@lists.mitre.org
16
- on_failure: change
17
- addons:
18
- code_climate:
19
- repo_token: ac1640edaefa720557e56bfaba4e09808559d7d61812f96d58ea4aa5f4669738