fhir_stu3_models 3.1.1 → 3.2.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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -1
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +0 -1
- data/.rubocop.yml +5 -1
- data/.rubocop_todo.yml +49 -119
- data/.ruby-version +1 -0
- data/.simplecov +1 -5
- data/.tool-versions +1 -0
- data/Gemfile.lock +36 -32
- data/Guardfile +1 -1
- data/fhir_stu3_models.gemspec +2 -1
- data/lib/fhir_stu3_models/bootstrap/definitions.rb +14 -1
- data/lib/fhir_stu3_models/bootstrap/field.rb +2 -2
- data/lib/fhir_stu3_models/bootstrap/generator.rb +7 -5
- data/lib/fhir_stu3_models/bootstrap/hashable.rb +5 -4
- data/lib/fhir_stu3_models/bootstrap/json.rb +2 -2
- data/lib/fhir_stu3_models/bootstrap/model.rb +43 -31
- data/lib/fhir_stu3_models/bootstrap/preprocess.rb +23 -15
- data/lib/fhir_stu3_models/bootstrap/xml.rb +9 -7
- data/lib/fhir_stu3_models/deprecate.rb +1 -0
- data/lib/fhir_stu3_models/fhir.rb +8 -7
- data/lib/fhir_stu3_models/fhir_ext/element_definition.rb +4 -1
- data/lib/fhir_stu3_models/fhir_ext/structure_definition.rb +24 -17
- data/lib/fhir_stu3_models/fhir_ext/structure_definition_compare.rb +10 -0
- data/lib/fhir_stu3_models/fhir_ext/structure_definition_finding.rb +2 -2
- data/lib/fhir_stu3_models/fluentpath/expression.rb +1 -1
- data/lib/fhir_stu3_models/fluentpath/parse.rb +10 -7
- data/lib/fhir_stu3_models/version.rb +1 -1
- metadata +11 -9
@@ -57,6 +57,7 @@ module FHIR
|
|
57
57
|
# generate warnings for missing fields (ignoring extensions)
|
58
58
|
left_missing.each do |e|
|
59
59
|
next if e.include? 'extension'
|
60
|
+
|
60
61
|
elem = get_element_by_path(e, right_elements)
|
61
62
|
if !elem.min.nil? && elem.min.positive?
|
62
63
|
@errors << @finding.error(e, 'min', 'Missing REQUIRED element', 'Missing', elem.min.to_s)
|
@@ -68,6 +69,7 @@ module FHIR
|
|
68
69
|
end
|
69
70
|
right_missing.each do |e|
|
70
71
|
next if e.include? 'extension'
|
72
|
+
|
71
73
|
elem = get_element_by_path(e, left_elements)
|
72
74
|
if !elem.min.nil? && elem.min.positive?
|
73
75
|
@errors << @finding.error(e, 'min', 'Missing REQUIRED element', elem.min.to_s, 'Missing')
|
@@ -114,6 +116,7 @@ module FHIR
|
|
114
116
|
end
|
115
117
|
y = get_extension(x.type[0].profile, right_extensions)
|
116
118
|
next unless !y.nil? && x.name != y.name
|
119
|
+
|
117
120
|
# both profiles share the same extension definition but with a different name
|
118
121
|
checked_extensions << x.name
|
119
122
|
checked_extensions << y.name
|
@@ -121,6 +124,7 @@ module FHIR
|
|
121
124
|
end
|
122
125
|
right_extensions.each do |y|
|
123
126
|
next if checked_extensions.include?(y.name)
|
127
|
+
|
124
128
|
x = get_extension(y.name, left_extensions)
|
125
129
|
unless x.nil?
|
126
130
|
# both profiles share an extension with the same name
|
@@ -129,6 +133,7 @@ module FHIR
|
|
129
133
|
end
|
130
134
|
x = get_extension(y.type[0].profile, left_extensions)
|
131
135
|
next unless !x.nil? && x.name != y.name && !checked_extensions.include?(x.name)
|
136
|
+
|
132
137
|
# both profiles share the same extension definition but with a different name
|
133
138
|
checked_extensions << x.name
|
134
139
|
checked_extensions << y.name
|
@@ -180,13 +185,16 @@ module FHIR
|
|
180
185
|
x = path.split('.')
|
181
186
|
root = x.first(x.size - 1).join('.')
|
182
187
|
next unless root.include? '.'
|
188
|
+
|
183
189
|
# get the root element to fill in the details
|
184
190
|
elem = get_element_by_path(root, elements)
|
185
191
|
# get the data type definition to fill in the details
|
186
192
|
# assume missing elements are from first data type (gross)
|
187
193
|
next if elem.type.nil? || elem.type.empty?
|
194
|
+
|
188
195
|
type_def = FHIR::STU3::Definitions.type_definition(elem.type[0].code)
|
189
196
|
next if type_def.nil?
|
197
|
+
|
190
198
|
type_elements = Array.new(type_def.snapshot.element)
|
191
199
|
# _DEEP_ copy
|
192
200
|
type_elements.map! do |e| # {|e| FHIR::STU3::ElementDefinition.from_fhir_json(e.to_fhir_json) }
|
@@ -200,6 +208,7 @@ module FHIR
|
|
200
208
|
type_elements.each do |z|
|
201
209
|
y = get_element_by_path(z.path, elements)
|
202
210
|
next unless y.nil?
|
211
|
+
|
203
212
|
elements << z
|
204
213
|
# else
|
205
214
|
# @warnings << "StructureDefinition #{name} already contains #{z.path}"
|
@@ -368,6 +377,7 @@ module FHIR
|
|
368
377
|
|
369
378
|
# isModifier
|
370
379
|
return unless x.isModifier != y.isModifier
|
380
|
+
|
371
381
|
@errors << @finding.error(x.path.to_s, 'isModifier', 'Incompatible isModifier', (x.isModifier || false).to_s, (y.isModifier || false).to_s)
|
372
382
|
end
|
373
383
|
|
@@ -16,7 +16,7 @@ module FHIR
|
|
16
16
|
"#{resourceType},#{profileIdA},#{profileIdB},#{path},#{attribute},#{status},#{message},#{valueA},#{valueB}"
|
17
17
|
end
|
18
18
|
|
19
|
-
def to_json
|
19
|
+
def to_json(*_args)
|
20
20
|
JSON.pretty_unparse(as_json)
|
21
21
|
end
|
22
22
|
|
@@ -31,7 +31,7 @@ module FHIR
|
|
31
31
|
hash.each do |key, value|
|
32
32
|
obj.send("#{key}=".to_sym, value) if value
|
33
33
|
end
|
34
|
-
rescue => e
|
34
|
+
rescue StandardError => e
|
35
35
|
FHIR.logger.error "Failed to parse JSON: #{e.message}"
|
36
36
|
return nil
|
37
37
|
end
|
@@ -8,7 +8,7 @@ module FluentPath
|
|
8
8
|
|
9
9
|
# This method tokenizes the expression into a flat array of tokens
|
10
10
|
def self.tokenize(expression)
|
11
|
-
raw_tokens = expression.gsub('()', '').split(%r{(\(|\)|\s
|
11
|
+
raw_tokens = expression.gsub('()', '').split(%r{(\(|\)|\s|>=|<=|>|<|=|!=|\+|-|/|\*)})
|
12
12
|
# recreate strings if they were split
|
13
13
|
size = nil
|
14
14
|
while raw_tokens.include?("'") && size != raw_tokens.length
|
@@ -45,13 +45,15 @@ module FluentPath
|
|
45
45
|
def self.reassemble_strings(tokens)
|
46
46
|
tokens.each_with_index do |token, index|
|
47
47
|
next unless token.is_a?(String)
|
48
|
+
|
48
49
|
e_index = nil
|
49
50
|
if token.start_with?('"') && !token.end_with?('"')
|
50
|
-
e_index = tokens[index
|
51
|
+
e_index = tokens[index..].index { |t| t.end_with?('"') }
|
51
52
|
elsif token.start_with?("'") && !token.end_with?("'")
|
52
|
-
e_index = tokens[index
|
53
|
+
e_index = tokens[index..].index { |t| t.end_with?("'") }
|
53
54
|
end
|
54
55
|
next unless e_index
|
56
|
+
|
55
57
|
i = index + 1
|
56
58
|
while i <= index + e_index
|
57
59
|
tokens[index] += tokens[i]
|
@@ -64,14 +66,15 @@ module FluentPath
|
|
64
66
|
# This method builds an Abstract Syntax Tree (AST) from a flat list of tokens
|
65
67
|
def self.build_tree(tokens)
|
66
68
|
return if tokens.empty?
|
69
|
+
|
67
70
|
tree = []
|
68
71
|
until tokens.empty?
|
69
72
|
token = tokens.delete_at(0)
|
70
|
-
if '('
|
73
|
+
if token == '(' # sub expression
|
71
74
|
tree << FluentPath::STU3::Expression.new(build_tree(tokens))
|
72
|
-
elsif ')'
|
75
|
+
elsif token == ')'
|
73
76
|
return tree
|
74
|
-
elsif '.'
|
77
|
+
elsif token != '.'
|
75
78
|
tree << atom(token)
|
76
79
|
end
|
77
80
|
end
|
@@ -92,7 +95,7 @@ module FluentPath
|
|
92
95
|
value = token
|
93
96
|
begin
|
94
97
|
value = Float(token)
|
95
|
-
rescue
|
98
|
+
rescue StandardError
|
96
99
|
value = token
|
97
100
|
value = token.to_sym if @@reserved.include?(token)
|
98
101
|
value = true if token == 'true'
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fhir_stu3_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Walonoski
|
8
8
|
- Robert Scanlon
|
9
9
|
- Reece Adamson
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -172,14 +172,14 @@ dependencies:
|
|
172
172
|
requirements:
|
173
173
|
- - '='
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version:
|
175
|
+
version: 1.23.0
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
180
|
- - '='
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version:
|
182
|
+
version: 1.23.0
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
184
|
name: guard-rspec
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
@@ -221,7 +221,9 @@ files:
|
|
221
221
|
- ".rspec"
|
222
222
|
- ".rubocop.yml"
|
223
223
|
- ".rubocop_todo.yml"
|
224
|
+
- ".ruby-version"
|
224
225
|
- ".simplecov"
|
226
|
+
- ".tool-versions"
|
225
227
|
- Gemfile
|
226
228
|
- Gemfile.lock
|
227
229
|
- Guardfile
|
@@ -1600,7 +1602,7 @@ homepage: https://github.com/fhir-crucible/fhir_stu3_models
|
|
1600
1602
|
licenses:
|
1601
1603
|
- Apache-2.0
|
1602
1604
|
metadata: {}
|
1603
|
-
post_install_message:
|
1605
|
+
post_install_message:
|
1604
1606
|
rdoc_options: []
|
1605
1607
|
require_paths:
|
1606
1608
|
- lib
|
@@ -1608,15 +1610,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1608
1610
|
requirements:
|
1609
1611
|
- - ">="
|
1610
1612
|
- !ruby/object:Gem::Version
|
1611
|
-
version:
|
1613
|
+
version: 3.0.0
|
1612
1614
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1613
1615
|
requirements:
|
1614
1616
|
- - ">="
|
1615
1617
|
- !ruby/object:Gem::Version
|
1616
1618
|
version: '0'
|
1617
1619
|
requirements: []
|
1618
|
-
rubygems_version: 3.
|
1619
|
-
signing_key:
|
1620
|
+
rubygems_version: 3.5.9
|
1621
|
+
signing_key:
|
1620
1622
|
specification_version: 4
|
1621
1623
|
summary: A Gem for handling FHIR STU3 models in ruby
|
1622
1624
|
test_files: []
|