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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fadfd93d541495ffb2bef389e4f453b21463a56c9f50c39f8e894ee81ef039f8
4
- data.tar.gz: 908a52232f3717ff22589707738e59f73276865c49d71a8eec31b9725b9fb623
3
+ metadata.gz: cbba24e4cace9e2cb19f53f46a06fc8731b982014ee0da534cd0c6dbe6c16199
4
+ data.tar.gz: 7d2834c9c61fcc01c2d851c5de645a974a8b3d9bf44da2af639b6fde75e8071e
5
5
  SHA512:
6
- metadata.gz: 333c284cada44d2ad27f70a66c0991f80143c53980d6c7cb11d15fbae54f7d28d8d8a6bed9bc12b268469e7f1cca950a9ddb961781bc762458d56db0d64ecfc1
7
- data.tar.gz: e4cc9532a0a4f5c22194a6042a70adac2eeb54e8993704d81d1fd36988f106f3d3bf6e33e3eb55203d03099ea3ca3c7624ebe7ee3adc461b15f972b2f9875bed
6
+ metadata.gz: a60709d19586e87f86067a94e1b3867968bd06abd934cb3cfcc4d64ac138cf9389730dd1bd024e5b9ee68eff28d8d605dfdc2e4d22254d783ca56cbb719c897b
7
+ data.tar.gz: 51cd84621c0e66e28bc793d97edc56f25e641a0fe97e9b376f1978721ee4ffa3cf6a662364a03797e0fe4fec3d21df62ef2034e5711fe12e551be9ae80e54bc2
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby-version: ['2.6', '2.7']
14
+ ruby-version: ['3.0', '3.1', '3.2']
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -2,7 +2,6 @@
2
2
  **/coverage/**
3
3
  fhir_models*log*
4
4
  invariants.txt
5
- .ruby-version
6
5
  .ruby-gemset
7
6
  tmp/
8
7
 
data/.rubocop.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
  AllCops:
3
- TargetRubyVersion: 2.4
3
+ TargetRubyVersion: 3.0
4
4
  Exclude:
5
5
  - 'test/**/*'
6
6
  - 'spec/**/*'
@@ -12,6 +12,8 @@ AllCops:
12
12
  - 'bin/*'
13
13
  Layout/LineLength:
14
14
  Enabled: false
15
+ Style/AccessorGrouping:
16
+ Enabled: false
15
17
  Style/FrozenStringLiteralComment:
16
18
  Enabled: false
17
19
  Style/HashEachMethods:
@@ -20,6 +22,8 @@ Style/HashTransformKeys:
20
22
  Enabled: true
21
23
  Style/HashTransformValues:
22
24
  Enabled: true
25
+ Style/WordArray:
26
+ EnforcedStyle: brackets
23
27
  inherit_mode:
24
28
  merge:
25
29
  - Exclude
data/.rubocop_todo.yml CHANGED
@@ -1,47 +1,19 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2021-03-30 16:14:38 -0400 using RuboCop version 0.80.0.
3
+ # on 2023-12-13 19:55:27 UTC using RuboCop version 1.23.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 51
10
- # Cop supports --auto-correct.
11
- Layout/EmptyLineAfterGuardClause:
12
- Exclude:
13
- - 'lib/fhir_models/bootstrap/definitions.rb'
14
- - 'lib/fhir_models/bootstrap/generator.rb'
15
- - 'lib/fhir_models/bootstrap/hashable.rb'
16
- - 'lib/fhir_models/bootstrap/model.rb'
17
- - 'lib/fhir_models/bootstrap/preprocess.rb'
18
- - 'lib/fhir_models/bootstrap/xml.rb'
19
- - 'lib/fhir_models/deprecate.rb'
20
- - 'lib/fhir_models/fhir_ext/element_definition.rb'
21
- - 'lib/fhir_models/fhir_ext/structure_definition.rb'
22
- - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
23
- - 'lib/fhir_models/fhirpath/parse.rb'
24
-
25
- # Offense count: 1
26
- # Cop supports --auto-correct.
27
- Layout/RescueEnsureAlignment:
28
- Exclude:
29
- - 'lib/fhir_models/bootstrap/hashable.rb'
30
-
31
- # Offense count: 2
32
- # Cop supports --auto-correct.
33
- Lint/ToJSON:
34
- Exclude:
35
- - 'lib/fhir_models/bootstrap/json.rb'
36
- - 'lib/fhir_models/fhir_ext/structure_definition_finding.rb'
37
-
38
- # Offense count: 40
9
+ # Offense count: 38
10
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
39
11
  Metrics/AbcSize:
