fhir_models 4.2.1 → 4.3.0

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.
@@ -56,8 +56,9 @@ module FHIR
56
56
  # generate warnings for missing fields (ignoring extensions)
57
57
  left_missing.each do |e|
58
58
  next if e.include? 'extension'
59
+
59
60
  elem = get_element_by_path(e, right_elements)
60
- if !elem.min.nil? && elem.min > 0
61
+ if !elem.min.nil? && elem.min.positive?
61
62
  @errors << @finding.error(e, 'min', 'Missing REQUIRED element', 'Missing', elem.min.to_s)
62
63
  elsif elem.isModifier == true
63
64
  @errors << @finding.error(e, 'isModifier', 'Missing MODIFIER element', 'Missing', elem.isModifier.to_s)
@@ -67,8 +68,9 @@ module FHIR
67
68
  end
68
69
  right_missing.each do |e|
69
70
  next if e.include? 'extension'
71
+
70
72
  elem = get_element_by_path(e, left_elements)
71
- if !elem.min.nil? && elem.min > 0
73
+ if !elem.min.nil? && elem.min.positive?
72
74
  @errors << @finding.error(e, 'min', 'Missing REQUIRED element', elem.min.to_s, 'Missing')
73
75
  elsif elem.isModifier == true
74
76
  @errors << @finding.error(e, 'isModifier', 'Missing MODIFIER element', elem.isModifier.to_s, 'Missing')
@@ -113,6 +115,7 @@ module FHIR
113
115
  end
114
116
  y = get_extension(x.type[0].profile, right_extensions)
115
117
  next unless !y.nil? && x.name != y.name
118
+
116
119
  # both profiles share the same extension definition but with a different name
117
120
  checked_extensions << x.name
118
121
  checked_extensions << y.name
@@ -120,6 +123,7 @@ module FHIR
120
123
  end
121
124
  right_extensions.each do |y|
122
125
  next if checked_extensions.include?(y.name)
126
+
123
127
  x = get_extension(y.name, left_extensions)
124
128
  unless x.nil?
125
129
  # both profiles share an extension with the same name
@@ -128,6 +132,7 @@ module FHIR
128
132
  end
129
133
  x = get_extension(y.type[0].profile, left_extensions)
130
134
  next unless !x.nil? && x.name != y.name && !checked_extensions.include?(x.name)
135
+
131
136
  # both profiles share the same extension definition but with a different name
132
137
  checked_extensions << x.name
133
138
  checked_extensions << y.name
@@ -179,13 +184,16 @@ module FHIR
179
184
  x = path.split('.')
180
185
  root = x.first(x.size - 1).join('.')
181
186
  next unless root.include? '.'
187
+
182
188
  # get the root element to fill in the details
183
189
  elem = get_element_by_path(root, elements)
184
190
  # get the data type definition to fill in the details
185
191
  # assume missing elements are from first data type (gross)
186
192
  next if elem.type.nil? || elem.type.empty?
193
+
187
194
  type_def = FHIR::Definitions.type_definition(elem.type[0].code)
188
195
  next if type_def.nil?
196
+
189
197
  type_elements = Array.new(type_def.snapshot.element)
190
198
  # _DEEP_ copy
191
199
  type_elements.map! do |e| # {|e| FHIR::ElementDefinition.from_fhir_json(e.to_fhir_json) }
@@ -199,6 +207,7 @@ module FHIR
199
207
  type_elements.each do |z|
200
208
  y = get_element_by_path(z.path, elements)
201
209
  next unless y.nil?
210
+
202
211
  elements << z
203
212
  # else
204
213
  # @warnings << "StructureDefinition #{name} already contains #{z.path}"
@@ -367,6 +376,7 @@ module FHIR
367
376
 
368
377
  # isModifier
369
378
  return unless x.isModifier != y.isModifier
379
+
370
380
  @errors << @finding.error(x.path.to_s, 'isModifier', 'Incompatible isModifier', (x.isModifier || false).to_s, (y.isModifier || false).to_s)
371
381
  end
372
382
 
@@ -15,7 +15,7 @@ module FHIR
15
15
  "#{resourceType},#{profileIdA},#{profileIdB},#{path},#{attribute},#{status},#{message},#{valueA},#{valueB}"
16
16
  end
17
17
 
18
- def to_json
18
+ def to_json(*_args)
19
19
  JSON.pretty_unparse(as_json)
20
20
  end
21
21
 
@@ -30,7 +30,7 @@ module FHIR
30
30
  hash.each do |key, value|
31
31
  obj.send("#{key}=".to_sym, value) if value
32
32
  end
33
- rescue => e
33
+ rescue StandardError => e
34
34
  FHIR.logger.error "Failed to parse JSON: #{e.message}"
35
35
  return nil
36
36
  end
@@ -16,12 +16,10 @@ module FHIRPath
16
16
 
17
17
  def clone
18
18
  clone_tree = @tree.map do |x|
19
- begin
20
- x.clone
21
- rescue
22
- # TODO: This appears to be dead code
23
- x
24
- end
19
+ x.clone
20
+ rescue StandardError
21
+ # TODO: This appears to be dead code
22
+ x
25
23
  end
26
24
  FHIRPath::Expression.new(clone_tree)
27
25
  end
