onc_certification_g10_test_kit 2.3.0 → 3.0.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/lib/inferno/terminology/expected_manifest.yml +242 -29
- data/lib/inferno/terminology/fhir_package_manager.rb +27 -0
- data/lib/inferno/terminology/loader.rb +22 -1
- data/lib/inferno/terminology/tasks/create_value_set_validators.rb +1 -1
- data/lib/inferno/terminology/tasks/download_fhir_terminology.rb +5 -0
- data/lib/inferno/terminology/value_set.rb +51 -5
- data/lib/onc_certification_g10_test_kit/base_token_refresh_group.rb +5 -4
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_stu1.rb +5 -0
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_stu2.rb +2 -0
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +206 -28
- data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +25 -40
- data/lib/onc_certification_g10_test_kit/encounter_context_test.rb +30 -0
- data/lib/onc_certification_g10_test_kit/feature.rb +5 -8
- data/lib/onc_certification_g10_test_kit/limited_scope_grant_test.rb +18 -5
- data/lib/onc_certification_g10_test_kit/profile_selector.rb +175 -0
- data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +54 -4
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_5_api_group.rb +93 -0
- data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +50 -5
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group.rb +94 -0
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2.rb +94 -0
- data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +197 -13
- data/lib/onc_certification_g10_test_kit/smart_invalid_pkce_group.rb +310 -0
- data/lib/onc_certification_g10_test_kit/smart_invalid_token_group_stu2.rb +211 -0
- data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +135 -9
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group.rb +16 -4
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2.rb +130 -0
- data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +134 -67
- data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +166 -11
- data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +119 -135
- data/lib/onc_certification_g10_test_kit/version.rb +1 -1
- data/lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb +19 -0
- data/lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb +7 -1
- data/lib/onc_certification_g10_test_kit.rb +115 -74
- metadata +19 -11
- data/lib/onc_certification_g10_test_kit/profile_guesser.rb +0 -72
@@ -1,22 +1,25 @@
|
|
1
|
-
require_relative 'onc_certification_g10_test_kit/feature'
|
2
|
-
|
3
1
|
require 'smart_app_launch/smart_stu1_suite'
|
4
|
-
require '
|
5
|
-
require 'us_core_test_kit
|
2
|
+
require 'smart_app_launch/smart_stu2_suite'
|
3
|
+
require 'us_core_test_kit'
|
6
4
|
|
7
5
|
require_relative 'onc_certification_g10_test_kit/configuration_checker'
|
8
6
|
require_relative 'onc_certification_g10_test_kit/version'
|
9
7
|
|
8
|
+
require_relative 'onc_certification_g10_test_kit/feature'
|
10
9
|
require_relative 'onc_certification_g10_test_kit/single_patient_api_group'
|
11
|
-
|
12
|
-
|
13
|
-
end
|
10
|
+
require_relative 'onc_certification_g10_test_kit/single_patient_us_core_4_api_group'
|
11
|
+
require_relative 'onc_certification_g10_test_kit/single_patient_us_core_5_api_group'
|
14
12
|
require_relative 'onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group'
|
15
13
|
require_relative 'onc_certification_g10_test_kit/smart_invalid_token_group'
|
14
|
+
require_relative 'onc_certification_g10_test_kit/smart_invalid_token_group_stu2'
|
15
|
+
require_relative 'onc_certification_g10_test_kit/smart_invalid_pkce_group'
|
16
16
|
require_relative 'onc_certification_g10_test_kit/smart_limited_app_group'
|
17
17
|
require_relative 'onc_certification_g10_test_kit/smart_standalone_patient_app_group'
|
18
18
|
require_relative 'onc_certification_g10_test_kit/smart_ehr_practitioner_app_group'
|
19
19
|
require_relative 'onc_certification_g10_test_kit/smart_public_standalone_launch_group'
|
20
|
+
require_relative 'onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2'
|
21
|
+
require_relative 'onc_certification_g10_test_kit/smart_ehr_patient_launch_group'
|
22
|
+
require_relative 'onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2'
|
20
23
|
require_relative 'onc_certification_g10_test_kit/multi_patient_api_stu1'
|
21
24
|
require_relative 'onc_certification_g10_test_kit/multi_patient_api_stu2'
|
22
25
|
require_relative 'onc_certification_g10_test_kit/terminology_binding_validator'
|
@@ -67,7 +70,8 @@ module ONCCertificationG10TestKit
|
|
67
70
|
(
|
68
71
|
message.type == 'error' && (
|
69
72
|
message.message.match?(/\A\S+: \S+: Unknown Code/) ||
|
70
|
-
message.message.match?(/\A\S+: \S+: None of the codings provided are in the value set/)
|
73
|
+
message.message.match?(/\A\S+: \S+: None of the codings provided are in the value set/) ||
|
74
|
+
message.message.match?(/\A\S+: \S+: The Coding provided \(\S*\) is not in the value set/)
|
71
75
|
)
|
72
76
|
)
|
73
77
|
true
|
@@ -114,35 +118,54 @@ module ONCCertificationG10TestKit
|
|
114
118
|
well_known_route_handler
|
115
119
|
)
|
116
120
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
121
|
+
suite_option :us_core_version,
|
122
|
+
title: 'US Core Version',
|
123
|
+
list_options: [
|
124
|
+
{
|
125
|
+
label: 'US Core 3.1.1 / USCDI v1',
|
126
|
+
value: 'us_core_3'
|
127
|
+
},
|
128
|
+
{
|
129
|
+
label: 'US Core 4.0.0 / USCDI v1',
|
130
|
+
value: 'us_core_4'
|
131
|
+
},
|
132
|
+
{
|
133
|
+
label: 'US Core 5.0.1 / USCDI v2',
|
134
|
+
value: 'us_core_5'
|
135
|
+
}
|
136
|
+
]
|
137
|
+
|
138
|
+
suite_option :smart_app_launch_version,
|
139
|
+
title: 'SMART App Launch Version',
|
140
|
+
list_options: [
|
141
|
+
{
|
142
|
+
label: 'SMART App Launch 1.0.0',
|
143
|
+
value: 'smart_app_launch_1'
|
144
|
+
},
|
145
|
+
{
|
146
|
+
label: 'SMART App Launch 2.0.0',
|
147
|
+
value: 'smart_app_launch_2'
|
148
|
+
}
|
149
|
+
]
|
150
|
+
|
151
|
+
suite_option :multi_patient_version,
|
152
|
+
title: 'Bulk Data Version',
|
153
|
+
list_options: [
|
154
|
+
{
|
155
|
+
label: 'Bulk Data 1.0.1',
|
156
|
+
value: 'multi_patient_api_stu1'
|
157
|
+
},
|
158
|
+
{
|
159
|
+
label: 'Bulk Data 2.0.0',
|
160
|
+
value: 'multi_patient_api_stu2'
|
161
|
+
}
|
162
|
+
]
|
163
|
+
|
164
|
+
config(
|
165
|
+
options: {
|
166
|
+
post_authorization_uri: "#{Inferno::Application['base_url']}/custom/smart_stu2/post_auth"
|
167
|
+
}
|
168
|
+
)
|
146
169
|
|
147
170
|
description %(
|
148
171
|
The ONC Certification (g)(10) Standardized API Test Kit is a testing tool for
|
@@ -151,11 +174,6 @@ module ONCCertificationG10TestKit
|
|
151
174
|
Patient and Population Services criterion § 170.315(g)(10) in the 2015
|
152
175
|
Edition Cures Update.
|
153
176
|
|
154
|
-
This test kit is the successor to "Inferno Program Edition". Please [create an
|
155
|
-
issue](https://github.com/inferno-framework/g10-certification-test-kit/issues)
|
156
|
-
if there are discrepencies between these tests and the "Inferno Program
|
157
|
-
Edition v1.9" tests.
|
158
|
-
|
159
177
|
To get started, please first register the Inferno client as a SMART App
|
160
178
|
with the following information:
|
161
179
|
|
@@ -170,6 +188,19 @@ module ONCCertificationG10TestKit
|
|
170
188
|
Systems must pass all tests in order to qualify for ONC certification.
|
171
189
|
)
|
172
190
|
|
191
|
+
suite_summary %(
|
192
|
+
The ONC Certification (g)(10) Standardized API Test Kit is a testing tool
|
193
|
+
for Health Level 7 (HL7®) Fast Healthcare Interoperability Resources
|
194
|
+
(FHIR®) services seeking to meet the requirements of the Standardized API
|
195
|
+
for Patient and Population Services criterion § 170.315(g)(10) in the 2015
|
196
|
+
Edition Cures Update rule.
|
197
|
+
|
198
|
+
Systems may adopt later versions of standards than those named in the rule
|
199
|
+
as approved by the ONC Standards Version Advancement Process (SVAP).
|
200
|
+
Please select which approved version of each standard to use, and click
|
201
|
+
‘Select Options’ to begin testing.
|
202
|
+
)
|
203
|
+
|
173
204
|
input_instructions %(
|
174
205
|
Register Inferno as a SMART app using the following information:
|
175
206
|
|
@@ -188,23 +219,17 @@ module ONCCertificationG10TestKit
|
|
188
219
|
|
189
220
|
group from: 'g10_smart_ehr_practitioner_app'
|
190
221
|
|
191
|
-
group from: 'g10_single_patient_api'
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
required_suite_options: { us_core_version: 'us_core_4' }
|
198
|
-
end
|
222
|
+
group from: 'g10_single_patient_api',
|
223
|
+
required_suite_options: { us_core_version: 'us_core_3' }
|
224
|
+
group from: 'g10_single_patient_us_core_4_api',
|
225
|
+
required_suite_options: { us_core_version: 'us_core_4' }
|
226
|
+
group from: 'g10_single_patient_us_core_5_api',
|
227
|
+
required_suite_options: { us_core_version: 'us_core_5' }
|
199
228
|
|
200
|
-
group from: 'multi_patient_api'
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
if Feature.bulk_data_v2?
|
205
|
-
group from: 'multi_patient_api_stu2',
|
206
|
-
required_suite_options: { multi_patient_version: 'multi_patient_api_stu2' }
|
207
|
-
end
|
229
|
+
group from: 'multi_patient_api',
|
230
|
+
required_suite_options: { multi_patient_version: 'multi_patient_api_stu1' }
|
231
|
+
group from: 'multi_patient_api_stu2',
|
232
|
+
required_suite_options: { multi_patient_version: 'multi_patient_api_stu2' }
|
208
233
|
|
209
234
|
group do
|
210
235
|
title 'Additional Tests'
|
@@ -217,27 +242,43 @@ module ONCCertificationG10TestKit
|
|
217
242
|
may require special setup on the part of the tester.
|
218
243
|
)
|
219
244
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
%(
|
224
|
-
### #{self.class.parent.title}
|
245
|
+
default_redirect_message_proc = lambda do |auth_url|
|
246
|
+
%(
|
247
|
+
### #{self.class.parent.title}
|
225
248
|
|
226
|
-
|
227
|
-
server](#{auth_url}).
|
249
|
+
[Follow this link to authorize with the SMART server](#{auth_url}).
|
228
250
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
251
|
+
Tests will resume once Inferno receives a request at
|
252
|
+
`#{config.options[:redirect_uri]}` with a state of `#{state}`.
|
253
|
+
)
|
254
|
+
end
|
255
|
+
|
256
|
+
group from: :g10_public_standalone_launch,
|
257
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_1' },
|
258
|
+
config: { options: { redirect_message_proc: default_redirect_message_proc } }
|
259
|
+
group from: :g10_public_standalone_launch_stu2,
|
260
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_2' },
|
261
|
+
config: { options: { redirect_message_proc: default_redirect_message_proc } }
|
235
262
|
|
236
|
-
group from: :g10_public_standalone_launch
|
237
263
|
group from: :g10_token_revocation
|
238
264
|
|
239
|
-
group from: :g10_smart_invalid_aud
|
240
|
-
|
265
|
+
group from: :g10_smart_invalid_aud,
|
266
|
+
config: { options: { redirect_message_proc: default_redirect_message_proc } }
|
267
|
+
|
268
|
+
group from: :g10_smart_invalid_token_request,
|
269
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_1' },
|
270
|
+
config: { options: { redirect_message_proc: default_redirect_message_proc } }
|
271
|
+
group from: :g10_smart_invalid_token_request_stu2,
|
272
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_2' },
|
273
|
+
config: { options: { redirect_message_proc: default_redirect_message_proc } }
|
274
|
+
|
275
|
+
group from: :g10_smart_invalid_pkce_code_verifier_group,
|
276
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_2' }
|
277
|
+
|
278
|
+
group from: :g10_ehr_patient_launch,
|
279
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_1' }
|
280
|
+
group from: :g10_ehr_patient_launch_stu2,
|
281
|
+
required_suite_options: { smart_app_launch_version: 'smart_app_launch_2' }
|
241
282
|
|
242
283
|
group from: :g10_visual_inspection_and_attestations
|
243
284
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onc_certification_g10_test_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen MacVicar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bloomer
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.3.
|
47
|
+
version: 0.3.9
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.3.
|
54
|
+
version: 0.3.9
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: json-jwt
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - '='
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
145
|
+
version: 0.3.0
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
152
|
+
version: 0.3.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: database_cleaner-sequel
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,7 +206,8 @@ dependencies:
|
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '3.11'
|
209
|
-
description: ONC Certification (g)(10)
|
209
|
+
description: ONC Certification (g)(10) Standardized API for Patient and Population
|
210
|
+
Services Test Kit
|
210
211
|
email:
|
211
212
|
- inferno@groups.mitre.org
|
212
213
|
executables: []
|
@@ -255,6 +256,7 @@ files:
|
|
255
256
|
- lib/onc_certification_g10_test_kit/bulk_data_jwks.json
|
256
257
|
- lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb
|
257
258
|
- lib/onc_certification_g10_test_kit/configuration_checker.rb
|
259
|
+
- lib/onc_certification_g10_test_kit/encounter_context_test.rb
|
258
260
|
- lib/onc_certification_g10_test_kit/export_kick_off_performer.rb
|
259
261
|
- lib/onc_certification_g10_test_kit/feature.rb
|
260
262
|
- lib/onc_certification_g10_test_kit/igs/StructureDefinition-bodyheight.json
|
@@ -268,17 +270,23 @@ files:
|
|
268
270
|
- lib/onc_certification_g10_test_kit/multi_patient_api_stu2.rb
|
269
271
|
- lib/onc_certification_g10_test_kit/onc_program_procedure.yml
|
270
272
|
- lib/onc_certification_g10_test_kit/patient_context_test.rb
|
271
|
-
- lib/onc_certification_g10_test_kit/
|
273
|
+
- lib/onc_certification_g10_test_kit/profile_selector.rb
|
272
274
|
- lib/onc_certification_g10_test_kit/resource_access_test.rb
|
273
275
|
- lib/onc_certification_g10_test_kit/restricted_access_test.rb
|
274
276
|
- lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb
|
275
277
|
- lib/onc_certification_g10_test_kit/single_patient_api_group.rb
|
276
278
|
- lib/onc_certification_g10_test_kit/single_patient_us_core_4_api_group.rb
|
279
|
+
- lib/onc_certification_g10_test_kit/single_patient_us_core_5_api_group.rb
|
277
280
|
- lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb
|
281
|
+
- lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group.rb
|
282
|
+
- lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2.rb
|
278
283
|
- lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb
|
284
|
+
- lib/onc_certification_g10_test_kit/smart_invalid_pkce_group.rb
|
279
285
|
- lib/onc_certification_g10_test_kit/smart_invalid_token_group.rb
|
286
|
+
- lib/onc_certification_g10_test_kit/smart_invalid_token_group_stu2.rb
|
280
287
|
- lib/onc_certification_g10_test_kit/smart_limited_app_group.rb
|
281
288
|
- lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group.rb
|
289
|
+
- lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2.rb
|
282
290
|
- lib/onc_certification_g10_test_kit/smart_scopes_test.rb
|
283
291
|
- lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb
|
284
292
|
- lib/onc_certification_g10_test_kit/tasks/generate_matrix.rb
|
@@ -290,12 +298,12 @@ files:
|
|
290
298
|
- lib/onc_certification_g10_test_kit/version.rb
|
291
299
|
- lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb
|
292
300
|
- lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb
|
293
|
-
homepage: https://github.com/
|
301
|
+
homepage: https://github.com/onc-healthit/onc-certification-g10-test-kit
|
294
302
|
licenses:
|
295
303
|
- Apache-2.0
|
296
304
|
metadata:
|
297
|
-
homepage_uri: https://github.com/
|
298
|
-
source_code_uri: https://github.com/
|
305
|
+
homepage_uri: https://github.com/onc-healthit/onc-certification-g10-test-kit
|
306
|
+
source_code_uri: https://github.com/onc-healthit/onc-certification-g10-test-kit
|
299
307
|
post_install_message:
|
300
308
|
rdoc_options: []
|
301
309
|
require_paths:
|
@@ -1,72 +0,0 @@
|
|
1
|
-
module ONCCertificationG10TestKit
|
2
|
-
module ProfileGuesser
|
3
|
-
def extract_profile(profile)
|
4
|
-
case profile
|
5
|
-
when 'Medication'
|
6
|
-
return USCoreTestKit::USCoreV311::USCoreTestSuite.metadata.find do |meta|
|
7
|
-
meta.resource == profile
|
8
|
-
end.profile_url
|
9
|
-
when 'Location'
|
10
|
-
return 'http://hl7.org/fhir/StructureDefinition/Location'
|
11
|
-
end
|
12
|
-
"USCoreTestKit::USCoreV311::#{profile}Group".constantize.metadata.profile_url
|
13
|
-
end
|
14
|
-
|
15
|
-
def observation_contains_code(observation_resource, code)
|
16
|
-
observation_resource&.code&.coding&.any? { |coding| coding&.code == code }
|
17
|
-
end
|
18
|
-
|
19
|
-
def resource_contains_category(resource, category_code, category_system = nil) # rubocop:disable Metrics/CyclomaticComplexity
|
20
|
-
resource&.category&.any? do |category|
|
21
|
-
category.coding&.any? do |coding|
|
22
|
-
coding.code == category_code &&
|
23
|
-
(category_system.blank? || coding.system.blank? || category_system == coding.system)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def guess_profile(resource) # rubocop:disable Metrics/CyclomaticComplexity
|
29
|
-
case resource.resourceType
|
30
|
-
when 'DiagnosticReport'
|
31
|
-
return extract_profile('DiagnosticReportLab') if resource_contains_category(resource, 'LAB', 'http://terminology.hl7.org/CodeSystem/v2-0074')
|
32
|
-
|
33
|
-
extract_profile('DiagnosticReportNote')
|
34
|
-
when 'Observation'
|
35
|
-
return extract_profile('Smokingstatus') if observation_contains_code(resource, '72166-2')
|
36
|
-
|
37
|
-
return extract_profile('ObservationLab') if resource_contains_category(resource, 'laboratory', 'http://terminology.hl7.org/CodeSystem/observation-category')
|
38
|
-
|
39
|
-
return extract_profile('PediatricBmiForAge') if observation_contains_code(resource, '59576-9')
|
40
|
-
|
41
|
-
return extract_profile('PediatricWeightForHeight') if observation_contains_code(resource, '77606-2')
|
42
|
-
|
43
|
-
return extract_profile('PulseOximetry') if observation_contains_code(resource, '59408-5')
|
44
|
-
|
45
|
-
return extract_profile('HeadCircumference') if observation_contains_code(resource, '8289-1')
|
46
|
-
|
47
|
-
# FHIR Vital Signs profiles: https://www.hl7.org/fhir/observation-vitalsigns.html
|
48
|
-
# Vital Signs Panel, Oxygen Saturation are not required by USCDI
|
49
|
-
# Body Mass Index is replaced by :pediatric_bmi_age Profile
|
50
|
-
# Systolic Blood Pressure, Diastolic Blood Pressure are covered by :blood_pressure Profile
|
51
|
-
# Head Circumference is replaced by US Core Head Occipital-frontal Circumference Percentile Profile
|
52
|
-
return extract_profile('Bp') if observation_contains_code(resource, '85354-9')
|
53
|
-
|
54
|
-
return extract_profile('Bodyheight') if observation_contains_code(resource, '8302-2')
|
55
|
-
|
56
|
-
return extract_profile('Bodytemp') if observation_contains_code(resource, '8310-5')
|
57
|
-
|
58
|
-
return extract_profile('Bodyweight') if observation_contains_code(resource, '29463-7')
|
59
|
-
|
60
|
-
return extract_profile('Heartrate') if observation_contains_code(resource, '8867-4')
|
61
|
-
|
62
|
-
return extract_profile('Resprate') if observation_contains_code(resource, '9279-1')
|
63
|
-
|
64
|
-
nil
|
65
|
-
else
|
66
|
-
extract_profile(resource.resourceType)
|
67
|
-
end
|
68
|
-
rescue StandardError
|
69
|
-
skip "Could not determine profile of \"#{resource.resourceType}\" resource."
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|