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 +4 -4
- data/.github/workflows/ruby.yml +26 -0
- data/Gemfile +0 -1
- data/README.md +7 -2
- data/Rakefile +1 -1
- data/fhir_client.gemspec +7 -6
- data/lib/fhir_client.rb +5 -0
- data/lib/fhir_client/client.rb +12 -8
- data/lib/fhir_client/sections/search.rb +10 -22
- data/lib/fhir_client/version.rb +1 -1
- metadata +20 -18
- data/.travis.yml +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a320805ef8a57a99df11a56953314c3fd6243d0e05becea117695bd350965b3
|
4
|
+
data.tar.gz: 8f313d29a48f593964f28b1029fb7abb02f8de7131237815be1fe248ab326147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
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-
|
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
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', '
|
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.
|
26
|
-
spec.add_dependency 'fhir_stu3_models', '>= 3.0.
|
27
|
-
spec.add_dependency 'fhir_dstu2_models', '>= 1.0.
|
28
|
-
spec.add_dependency 'nokogiri', '>= 1.
|
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', '
|
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
|
data/lib/fhir_client/client.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
28
|
-
|
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
|
-
|
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
|
data/lib/fhir_client/version.rb
CHANGED
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.
|
4
|
+
version: 4.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Quina
|
8
8
|
- Jason Walonoski
|
9
|
-
-
|
9
|
+
- Robert Scanlon
|
10
|
+
- Reece Adamson
|
10
11
|
autorequire:
|
11
12
|
bindir: exe
|
12
13
|
cert_chain: []
|
13
|
-
date:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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.
|
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
|