40
- Max: 392
12
+ Max: 394
41
13
 
42
14
  # Offense count: 7
43
- # Configuration parameters: CountComments, ExcludedMethods.
44
- # ExcludedMethods: refine
15
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
16
+ # IgnoredMethods: refine
45
17
  Metrics/BlockLength:
46
18
  Max: 78
47
19
 
@@ -51,47 +23,51 @@ Metrics/BlockNesting:
51
23
  Max: 5
52
24
 
53
25
  # Offense count: 7
54
- # Configuration parameters: CountComments.
26
+ # Configuration parameters: CountComments, CountAsOne.
55
27
  Metrics/ClassLength:
56
- Max: 356
28
+ Max: 355
57
29
 
58
- # Offense count: 23
30
+ # Offense count: 32
31
+ # Configuration parameters: IgnoredMethods.
59
32
  Metrics/CyclomaticComplexity:
60
- Max: 65
33
+ Max: 73
61
34
 
62
- # Offense count: 44
63
- # Configuration parameters: CountComments, ExcludedMethods.
35
+ # Offense count: 45
36
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
64
37
  Metrics/MethodLength:
65
- Max: 133
38
+ Max: 132
66
39
 
67
40
  # Offense count: 2
68
- # Configuration parameters: CountComments.
41
+ # Configuration parameters: CountComments, CountAsOne.
69
42
  Metrics/ModuleLength:
70
- Max: 114
43
+ Max: 115
71
44
 
72
- # Offense count: 23
45
+ # Offense count: 28
46
+ # Configuration parameters: IgnoredMethods.
73
47
  Metrics/PerceivedComplexity:
74
- Max: 68
48
+ Max: 76
49
+
50
+ # Offense count: 5
51
+ # Configuration parameters: EnforcedStyle, IgnoredPatterns.
52
+ # SupportedStyles: snake_case, camelCase
53
+ Naming/MethodName:
54
+ Exclude:
55
+ - 'lib/fhir_models/fhir_ext/structure_definition_finding.rb'
75
56
 
76
57
  # Offense count: 4
77
58
  # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
78
- # AllowedNames: io, id, to, by, on, in, at, ip, db, os, pp
59
+ # AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
79
60
  Naming/MethodParameterName:
80
61
  Exclude:
81
62
  - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
82
63
 
83
- # Offense count: 2
64
+ # Offense count: 1
84
65
  # Cop supports --auto-correct.
85
- # Configuration parameters: PreferredName.
86
- Naming/RescuedExceptionsVariableName:
66
+ # Configuration parameters: EnforcedStyle.
67
+ # SupportedStyles: nested, compact
68
+ Style/ClassAndModuleChildren:
87
69
  Exclude:
88
- - 'lib/fhir_models/bootstrap/hashable.rb'
89
-
90
- # Offense count: 1
91
- # Configuration parameters: .
92
- # SupportedStyles: inline, group
93
- Style/AccessModifierDeclarations:
94
- EnforcedStyle: inline
70
+ - '.simplecov'
95
71
 
96
72
  # Offense count: 17
97
73
  Style/ClassVars:
