fhir_dstu2_models 1.0.4 → 1.0.5

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