onc_certification_g10_test_kit 5.2.0 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/onc_certification_g10_test_kit/bulk_data_authorization.rb +0 -2
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_cancel_stu1.rb +2 -1
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_stu1.rb +0 -6
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +2 -28
- data/lib/onc_certification_g10_test_kit/configuration_checker.rb +12 -4
- data/lib/onc_certification_g10_test_kit/feature.rb +4 -5
- data/lib/onc_certification_g10_test_kit/g10_options.rb +7 -0
- data/lib/onc_certification_g10_test_kit/onc_program_procedure.yml +11 -23
- data/lib/onc_certification_g10_test_kit/smart_invalid_token_refresh_test.rb +0 -2
- data/lib/onc_certification_g10_test_kit/version.rb +1 -1
- data/lib/onc_certification_g10_test_kit.rb +36 -10
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d020577f35711d3fd77f83f65687e592325aece0cf714a2cc16e199b233c417
|
4
|
+
data.tar.gz: 873a37519d331ef62b7ac1d9720b1b77f5538a3beb2c9be548ea1cd4cf6ecfdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e766fbe14972448a02ef08c3e8a6eeae64f0b7a8812e5b5372f62642e49a1990c48fbbf28ef73e049ec5ed151df3c3128e9a6334c406859b5bfbf31ddcb1d2d5
|
7
|
+
data.tar.gz: 1703bdbab3f6c90cf4947076710eefa3510aa2a9f9d70953e9fd7cd85ca9c8e4a423cd2b961ea52d22eca993a00bbc23af5a392c081e1a245d154ead2e00f80b
|
@@ -205,8 +205,6 @@ module ONCCertificationG10TestKit
|
|
205
205
|
output :bearer_token
|
206
206
|
|
207
207
|
run do
|
208
|
-
skip_if authentication_response.blank?, 'No authentication response received.'
|
209
|
-
|
210
208
|
assert_valid_json(authentication_response)
|
211
209
|
response_body = JSON.parse(authentication_response)
|
212
210
|
|
@@ -137,8 +137,6 @@ module ONCCertificationG10TestKit
|
|
137
137
|
include ExportKickOffPerformer
|
138
138
|
|
139
139
|
run do
|
140
|
-
skip_if bearer_token.blank?, 'Could not verify this functionality when bearer token is not set'
|
141
|
-
|
142
140
|
perform_export_kick_off_request(use_token: false)
|
143
141
|
assert_response_status([400, 401])
|
144
142
|
end
|
@@ -188,8 +186,6 @@ module ONCCertificationG10TestKit
|
|
188
186
|
output :status_response, :requires_access_token
|
189
187
|
|
190
188
|
run do
|
191
|
-
skip 'Server response did not have Content-Location in header' unless polling_url.present?
|
192
|
-
|
193
189
|
timeout = bulk_timeout.to_i
|
194
190
|
|
195
191
|
if !timeout.positive?
|
@@ -262,8 +258,6 @@ module ONCCertificationG10TestKit
|
|
262
258
|
output :status_output, :bulk_download_url
|
263
259
|
|
264
260
|
run do
|
265
|
-
assert status_response.present?, 'Bulk Data Server status response not found'
|
266
|
-
|
267
261
|
assert_valid_json(status_response)
|
268
262
|
status_output = JSON.parse(status_response)['output']
|
269
263
|
assert status_output, 'Bulk Data Server status response does not contain output'
|
@@ -62,15 +62,11 @@ module ONCCertificationG10TestKit
|
|
62
62
|
DESCRIPTION
|
63
63
|
# link 'http://hl7.org/fhir/uv/bulkdata/STU1.0.1/export/index.html#file-request'
|
64
64
|
|
65
|
-
input :bulk_download_url
|
65
|
+
input :bulk_download_url, :requires_access_token, :requires_access_token, :bearer_token
|
66
66
|
|
67
67
|
run do
|
68
|
-
skip_if bulk_download_url.blank?, 'Could not verify this functionality when no download link was provided'
|
69
|
-
skip_if requires_access_token.blank?,
|
70
|
-
'Could not verify this functionality when requiresAccessToken is not provided'
|
71
68
|
omit_if requires_access_token == 'false',
|
72
69
|
'Could not verify this functionality when requiresAccessToken is false'
|
73
|
-
skip_if bearer_token.blank?, 'Could not verify this functionality when Bearer Token is not provided'
|
74
70
|
|
75
71
|
get(bulk_download_url, headers: { accept: 'application/fhir+ndjson' })
|
76
72
|
assert_response_status([400, 401])
|
@@ -207,7 +203,7 @@ module ONCCertificationG10TestKit
|
|
207
203
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition
|
208
204
|
|
209
205
|
|
210
|
-
For US Core
|
206
|
+
For US Core v6.1.0, evidence of support for the following two profiles must be demonstrated:
|
211
207
|
|
212
208
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-encounter-diagnosis
|
213
209
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns
|
@@ -392,28 +388,6 @@ module ONCCertificationG10TestKit
|
|
392
388
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate
|
393
389
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate
|
394
390
|
|
395
|
-
For US Core v5.0.1, this test expects evidence of the following US Core profiles
|
396
|
-
|
397
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test
|
398
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging
|
399
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sexual-orientation
|
400
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-social-history
|
401
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sdoh-assessment
|
402
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age
|
403
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height
|
404
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
|
405
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry
|
406
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus
|
407
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile
|
408
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-blood-pressure
|
409
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-bmi
|
410
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-head-circumference
|
411
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-height
|
412
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-weight
|
413
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-temperature
|
414
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate
|
415
|
-
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate
|
416
|
-
|
417
391
|
For US Core v6.1.0, this test expects evidence of the following US Core profiles
|
418
392
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
|
419
393
|
* http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-occupation
|
@@ -3,6 +3,7 @@ require_relative '../inferno/terminology/tasks/check_built_terminology'
|
|
3
3
|
module ONCCertificationG10TestKit
|
4
4
|
class ConfigurationChecker
|
5
5
|
EXPECTED_VALIDATOR_VERSION = '2.3.2'.freeze
|
6
|
+
EXPECTED_HL7_VALIDATOR_VERSION = '"6.3.0"'.freeze
|
6
7
|
|
7
8
|
def configuration_messages
|
8
9
|
validator_version_message + terminology_messages + version_message
|
@@ -21,8 +22,15 @@ module ONCCertificationG10TestKit
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def validator_version_message
|
24
|
-
|
25
|
+
if Feature.use_hl7_resource_validator?
|
26
|
+
expected_validator_version = EXPECTED_HL7_VALIDATOR_VERSION
|
27
|
+
validator_version_url = "#{validator_url}/validator/version"
|
28
|
+
else
|
29
|
+
expected_validator_version = EXPECTED_VALIDATOR_VERSION
|
30
|
+
validator_version_url = "#{validator_url}/version"
|
31
|
+
end
|
25
32
|
|
33
|
+
response = Faraday.get validator_version_url
|
26
34
|
if response.body.starts_with? '{'
|
27
35
|
version_json = JSON.parse(response.body)
|
28
36
|
version = version_json['inferno-framework/fhir-validator-wrapper']
|
@@ -30,15 +38,15 @@ module ONCCertificationG10TestKit
|
|
30
38
|
version = response.body
|
31
39
|
end
|
32
40
|
|
33
|
-
if version ==
|
41
|
+
if version == expected_validator_version
|
34
42
|
[{
|
35
43
|
type: 'info',
|
36
|
-
message: "FHIR validator is the expected version `#{
|
44
|
+
message: "FHIR validator is the expected version `#{expected_validator_version}`"
|
37
45
|
}]
|
38
46
|
else
|
39
47
|
[{
|
40
48
|
type: 'error',
|
41
|
-
message: "Expected FHIR validator version `#{
|
49
|
+
message: "Expected FHIR validator version `#{expected_validator_version}`, but found `#{version}`"
|
42
50
|
}]
|
43
51
|
end
|
44
52
|
rescue JSON::ParserError => e
|
@@ -1,10 +1,9 @@
|
|
1
1
|
module ONCCertificationG10TestKit
|
2
2
|
module Feature
|
3
|
-
class << self
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# end
|
3
|
+
class << self
|
4
|
+
def use_hl7_resource_validator?
|
5
|
+
ENV.fetch('USE_HL7_RESOURCE_VALIDATOR', 'false')&.casecmp?('true')
|
6
|
+
end
|
8
7
|
end
|
9
8
|
end
|
10
9
|
end
|
@@ -5,6 +5,13 @@ module ONCCertificationG10TestKit
|
|
5
5
|
US_CORE_5 = 'us_core_5'.freeze
|
6
6
|
US_CORE_6 = 'us_core_6'.freeze
|
7
7
|
|
8
|
+
US_CORE_VERSION_NUMBERS = {
|
9
|
+
US_CORE_3 => '3.1.1',
|
10
|
+
US_CORE_4 => '4.0.0',
|
11
|
+
US_CORE_5 => '5.0.1',
|
12
|
+
US_CORE_6 => '6.1.0'
|
13
|
+
}.freeze
|
14
|
+
|
8
15
|
BULK_DATA_1 = 'multi_patient_api_stu1'.freeze
|
9
16
|
BULK_DATA_2 = 'multi_patient_api_stu2'.freeze
|
10
17
|
|
@@ -259,7 +259,7 @@ procedure:
|
|
259
259
|
not include support for “plain”
|
260
260
|
|
261
261
|
Additionally, the following “capabilities” must be supported if using
|
262
|
-
US Core
|
262
|
+
US Core 6.1.0:
|
263
263
|
* "context-ehr-encounter"
|
264
264
|
TLV: |
|
265
265
|
[Both] The tester verifies the ability of the
|
@@ -282,7 +282,7 @@ procedure:
|
|
282
282
|
not include support for “plain”
|
283
283
|
|
284
284
|
Additionally, the following “capabilities” must be supported if using
|
285
|
-
US Core
|
285
|
+
US Core 6.1.0:
|
286
286
|
* "context-ehr-encounter"
|
287
287
|
inferno_supported: 'yes'
|
288
288
|
inferno_tests:
|
@@ -515,7 +515,7 @@ procedure:
|
|
515
515
|
adopted in § 170.213 and implementation specification adopted in
|
516
516
|
§ 170.215(a)(2).
|
517
517
|
|
518
|
-
If using US Core 3.1.1, 4.0.0,
|
518
|
+
If using US Core 3.1.1, 4.0.0, or 6.1.0 these resources include:
|
519
519
|
|
520
520
|
* “AllergyIntolerance”;
|
521
521
|
* “CarePlan”;
|
@@ -533,11 +533,6 @@ procedure:
|
|
533
533
|
* “Procedure”; and
|
534
534
|
* “Provenance”.
|
535
535
|
|
536
|
-
The following resources must also be supported if using US Core 5.0.1:
|
537
|
-
* “Encounter”;
|
538
|
-
* “RelatedPerson”; and
|
539
|
-
* “ServiceRequest”
|
540
|
-
|
541
536
|
The following resources must also be supported if using US Core 6.1.0:
|
542
537
|
* "Encounter"
|
543
538
|
* "Coverage"
|
@@ -554,7 +549,7 @@ procedure:
|
|
554
549
|
associated with the profiles specified in the standard adopted in
|
555
550
|
§ 170.213 and implementation specification adopted in § 170.215(a)(2).
|
556
551
|
|
557
|
-
If using US Core 3.1.1, 4.0.0,
|
552
|
+
If using US Core 3.1.1, 4.0.0, or 6.1.0 these resources include:
|
558
553
|
|
559
554
|
* “AllergyIntolerance”;
|
560
555
|
* “CarePlan”;
|
@@ -572,11 +567,6 @@ procedure:
|
|
572
567
|
* “Procedure”; and
|
573
568
|
* “Provenance”.
|
574
569
|
|
575
|
-
The following resources must also be supported if using US Core 5.0.1:
|
576
|
-
* “Encounter”;
|
577
|
-
* “RelatedPerson”; and
|
578
|
-
* “ServiceRequest”
|
579
|
-
|
580
570
|
The following resources must also be supported if using US Core 6.1.0:
|
581
571
|
* "Encounter"
|
582
572
|
* "Coverage"
|
@@ -815,8 +805,7 @@ procedure:
|
|
815
805
|
* “smart_style_url” (to support “context-style” “SMART on FHIR® Core
|
816
806
|
Capability” for EHR-Launch mode only).
|
817
807
|
|
818
|
-
Additionally, the following must be supported if using US Core
|
819
|
-
or 6.1.0:
|
808
|
+
Additionally, the following must be supported if using US Core 6.1.0:
|
820
809
|
* “encounter” (to support "context-ehr-encounter" “SMART on FHIR®
|
821
810
|
Capability”)
|
822
811
|
TLV: |
|
@@ -841,8 +830,7 @@ procedure:
|
|
841
830
|
* “smart_style_url” (to support “context-style” “SMART on FHIR® Core
|
842
831
|
Capability” for EHR-Launch mode only).
|
843
832
|
|
844
|
-
Additionally, the following must be supported if using US Core
|
845
|
-
or 6.1.0:
|
833
|
+
Additionally, the following must be supported if using US Core 6.1.0:
|
846
834
|
* “encounter” (to support"context-ehr-encounter" “SMART on FHIR®
|
847
835
|
Capability”)
|
848
836
|
inferno_supported: 'yes'
|
@@ -924,14 +912,14 @@ procedure:
|
|
924
912
|
- 9.9.10
|
925
913
|
- id: AUT-PAT-32
|
926
914
|
SUT: |
|
927
|
-
[EHR-Launch] The following must be supported if using US Core
|
928
|
-
|
915
|
+
[EHR-Launch] The following must be supported if using US Core 6.1.0:
|
916
|
+
The health IT developer demonstrates the ability of the Health
|
929
917
|
IT Module to return an “Encounter” FHIR® resource that matches the
|
930
918
|
encounter context provided in step AUT-PAT-9 of this section according
|
931
919
|
to the implementation specification adopted in § 170.215(a)(2).
|
932
920
|
TLV: |
|
933
|
-
[EHR-Launch] The following must be supported if using US Core
|
934
|
-
|
921
|
+
[EHR-Launch] The following must be supported if using US Core 6.1.0:
|
922
|
+
The tester verifies the ability of the Health IT Module to
|
935
923
|
return an “Encounter” FHIR® resource that matches the encounter
|
936
924
|
context provided in step AUT-PAT-9 of this section according to the
|
937
925
|
implementation specification adopted in § 170.215(a)(2).
|
@@ -1931,7 +1919,7 @@ procedure:
|
|
1931
1919
|
* For coded data elements, including support for the
|
1932
1920
|
“DataAbsentReason” Code System.
|
1933
1921
|
inferno_supported: 'yes'
|
1934
|
-
inferno_tests:
|
1922
|
+
inferno_tests:
|
1935
1923
|
- 4.32.01 - 4.32.02
|
1936
1924
|
- 5.34.01 - 5.34.02
|
1937
1925
|
- 10.46.01 - 10.46.02
|
@@ -63,23 +63,39 @@ module ONCCertificationG10TestKit
|
|
63
63
|
].freeze
|
64
64
|
|
65
65
|
ERROR_FILTERS = [
|
66
|
-
/\A\S+: \S+: Unknown
|
66
|
+
/\A\S+: \S+: Unknown [Cc]ode/,
|
67
67
|
/\A\S+: \S+: None of the codings provided are in the value set/,
|
68
68
|
/\A\S+: \S+: The code provided \(\S*\) is not in the value set/,
|
69
69
|
/\A\S+: \S+: The Coding provided \(\S*\) is not in the value set/,
|
70
70
|
/\A\S+: \S+: The Coding provided \(\S*\) was not found in the value set/,
|
71
|
-
/\A\S+: \S+: A definition for CodeSystem '.*' could not be found, so the code cannot be validated
|
71
|
+
/\A\S+: \S+: A definition for CodeSystem '.*' could not be found, so the code cannot be validated/,
|
72
|
+
/\A\S+: \S+: URL value '.*' does not resolve/,
|
73
|
+
/\A\S+: \S+: .*\[No server available\]/ # Catch-all for certain errors when TX server is disabled
|
72
74
|
].freeze
|
73
75
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
76
|
+
def self.setup_validator(us_core_version_requirement) # rubocop:disable Metrics/CyclomaticComplexity
|
77
|
+
validator_method = if Feature.use_hl7_resource_validator?
|
78
|
+
method(:fhir_resource_validator)
|
79
|
+
else
|
80
|
+
method(:validator)
|
81
|
+
end
|
82
|
+
|
83
|
+
validator_method.call :default, required_suite_options: us_core_version_requirement do
|
84
|
+
if Feature.use_hl7_resource_validator?
|
85
|
+
url ENV.fetch('G10_FHIR_RESOURCE_VALIDATOR_URL', 'http://hl7_validator_service:3500')
|
86
|
+
|
87
|
+
cli_context do
|
88
|
+
txServer nil
|
89
|
+
displayWarnings true
|
90
|
+
disableDefaultResourceFetcher true
|
91
|
+
end
|
79
92
|
|
80
|
-
|
81
|
-
|
82
|
-
|
93
|
+
us_core_version_num = G10Options::US_CORE_VERSION_NUMBERS[us_core_version_requirement[:us_core_version]]
|
94
|
+
|
95
|
+
igs("hl7.fhir.us.core##{us_core_version_num}")
|
96
|
+
else
|
97
|
+
url ENV.fetch('G10_VALIDATOR_URL', 'http://validator_service:4567')
|
98
|
+
end
|
83
99
|
|
84
100
|
us_core_message_filters =
|
85
101
|
case (us_core_version_requirement[:us_core_version])
|
@@ -148,6 +164,16 @@ module ONCCertificationG10TestKit
|
|
148
164
|
end
|
149
165
|
end
|
150
166
|
|
167
|
+
[
|
168
|
+
G10Options::US_CORE_3_REQUIREMENT,
|
169
|
+
G10Options::US_CORE_4_REQUIREMENT,
|
170
|
+
G10Options::US_CORE_5_REQUIREMENT,
|
171
|
+
G10Options::US_CORE_6_REQUIREMENT
|
172
|
+
|
173
|
+
].each do |us_core_version_requirement|
|
174
|
+
setup_validator(us_core_version_requirement)
|
175
|
+
end
|
176
|
+
|
151
177
|
def self.jwks_json
|
152
178
|
bulk_data_jwks = JSON.parse(File.read(
|
153
179
|
ENV.fetch('G10_BULK_DATA_JWKS',
|
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: 5.
|
4
|
+
version: 5.3.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: 2024-
|
11
|
+
date: 2024-04-09 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.4.
|
47
|
+
version: 0.4.34
|
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.4.
|
54
|
+
version: 0.4.34
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: json-jwt
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.4.
|
117
|
+
version: 0.4.2
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.4.
|
124
|
+
version: 0.4.2
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: tls_test_kit
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - '='
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.6.
|
145
|
+
version: 0.6.5
|
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.6.
|
152
|
+
version: 0.6.5
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: database_cleaner-sequel
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|