@@ -99,17 +75,23 @@ Style/ClassVars:
99
75
  - 'lib/fhir_models/bootstrap/definitions.rb'
100
76
  - 'lib/fhir_models/fhirpath/parse.rb'
101
77
 
78
+ # Offense count: 1
79
+ Style/CombinableLoops:
80
+ Exclude:
81
+ - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
82
+
102
83
  # Offense count: 6
84
+ # Cop supports --auto-correct.
103
85
  Style/CommentedKeyword:
104
86
  Exclude:
105
87
  - 'lib/fhir_models/bootstrap/hashable.rb'
106
88
  - 'lib/fhir_models/bootstrap/model.rb'
107
89
 
108
- # Offense count: 14
90
+ # Offense count: 15
91
+ # Configuration parameters: AllowedConstants.
109
92
  Style/Documentation:
110
93
  Exclude:
111
- - 'spec/**/*'
112
- - 'test/**/*'
94
+ - '.simplecov'
113
95
  - 'lib/fhir_models/bootstrap/definitions.rb'
114
96
  - 'lib/fhir_models/bootstrap/field.rb'
115
97
  - 'lib/fhir_models/bootstrap/generator.rb'
@@ -136,71 +118,22 @@ Style/IfUnlessModifier:
136
118
  - 'lib/fhir_models/fhir_ext/structure_definition.rb'
137
119
  - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
138
120
 
139
- # Offense count: 1
140
- Style/MethodMissingSuper:
141
- Exclude:
142
- - 'lib/fhir_models/bootstrap/model.rb'
143
-
144
121
  # Offense count: 1
145
122
  Style/MissingRespondToMissing:
146
123
  Exclude:
147
124
  - 'lib/fhir_models/bootstrap/model.rb'
148
125
 
149
- # Offense count: 9
150
- Style/MultipleComparison:
151
- Exclude:
152
- - 'lib/fhir_models/bootstrap/definitions.rb'
153
- - 'lib/fhir_models/bootstrap/generator.rb'
154
- - 'lib/fhir_models/bootstrap/model.rb'
155
- - 'lib/fhir_models/fhir_ext/structure_definition.rb'
156
-
157
126
  # Offense count: 2
158
- # Cop supports --auto-correct.
159
- # Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
160
- # SupportedStyles: predicate, comparison
161
- Style/NumericPredicate:
162
- Exclude:
163
- - 'spec/**/*'
164
- - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
165
-
166
- # Offense count: 1
167
- # Cop supports --auto-correct.
168
- Style/OrAssignment:
127
+ # Configuration parameters: AllowedMethods.
128
+ # AllowedMethods: respond_to_missing?
129
+ Style/OptionalBooleanParameter:
169
130
  Exclude:
170
131
  - 'lib/fhir_models/bootstrap/generator.rb'
132
+ - 'lib/fhir_models/bootstrap/template.rb'
171
133
 
172
- # Offense count: 16
173
- # Cop supports --auto-correct.
174
- # Configuration parameters: EnforcedStyle.
175
- # SupportedStyles: implicit, explicit
176
- Style/RescueStandardError:
177
- Exclude:
178
- - 'lib/fhir_models/bootstrap/definitions.rb'
179
- - 'lib/fhir_models/bootstrap/hashable.rb'
180
- - 'lib/fhir_models/bootstrap/json.rb'
181
- - 'lib/fhir_models/bootstrap/model.rb'
182
- - 'lib/fhir_models/bootstrap/xml.rb'
183
- - 'lib/fhir_models/fhir.rb'
184
- - 'lib/fhir_models/fhir_ext/structure_definition.rb'
185
- - 'lib/fhir_models/fhir_ext/structure_definition_finding.rb'
186
- - 'lib/fhir_models/fhirpath/expression.rb'
187
- - 'lib/fhir_models/fhirpath/parse.rb'
188
-
189
- # Offense count: 4
190
- # Cop supports --auto-correct.
191
- # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
192
- # AllowedMethods: present?, blank?, presence, try, try!
193
- Style/SafeNavigation:
194
- Exclude:
195
- - 'lib/fhir_models/bootstrap/definitions.rb'
196
- - 'lib/fhir_models/bootstrap/xml.rb'
197
- - 'lib/fhir_models/fhir_ext/structure_definition.rb'
198
-
199
- # Offense count: 7
134
+ # Offense count: 1
200
135
  # Cop supports --auto-correct.
