onc_certification_g10_test_kit 6.0.3 → 7.0.1
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/repositiories/validators.rb +0 -6
- data/lib/inferno/repositiories/value_sets.rb +1 -7
- data/lib/inferno/terminology/expected_manifest.yml +5 -5
- data/lib/inferno/terminology/fhir_package_manager.rb +13 -4
- data/lib/inferno/terminology/loader.rb +2 -1
- data/lib/inferno/terminology/tasks/download_fhir_terminology.rb +2 -1
- data/lib/inferno/terminology/tasks/download_umls.rb +2 -1
- data/lib/inferno/terminology/tasks/expand_value_set_to_file.rb +1 -1
- data/lib/inferno/terminology/tasks/run_umls_jar.rb +2 -1
- data/lib/inferno/terminology/validator.rb +1 -0
- data/lib/inferno/terminology/value_set.rb +2 -0
- data/lib/onc_certification_g10_test_kit/all_resources.rb +74 -0
- data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +361 -59
- data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +4 -3
- data/lib/onc_certification_g10_test_kit/g10_options.rb +20 -1
- data/lib/onc_certification_g10_test_kit/limited_scope_grant_test.rb +4 -0
- data/lib/onc_certification_g10_test_kit/multi_patient_api_stu1.rb +2 -1
- data/lib/onc_certification_g10_test_kit/multi_patient_api_stu2.rb +2 -1
- data/lib/onc_certification_g10_test_kit/patient_scope_test.rb +1 -1
- data/lib/onc_certification_g10_test_kit/profile_selector.rb +40 -15
- data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +89 -2
- data/lib/onc_certification_g10_test_kit/short_id_map.yml +1417 -12
- data/lib/onc_certification_g10_test_kit/single_patient_us_core_7_api_group.rb +219 -0
- data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +41 -1
- data/lib/onc_certification_g10_test_kit/smart_asymmetric_launch_group.rb +33 -1
- data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2_2.rb +128 -0
- data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +234 -0
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_group_stu2_2.rb +188 -0
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group.rb +188 -0
- data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group_stu2_2.rb +188 -0
- data/lib/onc_certification_g10_test_kit/smart_granular_scope_selection_group.rb +67 -1
- data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +128 -1
- data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2_2.rb +162 -0
- data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +10 -2
- data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +159 -0
- data/lib/onc_certification_g10_test_kit/smart_v1_scopes_group.rb +117 -0
- data/lib/onc_certification_g10_test_kit/terminology_binding_validator.rb +5 -1
- data/lib/onc_certification_g10_test_kit/token_introspection_group_stu2_2.rb +97 -0
- data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +85 -31
- data/lib/onc_certification_g10_test_kit/version.rb +1 -1
- data/lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb +171 -0
- data/lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb +1 -1
- data/lib/onc_certification_g10_test_kit.rb +72 -5
- metadata +18 -10
@@ -5,15 +5,20 @@ module ONCCertificationG10TestKit
|
|
5
5
|
include G10Options
|
6
6
|
|
7
7
|
def extract_profile(resource_type)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
if resource_type == 'Medication'
|
9
|
+
versioned_us_core_module.const_get('USCoreTestSuite').metadata.find do |meta|
|
10
|
+
meta.resource == resource_type
|
11
|
+
end.profile_url
|
12
|
+
elsif resource_type == 'Location' && location_use_base_fhir?
|
13
|
+
'http://hl7.org/fhir/StructureDefinition/Location'
|
14
|
+
else
|
15
|
+
versioned_us_core_module.const_get("#{resource_type}Group").metadata.profile_url
|
15
16
|
end
|
16
|
-
|
17
|
+
end
|
18
|
+
|
19
|
+
def location_use_base_fhir?
|
20
|
+
using_us_core_3? || using_us_core_4? || using_us_core_5? ||
|
21
|
+
using_us_core_6?
|
17
22
|
end
|
18
23
|
|
19
24
|
def observation_contains_code?(observation_resource, code)
|
@@ -35,7 +40,7 @@ module ONCCertificationG10TestKit
|
|
35
40
|
case resource.resourceType
|
36
41
|
when 'Condition'
|
37
42
|
case us_core_version
|
38
|
-
when US_CORE_5, US_CORE_6
|
43
|
+
when US_CORE_5, US_CORE_6, US_CORE_7
|
39
44
|
if resource_contains_category?(resource, 'encounter-diagnosis', 'http://terminology.hl7.org/CodeSystem/condition-category')
|
40
45
|
profiles << extract_profile('ConditionEncounterDiagnosis')
|
41
46
|
elsif resource_contains_category?(resource, 'problem-list-item',
|
@@ -55,6 +60,14 @@ module ONCCertificationG10TestKit
|
|
55
60
|
when 'Observation'
|
56
61
|
profiles << extract_profile('Smokingstatus') if observation_contains_code?(resource, '72166-2')
|
57
62
|
|
63
|
+
if us_core_7_and_above? && (
|
64
|
+
observation_contains_code?(resource, '11367-0') ||
|
65
|
+
observation_contains_code?(resource, '401201003') ||
|
66
|
+
observation_contains_code?(resource, '782516008')
|
67
|
+
)
|
68
|
+
profiles << extract_profile('Smokingstatus')
|
69
|
+
end
|
70
|
+
|
58
71
|
profiles << extract_profile('ObservationLab') if resource_contains_category?(resource, 'laboratory', 'http://terminology.hl7.org/CodeSystem/observation-category')
|
59
72
|
|
60
73
|
profiles << extract_profile('PediatricBmiForAge') if observation_contains_code?(resource, '59576-9')
|
@@ -144,7 +157,7 @@ module ONCCertificationG10TestKit
|
|
144
157
|
profiles << extract_profile('ObservationClinicalTest')
|
145
158
|
end
|
146
159
|
|
147
|
-
if (using_us_core_5? || using_us_core_6?) && observation_contains_code?(resource, '76690-7')
|
160
|
+
if (using_us_core_5? || using_us_core_6? || using_us_core_7?) && observation_contains_code?(resource, '76690-7')
|
148
161
|
profiles << extract_profile('ObservationSexualOrientation')
|
149
162
|
end
|
150
163
|
|
@@ -175,20 +188,20 @@ module ONCCertificationG10TestKit
|
|
175
188
|
# 'http://terminology.hl7.org/CodeSystem/observation-category') &&`
|
176
189
|
# along with a specific extract_profile('ObservationSurvey') to catch non-sdoh.
|
177
190
|
profiles << extract_profile('ObservationSdohAssessment')
|
178
|
-
elsif using_us_core_6?
|
191
|
+
elsif using_us_core_6? || using_us_core_7?
|
179
192
|
profiles << extract_profile('ObservationScreeningAssessment')
|
180
193
|
end
|
181
194
|
end
|
182
195
|
|
183
|
-
if using_us_core_6? && observation_contains_code?(resource, '11341-5')
|
196
|
+
if (using_us_core_6? || using_us_core_7?) && observation_contains_code?(resource, '11341-5')
|
184
197
|
profiles << extract_profile('ObservationOccupation')
|
185
198
|
end
|
186
199
|
|
187
|
-
if using_us_core_6? && observation_contains_code?(resource, '86645-9')
|
200
|
+
if (using_us_core_6? || using_us_core_7?) && observation_contains_code?(resource, '86645-9')
|
188
201
|
profiles << extract_profile('ObservationPregnancyintent')
|
189
202
|
end
|
190
203
|
|
191
|
-
if using_us_core_6? && observation_contains_code?(resource, '82810-3')
|
204
|
+
if (using_us_core_6? || using_us_core_7?) && observation_contains_code?(resource, '82810-3')
|
192
205
|
profiles << extract_profile('ObservationPregnancystatus')
|
193
206
|
end
|
194
207
|
|
@@ -196,7 +209,7 @@ module ONCCertificationG10TestKit
|
|
196
209
|
'laboratory', 'exam', 'therpay', 'imaging', 'procedure', 'vital-signs', 'activity'
|
197
210
|
]
|
198
211
|
|
199
|
-
if using_us_core_6? && clinical_result_categories.any? do |category|
|
212
|
+
if (using_us_core_6? || using_us_core_7?) && clinical_result_categories.any? do |category|
|
200
213
|
resource_contains_category?(
|
201
214
|
resource, category, 'http://terminology.hl7.org/CodeSystem/observation-category'
|
202
215
|
)
|
@@ -204,6 +217,18 @@ module ONCCertificationG10TestKit
|
|
204
217
|
profiles << extract_profile('ObservationClinicalResult')
|
205
218
|
end
|
206
219
|
|
220
|
+
if using_us_core_7? && observation_contains_code?(resource, '75773-2')
|
221
|
+
profiles << extract_profile('TreatmentInterventionPreference')
|
222
|
+
end
|
223
|
+
|
224
|
+
if using_us_core_7? && observation_contains_code?(resource, '95541-9')
|
225
|
+
profiles << extract_profile('CareExperiencePreference')
|
226
|
+
end
|
227
|
+
|
228
|
+
if using_us_core_7? && observation_contains_code?(resource, '96607-7')
|
229
|
+
profiles << extract_profile('AverageBloodPressure')
|
230
|
+
end
|
231
|
+
|
207
232
|
nil
|
208
233
|
else
|
209
234
|
profiles << extract_profile(resource.resourceType)
|
@@ -31,7 +31,7 @@ module ONCCertificationG10TestKit
|
|
31
31
|
If testing against USCDI v2, Encounter and ServiceRequest are also
|
32
32
|
checked.
|
33
33
|
|
34
|
-
If testing against USCDI v3, Encounter, ServiceRequest, Coverage,
|
34
|
+
If testing against USCDI v3 and v4, Encounter, ServiceRequest, Coverage,
|
35
35
|
and MedicationDispense are also checked.
|
36
36
|
|
37
37
|
For each of the resources that can be mapped to USCDI data class or
|
@@ -66,7 +66,14 @@ module ONCCertificationG10TestKit
|
|
66
66
|
* RelatedPerson
|
67
67
|
* Specimen
|
68
68
|
|
69
|
-
|
69
|
+
For USCDI v4 this includes:
|
70
|
+
|
71
|
+
* Organization
|
72
|
+
* Practitioner
|
73
|
+
* RelatedPerson
|
74
|
+
* Specimen
|
75
|
+
|
76
|
+
It also does not test Provenance or Location, as these resource types are accessed by
|
70
77
|
queries through other resource types. These resources types are accessed
|
71
78
|
in the more comprehensive Single Patient Query tests.
|
72
79
|
|
@@ -446,5 +453,85 @@ module ONCCertificationG10TestKit
|
|
446
453
|
USCoreTestKit::USCoreV610::MedicationDispenseGroup
|
447
454
|
end
|
448
455
|
end
|
456
|
+
|
457
|
+
test from: :g10_restricted_access_test do
|
458
|
+
title 'Access to Encounter resources are restricted properly based on patient-selected scope'
|
459
|
+
description %(
|
460
|
+
This test ensures that access to the Encounter is granted or
|
461
|
+
denied based on the selection by the tester prior to the execution of
|
462
|
+
the test. If the tester indicated that access will be granted to this
|
463
|
+
resource, this test verifies that a search by patient in this resource
|
464
|
+
does not result in an access denied result. If the tester indicated that
|
465
|
+
access will be denied for this resource, this verifies that search by
|
466
|
+
patient in the resource results in an access denied result.
|
467
|
+
)
|
468
|
+
id :g10_us_core_7_encounter_restricted_access
|
469
|
+
|
470
|
+
required_suite_options G10Options::US_CORE_7_REQUIREMENT
|
471
|
+
|
472
|
+
def resource_group
|
473
|
+
USCoreTestKit::USCoreV700::EncounterGroup
|
474
|
+
end
|
475
|
+
end
|
476
|
+
|
477
|
+
test from: :g10_restricted_access_test do
|
478
|
+
title 'Access to ServiceRequest resources are restricted properly based on patient-selected scope'
|
479
|
+
description %(
|
480
|
+
This test ensures that access to the ServiceRequest is granted or
|
481
|
+
denied based on the selection by the tester prior to the execution of
|
482
|
+
the test. If the tester indicated that access will be granted to this
|
483
|
+
resource, this test verifies that a search by patient in this resource
|
484
|
+
does not result in an access denied result. If the tester indicated that
|
485
|
+
access will be denied for this resource, this verifies that search by
|
486
|
+
patient in the resource results in an access denied result.
|
487
|
+
)
|
488
|
+
id :g10_us_core_7_service_request_restricted_access
|
489
|
+
|
490
|
+
required_suite_options G10Options::US_CORE_7_REQUIREMENT
|
491
|
+
|
492
|
+
def resource_group
|
493
|
+
USCoreTestKit::USCoreV700::ServiceRequestGroup
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
test from: :g10_restricted_access_test do
|
498
|
+
title 'Access to Coverage resources are restricted properly based on patient-selected scope'
|
499
|
+
description %(
|
500
|
+
This test ensures that access to the Coverage is granted or
|
501
|
+
denied based on the selection by the tester prior to the execution of
|
502
|
+
the test. If the tester indicated that access will be granted to this
|
503
|
+
resource, this test verifies that a search by patient in this resource
|
504
|
+
does not result in an access denied result. If the tester indicated that
|
505
|
+
access will be denied for this resource, this verifies that search by
|
506
|
+
patient in the resource results in an access denied result.
|
507
|
+
)
|
508
|
+
id :g10_us_core_7_coverage_restricted_access
|
509
|
+
|
510
|
+
required_suite_options G10Options::US_CORE_7_REQUIREMENT
|
511
|
+
|
512
|
+
def resource_group
|
513
|
+
USCoreTestKit::USCoreV700::CoverageGroup
|
514
|
+
end
|
515
|
+
end
|
516
|
+
|
517
|
+
test from: :g10_restricted_access_test do
|
518
|
+
title 'Access to MedicationDispense resources are restricted properly based on patient-selected scope'
|
519
|
+
description %(
|
520
|
+
This test ensures that access to the MedicationDispense is granted or
|
521
|
+
denied based on the selection by the tester prior to the execution of
|
522
|
+
the test. If the tester indicated that access will be granted to this
|
523
|
+
resource, this test verifies that a search by patient in this resource
|
524
|
+
does not result in an access denied result. If the tester indicated that
|
525
|
+
access will be denied for this resource, this verifies that search by
|
526
|
+
patient in the resource results in an access denied result.
|
527
|
+
)
|
528
|
+
id :g10_us_core_7_medication_dispense_restricted_access
|
529
|
+
|
530
|
+
required_suite_options G10Options::US_CORE_7_REQUIREMENT
|
531
|
+
|
532
|
+
def resource_group
|
533
|
+
USCoreTestKit::USCoreV700::MedicationDispenseGroup
|
534
|
+
end
|
535
|
+
end
|
449
536
|
end
|
450
537
|
end
|