us_core_test_kit 0.6.3 → 0.6.4
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/smart_app_launch_group.rb +2 -2
- data/lib/us_core_test_kit/generated/v3.1.1/metadata.yml +10 -0
- data/lib/us_core_test_kit/generated/v3.1.1/patient/metadata.yml +10 -0
- data/lib/us_core_test_kit/generated/v4.0.0/metadata.yml +10 -0
- data/lib/us_core_test_kit/generated/v4.0.0/patient/metadata.yml +10 -0
- data/lib/us_core_test_kit/generated/v5.0.1/metadata.yml +21 -2
- data/lib/us_core_test_kit/generated/v5.0.1/patient/metadata.yml +6 -2
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/metadata.yml +155 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_must_support_test.rb +45 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_practitioner_search_test.rb +41 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_read_test.rb +26 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_specialty_search_test.rb +53 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role/practitioner_role_validation_test.rb +40 -0
- data/lib/us_core_test_kit/generated/v5.0.1/practitioner_role_group.rb +89 -0
- data/lib/us_core_test_kit/generated/v5.0.1/us_core_test_suite.rb +2 -0
- data/lib/us_core_test_kit/generated/v6.1.0/metadata.yml +17 -2
- data/lib/us_core_test_kit/generated/v6.1.0/patient/metadata.yml +2 -2
- data/lib/us_core_test_kit/generated/v6.1.0/patient/patient_must_support_test.rb +0 -2
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/metadata.yml +155 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_must_support_test.rb +45 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_practitioner_search_test.rb +41 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_read_test.rb +26 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_specialty_search_test.rb +53 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role/practitioner_role_validation_test.rb +40 -0
- data/lib/us_core_test_kit/generated/v6.1.0/practitioner_role_group.rb +89 -0
- data/lib/us_core_test_kit/generated/v6.1.0/us_core_test_suite.rb +2 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_status_search_test.rb → location/location_address_city_search_test.rb} +7 -13
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_code_date_search_test.rb → location/location_address_postalcode_search_test.rb} +7 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_address_search_test.rb +52 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_address_state_search_test.rb +43 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_must_support_test.rb → location/location_must_support_test.rb} +17 -16
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_search_test.rb → location/location_name_search_test.rb} +7 -13
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/location_read_test.rb +26 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_reference_resolution_test.rb → location/location_reference_resolution_test.rb} +6 -6
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_validation_test.rb → location/location_validation_test.rb} +7 -7
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/location/metadata.yml +194 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/location_group.rb +93 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/metadata.yml +38 -273
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/patient/metadata.yml +2 -2
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/patient/patient_must_support_test.rb +0 -2
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/metadata.yml +160 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_must_support_test.rb +45 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_code_search_test.rb → practitioner_role/practitioner_role_practitioner_search_test.rb} +8 -20
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_read_test.rb +26 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_reference_resolution_test.rb +43 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/{vital_signs/vital_signs_patient_category_date_search_test.rb → practitioner_role/practitioner_role_specialty_search_test.rb} +8 -14
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_validation_test.rb +40 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role_group.rb +89 -0
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/us_core_test_suite.rb +4 -2
- data/lib/us_core_test_kit/generator/group_generator.rb +2 -2
- data/lib/us_core_test_kit/generator/group_metadata.rb +3 -1
- data/lib/us_core_test_kit/generator/ig_metadata_extractor.rb +8 -1
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_3.rb +64 -18
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_4.rb +1 -18
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_5.rb +0 -15
- data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_6.rb +5 -2
- data/lib/us_core_test_kit/generator/special_cases.rb +17 -7
- data/lib/us_core_test_kit/granular_scope_checker.rb +1 -1
- data/lib/us_core_test_kit/version.rb +1 -1
- metadata +37 -91
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_abatement_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_asserted_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_clinical_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_encounter_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_clinical_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_onset_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/condition_encounter_diagnosis/condition_patient_recorded_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_granular_scope1_group.rb +0 -38
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_granular_scope2_group.rb +0 -38
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_code_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/diagnostic_report_note/diagnostic_report_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_id_granular_scope_test.rb +0 -41
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_type_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference/document_reference_patient_type_period_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference_granular_scope1_group.rb +0 -39
- data/lib/us_core_test_kit/generated/v6.1.0/document_reference_granular_scope2_group.rb +0 -39
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_category_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_code_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/observation_lab/observation_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_id_granular_scope_test.rb +0 -41
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_category_authored_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_code_authored_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request/service_request_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v6.1.0/service_request_granular_scope1_group.rb +0 -39
- data/lib/us_core_test_kit/generated/v6.1.0/service_request_granular_scope2_group.rb +0 -40
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_abatement_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_asserted_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_clinical_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_encounter_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_clinical_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_onset_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/condition_encounter_diagnosis/condition_patient_recorded_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_code_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/diagnostic_report_note/diagnostic_report_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_id_granular_scope_test.rb +0 -41
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_type_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference/document_reference_patient_type_period_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/document_reference_granular_scope2_group.rb +0 -39
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_category_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_code_date_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/observation_lab/observation_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_id_granular_scope_test.rb +0 -41
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_category_authored_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_category_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_code_authored_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_code_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/service_request/service_request_patient_status_granular_scope_test.rb +0 -45
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/metadata.yml +0 -273
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/vital_signs_provenance_revinclude_search_test.rb +0 -53
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs/vital_signs_read_test.rb +0 -26
- data/lib/us_core_test_kit/generated/v7.0.0-ballot/vital_signs_group.rb +0 -96
|
@@ -3,21 +3,16 @@ require_relative '../../../generator/group_metadata'
|
|
|
3
3
|
|
|
4
4
|
module USCoreTestKit
|
|
5
5
|
module USCoreV700_BALLOT
|
|
6
|
-
class
|
|
6
|
+
class PractitionerRolePractitionerSearchTest < Inferno::Test
|
|
7
7
|
include USCoreTestKit::SearchTest
|
|
8
8
|
|
|
9
|
-
title 'Server returns valid results for
|
|
9
|
+
title 'Server returns valid results for PractitionerRole search by practitioner'
|
|
10
10
|
description %(
|
|
11
11
|
A server SHALL support searching by
|
|
12
|
-
|
|
12
|
+
practitioner on the PractitionerRole resource. This test
|
|
13
13
|
will pass if resources are returned and match the search criteria. If
|
|
14
14
|
none are returned, the test is skipped.
|
|
15
15
|
|
|
16
|
-
This test verifies that the server supports searching by reference using
|
|
17
|
-
the form `patient=[id]` as well as `patient=Patient/[id]`. The two
|
|
18
|
-
different forms are expected to return the same number of results. US
|
|
19
|
-
Core requires that both forms are supported by US Core responders.
|
|
20
|
-
|
|
21
16
|
Because this is the first search of the sequence, resources in the
|
|
22
17
|
response will be used for subsequent tests.
|
|
23
18
|
|
|
@@ -30,20 +25,13 @@ requirement of US Core v7.0.0-ballot.
|
|
|
30
25
|
|
|
31
26
|
)
|
|
32
27
|
|
|
33
|
-
id :
|
|
34
|
-
input :patient_ids,
|
|
35
|
-
title: 'Patient IDs',
|
|
36
|
-
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
37
|
-
|
|
28
|
+
id :us_core_v700_ballot_practitioner_role_practitioner_search_test
|
|
38
29
|
def self.properties
|
|
39
30
|
@properties ||= SearchTestProperties.new(
|
|
40
31
|
first_search: true,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
possible_status_search: true,
|
|
45
|
-
token_search_params: ['code'],
|
|
46
|
-
test_reference_variants: true,
|
|
32
|
+
resource_type: 'PractitionerRole',
|
|
33
|
+
search_param_names: ['practitioner'],
|
|
34
|
+
saves_delayed_references: true,
|
|
47
35
|
test_post_search: true
|
|
48
36
|
)
|
|
49
37
|
end
|
|
@@ -53,7 +41,7 @@ requirement of US Core v7.0.0-ballot.
|
|
|
53
41
|
end
|
|
54
42
|
|
|
55
43
|
def scratch_resources
|
|
56
|
-
scratch[:
|
|
44
|
+
scratch[:practitioner_role_resources] ||= {}
|
|
57
45
|
end
|
|
58
46
|
|
|
59
47
|
run do
|
data/lib/us_core_test_kit/generated/v7.0.0-ballot/practitioner_role/practitioner_role_read_test.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative '../../../read_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
module USCoreV700_BALLOT
|
|
5
|
+
class PractitionerRoleReadTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::ReadTest
|
|
7
|
+
|
|
8
|
+
title 'Server returns correct PractitionerRole resource from PractitionerRole read interaction'
|
|
9
|
+
description 'A server SHALL support the PractitionerRole read interaction.'
|
|
10
|
+
|
|
11
|
+
id :us_core_v700_ballot_practitioner_role_read_test
|
|
12
|
+
|
|
13
|
+
def resource_type
|
|
14
|
+
'PractitionerRole'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def scratch_resources
|
|
18
|
+
scratch[:practitioner_role_resources] ||= {}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
run do
|
|
22
|
+
perform_read_test(scratch.dig(:references, 'PractitionerRole'))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../../reference_resolution_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
module USCoreV700_BALLOT
|
|
5
|
+
class PractitionerRoleReferenceResolutionTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::ReferenceResolutionTest
|
|
7
|
+
|
|
8
|
+
title 'MustSupport references within PractitionerRole resources are valid'
|
|
9
|
+
description %(
|
|
10
|
+
This test will attempt to read external references provided within elements
|
|
11
|
+
marked as 'MustSupport', if any are available.
|
|
12
|
+
|
|
13
|
+
It verifies that at least one external reference for each MustSupport Reference element
|
|
14
|
+
can be accessed by the test client, and conforms to corresponding US Core profile.
|
|
15
|
+
|
|
16
|
+
Elements which may provide external references include:
|
|
17
|
+
|
|
18
|
+
* PractitionerRole.endpoint
|
|
19
|
+
* PractitionerRole.location
|
|
20
|
+
* PractitionerRole.organization
|
|
21
|
+
* PractitionerRole.practitioner
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
id :us_core_v700_ballot_practitioner_role_reference_resolution_test
|
|
25
|
+
|
|
26
|
+
def resource_type
|
|
27
|
+
'PractitionerRole'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.metadata
|
|
31
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def scratch_resources
|
|
35
|
+
scratch[:practitioner_role_resources] ||= {}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
run do
|
|
39
|
+
perform_reference_resolution_test(scratch_resources[:all])
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -3,13 +3,13 @@ require_relative '../../../generator/group_metadata'
|
|
|
3
3
|
|
|
4
4
|
module USCoreTestKit
|
|
5
5
|
module USCoreV700_BALLOT
|
|
6
|
-
class
|
|
6
|
+
class PractitionerRoleSpecialtySearchTest < Inferno::Test
|
|
7
7
|
include USCoreTestKit::SearchTest
|
|
8
8
|
|
|
9
|
-
title 'Server returns valid results for
|
|
9
|
+
title 'Server returns valid results for PractitionerRole search by specialty'
|
|
10
10
|
description %(
|
|
11
11
|
A server SHALL support searching by
|
|
12
|
-
|
|
12
|
+
specialty on the PractitionerRole resource. This test
|
|
13
13
|
will pass if resources are returned and match the search criteria. If
|
|
14
14
|
none are returned, the test is skipped.
|
|
15
15
|
|
|
@@ -17,18 +17,12 @@ none are returned, the test is skipped.
|
|
|
17
17
|
|
|
18
18
|
)
|
|
19
19
|
|
|
20
|
-
id :
|
|
21
|
-
input :patient_ids,
|
|
22
|
-
title: 'Patient IDs',
|
|
23
|
-
description: 'Comma separated list of patient IDs that in sum contain all MUST SUPPORT elements'
|
|
24
|
-
|
|
20
|
+
id :us_core_v700_ballot_practitioner_role_specialty_search_test
|
|
25
21
|
def self.properties
|
|
26
22
|
@properties ||= SearchTestProperties.new(
|
|
27
|
-
resource_type: '
|
|
28
|
-
search_param_names: ['
|
|
29
|
-
|
|
30
|
-
token_search_params: ['category'],
|
|
31
|
-
params_with_comparators: ['date']
|
|
23
|
+
resource_type: 'PractitionerRole',
|
|
24
|
+
search_param_names: ['specialty'],
|
|
25
|
+
token_search_params: ['specialty']
|
|
32
26
|
)
|
|
33
27
|
end
|
|
34
28
|
|
|
@@ -37,7 +31,7 @@ none are returned, the test is skipped.
|
|
|
37
31
|
end
|
|
38
32
|
|
|
39
33
|
def scratch_resources
|
|
40
|
-
scratch[:
|
|
34
|
+
scratch[:practitioner_role_resources] ||= {}
|
|
41
35
|
end
|
|
42
36
|
|
|
43
37
|
run do
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../../../validation_test'
|
|
2
|
+
|
|
3
|
+
module USCoreTestKit
|
|
4
|
+
module USCoreV700_BALLOT
|
|
5
|
+
class PractitionerRoleValidationTest < Inferno::Test
|
|
6
|
+
include USCoreTestKit::ValidationTest
|
|
7
|
+
|
|
8
|
+
id :us_core_v700_ballot_practitioner_role_validation_test
|
|
9
|
+
title 'PractitionerRole resources returned during previous tests conform to the US Core PractitionerRole Profile'
|
|
10
|
+
description %(
|
|
11
|
+
This test verifies resources returned from the first search conform to
|
|
12
|
+
the [US Core PractitionerRole Profile](http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole).
|
|
13
|
+
Systems must demonstrate at least one valid example in order to pass this test.
|
|
14
|
+
|
|
15
|
+
It verifies the presence of mandatory elements and that elements with
|
|
16
|
+
required bindings contain appropriate values. CodeableConcept element
|
|
17
|
+
bindings will fail if none of their codings have a code/system belonging
|
|
18
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
|
19
|
+
fail if their code/system are not found in the valueset.
|
|
20
|
+
|
|
21
|
+
)
|
|
22
|
+
output :dar_code_found, :dar_extension_found
|
|
23
|
+
|
|
24
|
+
def resource_type
|
|
25
|
+
'PractitionerRole'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def scratch_resources
|
|
29
|
+
scratch[:practitioner_role_resources] ||= {}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
run do
|
|
33
|
+
perform_validation_test(scratch_resources[:all] || [],
|
|
34
|
+
'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole',
|
|
35
|
+
'7.0.0-ballot',
|
|
36
|
+
skip_if_empty: true)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require_relative 'practitioner_role/practitioner_role_read_test'
|
|
2
|
+
require_relative 'practitioner_role/practitioner_role_practitioner_search_test'
|
|
3
|
+
require_relative 'practitioner_role/practitioner_role_specialty_search_test'
|
|
4
|
+
require_relative 'practitioner_role/practitioner_role_validation_test'
|
|
5
|
+
require_relative 'practitioner_role/practitioner_role_must_support_test'
|
|
6
|
+
require_relative 'practitioner_role/practitioner_role_reference_resolution_test'
|
|
7
|
+
|
|
8
|
+
module USCoreTestKit
|
|
9
|
+
module USCoreV700_BALLOT
|
|
10
|
+
class PractitionerRoleGroup < Inferno::TestGroup
|
|
11
|
+
title 'PractitionerRole Tests'
|
|
12
|
+
short_description 'Verify support for the server capabilities required by the US Core PractitionerRole Profile.'
|
|
13
|
+
description %(
|
|
14
|
+
# Background
|
|
15
|
+
|
|
16
|
+
The US Core PractitionerRole sequence verifies that the system under test is
|
|
17
|
+
able to provide correct responses for PractitionerRole queries. These queries
|
|
18
|
+
must contain resources conforming to the US Core PractitionerRole Profile as
|
|
19
|
+
specified in the US Core v7.0.0-ballot Implementation Guide.
|
|
20
|
+
|
|
21
|
+
# Testing Methodology
|
|
22
|
+
## Searching
|
|
23
|
+
This test sequence will first perform each required search associated
|
|
24
|
+
with this resource. This sequence will perform searches with the
|
|
25
|
+
following parameters:
|
|
26
|
+
|
|
27
|
+
* practitioner
|
|
28
|
+
* specialty
|
|
29
|
+
|
|
30
|
+
### Search Parameters
|
|
31
|
+
The first search uses the selected patient(s) from the prior launch
|
|
32
|
+
sequence. Any subsequent searches will look for its parameter values
|
|
33
|
+
from the results of the first search. For example, the `identifier`
|
|
34
|
+
search in the patient sequence is performed by looking for an existing
|
|
35
|
+
`Patient.identifier` from any of the resources returned in the `_id`
|
|
36
|
+
search. If a value cannot be found this way, the search is skipped.
|
|
37
|
+
|
|
38
|
+
### Search Validation
|
|
39
|
+
Inferno will retrieve up to the first 20 bundle pages of the reply for
|
|
40
|
+
PractitionerRole resources and save them for subsequent tests. Each of
|
|
41
|
+
these resources is then checked to see if it matches the searched
|
|
42
|
+
parameters in accordance with [FHIR search
|
|
43
|
+
guidelines](https://www.hl7.org/fhir/search.html). The test will fail,
|
|
44
|
+
for example, if a Patient search for `gender=male` returns a `female`
|
|
45
|
+
patient.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Must Support
|
|
49
|
+
Each profile contains elements marked as "must support". This test
|
|
50
|
+
sequence expects to see each of these elements at least once. If at
|
|
51
|
+
least one cannot be found, the test will fail. The test will look
|
|
52
|
+
through the PractitionerRole resources found in the first test for these
|
|
53
|
+
elements.
|
|
54
|
+
|
|
55
|
+
## Profile Validation
|
|
56
|
+
Each resource returned from the first search is expected to conform to
|
|
57
|
+
the [US Core PractitionerRole Profile](http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole). Each element is checked against
|
|
58
|
+
teminology binding and cardinality requirements.
|
|
59
|
+
|
|
60
|
+
Elements with a required binding are validated against their bound
|
|
61
|
+
ValueSet. If the code/system in the element is not part of the ValueSet,
|
|
62
|
+
then the test will fail.
|
|
63
|
+
|
|
64
|
+
## Reference Validation
|
|
65
|
+
At least one instance of each external reference in elements marked as
|
|
66
|
+
"must support" within the resources provided by the system must resolve.
|
|
67
|
+
The test will attempt to read each reference found and will fail if no
|
|
68
|
+
read succeeds.
|
|
69
|
+
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
id :us_core_v700_ballot_practitioner_role
|
|
73
|
+
run_as_group
|
|
74
|
+
optional
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def self.metadata
|
|
78
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'practitioner_role', 'metadata.yml'), aliases: true))
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
test from: :us_core_v700_ballot_practitioner_role_read_test
|
|
82
|
+
test from: :us_core_v700_ballot_practitioner_role_practitioner_search_test
|
|
83
|
+
test from: :us_core_v700_ballot_practitioner_role_specialty_search_test
|
|
84
|
+
test from: :us_core_v700_ballot_practitioner_role_validation_test
|
|
85
|
+
test from: :us_core_v700_ballot_practitioner_role_must_support_test
|
|
86
|
+
test from: :us_core_v700_ballot_practitioner_role_reference_resolution_test
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -48,12 +48,13 @@ require_relative 'observation_clinical_result_group'
|
|
|
48
48
|
require_relative 'pediatric_bmi_for_age_group'
|
|
49
49
|
require_relative 'head_circumference_percentile_group'
|
|
50
50
|
require_relative 'body_weight_group'
|
|
51
|
-
require_relative 'vital_signs_group'
|
|
52
51
|
require_relative 'procedure_group'
|
|
53
52
|
require_relative 'questionnaire_response_group'
|
|
54
53
|
require_relative 'service_request_group'
|
|
54
|
+
require_relative 'location_group'
|
|
55
55
|
require_relative 'organization_group'
|
|
56
56
|
require_relative 'practitioner_group'
|
|
57
|
+
require_relative 'practitioner_role_group'
|
|
57
58
|
require_relative 'provenance_group'
|
|
58
59
|
require_relative 'related_person_group'
|
|
59
60
|
require_relative 'specimen_group'
|
|
@@ -193,12 +194,13 @@ module USCoreTestKit
|
|
|
193
194
|
group from: :us_core_v700_ballot_pediatric_bmi_for_age
|
|
194
195
|
group from: :us_core_v700_ballot_head_circumference_percentile
|
|
195
196
|
group from: :us_core_v700_ballot_body_weight
|
|
196
|
-
group from: :us_core_v700_ballot_vital_signs
|
|
197
197
|
group from: :us_core_v700_ballot_procedure
|
|
198
198
|
group from: :us_core_v700_ballot_questionnaire_response
|
|
199
199
|
group from: :us_core_v700_ballot_service_request
|
|
200
|
+
group from: :us_core_v700_ballot_location
|
|
200
201
|
group from: :us_core_v700_ballot_organization
|
|
201
202
|
group from: :us_core_v700_ballot_practitioner
|
|
203
|
+
group from: :us_core_v700_ballot_practitioner_role
|
|
202
204
|
group from: :us_core_v700_ballot_provenance
|
|
203
205
|
group from: :us_core_v700_ballot_related_person
|
|
204
206
|
group from: :us_core_v700_ballot_specimen
|
|
@@ -95,8 +95,8 @@ module USCoreTestKit
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def optional?
|
|
98
|
-
resource_type
|
|
99
|
-
profile_url
|
|
98
|
+
SpecialCases::OPTIONAL_RESOURCES.include?(resource_type) ||
|
|
99
|
+
SpecialCases::OPTIONAL_PROFILES.include?(profile_url)
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def generate
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require_relative 'special_cases'
|
|
2
|
+
|
|
1
3
|
module USCoreTestKit
|
|
2
4
|
class Generator
|
|
3
5
|
class GroupMetadata
|
|
@@ -50,7 +52,7 @@ module USCoreTestKit
|
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
def exclude_search_tests?
|
|
53
|
-
delayed? && !searchable_delayed_resource
|
|
55
|
+
delayed? && !searchable_delayed_resource?
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
def no_patient_searches?
|
|
@@ -9,6 +9,7 @@ module USCoreTestKit
|
|
|
9
9
|
def initialize(ig_resources)
|
|
10
10
|
self.ig_resources = ig_resources
|
|
11
11
|
add_missing_supported_profiles
|
|
12
|
+
remove_version_from_supported_profiles
|
|
12
13
|
remove_extra_supported_profiles
|
|
13
14
|
self.metadata = IGMetadata.new
|
|
14
15
|
end
|
|
@@ -52,6 +53,12 @@ module USCoreTestKit
|
|
|
52
53
|
end
|
|
53
54
|
end
|
|
54
55
|
|
|
56
|
+
def remove_version_from_supported_profiles
|
|
57
|
+
resources_in_capability_statement.each do |resource|
|
|
58
|
+
resource.supportedProfile.map! { |profile_url| profile_url.split('|').first }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
55
62
|
def remove_extra_supported_profiles
|
|
56
63
|
ig_resources.capability_statement.rest.first.resource
|
|
57
64
|
.find { |resource| resource.type == 'Observation' }
|
|
@@ -64,7 +71,7 @@ module USCoreTestKit
|
|
|
64
71
|
metadata.groups =
|
|
65
72
|
resources_in_capability_statement.flat_map do |resource|
|
|
66
73
|
resource.supportedProfile&.map do |supported_profile|
|
|
67
|
-
supported_profile = supported_profile.split('|').first
|
|
74
|
+
#supported_profile = supported_profile.split('|').first
|
|
68
75
|
next if supported_profile == 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire'
|
|
69
76
|
|
|
70
77
|
GroupMetadataExtractor.new(resource, supported_profile, metadata, ig_resources).group_metadata
|
|
@@ -10,7 +10,7 @@ module USCoreTestKit
|
|
|
10
10
|
|
|
11
11
|
def handle_special_cases
|
|
12
12
|
add_must_support_choices
|
|
13
|
-
|
|
13
|
+
update_patient_previous_name_address
|
|
14
14
|
remove_document_reference_custodian
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -22,31 +22,77 @@ module USCoreTestKit
|
|
|
22
22
|
choices << { paths: ['udiCarrier.carrierAIDC', 'udiCarrier.carrierHRF'] }
|
|
23
23
|
when 'DocumentReference'
|
|
24
24
|
choices << { paths: ['content.attachment.data', 'content.attachment.url'] }
|
|
25
|
-
when 'Patient'
|
|
26
|
-
# FHIR-40299 adds USCDI MustSupport choices for:
|
|
27
|
-
# * address.period.end and address.use,
|
|
28
|
-
# * name.period.end and name.use
|
|
29
|
-
choices << {
|
|
30
|
-
paths: ['address.period.end', 'address.use'],
|
|
31
|
-
uscdi_only: true
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
choices << {
|
|
35
|
-
paths: ['name.period.end', 'name.use'],
|
|
36
|
-
uscdi_only: true
|
|
37
|
-
}
|
|
38
25
|
end
|
|
39
26
|
|
|
40
27
|
must_supports[:choices] = choices if choices.present?
|
|
41
28
|
end
|
|
42
29
|
|
|
43
|
-
# FHIR-40299
|
|
44
|
-
|
|
30
|
+
# FHIR-40299 adds USCDI MustSupport choices for:
|
|
31
|
+
# * address.period.end and address.use,
|
|
32
|
+
# * name.period.end and name.use
|
|
33
|
+
def update_patient_previous_name_address
|
|
45
34
|
return unless profile.type == 'Patient'
|
|
46
35
|
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
name_period_exists = false
|
|
37
|
+
name_use_exists = false
|
|
38
|
+
address_period_exists = false
|
|
39
|
+
address_use_exists = false
|
|
40
|
+
|
|
41
|
+
must_supports[:elements].each do |element|
|
|
42
|
+
case element[:path]
|
|
43
|
+
when 'name.period'
|
|
44
|
+
element[:path] = 'name.period.end'
|
|
45
|
+
element[:uscdi_only] = true
|
|
46
|
+
name_period_exists = true
|
|
47
|
+
when 'name.use'
|
|
48
|
+
element[:fixed_value] = 'old'
|
|
49
|
+
element[:uscdi_only] = true
|
|
50
|
+
name_use_exists = true
|
|
51
|
+
when 'address.period'
|
|
52
|
+
element[:path] = 'address.period.end'
|
|
53
|
+
element[:uscdi_only] = true
|
|
54
|
+
address_period_exists = true
|
|
55
|
+
when 'address.use'
|
|
56
|
+
element[:fixed_value] = 'old'
|
|
57
|
+
element[:uscdi_only] = true
|
|
58
|
+
address_use_exists = true
|
|
59
|
+
end
|
|
49
60
|
end
|
|
61
|
+
|
|
62
|
+
must_supports[:elements] << {
|
|
63
|
+
path: 'name.period.end',
|
|
64
|
+
uscdi_only: true
|
|
65
|
+
} unless name_period_exists
|
|
66
|
+
|
|
67
|
+
must_supports[:elements] << {
|
|
68
|
+
path: 'name.use',
|
|
69
|
+
fixed_value: 'old',
|
|
70
|
+
uscdi_only: true
|
|
71
|
+
} unless name_use_exists
|
|
72
|
+
|
|
73
|
+
must_supports[:elements] << {
|
|
74
|
+
path: 'address.period.end',
|
|
75
|
+
uscdi_only: true
|
|
76
|
+
} unless address_period_exists
|
|
77
|
+
|
|
78
|
+
must_supports[:elements] << {
|
|
79
|
+
path: 'address.use',
|
|
80
|
+
fixed_value: 'old',
|
|
81
|
+
uscdi_only: true
|
|
82
|
+
} unless address_use_exists
|
|
83
|
+
|
|
84
|
+
must_supports[:choices] ||= []
|
|
85
|
+
|
|
86
|
+
must_supports[:choices] << {
|
|
87
|
+
paths: ['address.period.end', 'address.use'],
|
|
88
|
+
uscdi_only: true
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
must_supports[:choices] << {
|
|
92
|
+
paths: ['name.period.end', 'name.use'],
|
|
93
|
+
uscdi_only: true
|
|
94
|
+
}
|
|
95
|
+
|
|
50
96
|
end
|
|
51
97
|
|
|
52
98
|
# US Core clarified that server implmentation is not required to support DocumentReference.custodian (FHIR-28393)
|
|
@@ -16,7 +16,6 @@ module USCoreTestKit
|
|
|
16
16
|
|
|
17
17
|
def handle_special_cases
|
|
18
18
|
add_must_support_choices
|
|
19
|
-
remove_patient_address_period
|
|
20
19
|
add_device_distinct_identifier
|
|
21
20
|
add_patient_uscdi_elements
|
|
22
21
|
end
|
|
@@ -32,28 +31,11 @@ module USCoreTestKit
|
|
|
32
31
|
choices << { paths: ['location.location', 'serviceProvider'] }
|
|
33
32
|
when 'MedicationRequest'
|
|
34
33
|
choices << { paths: ['reportedBoolean', 'reportedReference'] }
|
|
35
|
-
when 'Patient'
|
|
36
|
-
# FHIR-40299 adds USCDI MustSupport choices for:
|
|
37
|
-
# * address.period.end and address.use,
|
|
38
|
-
# * name.period.end and name.use
|
|
39
|
-
choices << {
|
|
40
|
-
paths: ['address.period.end', 'address.use'],
|
|
41
|
-
uscdi_only: true
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
choices << {
|
|
45
|
-
paths: ['name.period.end', 'name.use'],
|
|
46
|
-
uscdi_only: true
|
|
47
|
-
}
|
|
48
34
|
end
|
|
49
35
|
|
|
50
36
|
must_supports[:choices] = choices if choices.present?
|
|
51
37
|
end
|
|
52
38
|
|
|
53
|
-
def remove_patient_address_period
|
|
54
|
-
us_core_3_extractor.remove_patient_address_period
|
|
55
|
-
end
|
|
56
|
-
|
|
57
39
|
def add_device_distinct_identifier
|
|
58
40
|
if profile.type == 'Device'
|
|
59
41
|
# FHIR-36303 US Core 4.0.0 mistakenly removed MS from Device.distinctIdentifier
|
|
@@ -97,6 +79,7 @@ module USCoreTestKit
|
|
|
97
79
|
}
|
|
98
80
|
|
|
99
81
|
add_patient_telecom_communication_uscdi
|
|
82
|
+
us_core_3_extractor.update_patient_previous_name_address
|
|
100
83
|
end
|
|
101
84
|
|
|
102
85
|
def add_patient_telecom_communication_uscdi
|
|
@@ -17,7 +17,6 @@ module USCoreTestKit
|
|
|
17
17
|
|
|
18
18
|
def handle_special_cases
|
|
19
19
|
add_must_support_choices
|
|
20
|
-
remove_patient_address_period
|
|
21
20
|
add_patient_uscdi_elements
|
|
22
21
|
remove_survey_questionnaire_response
|
|
23
22
|
end
|
|
@@ -48,10 +47,6 @@ module USCoreTestKit
|
|
|
48
47
|
end
|
|
49
48
|
end
|
|
50
49
|
|
|
51
|
-
def remove_patient_address_period
|
|
52
|
-
us_core_4_extractor.remove_patient_address_period
|
|
53
|
-
end
|
|
54
|
-
|
|
55
50
|
def add_patient_uscdi_elements
|
|
56
51
|
return unless profile.type == 'Patient'
|
|
57
52
|
|
|
@@ -62,16 +57,6 @@ module USCoreTestKit
|
|
|
62
57
|
url: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-genderIdentity',
|
|
63
58
|
uscdi_only: true
|
|
64
59
|
}
|
|
65
|
-
must_supports[:elements] << {
|
|
66
|
-
path: 'address.use',
|
|
67
|
-
fixed_value: 'old',
|
|
68
|
-
uscdi_only: true
|
|
69
|
-
}
|
|
70
|
-
must_supports[:elements] << {
|
|
71
|
-
path: 'name.use',
|
|
72
|
-
fixed_value: 'old',
|
|
73
|
-
uscdi_only: true
|
|
74
|
-
}
|
|
75
60
|
end
|
|
76
61
|
|
|
77
62
|
def add_value_set_expansion
|
|
@@ -12,6 +12,10 @@ module USCoreTestKit
|
|
|
12
12
|
self.must_supports = must_supports
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
def us_core_3_extractor
|
|
16
|
+
@us_core_3_extractor ||= MustSupportMetadataExtractorUsCore3.new(profile, must_supports)
|
|
17
|
+
end
|
|
18
|
+
|
|
15
19
|
def us_core_4_extractor
|
|
16
20
|
@us_core_4_extractor ||= MustSupportMetadataExtractorUsCore4.new(profile, must_supports)
|
|
17
21
|
end
|
|
@@ -66,11 +70,10 @@ module USCoreTestKit
|
|
|
66
70
|
return unless profile.type == 'Patient'
|
|
67
71
|
|
|
68
72
|
us_core_4_extractor.add_patient_telecom_communication_uscdi
|
|
73
|
+
us_core_3_extractor.update_patient_previous_name_address
|
|
69
74
|
|
|
70
75
|
must_supports[:elements].each do |element|
|
|
71
76
|
case element[:path]
|
|
72
|
-
when 'address.use', 'name.use'
|
|
73
|
-
element[:fixed_value] = 'old'
|
|
74
77
|
when 'deceased[x]'
|
|
75
78
|
element[:original_path] = element[:path]
|
|
76
79
|
element[:path] = 'deceasedDateTime'
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
module USCoreTestKit
|
|
2
2
|
class Generator
|
|
3
3
|
module SpecialCases
|
|
4
|
-
RESOURCES_TO_EXCLUDE =
|
|
5
|
-
'Location',
|
|
6
|
-
'Medication',
|
|
7
|
-
'PractitionerRole'
|
|
8
|
-
|
|
4
|
+
RESOURCES_TO_EXCLUDE = {
|
|
5
|
+
'Location' => ['v311', 'v400', 'v501', 'v610'],
|
|
6
|
+
'Medication' => ['v311', 'v400', 'v501', 'v610', 'v700_ballot'],
|
|
7
|
+
'PractitionerRole' => ['v311', 'v400']
|
|
8
|
+
}.freeze
|
|
9
9
|
|
|
10
10
|
PROFILES_TO_EXCLUDE = [
|
|
11
11
|
'http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-survey',
|
|
12
12
|
'http://hl7.org/fhir/us/core/StructureDefinition/us-core-vital-signs'
|
|
13
13
|
].freeze
|
|
14
14
|
|
|
15
|
+
OPTIONAL_RESOURCES = [
|
|
16
|
+
'PractitionerRole',
|
|
17
|
+
'QuestionnaireResponse'
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
OPTIONAL_PROFILES = [
|
|
21
|
+
'http://hl7.org/fhir/us/core/StructureDefinition/us-core-simple-observation'
|
|
22
|
+
].freeze
|
|
23
|
+
|
|
15
24
|
NON_USCDI_RESOURCES = {
|
|
16
25
|
'Encounter' => ['v311', 'v400'],
|
|
17
|
-
'Location' => ['v311', 'v400', 'v501', 'v610'
|
|
26
|
+
'Location' => ['v311', 'v400', 'v501', 'v610'],
|
|
18
27
|
'Organization' => ['v311', 'v400', 'v501', 'v610', 'v700_ballot'],
|
|
19
28
|
'Practitioner' => ['v311', 'v400'],
|
|
20
29
|
'PractitionerRole' => ['v311', 'v400', 'v501', 'v610', 'v700_ballot'],
|
|
@@ -24,6 +33,7 @@ module USCoreTestKit
|
|
|
24
33
|
}.freeze
|
|
25
34
|
|
|
26
35
|
SEARCHABLE_DELAYED_RESOURCES = {
|
|
36
|
+
'Location' => ['v700_ballot'],
|
|
27
37
|
'Practitioner' => ['v501', 'v610', 'v700_ballot']
|
|
28
38
|
}.freeze
|
|
29
39
|
|
|
@@ -49,7 +59,7 @@ module USCoreTestKit
|
|
|
49
59
|
|
|
50
60
|
class << self
|
|
51
61
|
def exclude_group?(group)
|
|
52
|
-
RESOURCES_TO_EXCLUDE.
|
|
62
|
+
RESOURCES_TO_EXCLUDE.key?(group.resource) && RESOURCES_TO_EXCLUDE[group.resource].include?(group.reformatted_version)
|
|
53
63
|
end
|
|
54
64
|
end
|
|
55
65
|
end
|
|
@@ -14,8 +14,8 @@ module USCoreTestKit
|
|
|
14
14
|
"No #{resource_type} searches with search params #{search_param_names.join(' & ')} found"
|
|
15
15
|
|
|
16
16
|
previous_request_resources.each do |previous_request, all_previous_resources|
|
|
17
|
-
params = previous_request.query_parameters
|
|
18
17
|
search_method = previous_request.verb.to_sym
|
|
18
|
+
params = search_method == :get ? previous_request.query_parameters : Hash[URI.decode_www_form(previous_request.request_body)]
|
|
19
19
|
fhir_search(resource_type, params:, search_method:)
|
|
20
20
|
|
|
21
21
|
found_resources =
|