fhir_client 1.0.1 → 1.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
  SHA1:
3
- metadata.gz: 00a173dc4e9ddb7b710daea38e2f89d3790db646
4
- data.tar.gz: 6b5d0bc26cb16a2771b7ed760fa5be7ce8449868
3
+ metadata.gz: 7e798b19840921ad0695ecacbb3dcd0d7f662da9
4
+ data.tar.gz: c176b2138418157c1fc357c4c1fd18c335625692
5
5
  SHA512:
6
- metadata.gz: 6dd8dbf2f5265f2755d7aacf63d052c0d525df7dfee39f9251f908d8de929af40d9d57aaef73233c2ffc4dc3b3ab23048c5af1abcbcfac24b574e27c459ff17b
7
- data.tar.gz: f915a5d4f7b7bed90935c80f2015533de1b0ff6e943f8935502039b2fb82b906ebc2e9ae763d0913a82971a913a32da35788e657839cef3659cbaf6e2395c071
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.0)
4
+ fhir_client (1.0.2)
5
5
  activesupport (>= 3)
6
6
  addressable (>= 2.3)
7
- fhir_models (~> 0.3)
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.0)
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.0.0)
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.7.2)
53
- mini_portile2 (~> 2.0.0.rc2)
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.4)
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.1'
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', '~> 0.3'
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
+
@@ -214,6 +214,7 @@ module FHIR
214
214
  $LOG.error "Failed to parse #{format} as resource #{klass}: #{e.message} %n #{e.backtrace.join("\n")} #{response}"
215
215
  nil
216
216
  end
217
+ res.client = self
217
218
  res
218
219
  end
219
220
 
@@ -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
@@ -0,0 +1,11 @@
1
+ module FHIR
2
+ class Reference
3
+ def read
4
+ # TODO: how to follow contained references?
5
+ type, id = reference.to_s.split("/")
6
+ return unless [type, id].all?(&:present?)
7
+ klass = "FHIR::#{type}".constantize
8
+ klass.read(client, id)
9
+ end
10
+ end
11
+ 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
@@ -50,4 +50,4 @@ module FHIR
50
50
 
51
51
  end
52
52
  end
53
- end
53
+ 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: 1.0.1
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-08 00:00:00.000000000 Z
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: '0.3'
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: '0.3'
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
- - ".gitignore"
120
- - ".travis.yml"
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.3
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