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 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