@@ -7,7 +7,7 @@ module FHIRPath
7
7
 
8
8
  # This method tokenizes the expression into a flat array of tokens
9
9
  def self.tokenize(expression)
10
- raw_tokens = expression.gsub('()', '').split(%r{(\(|\)|\s|>=|<=|>|<|=|!=|\+|-|\/|\*)})
10
+ raw_tokens = expression.gsub('()', '').split(%r{(\(|\)|\s|>=|<=|>|<|=|!=|\+|-|/|\*)})
11
11
  # recreate strings if they were split
12
12
  size = nil
13
13
  while raw_tokens.include?("'") && size != raw_tokens.length
@@ -44,13 +44,15 @@ module FHIRPath
44
44
  def self.reassemble_strings(tokens)
45
45
  tokens.each_with_index do |token, index|
46
46
  next unless token.is_a?(String)
47
+
47
48
  e_index = nil
48
49
  if token.start_with?('"') && !token.end_with?('"')
49
- e_index = tokens[index..-1].index { |t| t.end_with?('"') }
50
+ e_index = tokens[index..].index { |t| t.end_with?('"') }
50
51
  elsif token.start_with?("'") && !token.end_with?("'")
51
- e_index = tokens[index..-1].index { |t| t.end_with?("'") }
52
+ e_index = tokens[index..].index { |t| t.end_with?("'") }
52
53
  end
53
54
  next unless e_index
55
+
54
56
  i = index + 1
55
57
  while i <= index + e_index
56
58
  tokens[index] += tokens[i]
@@ -63,14 +65,15 @@ module FHIRPath
63
65
  # This method builds an Abstract Syntax Tree (AST) from a flat list of tokens
64
66
  def self.build_tree(tokens)
65
67
  return if tokens.empty?
68
+
66
69
  tree = []
67
70
  until tokens.empty?
68
71
  token = tokens.delete_at(0)
69
- if '(' == token # sub expression
72
+ if token == '(' # sub expression
70
73
  tree << FHIRPath::Expression.new(build_tree(tokens))
71
- elsif ')' == token
74
+ elsif token == ')'
72
75
  return tree
73
- elsif '.' != token
76
+ elsif token != '.'
74
77
  tree << atom(token)
75
78
  end
76
79
  end
@@ -91,7 +94,7 @@ module FHIRPath
91
94
  value = token
92
95
  begin
93
96
  value = Float(token)
94
- rescue
97
+ rescue StandardError
95
98
  value = token
96
99
  value = token.to_sym if @@reserved.include?(token)
97
100
  value = true if token == 'true'
@@ -1,5 +1,5 @@
1
1
  module FHIR
2
2
  module Models
3
- VERSION = '4.2.1'.freeze
3
+ VERSION = '4.3.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fhir_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 4.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Walonoski
@@ -9,10 +9,10 @@ authors:
9
9
  - Michael O'Keefe
10
10
  - Robert Scanlon
11
11
  - Reece Adamson
12
- autorequire:
12
+ autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-09-23 00:00:00.000000000 Z
15
+ date: 2024-05-30 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: nokogiri
@@ -188,14 +188,14 @@ dependencies:
188
188
  requirements:
189
189
  - - '='
190
190
  - !ruby/object:Gem::Version
191
- version: '0.80'
191
+ version: 1.23.0
192
192
  type: :development
193
193
  prerelease: false
194
194
  version_requirements: !ruby/object:Gem::Requirement
195
195
  requirements:
196
196
  - - '='
197
197
  - !ruby/object:Gem::Version
198
- version: '0.80'
198
+ version: 1.23.0
199
199
  - !ruby/object:Gem::Dependency
200
200
  name: guard-rspec
201
201
  requirement: !ruby/object:Gem::Requirement
@@ -238,7 +238,9 @@ files:
238
238
  - ".rspec"
239
239
  - ".rubocop.yml"
240
240
  - ".rubocop_todo.yml"
241
+ - ".ruby-version"
241
242
  - ".simplecov"
243
+ - ".tool-versions"
242
244
  - Gemfile
243
245
  - Gemfile.lock
244
246
  - Guardfile
@@ -3959,7 +3961,7 @@ homepage: https://github.com/fhir-crucible/fhir_models
3959
3961
  licenses:
3960
3962
  - Apache-2.0
3961
3963
  metadata: {}
3962
- post_install_message:
3964
+ post_install_message:
3963
3965
  rdoc_options: []
3964
3966
  require_paths:
3965
3967
  - lib
@@ -3967,15 +3969,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
3967
3969
  requirements:
3968
3970
  - - ">="
3969
3971
  - !ruby/object:Gem::Version
3970
- version: '0'
3972
+ version: 3.0.0
3971
3973
  required_rubygems_version: !ruby/object:Gem::Requirement
3972
3974
  requirements:
3973
3975
  - - ">="
3974
3976
  - !ruby/object:Gem::Version
3975
3977
  version: '0'
3976
3978
  requirements: []
3977
- rubygems_version: 3.1.6
3978
- signing_key:
3979
+ rubygems_version: 3.5.9
3980
+ signing_key:
3979
3981
  specification_version: 4
3980
3982
  summary: A Gem for handling FHIR models in ruby
3981
3983
  test_files: []