201
- # Configuration parameters: EnforcedStyle.
202
- # SupportedStyles: forbid_for_all_comparison_operators, forbid_for_equality_operators_only, require_for_all_comparison_operators, require_for_equality_operators_only
203
- Style/YodaCondition:
136
+ # Configuration parameters: AllowModifier.
137
+ Style/SoleNestedConditional:
204
138
  Exclude:
205
- - 'lib/fhir_models/bootstrap/preprocess.rb'
206
- - 'lib/fhir_models/fhirpath/parse.rb'
139
+ - 'lib/fhir_models/fhir_ext/structure_definition_compare.rb'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.1.2
data/.simplecov CHANGED
@@ -1,14 +1,10 @@
1
1
  require 'simplecov'
2
2
  SimpleCov.command_name 'Unit Tests'
3
- SimpleCov.start do
4
- add_filter "test/"
5
- add_group "Library", "lib"
6
- end
7
3
 
8
4
  class SimpleCov::Formatter::QualityFormatter
9
5
  def format(result)
10
6
  SimpleCov::Formatter::HTMLFormatter.new.format(result)
11
- File.open("coverage/covered_percent", "w") do |f|
7
+ File.open('coverage/covered_percent', 'w') do |f|
12
8
  f.puts result.source_files.covered_percent.to_f
13
9
  end
14
10
  end
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.1.2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fhir_models (4.2.1)
4
+ fhir_models (4.3.0)
5
5
  bcp47 (>= 0.3)
6
6
  date_time_precision (>= 0.8)
7
7
  mime-types (>= 3.0)
@@ -14,7 +14,7 @@ GEM
14
14
  bcp47 (0.3.3)
15
15
  i18n
16
16
  coderay (1.1.3)
17
- concurrent-ruby (1.1.9)
17
+ concurrent-ruby (1.3.1)
18
18
  coolline (0.5.0)
19
19
  unicode_utils (~> 1.4)
20
20
  date_time_precision (0.8.1)
@@ -39,22 +39,21 @@ GEM
39
39
  guard-test (2.0.8)
40
40
  guard-compat (~> 1.2)
41
41
  test-unit (~> 3.0)
42
- i18n (1.8.10)
42
+ i18n (1.14.5)
43
43
  concurrent-ruby (~> 1.0)
44
- jaro_winkler (1.5.4)
45
44
  json (2.3.1)
46
45
  listen (3.3.1)
47
46
  rb-fsevent (~> 0.10, >= 0.10.3)
48
47
  rb-inotify (~> 0.9, >= 0.9.10)
49
48
  lumberjack (1.2.8)
50
49
  method_source (1.0.0)
51
- mime-types (3.3.1)
50
+ mime-types (3.5.2)
52
51
  mime-types-data (~> 3.2015)
53
- mime-types-data (3.2021.0901)
54
- mini_portile2 (2.5.3)
52
+ mime-types-data (3.2024.0507)
53
+ mini_portile2 (2.8.6)
55
54
  nenv (0.3.0)
56
- nokogiri (1.11.7)
57
- mini_portile2 (~> 2.5.0)
55
+ nokogiri (1.16.5)
56
+ mini_portile2 (~> 2.8.2)
58
57
  racc (~> 1.4)
59
58
  nokogiri-diff (0.2.0)
60
59
  nokogiri (~> 1.5)
@@ -62,22 +61,25 @@ GEM
62
61
  notiffany (0.1.3)
