fhir_dstu2_models 1.0.4 → 1.0.5

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
- SHA1:
3
- metadata.gz: a1140fc77a44dcf10b01c38ef6513f08641eac65
4
- data.tar.gz: 802d339f92786c05b707528184df1a782728264d
2
+ SHA256:
3
+ metadata.gz: 0b2edac98e094284cc3ac76ad78200622695cffa5440ddb5e440fa11478754bd
4
+ data.tar.gz: 1f2a5f79cc61a938753b0a6824557ed615bf5188e991176f9f216cd44f15f9e1
5
5
  SHA512:
6
- metadata.gz: 472ccacf205f9270cee8859250e62dda8283ea3d2ba21096a992ab46bb9e81e3f8315b7a70432c6b7eba0764cc8d2d9d64afdcc85e36b08418152ce6038370db
7
- data.tar.gz: ba36e569e66c5cb18b9dfeef4fef0c78fa256ea3f25710fc505a8cb2b2e9e609b1460478fcb8cec4bdb7bbf7b844c354f5562caf60f4258c2be377c6d4474259
6
+ metadata.gz: 22dd05a458a4fa6be2983ce891e2abfccf4d7788249aaf733be24ac9a1b054ff8441247078880a765c0bdef27f0a594c81dc264015a75fab425b7a86b2f2fc3d
7
+ data.tar.gz: 65f0ee9430f85a0e88f82b6dca5641f2c402b3705d521cbe5f06bd50df1dc7855ac120f6909437a234c2064380e12f8c1f3483b5b5dd7016779d8b04045dd3d9
@@ -2,7 +2,6 @@ language: ruby
2
2
  env:
3
3
  - TESTMEMORY=0 GCDELAY=2.0
4
4
  rvm:
5
- - 2.2
6
5
  - 2.3
7
6
  - 2.4
8
7
  - 2.5
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fhir_dstu2_models (1.0.4)
4
+ fhir_dstu2_models (1.0.5)
5
5
  bcp47 (>= 0.3)
6
6
  date_time_precision (>= 0.8)
7
7
  mime-types (>= 1.16, < 3)
@@ -16,7 +16,7 @@ GEM
16
16
  codeclimate-test-reporter (1.0.8)
17
17
  simplecov (<= 0.13)
18
18
  coderay (1.1.2)
19
- concurrent-ruby (1.0.5)
19
+ concurrent-ruby (1.1.4)
20
20
  date_time_precision (0.8.1)
21
21
  diff-lcs (1.3)
22
22
  docile (1.1.5)
@@ -39,7 +39,7 @@ GEM
39
39
  guard-test (2.0.8)
40
40
  guard-compat (~> 1.2)
41
41
  test-unit (~> 3.0)
42
- i18n (1.0.1)
42
+ i18n (1.5.3)
43
43
  concurrent-ruby (~> 1.0)
44
44
  json (2.1.0)
45
45
  listen (3.1.5)
@@ -125,7 +125,7 @@ DEPENDENCIES
125
125
  test-unit
126
126
 
127
127
  RUBY VERSION
128
- ruby 2.2.7p470
128
+ ruby 2.5.1p57
129
129
 
130
130
  BUNDLED WITH
131
- 1.16.1
131
+ 1.16.2
@@ -16,6 +16,16 @@ module FHIR
16
16
  # Profile Validation
17
17
  # -------------------------------------------------------------------------
18
18
 
19
+ class << self; attr_accessor :vs_validators end
20
+ @vs_validators = {}
21
+ def self.validates_vs(valueset_uri, &validator_fn)
22
+ @vs_validators[valueset_uri] = validator_fn
23
+ end
24
+
25
+ def self.clear_validates_vs(valueset_uri)
26
+ @vs_validators.delete valueset_uri
27
+ end
28
+
19
29
  def validates_resource?(resource)
20
30
  validate_resource(resource).empty?
21
31
  end
@@ -28,6 +38,7 @@ module FHIR
28
38
  else
29
39
  @errors << "#{resource.class} is not a resource."
30
40
  end
41
+ # TODO: return warnings too!
31
42
  @errors
32
43
  end
33
44
 
@@ -153,6 +164,7 @@ module FHIR
153
164
  # Check the datatype for each node, only if the element has one declared, and it isn't the root element
154
165
  if !element.type.empty? && element.path != id
155
166
  codeable_concept_pattern = element.pattern && element.pattern.is_a?(FHIR::DSTU2::CodeableConcept)
167
+ codeable_concept_binding = element.binding
156
168
  matching_pattern = false
157
169
  nodes.each do |value|
158
170
  matching_type = 0
@@ -189,6 +201,28 @@ module FHIR
189
201
  matching_pattern = true if vcoding.system == pcoding.system && vcoding.code == pcoding.code
190
202
  end
191
203
  end
204
+ elsif data_type_found == 'CodeableConcept' && codeable_concept_binding
205
+ binding_issues =
206
+ if element.binding.strength == 'extensible'
207
+ # TODO: make this @warnings, once we have a way to return warnings
208
+ @errors
209
+ elsif element.binding.strength == 'required'
210
+ @errors
211
+ else # e.g., example-strength or unspecified
212
+ [] # Drop issues errors on the floor, in throwaway array
213
+ end
214
+
215
+ valueset_uri = element.binding && element.binding.valueSetReference && element.binding.valueSetReference.reference
216
+ if valueset_uri && self.class.vs_validators[valueset_uri]
217
+ check_fn = self.class.vs_validators[valueset_uri]
218
+ vcc = FHIR::DSTU2::CodeableConcept.new(value)
219
+
220
+ has_valid_code = vcc.coding && vcc.coding.any? { |c| check_fn.call(c) }
221
+
222
+ unless has_valid_code
223
+ binding_issues << "#{describe_element(element)} has no codings from #{valueset_uri}. Codings evaluated: #{vcc.to_json}"
224
+ end
225
+ end
192
226
  elsif data_type_found == 'String' && !element.maxLength.nil? && (value.size > element.maxLength)
193
227
  @errors << "#{describe_element(element)} exceed maximum length of #{element.maxLength}: #{value}"
194
228
  end
@@ -1,7 +1,7 @@
1
1
  module FHIR
2
2
  module DSTU2
3
3
  module Models
4
- VERSION = '1.0.4'.freeze
4
+ VERSION = '1.0.5'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fhir_dstu2_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Walonoski
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2018-05-01 00:00:00.000000000 Z
14
+ date: 2019-02-06 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: nokogiri
@@ -2143,7 +2143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2143
2143
  version: '0'
2144
2144
  requirements: []
2145
2145
  rubyforge_project:
2146
- rubygems_version: 2.6.12
2146
+ rubygems_version: 2.7.7
2147
2147
  signing_key:
2148
2148
  specification_version: 4
2149
2149
  summary: A Gem for handling FHIR DSTU2 models in ruby