fhir_client 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +9 -7
- data/fhir_client.gemspec +4 -2
- data/lib/client_interface.rb +1 -0
- data/lib/{model → ext}/bundle.rb +13 -0
- data/lib/ext/model.rb +67 -0
- data/lib/ext/reference.rb +11 -0
- data/lib/fhir_client.rb +3 -13
- data/lib/sections/crud.rb +3 -0
- data/lib/sections/search.rb +1 -1
- metadata +26 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e798b19840921ad0695ecacbb3dcd0d7f662da9
|
4
|
+
data.tar.gz: c176b2138418157c1fc357c4c1fd18c335625692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f05664d0b45e1657d7147069ef1d04c59af7b722e0a9f043729ca66e8af4a58df9d822f4ca4f01c13dfc99a97cfedb418057b94531eaf608858db1ed6de2991f
|
7
|
+
data.tar.gz: 8417ee48735581a8bb2daef931af22bb0309e261dd163cabd6be225bfb4fbc61a6e10f33520d099581b2efe1fdfbfe6a5fc5bc908cc79772052d2623d7029eea
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fhir_client (1.0.
|
4
|
+
fhir_client (1.0.2)
|
5
5
|
activesupport (>= 3)
|
6
6
|
addressable (>= 2.3)
|
7
|
-
fhir_models (
|
7
|
+
fhir_models (>= 0.3.1)
|
8
8
|
oauth2 (~> 1.1)
|
9
9
|
rest-client (~> 1.8)
|
10
10
|
tilt (>= 1.1)
|
@@ -30,7 +30,7 @@ GEM
|
|
30
30
|
unf (>= 0.0.5, < 1.0.0)
|
31
31
|
faraday (0.9.2)
|
32
32
|
multipart-post (>= 1.2, < 3)
|
33
|
-
fhir_models (0.3.
|
33
|
+
fhir_models (0.3.1)
|
34
34
|
bcp47 (>= 0.3)
|
35
35
|
date_time_precision (>= 0.8)
|
36
36
|
mime-types (>= 1.16, < 3)
|
@@ -43,20 +43,22 @@ GEM
|
|
43
43
|
jwt (1.5.1)
|
44
44
|
method_source (0.8.2)
|
45
45
|
mime-types (2.99.2)
|
46
|
-
mini_portile2 (2.
|
46
|
+
mini_portile2 (2.1.0)
|
47
47
|
minitest (4.7.5)
|
48
48
|
multi_json (1.12.1)
|
49
49
|
multi_xml (0.5.5)
|
50
50
|
multipart-post (2.0.0)
|
51
51
|
netrc (0.11.0)
|
52
|
-
nokogiri (1.6.
|
53
|
-
mini_portile2 (~> 2.
|
52
|
+
nokogiri (1.6.8)
|
53
|
+
mini_portile2 (~> 2.1.0)
|
54
|
+
pkg-config (~> 1.1.7)
|
54
55
|
oauth2 (1.1.0)
|
55
56
|
faraday (>= 0.8, < 0.10)
|
56
57
|
jwt (~> 1.0, < 1.5.2)
|
57
58
|
multi_json (~> 1.3)
|
58
59
|
multi_xml (~> 0.5)
|
59
60
|
rack (>= 1.2, < 3)
|
61
|
+
pkg-config (1.1.7)
|
60
62
|
pry (0.10.3)
|
61
63
|
coderay (~> 1.1.0)
|
62
64
|
method_source (~> 0.8.1)
|
@@ -74,7 +76,7 @@ GEM
|
|
74
76
|
simplecov-html (0.10.0)
|
75
77
|
slop (3.6.0)
|
76
78
|
thread_safe (0.3.5)
|
77
|
-
tilt (2.0.
|
79
|
+
tilt (2.0.5)
|
78
80
|
turn (0.9.7)
|
79
81
|
ansi
|
80
82
|
minitest (~> 4)
|
data/fhir_client.gemspec
CHANGED
@@ -7,11 +7,11 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.email = "aquina@mitre.org"
|
8
8
|
s.homepage = "https://github.com/hl7-fhir/fhir-svn"
|
9
9
|
s.authors = ["Andre Quina", "Jason Walonoski", "Janoo Fernandes"]
|
10
|
-
s.version = '1.0.
|
10
|
+
s.version = '1.0.2'
|
11
11
|
|
12
12
|
s.files = s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
|
-
s.add_dependency 'fhir_models', '
|
14
|
+
s.add_dependency 'fhir_models', '>= 0.3.1'
|
15
15
|
s.add_dependency 'tilt', '>= 1.1'
|
16
16
|
s.add_dependency 'rest-client', '~> 1.8'
|
17
17
|
s.add_dependency 'oauth2', '~> 1.1'
|
@@ -19,3 +19,5 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_dependency 'addressable', '>= 2.3'
|
20
20
|
s.add_development_dependency 'pry'
|
21
21
|
end
|
22
|
+
|
23
|
+
|
data/lib/client_interface.rb
CHANGED
data/lib/{model → ext}/bundle.rb
RENAMED
@@ -1,5 +1,6 @@
|
|
1
1
|
module FHIR
|
2
2
|
class Bundle
|
3
|
+
include Enumerable
|
3
4
|
|
4
5
|
def self_link
|
5
6
|
link.select {|n| n.relation == 'self'}.first
|
@@ -28,5 +29,17 @@ module FHIR
|
|
28
29
|
nil
|
29
30
|
end
|
30
31
|
|
32
|
+
def each(&block)
|
33
|
+
iteration = @entry.map(&:resource).each(&block)
|
34
|
+
iteration += next_bundle.each(&block) if next_bundle
|
35
|
+
iteration
|
36
|
+
end
|
37
|
+
|
38
|
+
def next_bundle
|
39
|
+
# TODO: test this
|
40
|
+
return nil unless client && next_link.try(:url)
|
41
|
+
@next_bundle ||= client.parse_reply(self.class, client.default_format, client.raw_read_url(next_link.url))
|
42
|
+
end
|
31
43
|
end
|
32
44
|
end
|
45
|
+
|
data/lib/ext/model.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
module FHIR
|
2
|
+
class Model
|
3
|
+
class << self
|
4
|
+
cattr_accessor :client
|
5
|
+
end
|
6
|
+
|
7
|
+
def client
|
8
|
+
@client || self.class.client
|
9
|
+
end
|
10
|
+
|
11
|
+
def client=(client)
|
12
|
+
@client = client
|
13
|
+
|
14
|
+
# Ensure the client-setting cascades to all child models
|
15
|
+
instance_values.each do |_key, values|
|
16
|
+
Array.wrap(values).each do |value|
|
17
|
+
next unless value.is_a?(FHIR::Model)
|
18
|
+
next if value.client == client
|
19
|
+
value.client = client
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.read(id, client = self.client)
|
25
|
+
client.read(self, id).resource
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.read_with_summary(id, summary, client = self.client)
|
29
|
+
client.read(self, id, client.default_format, summary).resource
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.search(params = {}, client = self.client)
|
33
|
+
client.search(self, search: { parameters: params }).resource
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.create(model, client = self.client)
|
37
|
+
model = new(model) unless model.is_a?(self)
|
38
|
+
client.create(model).resource
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.conditional_create(model, params, client = self.client)
|
42
|
+
model = new(model) unless model.is_a?(self)
|
43
|
+
client.conditional_create(model, params)
|
44
|
+
end
|
45
|
+
|
46
|
+
def create
|
47
|
+
client.create(self).resource
|
48
|
+
end
|
49
|
+
|
50
|
+
def conditional_create(params)
|
51
|
+
client.conditional_create(self, params)
|
52
|
+
end
|
53
|
+
|
54
|
+
def update
|
55
|
+
client.update(self, id).resource
|
56
|
+
end
|
57
|
+
|
58
|
+
def conditional_update(params)
|
59
|
+
client.conditional_update(self, self.id, params).resource
|
60
|
+
end
|
61
|
+
|
62
|
+
def destroy
|
63
|
+
client.destroy(self.class, id) unless id.nil?
|
64
|
+
nil
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/fhir_client.rb
CHANGED
@@ -9,18 +9,6 @@ require 'addressable/uri'
|
|
9
9
|
require 'oauth2'
|
10
10
|
require 'active_support/core_ext'
|
11
11
|
|
12
|
-
begin
|
13
|
-
generator = FHIR::Boot::Generator.new
|
14
|
-
# 1. generate the lists of primitive data types, complex types, and resources
|
15
|
-
generator.generate_metadata
|
16
|
-
# 2. generate the complex data types
|
17
|
-
generator.generate_types
|
18
|
-
# 3. generate the base Resources
|
19
|
-
generator.generate_resources
|
20
|
-
rescue Exception => e
|
21
|
-
$LOG.error("Could not re-generate fhir models... this can happen in production, but the code does not need to be re-generated")
|
22
|
-
end
|
23
|
-
|
24
12
|
# Simple and verbose loggers
|
25
13
|
RestClient.log = Logger.new("fhir_client.log", 10, 1024000)
|
26
14
|
$LOG = Logger.new("fhir_client_verbose.log", 10, 1024000)
|
@@ -29,13 +17,15 @@ root = File.expand_path '..', File.dirname(File.absolute_path(__FILE__))
|
|
29
17
|
Dir.glob(File.join(root, 'lib','sections','**','*.rb')).each do |file|
|
30
18
|
require file
|
31
19
|
end
|
20
|
+
Dir.glob(File.join(root, 'lib','ext','**','*.rb')).each do |file|
|
21
|
+
require file
|
22
|
+
end
|
32
23
|
|
33
24
|
require_relative File.join('.','client_interface.rb')
|
34
25
|
require_relative File.join('.','resource_address.rb')
|
35
26
|
require_relative File.join('.','resource_format.rb')
|
36
27
|
require_relative File.join('.','feed_format.rb')
|
37
28
|
require_relative File.join('.','patch_format.rb')
|
38
|
-
require_relative File.join('.','model','bundle.rb')
|
39
29
|
require_relative File.join('.','model','client_reply.rb')
|
40
30
|
require_relative File.join('.','model','tag.rb')
|
41
31
|
|
data/lib/sections/crud.rb
CHANGED
@@ -156,11 +156,14 @@ module FHIR
|
|
156
156
|
reply.resource = resource # just send back the submitted resource
|
157
157
|
end
|
158
158
|
else
|
159
|
+
resource.id = FHIR::ResourceAddress.pull_out_id(resource.class.name.demodulize, reply.response[:headers]['location'])
|
159
160
|
reply.resource = resource # don't know the content type, so return the resource provided
|
160
161
|
end
|
161
162
|
else
|
163
|
+
resource.id = FHIR::ResourceAddress.pull_out_id(resource.class.name.demodulize, reply.response[:headers]['location'])
|
162
164
|
reply.resource = resource # just send back the submitted resource
|
163
165
|
end
|
166
|
+
reply.resource.client = self
|
164
167
|
reply.resource_class = resource.class
|
165
168
|
reply
|
166
169
|
end
|
data/lib/sections/search.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: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Quina
|
@@ -10,104 +10,104 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-06-
|
13
|
+
date: 2016-06-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fhir_models
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 0.3.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '>='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 0.3.1
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: tilt
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '1.1'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '1.1'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rest-client
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ~>
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '1.8'
|
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
56
|
version: '1.8'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: oauth2
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ~>
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '1.1'
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '1.1'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: activesupport
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '3'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '3'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: addressable
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - '>='
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '2.3'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '2.3'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: pry
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- -
|
103
|
+
- - '>='
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - '>='
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
description: A Gem for handling FHIR client requests in ruby
|
@@ -116,8 +116,8 @@ executables: []
|
|
116
116
|
extensions: []
|
117
117
|
extra_rdoc_files: []
|
118
118
|
files:
|
119
|
-
-
|
120
|
-
-
|
119
|
+
- .gitignore
|
120
|
+
- .travis.yml
|
121
121
|
- Gemfile
|
122
122
|
- Gemfile.lock
|
123
123
|
- LICENSE
|
@@ -125,10 +125,12 @@ files:
|
|
125
125
|
- Rakefile
|
126
126
|
- fhir_client.gemspec
|
127
127
|
- lib/client_interface.rb
|
128
|
+
- lib/ext/bundle.rb
|
129
|
+
- lib/ext/model.rb
|
130
|
+
- lib/ext/reference.rb
|
128
131
|
- lib/feed_format.rb
|
129
132
|
- lib/fhir_api_validation.json
|
130
133
|
- lib/fhir_client.rb
|
131
|
-
- lib/model/bundle.rb
|
132
134
|
- lib/model/client_reply.rb
|
133
135
|
- lib/model/tag.rb
|
134
136
|
- lib/patch_format.rb
|
@@ -160,17 +162,17 @@ require_paths:
|
|
160
162
|
- lib
|
161
163
|
required_ruby_version: !ruby/object:Gem::Requirement
|
162
164
|
requirements:
|
163
|
-
- -
|
165
|
+
- - '>='
|
164
166
|
- !ruby/object:Gem::Version
|
165
167
|
version: '0'
|
166
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
169
|
requirements:
|
168
|
-
- -
|
170
|
+
- - '>='
|
169
171
|
- !ruby/object:Gem::Version
|
170
172
|
version: '0'
|
171
173
|
requirements: []
|
172
174
|
rubyforge_project:
|
173
|
-
rubygems_version: 2.4.
|
175
|
+
rubygems_version: 2.4.6
|
174
176
|
signing_key:
|
175
177
|
specification_version: 4
|
176
178
|
summary: A Gem for handling FHIR client requests in ruby
|