63
62
  nenv (~> 0.1)
64
63
  shellany (~> 0.0)
65
- parallel (1.20.1)
66
- parser (3.0.0.0)
64
+ parallel (1.23.0)
65
+ parser (3.2.2.4)
67
66
  ast (~> 2.4.1)
67
+ racc
68
68
  power_assert (1.2.0)
69
- pry (0.13.1)
69
+ pry (0.14.2)
70
70
  coderay (~> 1.1)
71
71
  method_source (~> 1.0)
72
72
  pry-coolline (0.2.5)
73
73
  coolline (~> 0.5)
74
- racc (1.5.2)
75
- rainbow (3.0.0)
74
+ racc (1.8.0)
75
+ rainbow (3.1.1)
76
76
  rake (13.0.1)
77
77
  rb-fsevent (0.10.4)
78
78
  rb-inotify (0.10.1)
79
79
  ffi (~> 1.0)
80
- rexml (3.2.5)
80
+ regexp_parser (2.8.2)
81
+ rexml (3.2.8)
82
+ strscan (>= 3.0.9)
81
83
  rspec (3.10.0)
82
84
  rspec-core (~> 3.10.0)
83
85
  rspec-expectations (~> 3.10.0)
@@ -91,26 +93,30 @@ GEM
91
93
  diff-lcs (>= 1.2.0, < 2.0)
92
94
  rspec-support (~> 3.10.0)
93
95
  rspec-support (3.10.0)
94
- rubocop (0.80.0)
95
- jaro_winkler (~> 1.5.1)
96
+ rubocop (1.23.0)
96
97
  parallel (~> 1.10)
97
- parser (>= 2.7.0.1)
98
+ parser (>= 3.0.0.0)
98
99
  rainbow (>= 2.2.2, < 4.0)
100
+ regexp_parser (>= 1.8, < 3.0)
99
101
  rexml
102
+ rubocop-ast (>= 1.12.0, < 2.0)
100
103
  ruby-progressbar (~> 1.7)
101
- unicode-display_width (>= 1.4.0, < 1.7)
102
- ruby-progressbar (1.11.0)
104
+ unicode-display_width (>= 1.4.0, < 3.0)
105
+ rubocop-ast (1.30.0)
106
+ parser (>= 3.2.1.0)
107
+ ruby-progressbar (1.13.0)
103
108
  shellany (0.0.1)
104
109
  simplecov (0.17.1)
105
110
  docile (~> 1.1)
106
111
  json (>= 1.8, < 3)
107
112
  simplecov-html (~> 0.10.0)
108
113
  simplecov-html (0.10.2)
114
+ strscan (3.1.0)
109
115
  tdiff (0.3.4)
110
116
  test-unit (3.3.6)
111
117
  power_assert
112
118
  thor (1.0.1)
113
- unicode-display_width (1.6.1)
119
+ unicode-display_width (2.5.0)
114
120
  unicode_utils (1.4.0)
115
121
 
116
122
  PLATFORMS
@@ -126,12 +132,12 @@ DEPENDENCIES
126
132
  pry-coolline
127
133
  rake
128
134
  rspec
129
- rubocop (= 0.80)
135
+ rubocop (= 1.23.0)
130
136
  simplecov (~> 0.17.0)
131
137
  test-unit
132
138
 
133
139
  RUBY VERSION
134
- ruby 2.5.6p201
140
+ ruby 3.1.2p20
135
141
 
136
142
  BUNDLED WITH
137
143
  2.2.21
data/Guardfile CHANGED
@@ -15,7 +15,7 @@
15
15
  #
16
16
  # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
17
 
18
- # Note: The cmd option is now required due to the increasing number of ways
18
+ # NOTE: The cmd option is now required due to the increasing number of ways
19
19
  # rspec may be run, below are examples of the most common uses.
20
20
  # * bundler: 'bundle exec rspec'
