us_core_test_kit 0.6.5 → 0.7.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/us_core_test_kit/custom_groups/base_smart_granular_scopes_group.rb +44 -12
- data/lib/us_core_test_kit/custom_groups/granted_granular_scopes_test.rb +61 -0
- data/lib/us_core_test_kit/custom_groups/screening_assessment_category_test.rb +75 -0
- data/lib/us_core_test_kit/custom_groups/smart_scopes_constants.rb +5 -8
- data/lib/us_core_test_kit/custom_groups/v6.1.0/screening_assessment_group.rb +45 -0
- data/lib/us_core_test_kit/custom_groups/v6.1.0/smart_granular_scopes_group.rb +94 -41
- data/lib/us_core_test_kit/custom_groups/v7.0.0-ballot/screening_assessment_group.rb +48 -0
- data/lib/us_core_test_kit/custom_groups/v7.0.0-ballot/smart_granular_scopes_group.rb +6 -0
- data/lib/us_core_test_kit/fhir_resource_navigation.rb +16 -1
- data/lib/us_core_test_kit/generated/v3.1.1/metadata.yml +3 -0
- data/lib/us_core_test_kit/generated/v3.1.1/patient/metadata.yml +3 -0
- data/lib/us_core_test_kit/generated/v3.1.1/us_core_test_suite.rb +5 -4
- data/lib/us_core_test_kit/generated/v4.0.0/metadata.yml +3 -0
- data/lib/us_core_test_kit/generated/v4.0.0/patient/metadata.yml +3 -0
- data/lib/us_core_test_kit/generated/v4.0.0/us_core_test_suite.rb +5 -4
- data/lib/us_core_test_kit/generated/v5.0.1/condition_encounter_diagnosis/metadata.yml +1 -0
- data/lib/us_core_test_kit/generated/v5.0.1/condition_problems_health_concerns/metadata.yml +1 -0
- data/lib/us_core_test_kit/generated/v5.0.1/metadata.yml +8 -0
- data/lib/us_core_test_kit/generated/v5.0.1/patient/metadata.yml +4 -0
- data/lib/us_core_test_kit/generated/v5.0.1/questionnaire_response/metadata.yml +2 -0
- data/lib/us_core_test_kit/generated/v5.0.1/us_core_test_suite.rb +5 -4
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/metadata.yml +23 -20
- data/lib/us_core_test_kit/generated/v6.1.0/condition_granular_scope1_group.rb +24 -20
- data/lib/us_core_test_kit/generated/v6.1.0/condition_problems_health_concerns/metadata.yml +1 -0
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/condition_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_abatement_date_granular_scope_test.rb → condition_patient_abatement_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_asserted_date_granular_scope_test.rb → condition_patient_asserted_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_clinical_status_granular_scope_test.rb → condition_patient_category_clinical_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_encounter_granular_scope_test.rb → condition_patient_category_encounter_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_category_granular_scope_test.rb → condition_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_clinical_status_granular_scope_test.rb → condition_patient_clinical_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_code_granular_scope_test.rb → condition_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_granular_scope_test.rb → condition_patient_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_onset_date_granular_scope_test.rb → condition_patient_onset_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/{condition_patient_recorded_date_granular_scope_test.rb → condition_patient_recorded_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/condition/metadata.yml +25 -22
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/metadata.yml +14 -12
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/observation_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_date_granular_scope_test.rb → observation_patient_category_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_granular_scope_test.rb → observation_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_category_status_granular_scope_test.rb → observation_patient_category_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_code_date_granular_scope_test.rb → observation_patient_code_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scope_tests/observation/{observation_patient_code_granular_scope_test.rb → observation_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes1_group.rb +5 -1
- data/lib/us_core_test_kit/generated/v6.1.0/metadata.yml +43 -36
- data/lib/us_core_test_kit/generated/v6.1.0/observation_granular_scope1_group.rb +15 -11
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/metadata.yml +12 -10
- data/lib/us_core_test_kit/generated/v6.1.0/patient/metadata.yml +5 -0
- data/lib/us_core_test_kit/generated/v6.1.0/questionnaire_response/metadata.yml +2 -0
- data/lib/us_core_test_kit/generated/v6.1.0/us_core_test_suite.rb +9 -6
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/metadata.yml +23 -20
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_granular_scope1_group.rb +22 -20
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_granular_scope2_group.rb +22 -20
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_problems_health_concerns/metadata.yml +1 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_granular_scope1_group.rb +14 -12
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_granular_scope2_group.rb +14 -12
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/metadata.yml +14 -12
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/metadata.yml +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference_granular_scope1_group.rb +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/condition_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_abatement_date_granular_scope_test.rb → condition_patient_abatement_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_asserted_date_granular_scope_test.rb → condition_patient_asserted_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_clinical_status_granular_scope_test.rb → condition_patient_category_clinical_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_encounter_granular_scope_test.rb → condition_patient_category_encounter_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_category_granular_scope_test.rb → condition_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_clinical_status_granular_scope_test.rb → condition_patient_clinical_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_code_granular_scope_test.rb → condition_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_granular_scope_test.rb → condition_patient_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_onset_date_granular_scope_test.rb → condition_patient_onset_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/{condition_patient_recorded_date_granular_scope_test.rb → condition_patient_recorded_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/condition/metadata.yml +23 -20
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/diagnostic_report_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_category_date_granular_scope_test.rb → diagnostic_report_patient_category_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_category_granular_scope_test.rb → diagnostic_report_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_code_date_granular_scope_test.rb → diagnostic_report_patient_code_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_code_granular_scope_test.rb → diagnostic_report_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_granular_scope_test.rb → diagnostic_report_patient_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/{diagnostic_report_patient_status_granular_scope_test.rb → diagnostic_report_patient_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/diagnostic_report/metadata.yml +14 -12
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/document_reference_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_id_granular_scope_test.rb → document_reference_id_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_category_date_granular_scope_test.rb → document_reference_patient_category_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_category_granular_scope_test.rb → document_reference_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_granular_scope_test.rb → document_reference_patient_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_status_granular_scope_test.rb → document_reference_patient_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_type_granular_scope_test.rb → document_reference_patient_type_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/{document_reference_patient_type_period_granular_scope_test.rb → document_reference_patient_type_period_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/document_reference/metadata.yml +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/metadata.yml +12 -10
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/observation_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_date_granular_scope_test.rb → observation_patient_category_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_granular_scope_test.rb → observation_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_category_status_granular_scope_test.rb → observation_patient_category_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_code_date_granular_scope_test.rb → observation_patient_code_date_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/observation/{observation_patient_code_granular_scope_test.rb → observation_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/metadata.yml +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/service_request_granular_scope_read_test.rb +32 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_id_granular_scope_test.rb → service_request_id_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_category_authored_granular_scope_test.rb → service_request_patient_category_authored_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_category_granular_scope_test.rb → service_request_patient_category_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_code_authored_granular_scope_test.rb → service_request_patient_code_authored_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_code_granular_scope_test.rb → service_request_patient_code_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_granular_scope_test.rb → service_request_patient_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/granular_scope_tests/service_request/{service_request_patient_status_granular_scope_test.rb → service_request_patient_status_granular_scope_search_test.rb} +5 -5
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/medication_request/metadata.yml +1 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/metadata.yml +90 -70
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_granular_scope1_group.rb +12 -10
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_granular_scope2_group.rb +12 -10
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/metadata.yml +12 -10
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/patient/metadata.yml +5 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/questionnaire_response/metadata.yml +2 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/metadata.yml +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request_granular_scope1_group.rb +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request_granular_scope2_group.rb +16 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/us_core_test_suite.rb +8 -5
- data/lib/us_core_test_kit/generator/granular_scope_group_generator.rb +7 -0
- data/lib/us_core_test_kit/generator/granular_scope_read_test_generator.rb +102 -0
- data/lib/us_core_test_kit/generator/granular_scope_resource_type_group_generator.rb +1 -1
- data/lib/us_core_test_kit/generator/granular_scope_test_generator.rb +4 -4
- data/lib/us_core_test_kit/generator/group_metadata.rb +1 -1
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor.rb +1 -0
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_4.rb +3 -0
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_5.rb +1 -0
- data/lib/us_core_test_kit/generator/special_cases.rb +3 -5
- data/lib/us_core_test_kit/generator/suite_generator.rb +14 -3
- data/lib/us_core_test_kit/generator.rb +2 -0
- data/lib/us_core_test_kit/granular_scope.rb +63 -0
- data/lib/us_core_test_kit/granular_scope_read_test.rb +71 -0
- data/lib/us_core_test_kit/{granular_scope_checker.rb → granular_scope_search_test.rb} +8 -47
- data/lib/us_core_test_kit/must_support_test.rb +27 -7
- data/lib/us_core_test_kit/primitive_type.rb +5 -0
- data/lib/us_core_test_kit/provenance_validator.rb +3 -4
- data/lib/us_core_test_kit/reference_resolution_test.rb +2 -1
- data/lib/us_core_test_kit/resource_search_param_checker.rb +139 -0
- data/lib/us_core_test_kit/search_test.rb +6 -0
- data/lib/us_core_test_kit/version.rb +1 -1
- metadata +72 -59
- data/lib/us_core_test_kit/generated/v6.1.0/condition_granular_scope2_group.rb +0 -43
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes2_group.rb +0 -52
- data/lib/us_core_test_kit/generated/v6.1.0/observation_granular_scope2_group.rb +0 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2b693ad77df0cc7296b9ae07942cf5ea4f3496fb47ca199d63f3066f906f142f
|
|
4
|
+
data.tar.gz: 34d31851aabbf208e7f0db087a2f72f355e42c1c8e61da20b3c5a62885db1b72
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 325e5643f37e0da1e02e5e4fe3d4808ed3dc4e62a24e7f290ebe146e275b86cc13db3d51f79a331f5207bca117c1d7b8fcd2707170158aa29d21f50ed38605de
|
|
7
|
+
data.tar.gz: 2b11e159d4e26f24571fd040155a6ac924c2b5ccda1e5474380b24caac4486d0d8ea83e7ed4b6005f57aee2df0f25cd1e1073e36057409226b17840469bb3a99
|
|
@@ -3,8 +3,10 @@ require 'smart_app_launch_test_kit'
|
|
|
3
3
|
require_relative './smart_ehr_launch_stu2'
|
|
4
4
|
require_relative './smart_scopes_constants'
|
|
5
5
|
require_relative './smart_standalone_launch_stu2_group'
|
|
6
|
-
require_relative '../
|
|
6
|
+
require_relative '../granular_scope_search_test'
|
|
7
|
+
require_relative '../granular_scope_read_test'
|
|
7
8
|
require_relative '../us_core_options'
|
|
9
|
+
require_relative './granted_granular_scopes_test'
|
|
8
10
|
|
|
9
11
|
module USCoreTestKit
|
|
10
12
|
class BaseSmartGranularScopesGroup < Inferno::TestGroup
|
|
@@ -52,8 +54,7 @@ module USCoreTestKit
|
|
|
52
54
|
smart_credentials: {
|
|
53
55
|
name: :granular_scopes_1_credentials
|
|
54
56
|
}
|
|
55
|
-
}
|
|
56
|
-
)
|
|
57
|
+
} )
|
|
57
58
|
group from: :us_core_smart_standalone_launch_stu2,
|
|
58
59
|
optional: true,
|
|
59
60
|
config: {
|
|
@@ -62,7 +63,16 @@ module USCoreTestKit
|
|
|
62
63
|
name: :granular_scopes_1_credentials
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
|
-
}
|
|
66
|
+
} do
|
|
67
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
68
|
+
config: {
|
|
69
|
+
inputs: {
|
|
70
|
+
received_scopes: {
|
|
71
|
+
name: :standalone_received_scopes
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
end
|
|
66
76
|
group from: :us_core_smart_ehr_launch_stu2,
|
|
67
77
|
optional: true,
|
|
68
78
|
config: {
|
|
@@ -71,9 +81,16 @@ module USCoreTestKit
|
|
|
71
81
|
name: :granular_scopes_1_credentials
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
} do
|
|
85
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
86
|
+
config: {
|
|
87
|
+
inputs: {
|
|
88
|
+
received_scopes: {
|
|
89
|
+
name: :ehr_received_scopes
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
end
|
|
77
94
|
end
|
|
78
95
|
end
|
|
79
96
|
|
|
@@ -103,7 +120,16 @@ module USCoreTestKit
|
|
|
103
120
|
name: :granular_scopes_2_credentials
|
|
104
121
|
}
|
|
105
122
|
}
|
|
106
|
-
}
|
|
123
|
+
} do
|
|
124
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
125
|
+
config: {
|
|
126
|
+
inputs: {
|
|
127
|
+
received_scopes: {
|
|
128
|
+
name: :standalone_received_scopes
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
end
|
|
107
133
|
|
|
108
134
|
|
|
109
135
|
group from: :us_core_smart_ehr_launch_stu2,
|
|
@@ -114,10 +140,16 @@ module USCoreTestKit
|
|
|
114
140
|
name: :granular_scopes_2_credentials
|
|
115
141
|
}
|
|
116
142
|
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
143
|
+
} do
|
|
144
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
145
|
+
config: {
|
|
146
|
+
inputs: {
|
|
147
|
+
received_scopes: {
|
|
148
|
+
name: :ehr_received_scopes
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
end
|
|
121
153
|
end
|
|
122
154
|
end
|
|
123
155
|
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module USCoreTestKit
|
|
2
|
+
class GrantedGranularScopesTest < Inferno::Test
|
|
3
|
+
id :us_core_granted_granular_scopes
|
|
4
|
+
title 'Required granular scopes were granted'
|
|
5
|
+
|
|
6
|
+
description %()
|
|
7
|
+
|
|
8
|
+
input :received_scopes
|
|
9
|
+
|
|
10
|
+
run do
|
|
11
|
+
required_granular_scopes =
|
|
12
|
+
config
|
|
13
|
+
.options[:required_scopes]
|
|
14
|
+
.map { |scope| scope[scope.index('/') + 1, scope.length] }
|
|
15
|
+
|
|
16
|
+
received_granular_scopes =
|
|
17
|
+
received_scopes
|
|
18
|
+
.split(' ')
|
|
19
|
+
.select { |scope| scope.include? '?' }
|
|
20
|
+
.map { |scope| scope[scope.index('/') + 1, scope.length] }
|
|
21
|
+
|
|
22
|
+
missing_scopes = required_granular_scopes - received_granular_scopes
|
|
23
|
+
|
|
24
|
+
wrapped_missing_scopes = missing_scopes.map { |scope| "`#{scope}`" }
|
|
25
|
+
|
|
26
|
+
assert missing_scopes.empty?,
|
|
27
|
+
"The following granular scopes were not granted: #{wrapped_missing_scopes.to_sentence}"
|
|
28
|
+
|
|
29
|
+
granular_scope_resource_types =
|
|
30
|
+
required_granular_scopes
|
|
31
|
+
.map { |scope| scope.split('.').first }
|
|
32
|
+
.uniq
|
|
33
|
+
|
|
34
|
+
received_resource_level_scopes =
|
|
35
|
+
received_scopes
|
|
36
|
+
.split(' ')
|
|
37
|
+
.reject { |scope| scope.include? '?' }
|
|
38
|
+
.select { |scope| scope.match? %r{\A(user|patient|system|\*)/.+\..+} }
|
|
39
|
+
.map { |scope| scope[scope.index('/') + 1, scope.length] }
|
|
40
|
+
.select { |scope| granular_scope_resource_types.include? scope[0, scope.index('.')] }
|
|
41
|
+
|
|
42
|
+
wrapped_resource_scopes = received_resource_level_scopes.map { |scope| "`#{scope}`" }
|
|
43
|
+
|
|
44
|
+
assert received_resource_level_scopes.empty?,
|
|
45
|
+
'Can not verify the behavior of granular scopes because the following resource-level scopes were ' \
|
|
46
|
+
"granted: #{wrapped_resource_scopes.to_sentence}"
|
|
47
|
+
|
|
48
|
+
received_wildcard_scopes =
|
|
49
|
+
received_scopes
|
|
50
|
+
.split(' ')
|
|
51
|
+
.select { |scope| scope.match? %r{\A(user|patient|system|\*)/\*} }
|
|
52
|
+
|
|
53
|
+
wrapped_wildcard_scopes = received_wildcard_scopes.map { |scope| "`#{scope}`" }
|
|
54
|
+
|
|
55
|
+
assert received_wildcard_scopes.empty?,
|
|
56
|
+
'Can not verify the behavior of granular scopes because the following wildcard scopes were ' \
|
|
57
|
+
"granted: #{wrapped_wildcard_scopes.to_sentence}"
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require_relative '../search_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
class ScreeningAssessmentCategoryTest < Inferno::Test
|
|
5
|
+
include SearchTest
|
|
6
|
+
|
|
7
|
+
id :us_core_screening_assessment_category
|
|
8
|
+
title 'Server demonstrates support for the required Condition and Observation categories.'
|
|
9
|
+
|
|
10
|
+
input :patient_ids,
|
|
11
|
+
title: 'Patient IDs',
|
|
12
|
+
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
13
|
+
|
|
14
|
+
# Disable tagging requests since this test doesn't have properties defined.
|
|
15
|
+
# TODO: investigate whether we need to tag these for granular scope
|
|
16
|
+
# checking.
|
|
17
|
+
def tags(_params)
|
|
18
|
+
nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
22
|
+
def category_found(resource_type:, patient_id:, category_search_values:, missing_categories:)
|
|
23
|
+
search_params = { patient: patient_id }
|
|
24
|
+
|
|
25
|
+
category_search_values.each do |category_search_value|
|
|
26
|
+
search_params[:category] = category_search_value
|
|
27
|
+
search_and_check_response(search_params, resource_type)
|
|
28
|
+
|
|
29
|
+
resources = fetch_all_bundled_resources(resource_type:)
|
|
30
|
+
.select { |resource| resource.resourceType == resource_type }
|
|
31
|
+
|
|
32
|
+
resources.each do |resource|
|
|
33
|
+
resource.category&.each do |category|
|
|
34
|
+
category.coding&.each do |coding|
|
|
35
|
+
missing_categories.delete(coding.code)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
break if missing_categories.empty?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
break if missing_categories.empty?
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
46
|
+
|
|
47
|
+
run do
|
|
48
|
+
missing_obs_categories = config.options[:observation_screening_assessment_categories].dup
|
|
49
|
+
missing_cond_categories = config.options[:condition_screening_assessment_categories].dup
|
|
50
|
+
|
|
51
|
+
patient_id_list.each do |patient_id|
|
|
52
|
+
unless missing_cond_categories.empty?
|
|
53
|
+
category_found(resource_type: 'Condition',
|
|
54
|
+
patient_id:,
|
|
55
|
+
category_search_values: ['health-concern', 'problem-list-item'],
|
|
56
|
+
missing_categories: missing_cond_categories)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
next if missing_obs_categories.empty?
|
|
60
|
+
|
|
61
|
+
category_found(resource_type: 'Observation',
|
|
62
|
+
patient_id:,
|
|
63
|
+
category_search_values: ['survey'],
|
|
64
|
+
missing_categories: missing_obs_categories)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
pass if missing_cond_categories.empty? && missing_obs_categories.empty?
|
|
68
|
+
|
|
69
|
+
messages = []
|
|
70
|
+
messages << "Observation categories: #{missing_obs_categories.join(', ')}" unless missing_obs_categories.empty?
|
|
71
|
+
messages << "Condition categories: #{missing_cond_categories.join(', ')}" unless missing_cond_categories.empty?
|
|
72
|
+
skip "Could not find these #{messages.join(' and ')}."
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -5,9 +5,13 @@ module USCoreTestKit
|
|
|
5
5
|
SMART_GRANULAR_SCOPES_GROUP1 = {
|
|
6
6
|
'v610' => [
|
|
7
7
|
'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis',
|
|
8
|
+
'patient/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern',
|
|
9
|
+
'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
|
|
8
10
|
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory',
|
|
9
11
|
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|social-history',
|
|
10
|
-
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|
|
|
12
|
+
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs',
|
|
13
|
+
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|survey',
|
|
14
|
+
'patient/Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh'
|
|
11
15
|
].map(&:freeze).freeze,
|
|
12
16
|
'v700_ballot' => [
|
|
13
17
|
'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis',
|
|
@@ -24,13 +28,6 @@ module USCoreTestKit
|
|
|
24
28
|
}.freeze
|
|
25
29
|
|
|
26
30
|
SMART_GRANULAR_SCOPES_GROUP2 = {
|
|
27
|
-
'v610' => [
|
|
28
|
-
'patient/Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern',
|
|
29
|
-
'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
|
|
30
|
-
'patient/Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs',
|
|
31
|
-
'patient.Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|survey',
|
|
32
|
-
'patient.Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh'
|
|
33
|
-
].map(&:freeze).freeze,
|
|
34
31
|
'v700_ballot' => [
|
|
35
32
|
'patient/Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item',
|
|
36
33
|
'patient/DiagnosticReport.rs?category=http://loinc.org|LP7839-6',
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require_relative '../screening_assessment_category_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
module USCoreV610
|
|
5
|
+
class ScreeningAssessmentGroup < Inferno::TestGroup
|
|
6
|
+
id :us_core_v610_screening_assessment
|
|
7
|
+
title 'Screening Assessments Guidance'
|
|
8
|
+
short_description 'Verify Condition and Observation resources support the ' \
|
|
9
|
+
'US Core Screening And Assessments Guidance.'
|
|
10
|
+
description %(
|
|
11
|
+
The #{title} Sequence tests Condition and Observation
|
|
12
|
+
resources associated with the provided patient. The resources returned
|
|
13
|
+
will be checked for consistency against the [US Core Screening And Assessments
|
|
14
|
+
Guidance](https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html)
|
|
15
|
+
and FHIR JIRA ticket [FHIR-45319](https://jira.hl7.org/browse/FHIR-45319)
|
|
16
|
+
|
|
17
|
+
In this set of tests, Inferno serves as a FHIR client that attempts to
|
|
18
|
+
access the different types of Screening and Assessments specified in the guidance.
|
|
19
|
+
The provided patient needs to have the following four common Screening and Assessements
|
|
20
|
+
as Observation categories:
|
|
21
|
+
|
|
22
|
+
* SDOH Assessment (sdoh)
|
|
23
|
+
* Functional Status (functional-status)
|
|
24
|
+
* Disability Status (disability-status)
|
|
25
|
+
* Mental/Cognitive Status (cognitive-status)
|
|
26
|
+
|
|
27
|
+
The provided patient also needs to have the following common Screening and Assessment
|
|
28
|
+
as Condition category:
|
|
29
|
+
|
|
30
|
+
* SDOH Assessment (sdoh)
|
|
31
|
+
)
|
|
32
|
+
run_as_group
|
|
33
|
+
|
|
34
|
+
test from: :us_core_screening_assessment_category do
|
|
35
|
+
config(
|
|
36
|
+
options: {
|
|
37
|
+
condition_screening_assessment_categories: ['sdoh'].freeze,
|
|
38
|
+
observation_screening_assessment_categories: ['sdoh', 'functional-status', 'disability-status',
|
|
39
|
+
'cognitive-status'].freeze
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
require_relative '../base_smart_granular_scopes_group'
|
|
2
|
+
require_relative '../smart_scopes_constants'
|
|
3
|
+
require_relative '../granted_granular_scopes_test'
|
|
2
4
|
require_relative '../../generated/v6.1.0/granular_scopes1_group'
|
|
3
|
-
require_relative '../../generated/v6.1.0/granular_scopes2_group'
|
|
4
5
|
|
|
5
6
|
module USCoreTestKit
|
|
6
7
|
module USCoreV610
|
|
7
|
-
class SmartGranularScopesGroup <
|
|
8
|
-
|
|
8
|
+
class SmartGranularScopesGroup < Inferno::TestGroup
|
|
9
|
+
include SmartScopesConstants
|
|
9
10
|
title 'US Core SMART Granular Scopes'
|
|
11
|
+
id :us_core_v610_smart_granular_scopes
|
|
12
|
+
|
|
13
|
+
description <<~DESCRIPTION
|
|
14
|
+
These tests verify that servers honor [SMART App Launch granular
|
|
15
|
+
scopes](http://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#finer-grained-resource-constraints-using-search-parameters).
|
|
16
|
+
Support for these scopes is [required in US Core
|
|
17
|
+
7](http://hl7.org/fhir/us/core/2024Jan/scopes.html#us-core-scopes).
|
|
18
|
+
|
|
19
|
+
Prior to running these tests, first run the US Core FHIR API tests using
|
|
20
|
+
resource-level scopes. This group includes a SMART App Launch followed by
|
|
21
|
+
FHIR API tests. The app launches require that a granular scopes be
|
|
22
|
+
granted. The FHIR API tests then repeat all of the queries from the
|
|
23
|
+
original FHIR API tests that were run using resource-level scopes, and
|
|
24
|
+
verify that only resources matching the granted granular scopes are
|
|
25
|
+
returned.
|
|
26
|
+
DESCRIPTION
|
|
27
|
+
|
|
28
|
+
def self.default_group_scopes(version)
|
|
29
|
+
[DEFAULT_SCOPES, *SMART_GRANULAR_SCOPES_GROUP1[version]].join(' ')
|
|
30
|
+
end
|
|
10
31
|
|
|
11
32
|
def self.scopes_string(scopes)
|
|
12
33
|
scopes
|
|
@@ -15,59 +36,91 @@ module USCoreTestKit
|
|
|
15
36
|
.join("\n")
|
|
16
37
|
end
|
|
17
38
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
are repeated to verify that the results have been filtered according to the
|
|
27
|
-
above scopes.
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
groups
|
|
31
|
-
.first
|
|
32
|
-
.config(
|
|
33
|
-
inputs: {
|
|
34
|
-
requested_scopes: {
|
|
35
|
-
name: :requested_scopes_group1,
|
|
36
|
-
default: groups.first.default_group_scopes('v610')
|
|
37
|
-
}
|
|
39
|
+
config(
|
|
40
|
+
inputs: {
|
|
41
|
+
url: {
|
|
42
|
+
locked: true
|
|
43
|
+
},
|
|
44
|
+
requested_scopes: {
|
|
45
|
+
name: :requested_scopes_group1,
|
|
46
|
+
default: default_group_scopes('v610')
|
|
38
47
|
}
|
|
39
|
-
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
group do
|
|
52
|
+
title 'SMART App Launch w/Granular Scopes'
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
def self.scopes_string(scopes)
|
|
55
|
+
scopes
|
|
56
|
+
.map { |scope| scope.delete_prefix 'patient/' }
|
|
57
|
+
.map { |scope| "* `#{scope}`" }
|
|
58
|
+
.join("\n")
|
|
59
|
+
end
|
|
44
60
|
|
|
45
|
-
|
|
46
|
-
.last
|
|
47
|
-
.description %(
|
|
61
|
+
description %(
|
|
48
62
|
These tests perform a SMART app launch to receive the following granular scopes:
|
|
49
63
|
|
|
50
|
-
#{scopes_string(
|
|
64
|
+
#{scopes_string(SMART_GRANULAR_SCOPES_GROUP1['v610'])}
|
|
51
65
|
|
|
52
66
|
Then all of the searches which have been performed in the US Core FHIR API tests
|
|
53
67
|
are repeated to verify that the results have been filtered according to the
|
|
54
68
|
above scopes.
|
|
55
69
|
)
|
|
56
70
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
requested_scopes: {
|
|
62
|
-
name: :requested_scopes_group2,
|
|
63
|
-
default: groups.last.default_group_scopes('v610')
|
|
71
|
+
config(
|
|
72
|
+
outputs: {
|
|
73
|
+
smart_credentials: {
|
|
74
|
+
name: :granular_scopes_1_credentials
|
|
64
75
|
}
|
|
65
76
|
}
|
|
66
77
|
)
|
|
78
|
+
group from: :us_core_smart_standalone_launch_stu2,
|
|
79
|
+
optional: true,
|
|
80
|
+
config: {
|
|
81
|
+
inputs: {
|
|
82
|
+
smart_credentials: {
|
|
83
|
+
name: :granular_scopes_1_credentials
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
} do
|
|
87
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
88
|
+
config: {
|
|
89
|
+
inputs: {
|
|
90
|
+
received_scopes: {
|
|
91
|
+
name: :standalone_received_scopes
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
options: {
|
|
95
|
+
required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v610']
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
end
|
|
99
|
+
group from: :us_core_smart_ehr_launch_stu2,
|
|
100
|
+
optional: true,
|
|
101
|
+
config: {
|
|
102
|
+
inputs: {
|
|
103
|
+
smart_credentials: {
|
|
104
|
+
name: :granular_scopes_1_credentials
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
} do
|
|
108
|
+
groups[1].test from: :us_core_granted_granular_scopes,
|
|
109
|
+
config: {
|
|
110
|
+
inputs: {
|
|
111
|
+
received_scopes: {
|
|
112
|
+
name: :ehr_received_scopes
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
options: {
|
|
116
|
+
required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v610']
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
end
|
|
120
|
+
end
|
|
67
121
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.group from: :us_core_v610_smart_granular_scopes_2
|
|
122
|
+
group from: :us_core_v610_smart_granular_scopes_1,
|
|
123
|
+
title: 'US Core FHIR API w/Granular Scopes'
|
|
71
124
|
end
|
|
72
125
|
end
|
|
73
126
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require_relative '../screening_assessment_category_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
module USCoreV700_BALLOT
|
|
5
|
+
class ScreeningAssessmentGroup < Inferno::TestGroup
|
|
6
|
+
id :us_core_v700_ballot_screening_assessment
|
|
7
|
+
title 'Screening Assessments Guidance'
|
|
8
|
+
short_description 'Verify Condition and Observation resources support the ' \
|
|
9
|
+
'US Core Screening And Assessments Guidance.'
|
|
10
|
+
description %(
|
|
11
|
+
The #{title} Sequence tests Condition and Observation
|
|
12
|
+
resources associated with the provided patient. The resources returned
|
|
13
|
+
will be checked for consistency against the [US Core Screening And Assessments
|
|
14
|
+
Guidance](https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html)
|
|
15
|
+
and FHIR JIRA ticket [FHIR-46052](https://jira.hl7.org/browse/FHIR-46052)
|
|
16
|
+
|
|
17
|
+
In this set of tests, Inferno serves as a FHIR client that attempts to
|
|
18
|
+
access the different types of Screening and Assessments specified in the guidance.
|
|
19
|
+
The provided patient needs to have the following four common Screening and Assessements
|
|
20
|
+
as Observation categories:
|
|
21
|
+
|
|
22
|
+
* SDOH Assessment (sdoh)
|
|
23
|
+
* Functional Status (functional-status)
|
|
24
|
+
* Disability Status (disability-status)
|
|
25
|
+
* Mental/Cognitive Status (cognitive-status)
|
|
26
|
+
* Physical Activity (activity)
|
|
27
|
+
* Alcohol Use (social-history)
|
|
28
|
+
* Substance Use (social-history)
|
|
29
|
+
|
|
30
|
+
The provided patient also needs to have the following common Screening and Assessment
|
|
31
|
+
as Condition category:
|
|
32
|
+
|
|
33
|
+
* SDOH Assessment (sdoh)
|
|
34
|
+
)
|
|
35
|
+
run_as_group
|
|
36
|
+
|
|
37
|
+
test from: :us_core_screening_assessment_category do
|
|
38
|
+
config(
|
|
39
|
+
options: {
|
|
40
|
+
condition_screening_assessment_categories: ['sdoh'].freeze,
|
|
41
|
+
observation_screening_assessment_categories: ['sdoh', 'functional-status', 'disability-status',
|
|
42
|
+
'cognitive-status', 'activity', 'social-history'].freeze
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -43,6 +43,9 @@ above scopes.
|
|
|
43
43
|
name: :requested_scopes_group1,
|
|
44
44
|
default: groups.first.default_group_scopes('v700_ballot')
|
|
45
45
|
}
|
|
46
|
+
},
|
|
47
|
+
options: {
|
|
48
|
+
required_scopes: SMART_GRANULAR_SCOPES_GROUP1['v700_ballot']
|
|
46
49
|
}
|
|
47
50
|
)
|
|
48
51
|
|
|
@@ -70,6 +73,9 @@ above scopes.
|
|
|
70
73
|
name: :requested_scopes_group2,
|
|
71
74
|
default: groups.last.default_group_scopes('v700_ballot')
|
|
72
75
|
}
|
|
76
|
+
},
|
|
77
|
+
options: {
|
|
78
|
+
required_scopes: SMART_GRANULAR_SCOPES_GROUP2['v700_ballot']
|
|
73
79
|
}
|
|
74
80
|
)
|
|
75
81
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
require_relative './primitive_type'
|
|
2
|
+
|
|
1
3
|
module USCoreTestKit
|
|
2
4
|
module FHIRResourceNavigation
|
|
3
5
|
DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
|
|
6
|
+
PRIMITIVE_DATA_TYPES = FHIR::PRIMITIVES.keys
|
|
4
7
|
|
|
5
8
|
def resolve_path(elements, path)
|
|
6
9
|
elements = Array.wrap(elements)
|
|
@@ -64,12 +67,24 @@ module USCoreTestKit
|
|
|
64
67
|
slice = find_slice_via_discriminator(element, property)
|
|
65
68
|
slice
|
|
66
69
|
else
|
|
67
|
-
element.send(property)
|
|
70
|
+
value = element.send(property)
|
|
71
|
+
primitive_value = get_primitive_type_value(element, property, value)
|
|
72
|
+
primitive_value.present? ? primitive_value : value
|
|
68
73
|
end
|
|
69
74
|
rescue NoMethodError
|
|
70
75
|
nil
|
|
71
76
|
end
|
|
72
77
|
|
|
78
|
+
def get_primitive_type_value(element, property, value)
|
|
79
|
+
source_value = element.source_hash["_#{property}"]
|
|
80
|
+
|
|
81
|
+
return nil unless source_value.present?
|
|
82
|
+
|
|
83
|
+
primitive_value = USCoreTestKit::PrimitiveType.new(source_value)
|
|
84
|
+
primitive_value.value = value
|
|
85
|
+
primitive_value
|
|
86
|
+
end
|
|
87
|
+
|
|
73
88
|
def find_slice_via_discriminator(element, property)
|
|
74
89
|
element_name = property.to_s.split(':')[0].gsub(/^class$/, 'local_class')
|
|
75
90
|
slice_name = property.to_s.split(':')[1].gsub(/^class$/, 'local_class')
|
|
@@ -6636,10 +6636,13 @@
|
|
|
6636
6636
|
:must_supports:
|
|
6637
6637
|
:extensions:
|
|
6638
6638
|
- :id: Patient.extension:race
|
|
6639
|
+
:path: extension
|
|
6639
6640
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-race
|
|
6640
6641
|
- :id: Patient.extension:ethnicity
|
|
6642
|
+
:path: extension
|
|
6641
6643
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity
|
|
6642
6644
|
- :id: Patient.extension:birthsex
|
|
6645
|
+
:path: extension
|
|
6643
6646
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex
|
|
6644
6647
|
:slices: []
|
|
6645
6648
|
:elements:
|
|
@@ -148,10 +148,13 @@
|
|
|
148
148
|
:must_supports:
|
|
149
149
|
:extensions:
|
|
150
150
|
- :id: Patient.extension:race
|
|
151
|
+
:path: extension
|
|
151
152
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-race
|
|
152
153
|
- :id: Patient.extension:ethnicity
|
|
154
|
+
:path: extension
|
|
153
155
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity
|
|
154
156
|
- :id: Patient.extension:birthsex
|
|
157
|
+
:path: extension
|
|
155
158
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex
|
|
156
159
|
:slices: []
|
|
157
160
|
:elements:
|
|
@@ -65,6 +65,7 @@ module USCoreTestKit
|
|
|
65
65
|
/Provenance.agent\[\d*\]: Rule provenance-1/, #Invalid invariant in US Core v5.0.1
|
|
66
66
|
%r{Unknown Code System 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags'}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
|
67
67
|
%r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
|
68
|
+
/\A\S+: \S+: URL value '.*' does not resolve/,
|
|
68
69
|
%r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'} # Known issue with the Pulse Oximetry Profile
|
|
69
70
|
].freeze
|
|
70
71
|
|
|
@@ -76,8 +77,10 @@ module USCoreTestKit
|
|
|
76
77
|
end
|
|
77
78
|
end
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
id :us_core_v311
|
|
81
|
+
|
|
82
|
+
fhir_resource_validator do
|
|
83
|
+
igs 'hl7.fhir.us.core#3.1.1'
|
|
81
84
|
message_filters = VALIDATION_MESSAGE_FILTERS + VERSION_SPECIFIC_MESSAGE_FILTERS
|
|
82
85
|
|
|
83
86
|
exclude_message do |message|
|
|
@@ -90,8 +93,6 @@ module USCoreTestKit
|
|
|
90
93
|
end
|
|
91
94
|
end
|
|
92
95
|
|
|
93
|
-
id :us_core_v311
|
|
94
|
-
|
|
95
96
|
input :url,
|
|
96
97
|
title: 'FHIR Endpoint',
|
|
97
98
|
description: 'URL of the FHIR endpoint'
|
|
@@ -7260,12 +7260,15 @@
|
|
|
7260
7260
|
:must_supports:
|
|
7261
7261
|
:extensions:
|
|
7262
7262
|
- :id: Patient.extension:race
|
|
7263
|
+
:path: extension
|
|
7263
7264
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-race
|
|
7264
7265
|
:uscdi_only: true
|
|
7265
7266
|
- :id: Patient.extension:ethnicity
|
|
7267
|
+
:path: extension
|
|
7266
7268
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity
|
|
7267
7269
|
:uscdi_only: true
|
|
7268
7270
|
- :id: Patient.extension:birthsex
|
|
7271
|
+
:path: extension
|
|
7269
7272
|
:url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex
|
|
7270
7273
|
:uscdi_only: true
|
|
7271
7274
|
:slices: []
|