davinci_crd_test_kit 0.14.0 → 0.14.2
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/config/presets/{inferno_crd_server_suite.json.erb → client_against_inferno_crd_server_suite.json.erb} +0 -33
- data/config/presets/{ri_crd_request_generator.json.erb → client_against_ri_crd_request_generator.json.erb} +1 -14
- data/config/presets/client_v221_against_inferno_crd_server_suite.json.erb +84 -0
- data/config/presets/client_v221_against_ri_br_provider.json.erb +31 -0
- data/config/presets/{ri_crd_request_generator.json_v221.json.erb → client_v221_against_ri_crd_request_generator.json.erb} +1 -1
- data/config/presets/{inferno_crd_client_suite.json.erb → server_against_inferno_crd_client_suite.json.erb} +0 -43
- data/config/presets/{ri_crd_server.json.erb → server_against_ri_crd_server.json.erb} +1 -44
- data/config/presets/{inferno_crd_client_suite_v221.json.erb → server_v221_against_inferno_crd_client_suite.json.erb} +48 -45
- data/config/presets/{inferno_crd_client_suite_prefetch_subset_v221.json.erb → server_v221_against_inferno_crd_client_suite_prefetch_subset.json.erb} +0 -46
- data/config/presets/server_v221_against_inferno_g31_suite.json.erb +49 -0
- data/lib/davinci_crd_test_kit/client/cross_hook_helper.rb +26 -0
- data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +7 -7
- data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +4 -1
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +70 -39
- data/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb +26 -7
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
- data/lib/davinci_crd_test_kit/client/endpoints/scenario_service_response.rb +54 -0
- data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +8 -27
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +35 -23
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +34 -21
- data/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json +20 -20
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +12 -10
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +3 -36
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +4 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +3 -13
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_authorized_scope_attestation_test.rb +45 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_coverage_based_invocation_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_hook_invocation_logging_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_exposure_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_use_attestation_test.rb +41 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_order_sign_support_attestation_test.rb +42 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_prefetch_key_omission_attestation_test.rb +42 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_resource_identifiers_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_response_case_distinction_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_security_and_privacy_attestation_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_workflow_integration_attestation_test.rb +44 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +29 -18
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +35 -22
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +47 -47
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +50 -50
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +24 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_attestations_group.rb +49 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +22 -6
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_interaction_group.rb +98 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +14 -12
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +25 -5
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +3 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +23 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +19 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +23 -15
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_scenarios_group.rb +26 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_self_pay_hook_group.rb +36 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_unknown_content_hook_group.rb +34 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +24 -3
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +4 -11
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +1 -9
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +6 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +3 -12
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +8 -89
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/base_hook_invocation_receive_request_test.rb +163 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/cross_hooks_receive_request_test.rb +97 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +8 -90
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +8 -90
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +8 -98
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +10 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +11 -6
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_no_request_test.rb +30 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_workflow_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_attestation_test.rb +99 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_receive_request_test.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +10 -2
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +54 -21
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +6 -3
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +18 -0
- data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +30 -13
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +2 -0
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +28 -28
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +211 -43
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +7 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +6 -2
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +107 -107
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +101 -97
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +18 -18
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +43 -39
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
- data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +165 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +3 -2
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +5 -5
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- metadata +54 -16
- data/config/presets/inferno_crd_server_suite_v221.json.erb +0 -94
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +0 -65
|
@@ -14,6 +14,7 @@ require_relative 'verify_request/hook_request_data_fetch_verification_test'
|
|
|
14
14
|
require_relative 'verify_response/inferno_response_validation'
|
|
15
15
|
require_relative 'verify_response/client_display_cards_attest'
|
|
16
16
|
require_relative 'verify_response/hook_response_support_coverage_information_test'
|
|
17
|
+
require_relative 'client_urls'
|
|
17
18
|
|
|
18
19
|
module DaVinciCRDTestKit
|
|
19
20
|
module V221
|
|
@@ -25,12 +26,18 @@ module DaVinciCRDTestKit
|
|
|
25
26
|
the user is scheduling one or more future encounters/visits for the patient.
|
|
26
27
|
The CRD IG places [additional constraints on the use of the appintment-book hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book),
|
|
27
28
|
including the profiles that resources in each request must conform to.
|
|
29
|
+
|
|
30
|
+
Inferno's simulated `appointment-book` hook endpoints are available at:
|
|
31
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{APPOINTMENT_BOOK_PATH}`
|
|
32
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH}`
|
|
28
33
|
DESCRIPTION
|
|
29
34
|
run_as_group
|
|
30
35
|
|
|
31
36
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
|
|
32
37
|
|
|
33
|
-
input_order :
|
|
38
|
+
input_order :appointment_book_response_approach,
|
|
39
|
+
:appointment_book_selected_response_types,
|
|
40
|
+
:appointment_book_custom_response_template
|
|
34
41
|
|
|
35
42
|
config(
|
|
36
43
|
inputs: {
|
|
@@ -53,7 +60,9 @@ module DaVinciCRDTestKit
|
|
|
53
60
|
crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }
|
|
54
61
|
},
|
|
55
62
|
options: {
|
|
56
|
-
hook_name: 'appointment-book'
|
|
63
|
+
hook_name: 'appointment-book',
|
|
64
|
+
crd_interaction_group: 'hooks-appointment-book',
|
|
65
|
+
include_in_cross_hook_analysis: true
|
|
57
66
|
}
|
|
58
67
|
)
|
|
59
68
|
|
|
@@ -63,11 +72,14 @@ module DaVinciCRDTestKit
|
|
|
63
72
|
end
|
|
64
73
|
|
|
65
74
|
group do
|
|
66
|
-
title '
|
|
67
|
-
|
|
68
|
-
test from: :
|
|
69
|
-
test from: :
|
|
70
|
-
test from: :
|
|
75
|
+
title 'Response Handling'
|
|
76
|
+
|
|
77
|
+
test from: :crd_v221_card_display_attest_test
|
|
78
|
+
test from: :crd_v221_inferno_response_validation
|
|
79
|
+
test from: :crd_v221_client_hook_response_support_coverage_information do
|
|
80
|
+
title 'Client supports the Coverage Information response type on the appointment-book hook'
|
|
81
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-26'
|
|
82
|
+
end
|
|
71
83
|
end
|
|
72
84
|
|
|
73
85
|
group do
|
|
@@ -88,14 +100,11 @@ module DaVinciCRDTestKit
|
|
|
88
100
|
end
|
|
89
101
|
|
|
90
102
|
group do
|
|
91
|
-
title '
|
|
92
|
-
|
|
93
|
-
test from: :
|
|
94
|
-
test from: :
|
|
95
|
-
test from: :
|
|
96
|
-
title 'Client supports the Coverage Information response type on the appointment-book hook'
|
|
97
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-26'
|
|
98
|
-
end
|
|
103
|
+
title 'Authorization'
|
|
104
|
+
test from: :crd_v221_decode_auth_token
|
|
105
|
+
test from: :crd_v221_retrieve_jwks
|
|
106
|
+
test from: :crd_v221_token_header
|
|
107
|
+
test from: :crd_v221_token_payload
|
|
99
108
|
end
|
|
100
109
|
end
|
|
101
110
|
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative 'attestations/attestation_instructions'
|
|
2
|
+
require_relative 'attestations/client_authorized_scope_attestation_test'
|
|
3
|
+
require_relative 'attestations/client_coverage_based_invocation_attestation_test'
|
|
4
|
+
require_relative 'attestations/client_data_element_expectations_attestation_test'
|
|
5
|
+
require_relative 'attestations/client_hook_invocation_logging_attestation_test'
|
|
6
|
+
require_relative 'attestations/client_must_support_exposure_attestation_test'
|
|
7
|
+
require_relative 'attestations/client_must_support_use_attestation_test'
|
|
8
|
+
require_relative 'attestations/client_order_sign_support_attestation_test'
|
|
9
|
+
require_relative 'attestations/client_prefetch_key_omission_attestation_test'
|
|
10
|
+
require_relative 'attestations/client_resource_identifiers_attestation_test'
|
|
11
|
+
require_relative 'attestations/client_response_case_distinction_attestation_test'
|
|
12
|
+
require_relative 'attestations/client_security_and_privacy_attestation_test'
|
|
13
|
+
require_relative 'attestations/client_workflow_integration_attestation_test'
|
|
14
|
+
|
|
15
|
+
module DaVinciCRDTestKit
|
|
16
|
+
module V221
|
|
17
|
+
class CRDClientAttestationsGroup < Inferno::TestGroup
|
|
18
|
+
id :crd_v221_client_attestations
|
|
19
|
+
title 'Visual Inspection and Attestation'
|
|
20
|
+
description %(
|
|
21
|
+
Each test in this group asks the tester to confirm system conformance to one or more
|
|
22
|
+
**SHALL** requirements from the [CRD v2.2.1 Implementation Guide](https://hl7.org/fhir/us/davinci-crd/2.2.1)
|
|
23
|
+
or the [CDS Hooks specification](https://cds-hooks.hl7.org/2026Jan/en/).
|
|
24
|
+
The tester attests that the client system under test meets the statement by selecting "Yes",
|
|
25
|
+
and may record supporting details in the accompanying notes field. Selecting "No" fails the
|
|
26
|
+
test. Notes provided are recorded in the test result.
|
|
27
|
+
|
|
28
|
+
Testers are responsible for confirming that their system meets all requirements associated with a test
|
|
29
|
+
before selecting "Yes" on the attestation input with the same name as the test. The text of the
|
|
30
|
+
attested requirement(s) for each input can be reviewed by clicking the "View Specification Requirements" link
|
|
31
|
+
in the "About" tab of the test with the same name.
|
|
32
|
+
)
|
|
33
|
+
input_instructions ATTESTATION_INPUT_INSTRUCTIONS
|
|
34
|
+
|
|
35
|
+
test from: :crd_v221_security_and_privacy_attestation
|
|
36
|
+
test from: :crd_v221_response_case_distinction_attestation
|
|
37
|
+
test from: :crd_v221_data_element_expectations_attestation
|
|
38
|
+
test from: :crd_v221_resource_identifiers_attestation
|
|
39
|
+
test from: :crd_v221_must_support_exposure_attestation
|
|
40
|
+
test from: :crd_v221_workflow_integration_attestation
|
|
41
|
+
test from: :crd_v221_coverage_based_invocation_attestation
|
|
42
|
+
test from: :crd_v221_prefetch_key_omission_attestation
|
|
43
|
+
test from: :crd_v221_hook_invocation_logging_attestation
|
|
44
|
+
test from: :crd_v221_order_sign_support_attestation
|
|
45
|
+
test from: :crd_v221_authorized_scope_attestation
|
|
46
|
+
test from: :crd_v221_must_support_use_attestation
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -3,6 +3,7 @@ require_relative 'cross_hook/client_location_address_propagation_test'
|
|
|
3
3
|
require_relative 'cross_hook/client_fhirpath_collection_as_comma_delimited_string_test'
|
|
4
4
|
require_relative 'cross_hook/client_hook_instances_unique_test'
|
|
5
5
|
require_relative 'cross_hook/client_prefetch_complete_and_subset_test'
|
|
6
|
+
require_relative 'client_cross_hook_interaction_group'
|
|
6
7
|
|
|
7
8
|
module DaVinciCRDTestKit
|
|
8
9
|
module V221
|
|
@@ -11,18 +12,33 @@ module DaVinciCRDTestKit
|
|
|
11
12
|
id :crd_v221_client_cross_hook
|
|
12
13
|
description <<~DESCRIPTION
|
|
13
14
|
This group checks CRD requirements that pertain across all hooks
|
|
14
|
-
rather than
|
|
15
|
+
and hook requests rather than specific ones.
|
|
15
16
|
|
|
16
17
|
These tests must be run after the tests in the "Hooks" group are run.
|
|
18
|
+
Clients may, but are not required to, make additional hook requests
|
|
19
|
+
during these tests to show additional features not demonstrated during
|
|
20
|
+
previous hook requests. Note that only the requests made during the
|
|
21
|
+
most recent execution of a given group will be included in the analysis.
|
|
17
22
|
DESCRIPTION
|
|
18
23
|
|
|
19
24
|
run_as_group
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
group from: :crd_v221_client_cross_hook_interaction
|
|
27
|
+
group do
|
|
28
|
+
id :crd_v221_client_cross_hook_must_support
|
|
29
|
+
title 'Must Support'
|
|
30
|
+
|
|
31
|
+
test from: :crd_v221_client_card_must_support_coverage_information
|
|
32
|
+
end
|
|
33
|
+
group do
|
|
34
|
+
id :crd_v221_client_cross_hook_additional_capabilities
|
|
35
|
+
title 'Additional Capabilities'
|
|
36
|
+
|
|
37
|
+
test from: :crd_v221_client_location_address_propagation
|
|
38
|
+
test from: :crd_v221_client_fhir_path_collection_as_comma_delimited_string
|
|
39
|
+
test from: :crd_v221_client_hook_instances_unique
|
|
40
|
+
test from: :crd_v221_client_prefetch_complete_and_subset
|
|
41
|
+
end
|
|
26
42
|
end
|
|
27
43
|
end
|
|
28
44
|
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require_relative 'invocation/cross_hooks_receive_request_test'
|
|
2
|
+
require_relative 'auth/decode_auth_token_test'
|
|
3
|
+
require_relative 'auth/retrieve_jwks_test'
|
|
4
|
+
require_relative 'auth/token_header_test'
|
|
5
|
+
require_relative 'auth/token_payload_test'
|
|
6
|
+
require_relative 'verify_request/hook_request_conformance_test'
|
|
7
|
+
require_relative 'verify_request/hook_request_requested_version_test'
|
|
8
|
+
require_relative 'verify_request/hook_request_prefetch_profiles_test'
|
|
9
|
+
require_relative 'verify_request/hook_request_prefetch_complete_test'
|
|
10
|
+
require_relative 'verify_request/hook_request_granted_scopes_test'
|
|
11
|
+
require_relative 'verify_request/hook_request_secured_transport_test'
|
|
12
|
+
require_relative 'verify_request/hook_request_coverage_verification_test'
|
|
13
|
+
require_relative 'verify_request/hook_request_data_fetch_verification_test'
|
|
14
|
+
require_relative 'verify_response/inferno_response_validation'
|
|
15
|
+
require_relative 'verify_response/client_display_cards_attest'
|
|
16
|
+
require_relative 'verify_response/hook_response_support_coverage_information_test'
|
|
17
|
+
require_relative 'client_urls'
|
|
18
|
+
|
|
19
|
+
module DaVinciCRDTestKit
|
|
20
|
+
module V221
|
|
21
|
+
class ClientCrossHookInteractionGroup < Inferno::TestGroup
|
|
22
|
+
title 'Additional Hook Invocations for Cross Hook Support Demonstration'
|
|
23
|
+
id :crd_v221_client_cross_hook_interaction
|
|
24
|
+
description <<~DESCRIPTION
|
|
25
|
+
Optionally send more hook requests demonstrating additional cross-hook
|
|
26
|
+
features.
|
|
27
|
+
|
|
28
|
+
Inferno's simulated hook endpoints can be discovered at:
|
|
29
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{DISCOVERY_PATH}`
|
|
30
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{PREFETCH_DISCOVERY_PATH}`
|
|
31
|
+
DESCRIPTION
|
|
32
|
+
run_as_group
|
|
33
|
+
|
|
34
|
+
input_order :cross_hooks_response_approach,
|
|
35
|
+
:cross_hooks_selected_response_types,
|
|
36
|
+
:cross_hooks_custom_response_template
|
|
37
|
+
|
|
38
|
+
config(
|
|
39
|
+
inputs: {
|
|
40
|
+
auth_token_headers_json: { name: :cross_hooks_auth_token_headers_json },
|
|
41
|
+
auth_tokens: { name: :cross_hooks_auth_tokens },
|
|
42
|
+
auth_tokens_jwk_json: { name: :cross_hooks_auth_tokens_jwk_json },
|
|
43
|
+
client_access_token: { name: :cross_hooks_client_access_token },
|
|
44
|
+
client_fhir_server: { name: :cross_hooks_client_fhir_server },
|
|
45
|
+
crd_jwks_keys_json: { name: :cross_hooks_crd_jwks_keys_json },
|
|
46
|
+
custom_response_template: { name: :cross_hooks_custom_response_template },
|
|
47
|
+
selected_response_types: { name: :cross_hooks_selected_response_types }
|
|
48
|
+
},
|
|
49
|
+
outputs: {
|
|
50
|
+
auth_token_headers_json: { name: :cross_hooks_auth_token_headers_json },
|
|
51
|
+
auth_token_payloads_json: { name: :cross_hooks_auth_token_payloads_json },
|
|
52
|
+
auth_tokens: { name: :cross_hooks_auth_tokens },
|
|
53
|
+
auth_tokens_jwk_json: { name: :cross_hooks_auth_tokens_jwk_json },
|
|
54
|
+
client_access_token: { name: :cross_hooks_client_access_token },
|
|
55
|
+
client_fhir_server: { name: :cross_hooks_client_fhir_server },
|
|
56
|
+
crd_jwks_keys_json: { name: :cross_hooks_crd_jwks_keys_json }
|
|
57
|
+
},
|
|
58
|
+
options: {
|
|
59
|
+
hook_name: ANY_HOOK_TAG,
|
|
60
|
+
crd_interaction_group: 'additional-cross-hooks',
|
|
61
|
+
include_in_cross_hook_analysis: true
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
group do
|
|
66
|
+
title 'Interaction'
|
|
67
|
+
test from: :crd_v221_cross_hooks_request
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
group do
|
|
71
|
+
title 'Response Handling'
|
|
72
|
+
|
|
73
|
+
test from: :crd_v221_card_display_attest_test
|
|
74
|
+
test from: :crd_v221_inferno_response_validation
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
group do
|
|
78
|
+
title 'Requests'
|
|
79
|
+
test from: :crd_v221_hook_request_conformance
|
|
80
|
+
test from: :crd_v221_hook_request_requested_version
|
|
81
|
+
test from: :crd_v221_hook_request_prefetch_profiles
|
|
82
|
+
test from: :crd_v221_hook_request_prefetch_complete
|
|
83
|
+
test from: :crd_v221_hook_request_coverage_verification
|
|
84
|
+
test from: :crd_v221_hook_data_fetch_verification
|
|
85
|
+
test from: :crd_v221_hook_request_granted_scopes
|
|
86
|
+
test from: :crd_v221_hook_request_secured_transport
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
group do
|
|
90
|
+
title 'Authorization'
|
|
91
|
+
test from: :crd_v221_decode_auth_token
|
|
92
|
+
test from: :crd_v221_retrieve_jwks
|
|
93
|
+
test from: :crd_v221_token_header
|
|
94
|
+
test from: :crd_v221_token_payload
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -25,12 +25,18 @@ module DaVinciCRDTestKit
|
|
|
25
25
|
the notion of 'discharge' is relevant - typically an inpatient encounter.
|
|
26
26
|
The CRD IG places [additional constraints on the use of the encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge),
|
|
27
27
|
including the profiles that resources in each request must conform to.
|
|
28
|
+
|
|
29
|
+
Inferno's simulated `encounter-discharge` hook endpoints are available at:
|
|
30
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_DISCHARGE_PATH}`
|
|
31
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH}`
|
|
28
32
|
DESCRIPTION
|
|
29
33
|
run_as_group
|
|
30
34
|
|
|
31
35
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
|
|
32
36
|
|
|
33
|
-
input_order :
|
|
37
|
+
input_order :encounter_discharge_response_approach,
|
|
38
|
+
:encounter_discharge_selected_response_types,
|
|
39
|
+
:encounter_discharge_custom_response_template
|
|
34
40
|
|
|
35
41
|
config(
|
|
36
42
|
inputs: {
|
|
@@ -53,7 +59,9 @@ module DaVinciCRDTestKit
|
|
|
53
59
|
crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }
|
|
54
60
|
},
|
|
55
61
|
options: {
|
|
56
|
-
hook_name: 'encounter-discharge'
|
|
62
|
+
hook_name: 'encounter-discharge',
|
|
63
|
+
crd_interaction_group: 'hooks-encounter-discharge',
|
|
64
|
+
include_in_cross_hook_analysis: true
|
|
57
65
|
}
|
|
58
66
|
)
|
|
59
67
|
|
|
@@ -63,11 +71,10 @@ module DaVinciCRDTestKit
|
|
|
63
71
|
end
|
|
64
72
|
|
|
65
73
|
group do
|
|
66
|
-
title '
|
|
67
|
-
|
|
68
|
-
test from: :
|
|
69
|
-
test from: :
|
|
70
|
-
test from: :crd_v221_token_payload
|
|
74
|
+
title 'Response Handling'
|
|
75
|
+
|
|
76
|
+
test from: :crd_v221_card_display_attest_test
|
|
77
|
+
test from: :crd_v221_inferno_response_validation
|
|
71
78
|
end
|
|
72
79
|
|
|
73
80
|
group do
|
|
@@ -86,10 +93,11 @@ module DaVinciCRDTestKit
|
|
|
86
93
|
end
|
|
87
94
|
|
|
88
95
|
group do
|
|
89
|
-
title '
|
|
90
|
-
|
|
91
|
-
test from: :
|
|
92
|
-
test from: :
|
|
96
|
+
title 'Authorization'
|
|
97
|
+
test from: :crd_v221_decode_auth_token
|
|
98
|
+
test from: :crd_v221_retrieve_jwks
|
|
99
|
+
test from: :crd_v221_token_header
|
|
100
|
+
test from: :crd_v221_token_payload
|
|
93
101
|
end
|
|
94
102
|
end
|
|
95
103
|
end
|
|
@@ -24,12 +24,18 @@ module DaVinciCRDTestKit
|
|
|
24
24
|
when the user is initiating a new encounter. The CRD IG places [additional constraints on the use
|
|
25
25
|
of the encounter-start hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start),
|
|
26
26
|
including the profiles that resources in each request must conform to.
|
|
27
|
+
|
|
28
|
+
Inferno's simulated `encounter-start` hook endpoints are available at:
|
|
29
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_START_PATH}`
|
|
30
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_START_PREFETCH_SUBSET_PATH}`
|
|
27
31
|
DESCRIPTION
|
|
28
32
|
run_as_group
|
|
29
33
|
|
|
30
34
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
|
|
31
35
|
|
|
32
|
-
input_order :
|
|
36
|
+
input_order :encounter_start_response_approach,
|
|
37
|
+
:encounter_start_selected_response_types,
|
|
38
|
+
:encounter_start_custom_response_template
|
|
33
39
|
|
|
34
40
|
config(
|
|
35
41
|
inputs: {
|
|
@@ -52,7 +58,9 @@ module DaVinciCRDTestKit
|
|
|
52
58
|
crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }
|
|
53
59
|
},
|
|
54
60
|
options: {
|
|
55
|
-
hook_name: 'encounter-start'
|
|
61
|
+
hook_name: 'encounter-start',
|
|
62
|
+
crd_interaction_group: 'hooks-encounter-start',
|
|
63
|
+
include_in_cross_hook_analysis: true
|
|
56
64
|
}
|
|
57
65
|
)
|
|
58
66
|
|
|
@@ -62,11 +70,10 @@ module DaVinciCRDTestKit
|
|
|
62
70
|
end
|
|
63
71
|
|
|
64
72
|
group do
|
|
65
|
-
title '
|
|
66
|
-
|
|
67
|
-
test from: :
|
|
68
|
-
test from: :
|
|
69
|
-
test from: :crd_v221_token_payload
|
|
73
|
+
title 'Response Handling'
|
|
74
|
+
|
|
75
|
+
test from: :crd_v221_card_display_attest_test
|
|
76
|
+
test from: :crd_v221_inferno_response_validation
|
|
70
77
|
end
|
|
71
78
|
|
|
72
79
|
group do
|
|
@@ -85,10 +92,11 @@ module DaVinciCRDTestKit
|
|
|
85
92
|
end
|
|
86
93
|
|
|
87
94
|
group do
|
|
88
|
-
title '
|
|
89
|
-
|
|
90
|
-
test from: :
|
|
91
|
-
test from: :
|
|
95
|
+
title 'Authorization'
|
|
96
|
+
test from: :crd_v221_decode_auth_token
|
|
97
|
+
test from: :crd_v221_retrieve_jwks
|
|
98
|
+
test from: :crd_v221_token_header
|
|
99
|
+
test from: :crd_v221_token_payload
|
|
92
100
|
end
|
|
93
101
|
end
|
|
94
102
|
end
|
|
@@ -10,16 +10,13 @@ module DaVinciCRDTestKit
|
|
|
10
10
|
CRD client systems are responsible for returning data requested by the CRD server needed to provide decision support.
|
|
11
11
|
This group contains tests that verify the required 'server' FHIR API capabilities.
|
|
12
12
|
These 'server' capabilities are based on the US Core Server Capability Statement for the US Core version chosen
|
|
13
|
-
when
|
|
14
|
-
- [US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html)
|
|
15
|
-
- [US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html)
|
|
16
|
-
- [US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html)
|
|
13
|
+
when the test session was initiated.
|
|
17
14
|
DESCRIPTION
|
|
18
15
|
id :crd_v221_client_fhir_api
|
|
19
16
|
|
|
20
17
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@conf-1'
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
INPUT_INSTRUCTIONS = %(
|
|
23
20
|
The location of and an access token for the client's FHIR server are expected to come in
|
|
24
21
|
the CDS Hooks request. The following information will be auto-populated from
|
|
25
22
|
the body of the latest hook invocation made during this session:
|
|
@@ -29,7 +26,9 @@ module DaVinciCRDTestKit
|
|
|
29
26
|
If that access token will not be long-lived enough to perform
|
|
30
27
|
a full test of the US Core FHIR API, provide an updated token and/or refresh
|
|
31
28
|
token with Client ID and token endpoint so that Inferno can perform these tests.
|
|
32
|
-
)
|
|
29
|
+
).freeze
|
|
30
|
+
|
|
31
|
+
input_instructions INPUT_INSTRUCTIONS
|
|
33
32
|
|
|
34
33
|
input :url,
|
|
35
34
|
title: 'FHIR Endpoint',
|
|
@@ -46,10 +45,11 @@ module DaVinciCRDTestKit
|
|
|
46
45
|
This test group verifies that the CRD client can respond to queries as required by the
|
|
47
46
|
[US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html).
|
|
48
47
|
|
|
49
|
-
Note: these tests do not
|
|
50
|
-
US Core profiles
|
|
48
|
+
Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
|
|
49
|
+
instead verify conformance against US Core profiles rather than the CRD-defined profiles.
|
|
51
50
|
)
|
|
52
51
|
required_suite_options CRDClientOptions::US_CORE_3_REQUIREMENT
|
|
52
|
+
input_instructions INPUT_INSTRUCTIONS
|
|
53
53
|
|
|
54
54
|
group from: :crd_v221_client_update_verification,
|
|
55
55
|
id: :crd_v221_us_core_311_client_update_verification
|
|
@@ -60,10 +60,11 @@ module DaVinciCRDTestKit
|
|
|
60
60
|
This test group verifies that the CRD client can respond to queries as required by the
|
|
61
61
|
[US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html).
|
|
62
62
|
|
|
63
|
-
Note: these tests do not
|
|
64
|
-
US Core profiles
|
|
63
|
+
Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
|
|
64
|
+
instead verify conformance against US Core profiles rather than the CRD-defined profiles.
|
|
65
65
|
)
|
|
66
66
|
required_suite_options CRDClientOptions::US_CORE_6_REQUIREMENT
|
|
67
|
+
input_instructions INPUT_INSTRUCTIONS
|
|
67
68
|
|
|
68
69
|
group from: :crd_v221_client_update_verification,
|
|
69
70
|
id: :crd_v221_us_core_610_client_update_verification
|
|
@@ -74,10 +75,11 @@ module DaVinciCRDTestKit
|
|
|
74
75
|
This test group verifies that the CRD client can respond to queries as required by the
|
|
75
76
|
[US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html).
|
|
76
77
|
|
|
77
|
-
Note: these tests do not
|
|
78
|
-
US Core profiles
|
|
78
|
+
Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
|
|
79
|
+
instead verify conformance against US Core profiles rather than the CRD-defined profiles.
|
|
79
80
|
)
|
|
80
81
|
required_suite_options CRDClientOptions::US_CORE_7_REQUIREMENT
|
|
82
|
+
input_instructions INPUT_INSTRUCTIONS
|
|
81
83
|
|
|
82
84
|
group from: :crd_v221_client_update_verification,
|
|
83
85
|
id: :crd_v221_us_core_700_client_update_verification
|
|
@@ -4,6 +4,7 @@ require_relative 'client_encounter_start_group'
|
|
|
4
4
|
require_relative 'client_order_dispatch_group'
|
|
5
5
|
require_relative 'client_order_select_group'
|
|
6
6
|
require_relative 'client_order_sign_group'
|
|
7
|
+
require_relative 'client_urls'
|
|
7
8
|
|
|
8
9
|
module DaVinciCRDTestKit
|
|
9
10
|
module V221
|
|
@@ -14,10 +15,10 @@ module DaVinciCRDTestKit
|
|
|
14
15
|
one of the [six hooks described in the CRD IG](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html):
|
|
15
16
|
* [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book)
|
|
16
17
|
* [encounter-start](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start)
|
|
17
|
-
* [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge)
|
|
18
18
|
* [order-select](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select)
|
|
19
|
-
* [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch)
|
|
20
19
|
* [order-sign](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign)
|
|
20
|
+
* [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch)
|
|
21
|
+
* [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge)
|
|
21
22
|
|
|
22
23
|
Each hook-specific group follows the same pattern:
|
|
23
24
|
1. Allow the client to make hook invocations for the tested hook, waiting until the tester indicates
|
|
@@ -28,6 +29,25 @@ module DaVinciCRDTestKit
|
|
|
28
29
|
The CRD IG does not require support for any specific hook, so all the hook-specific sub-groups are
|
|
29
30
|
optional. A conformant CRD client will have implemented at least one hook and will run and pass
|
|
30
31
|
the hook-specific groups corresponding to each hook that it implements.
|
|
32
|
+
|
|
33
|
+
Inferno simulates two CRD discovery endpoints, each with service endpoints for all six CRD hooks
|
|
34
|
+
but with different service ids:
|
|
35
|
+
- Discovery endpoint for services requesting the complete [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
|
|
36
|
+
`#{ClientURLs.discovery_url}`
|
|
37
|
+
* `appointment-book` service id: `appointment-book-service`
|
|
38
|
+
* `encounter-start` service id: `encounter-start-service`
|
|
39
|
+
* `order-select` service id: `order-select-service`
|
|
40
|
+
* `order-sign` service id: `order-sign-service`
|
|
41
|
+
* `order-dispatch` service id: `order-dispatch-service`
|
|
42
|
+
* `encounter-discharge` service id: `encounter-discharge-service`
|
|
43
|
+
- Discovery endpoint for services requesting the a subset of the [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
|
|
44
|
+
`#{ClientURLs.prefetch_subset_discovery_url}`
|
|
45
|
+
* `appointment-book` service id: `appointment-book-subset`
|
|
46
|
+
* `encounter-start` service id: `encounter-start-subset`
|
|
47
|
+
* `order-select` service id: `order-select-subset`
|
|
48
|
+
* `order-sign` service id: `order-sign-subset`
|
|
49
|
+
* `order-dispatch` service id: `order-dispatch-subset`
|
|
50
|
+
* `encounter-discharge` service id: `encounter-discharge-subset`
|
|
31
51
|
DESCRIPTION
|
|
32
52
|
id :crd_v221_client_hooks
|
|
33
53
|
|
|
@@ -48,16 +68,16 @@ module DaVinciCRDTestKit
|
|
|
48
68
|
group from: :crd_v221_client_encounter_start,
|
|
49
69
|
optional: true
|
|
50
70
|
|
|
51
|
-
group from: :
|
|
71
|
+
group from: :crd_v221_client_order_select,
|
|
52
72
|
optional: true
|
|
53
73
|
|
|
54
|
-
group from: :
|
|
74
|
+
group from: :crd_v221_client_order_sign,
|
|
55
75
|
optional: true
|
|
56
76
|
|
|
57
77
|
group from: :crd_v221_client_order_dispatch,
|
|
58
78
|
optional: true
|
|
59
79
|
|
|
60
|
-
group from: :
|
|
80
|
+
group from: :crd_v221_client_encounter_discharge,
|
|
61
81
|
optional: true
|
|
62
82
|
end
|
|
63
83
|
end
|
|
@@ -16,12 +16,13 @@ module DaVinciCRDTestKit
|
|
|
16
16
|
|
|
17
17
|
run_as_group
|
|
18
18
|
|
|
19
|
-
input_order :
|
|
19
|
+
input_order :long_running_pause_time
|
|
20
20
|
|
|
21
21
|
config(
|
|
22
22
|
options: {
|
|
23
23
|
hook_name: ANY_HOOK_TAG,
|
|
24
|
-
|
|
24
|
+
crd_interaction_group: LONG_RUNNING_GROUP_TAG,
|
|
25
|
+
include_in_cross_hook_analysis: false
|
|
25
26
|
}
|
|
26
27
|
)
|
|
27
28
|
|
|
@@ -26,12 +26,18 @@ module DaVinciCRDTestKit
|
|
|
26
26
|
that was not tied to a specific performer. The CRD IG places [additional constraints on the use
|
|
27
27
|
of the order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch),
|
|
28
28
|
including the profiles that resources in each request must conform to.
|
|
29
|
+
|
|
30
|
+
Inferno's simulated `order-dispatch` hook endpoints are available at:
|
|
31
|
+
- Complete Prefetch: `#{ClientURLs.base_url}#{ORDER_DISPATCH_PATH}`
|
|
32
|
+
- Subset Prefetch: `#{ClientURLs.base_url}#{ORDER_DISPATCH_PREFETCH_SUBSET_PATH}`
|
|
29
33
|
DESCRIPTION
|
|
30
34
|
run_as_group
|
|
31
35
|
|
|
32
36
|
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B'
|
|
33
37
|
|
|
34
|
-
input_order :
|
|
38
|
+
input_order :order_dispatch_response_approach,
|
|
39
|
+
:order_dispatch_selected_response_types,
|
|
40
|
+
:order_dispatch_custom_response_template
|
|
35
41
|
|
|
36
42
|
config(
|
|
37
43
|
inputs: {
|
|
@@ -54,7 +60,9 @@ module DaVinciCRDTestKit
|
|
|
54
60
|
crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }
|
|
55
61
|
},
|
|
56
62
|
options: {
|
|
57
|
-
hook_name: 'order-dispatch'
|
|
63
|
+
hook_name: 'order-dispatch',
|
|
64
|
+
crd_interaction_group: 'hooks-order-dispatch',
|
|
65
|
+
include_in_cross_hook_analysis: true
|
|
58
66
|
}
|
|
59
67
|
)
|
|
60
68
|
|
|
@@ -64,11 +72,14 @@ module DaVinciCRDTestKit
|
|
|
64
72
|
end
|
|
65
73
|
|
|
66
74
|
group do
|
|
67
|
-
title '
|
|
68
|
-
|
|
69
|
-
test from: :
|
|
70
|
-
test from: :
|
|
71
|
-
test from: :
|
|
75
|
+
title 'Response Handling'
|
|
76
|
+
|
|
77
|
+
test from: :crd_v221_card_display_attest_test
|
|
78
|
+
test from: :crd_v221_inferno_response_validation
|
|
79
|
+
test from: :crd_v221_client_hook_response_support_coverage_information do
|
|
80
|
+
title 'Client supports the Coverage Information response type on the order-dispatch hook'
|
|
81
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-33'
|
|
82
|
+
end
|
|
72
83
|
end
|
|
73
84
|
|
|
74
85
|
group do
|
|
@@ -87,14 +98,11 @@ module DaVinciCRDTestKit
|
|
|
87
98
|
end
|
|
88
99
|
|
|
89
100
|
group do
|
|
90
|
-
title '
|
|
91
|
-
|
|
92
|
-
test from: :
|
|
93
|
-
test from: :
|
|
94
|
-
test from: :
|
|
95
|
-
title 'Client supports the Coverage Information response type on the order-dispatch hook'
|
|
96
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-33'
|
|
97
|
-
end
|
|
101
|
+
title 'Authorization'
|
|
102
|
+
test from: :crd_v221_decode_auth_token
|
|
103
|
+
test from: :crd_v221_retrieve_jwks
|
|
104
|
+
test from: :crd_v221_token_header
|
|
105
|
+
test from: :crd_v221_token_payload
|
|
98
106
|
end
|
|
99
107
|
end
|
|
100
108
|
end
|