21
21
  # * bundler binstubs: 'bin/rspec'
data/fhir_models.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
+ spec.required_ruby_version = '>= 3.0.0'
24
25
  spec.add_dependency 'nokogiri', '>= 1.11.4'
25
26
  spec.add_dependency 'date_time_precision', '>= 0.8'
26
27
  spec.add_dependency 'bcp47', '>= 0.3'
@@ -34,7 +35,7 @@ Gem::Specification.new do |spec|
34
35
  spec.add_development_dependency 'rspec'
35
36
  spec.add_development_dependency 'simplecov', '~> 0.17.0'
36
37
  spec.add_development_dependency 'nokogiri-diff'
37
- spec.add_development_dependency 'rubocop', '0.80'
38
+ spec.add_development_dependency 'rubocop', '1.23.0'
38
39
  spec.add_development_dependency 'guard-rspec'
39
40
  spec.add_development_dependency 'guard-test'
40
41
  end
@@ -44,6 +44,7 @@ module FHIR
44
44
  def self.type_definition(type_name)
45
45
  return nil if type_name.nil?
46
46
  return @@cache[type_name] if @@cache[type_name]
47
+
47
48
  definition = types.find { |x| x['xmlId'] == type_name || x['name'] == type_name || x['url'] == type_name }
48
49
  @@cache[type_name] = FHIR::StructureDefinition.new(definition) if definition
49
50
  @@cache[type_name]
@@ -73,6 +74,7 @@ module FHIR
73
74
  def self.resource_definition(resource_name)
74
75
  return nil if resource_name.nil?
75
76
  return @@cache[resource_name] if @@cache[resource_name]
77
+
76
78
  definition = resources.find { |x| x['xmlId'] == resource_name || x['name'] == resource_name || x['url'] == resource_name }
77
79
  @@cache[resource_name] = FHIR::StructureDefinition.new(definition) if definition
78
80
  @@cache[resource_name]
@@ -103,8 +105,10 @@ module FHIR
103
105
 
104
106
  def self.extension_definition(extension_name)
105
107
  return nil if extension_name.nil?
108
+
106
109
  extension = extensions.find { |x| x['xmlId'] == extension_name || x['name'] == extension_name || x['url'] == extension_name }
107
110
  return nil if extension.nil?
111
+
108
112
  FHIR::StructureDefinition.new(extension)
109
113
  end
110
114
  deprecate :get_extension_definition, :extension_definition
@@ -112,8 +116,10 @@ module FHIR
112
116
  # Get the basetype (String) for a given profile or extension.
113
117
  def self.basetype(uri)
114
118
  return nil if uri.nil?
119
+
115
120
  defn = profiles.detect { |x| x['url'] == uri } || extensions.detect { |x| x['url'] == uri }
116
121
  return nil if defn.nil?
122
+
117
123
  defn['baseType']
118
124
  end
119
125
  deprecate :get_basetype, :basetype
@@ -121,14 +127,17 @@ module FHIR
121
127
  # Get the StructureDefinition for a given profile.
122
128
  def self.profile(uri)
123
129
  return nil if uri.nil?
130
+
124
131
  defn = profiles.detect { |x| x['url'] == uri } || extensions.detect { |x| x['url'] == uri }
125
132
  return nil if defn.nil?
133
+
126
134
  FHIR::StructureDefinition.new(defn)
127
135
  end
128
136
  deprecate :get_profile, :profile
129
137
 
130
138
  def self.profiles_for_resource(resource_name)
131
139
  return nil if resource_name.nil?
140
+
132
141
  profiles.select { |x| x['baseType'] == resource_name }.map { |x| FHIR::StructureDefinition.new(x) }
133
142
  end
134
143
  deprecate :get_profiles_for_resource, :profile_for_resource
@@ -136,6 +145,7 @@ module FHIR
136
145
  # Get a dynamically generated class for a given profile.
137
146
  def self.get_profile_class(uri)
138
147
  return nil if uri.nil?
148
+
139
149
  load_profiles
140
150
  load_extensions
141
151
 
@@ -161,7 +171,7 @@ module FHIR
161
171
  load f
162
172
  # set the return class type
163
173
  klass = Object.const_get("FHIR::Profile::#{id}::#{type}")
164
- rescue
174
+ rescue StandardError
165
175
  FHIR.logger.error "Failed to generate class for profile #{uri}"
166
176
  end
167
177
  # unlink the file so it can be garbage collected
@@ -197,6 +207,7 @@ module FHIR
197
207
  def self.get_codes(uri)
198
208
  return nil if uri.nil?
199
209
  return @@cache[uri] if @@cache[uri]
210
+
200
211
  valueset = expansions.find { |x| x['url'] == uri } || valuesets.find { |x| x['url'] == uri && x['resourceType'] == 'ValueSet' }
201
212
  unless valueset.nil?
202
213
  @@cache[uri] = {}
@@ -214,12 +225,12 @@ module FHIR
214
225
  system_url = code_group['system']
215
226
  @@cache[uri][system_url] ||= []
216
227
  if !code_group['concept'].nil?
217
- code_group['concept'].each { |y| @@cache[uri][system_url] << y['code'] } if code_group['concept']
228
+ code_group['concept']&.each { |y| @@cache[uri][system_url] << y['code'] }
218
229
  elsif code_group.size == 1
219
230
  # i.e. the only key is 'system', so you import the entire thing
220
231
  systems = valuesets.select { |x| x['resourceType'] == 'CodeSystem' && x['url'] == system_url }
221
232
  systems.each do |included_system|
222
- included_system['concept'].each { |y| @@cache[uri][system_url] << y['code'] } if included_system['concept']
233
+ included_system['concept']&.each { |y| @@cache[uri][system_url] << y['code'] }
223
234
  end
224
235
  end
225
236
  end
@@ -233,6 +244,7 @@ module FHIR
233
244
  # If one can't be found, return nil
234
245
  def self.get_display(uri, code)
235
246
  return nil if uri.nil? || code.nil?
247
+
236
248
  valuesets_and_expansions = expansions.select { |ex| ex['compose']['include'].detect { |i| i['system'] == uri } }
237
249
  valuesets_and_expansions += valuesets.select { |vs| vs['url'] == uri }
238
250
  code_hash = nil
@@ -272,6 +284,7 @@ module FHIR
272
284
 
273
285
  def self.search_parameters(type_name)
274
286
  return nil if type_name.nil?
287
+
275
288
  search_params.select { |p| p['base'].include?(type_name) && p['xpath'] && !p['xpath'].include?('extension') }.map { |p| p['code'] }
276
289
  end
277
290
  deprecate :get_search_parameters, :search_parameters
@@ -24,7 +24,7 @@ module FHIR
24
24
  def serialize
25
25
  hash = {}
26
26
  instance_variables.each do |v|
27
- hash[v.to_s[1..-1]] = instance_variable_get(v)
27
+ hash[v.to_s[1..]] = instance_variable_get(v)
28
28
  end
29
29
  hash.delete('name')
30
30
  prune(hash)
@@ -32,7 +32,7 @@ module FHIR
32
32
 
33
33
  def fix_name(name)
34
34
  fix = nil
35
- fix = "local_#{name}" if %w[class method resourceType].include?(name)
35
+ fix = "local_#{name}" if ['class', 'method', 'resourceType'].include?(name)
36
36
  fix
37
37
  end
38
38
  end
@@ -1,7 +1,7 @@
1
1
  module FHIR
2
2
  module Boot
3
3
  class Generator
4
- KNOWN_MISSING_EXPANSIONS = %w[bcp47 bcp13.txt mimetypes LL379-9].freeze
4
+ KNOWN_MISSING_EXPANSIONS = ['bcp47', 'bcp13.txt', 'mimetypes', 'LL379-9'].freeze
5
5
 
6
6
  attr_accessor :lib
7
7
  attr_accessor :defn
@@ -119,6 +119,7 @@ module FHIR
119
119
  # skip the first element
120
120
  next if element['path'] == path_type
121
121
  next unless element['type']
122
+
122
123
  unique_types = element['type'].map { |t| t['code'] }.uniq
123
124
  if unique_types.include?('Element') || unique_types.include?('BackboneElement')
124
125
  child_templates << element['path']
@@ -128,6 +129,7 @@ module FHIR
128
129
  child_templates.each do |child_name|
129
130
  child_fixed_name = cap_first(child_name.gsub("#{type_name}.", ''))
130
131
  next if child_fixed_name.include?('.')
132
+
131
133
  child_def = { 'id' => child_fixed_name, 'snapshot' => { 'element' => [] } }
132
134
  # Copy the element definitions for the child structure
133
135
  structure_def['snapshot']['element'].each do |element|
@@ -189,13 +191,13 @@ module FHIR
189
191
  field.path = element['path'].gsub(path_type, type_name)
190
192
  field.type = data_type
191
193
  field.type = 'Extension' if field.path.end_with?('extension')
192
- field.type_profiles = profiles if data_type == 'Reference' || data_type == 'Extension'
194
+ field.type_profiles = profiles if ['Reference', 'Extension'].include?(data_type)
193
195
  field.min = element['min']
194
196
  field.max = element['max']
195
197
  field.max = field.max.to_i
196
198
  field.max = '*' if element['max'] == '*'
197
199
 
198
- if %w[code Coding CodeableConcept].include?(data_type) && element['binding']
200
+ if ['code', 'Coding', 'CodeableConcept'].include?(data_type) && element['binding']
199
201
  field.binding = element['binding']
200
202
  field.binding['uri'] = field.binding['valueSet']
201
203
  field.binding.delete('valueSet')
@@ -204,15 +206,15 @@ module FHIR
204
206
  # set the actual code list
205
207
  binding_uri = field.binding['uri']
206
208
  # Strip off the |4.0.0 or |4.0.1 or |2014-03-26 or similar from the ends of URLs
207
- binding_uri&.gsub!(/\|[A-Za-z0-9\.\-]*/, '')
209
+ binding_uri&.gsub!(/\|[A-Za-z0-9.\-]*/, '')
208
210
  codes = @defn.get_codes(binding_uri)
209
211
  field.valid_codes = codes unless codes.nil?
210
212
  if field.valid_codes.empty? && binding_uri && !binding_uri.end_with?(*KNOWN_MISSING_EXPANSIONS)
211
213
  FHIR.logger.warn " MISSING EXPANSION -- #{field.path} #{field.min}..#{field.max}: #{binding_uri} (#{field.binding['strength']})"
212
214
  @missing_expansions = true
213
- @missing_required_expansion = (field.binding['strength'] == 'required') unless @missing_required_expansion
215
+ @missing_required_expansion ||= (field.binding['strength'] == 'required')
214
216
  end
215
- elsif %w[Element BackboneElement].include?(data_type)
217
+ elsif ['Element', 'BackboneElement'].include?(data_type)
216
218
  # This is a nested structure or class
217
219
  field.type = "#{hierarchy.join('::')}::#{cap_first(field.name)}"
218
220
  end
@@ -223,7 +225,7 @@ module FHIR
223
225
  field = FHIR::Field.new(field_base_name)
224
226
  field.path = element['path'].gsub(path_type, type_name)
225
227
  field.type = element['contentReference']
226
- field.type = field.type[1..-1] if field.type[0] == '#'
228
+ field.type = field.type[1..] if field.type[0] == '#'
227
229
  if hierarchy.last == field.type
228
230
  # reference to self
229
231
  field.type = hierarchy.join('::').to_s