davinci_crd_test_kit 0.13.0 → 0.14.0
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_client_suite.json.erb +20 -14
- data/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb +125 -0
- data/config/presets/inferno_crd_client_suite_v221.json.erb +124 -0
- data/config/presets/inferno_crd_server_suite.json.erb +58 -1
- data/config/presets/inferno_crd_server_suite_v221.json.erb +94 -0
- data/config/presets/ri_crd_request_generator.json_v221.json.erb +13 -0
- data/config/presets/ri_crd_server.json.erb +19 -19
- data/lib/davinci_crd_test_kit/client/client_base_urls.rb +80 -0
- data/lib/davinci_crd_test_kit/{client_hook_request_validation.rb → client/client_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/client/crd_client_options.rb +30 -0
- data/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb +34 -0
- data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +342 -0
- data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +410 -0
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +233 -0
- data/lib/davinci_crd_test_kit/{mock_service_response.rb → client/endpoints/mock_service_response.rb} +165 -59
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/companions_prerequisites.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/create_update_coverage_information.json +3 -2
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/launch_smart_app.json +8 -1
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/propose_alternate_request.json +1 -0
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/request_form_completion.json +17 -16
- data/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb +35 -0
- data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +38 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb +234 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb +43 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb +65 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +109 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +85 -0
- data/lib/davinci_crd_test_kit/{routes/cds-services.json → client/v2.0.1/cds-services-v201.json} +1 -1
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb +31 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +105 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb +790 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +74 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +111 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +116 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +113 -0
- data/lib/davinci_crd_test_kit/{client_registration_group.rb → client/v2.0.1/client_registration_group.rb} +12 -8
- data/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb +129 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb +126 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb +138 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb +134 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb +136 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb +94 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +86 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +96 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb +70 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb +62 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +83 -0
- data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +79 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +212 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb +18 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +69 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +120 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb +92 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +93 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +198 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +202 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +28 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +96 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +95 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +88 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +64 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +32 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +101 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +27 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb +27 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +229 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +63 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +60 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +45 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +135 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +103 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +156 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +157 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +165 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +64 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +49 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb +161 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +47 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +152 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +123 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +127 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +55 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +54 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +48 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +74 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +30 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +77 -0
- data/lib/davinci_crd_test_kit/cross_suite/base_urls.rb +20 -0
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +312 -0
- data/lib/davinci_crd_test_kit/{cards_validation.rb → cross_suite/cards_validation.rb} +104 -47
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml +27 -0
- data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml +60 -0
- data/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb +177 -0
- data/lib/davinci_crd_test_kit/{hook_request_field_validation.rb → cross_suite/hook_request_field_validation.rb} +282 -203
- data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +220 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +462 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb +81 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +48 -0
- data/lib/davinci_crd_test_kit/cross_suite/profiles_and_resource_types.rb +63 -0
- data/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb +38 -0
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +202 -0
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +274 -0
- data/lib/davinci_crd_test_kit/{suggestion_actions_validation.rb → cross_suite/suggestion_actions_validation.rb} +70 -50
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +42 -0
- data/lib/davinci_crd_test_kit/metadata.rb +10 -44
- data/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx +0 -0
- data/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx +0 -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 +742 -65
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +279 -54
- data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +1430 -0
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +36 -45
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +143 -0
- data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx +0 -0
- 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/endpoints/jwk_set_endpoint_handler.rb +13 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb +23 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb +30 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb +112 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb +21 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb +261 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb +561 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb +24 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json +54687 -0
- data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb +95 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +225 -0
- data/lib/davinci_crd_test_kit/{jwt_helper.rb → server/jwt_helper.rb} +1 -12
- data/lib/davinci_crd_test_kit/server/resource_extractor.rb +68 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +165 -0
- data/lib/davinci_crd_test_kit/server/server_base_urls.rb +30 -0
- data/lib/davinci_crd_test_kit/{server_hook_helper.rb → server/server_hook_helper.rb} +1 -1
- data/lib/davinci_crd_test_kit/{server_hook_request_validation.rb → server/server_hook_request_validation.rb} +1 -1
- data/lib/davinci_crd_test_kit/{test_helper.rb → server/server_test_helper.rb} +7 -3
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml +21 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml +7 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +99 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb +12 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +34 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb +27 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb +93 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb +62 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb +186 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb +191 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb +211 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb +216 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb +28 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb +59 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb +51 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +70 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb +67 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb +46 -0
- data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml +5 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb +159 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb +90 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb +17 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb +71 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +36 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb +118 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +213 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +93 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +69 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +194 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +194 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +73 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +214 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +219 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +241 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb +13 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +30 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb +120 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +66 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb +123 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +57 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +184 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +75 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +47 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +91 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +137 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +32 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +49 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb +38 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +54 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +97 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +78 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb +43 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_configuration_test.rb +44 -0
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- data/lib/davinci_crd_test_kit.rb +4 -2
- metadata +297 -93
- data/lib/davinci_crd_test_kit/client_fhir_api_group.rb +0 -785
- data/lib/davinci_crd_test_kit/client_hooks_group.rb +0 -74
- data/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb +0 -93
- data/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb +0 -75
- data/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb +0 -48
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb +0 -73
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb +0 -42
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -40
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb +0 -232
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb +0 -42
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -61
- data/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb +0 -79
- data/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb +0 -82
- data/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb +0 -81
- data/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb +0 -88
- data/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb +0 -60
- data/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb +0 -90
- data/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb +0 -57
- data/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb +0 -49
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb +0 -68
- data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb +0 -69
- data/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb +0 -102
- data/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb +0 -98
- data/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb +0 -101
- data/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb +0 -105
- data/lib/davinci_crd_test_kit/client_tests/submitted_response_validation.rb +0 -48
- data/lib/davinci_crd_test_kit/client_tests/token_header_test.rb +0 -65
- data/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb +0 -78
- data/lib/davinci_crd_test_kit/crd_client_suite.rb +0 -193
- data/lib/davinci_crd_test_kit/crd_options.rb +0 -9
- data/lib/davinci_crd_test_kit/crd_server_suite.rb +0 -125
- data/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz +0 -0
- data/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb +0 -18
- data/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb +0 -77
- data/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb +0 -15
- data/lib/davinci_crd_test_kit/server_appointment_book_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb +0 -77
- data/lib/davinci_crd_test_kit/server_discovery_group.rb +0 -60
- data/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_encounter_start_group.rb +0 -170
- data/lib/davinci_crd_test_kit/server_hooks_group.rb +0 -71
- data/lib/davinci_crd_test_kit/server_order_dispatch_group.rb +0 -176
- data/lib/davinci_crd_test_kit/server_order_select_group.rb +0 -195
- data/lib/davinci_crd_test_kit/server_order_sign_group.rb +0 -201
- data/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb +0 -68
- data/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb +0 -47
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb +0 -32
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb +0 -118
- data/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb +0 -71
- data/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb +0 -88
- data/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb +0 -65
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb +0 -36
- data/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb +0 -78
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb +0 -25
- data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb +0 -26
- data/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb +0 -63
- data/lib/davinci_crd_test_kit/server_tests/service_call_test.rb +0 -101
- data/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb +0 -28
- data/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb +0 -37
- data/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb +0 -38
- data/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb +0 -81
- data/lib/davinci_crd_test_kit/tags.rb +0 -10
- data/lib/davinci_crd_test_kit/urls.rb +0 -52
- /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/external_reference.json +0 -0
- /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/instructions.json +0 -0
- /data/lib/davinci_crd_test_kit/{crd_jwks.json → server/endpoints/crd_jwks.json} +0 -0
- /data/lib/davinci_crd_test_kit/{jwks.rb → server/endpoints/jwks.rb} +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require_relative 'client_appointment_book_group'
|
|
2
|
+
require_relative 'client_encounter_discharge_group'
|
|
3
|
+
require_relative 'client_encounter_start_group'
|
|
4
|
+
require_relative 'client_order_dispatch_group'
|
|
5
|
+
require_relative 'client_order_select_group'
|
|
6
|
+
require_relative 'client_order_sign_group'
|
|
7
|
+
|
|
8
|
+
module DaVinciCRDTestKit
|
|
9
|
+
module V201
|
|
10
|
+
class ClientHooksGroup < Inferno::TestGroup
|
|
11
|
+
title 'Hooks'
|
|
12
|
+
description <<~DESCRIPTION
|
|
13
|
+
This Group contains tests which verify that valid hook requests can be made for each of the following
|
|
14
|
+
[six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html):
|
|
15
|
+
* [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
16
|
+
* [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
|
|
17
|
+
* [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
|
|
18
|
+
* [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
|
|
19
|
+
* [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
|
|
20
|
+
* [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
|
|
21
|
+
|
|
22
|
+
Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which
|
|
23
|
+
verify the incoming hook requests conform to the specific hook requirements specified the
|
|
24
|
+
CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/).
|
|
25
|
+
|
|
26
|
+
Each hook group tests the following:
|
|
27
|
+
* If the CRD client can invoke the specific hook service request
|
|
28
|
+
* If the incoming hook request is properly authorized with a JWT Bearer token according to the [CDS Hooks authorization requirements](https://cds-hooks.hl7.org/2.0/#trusting-cds-clients)
|
|
29
|
+
* If the incoming hook request contains valid required fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
|
|
30
|
+
* If the incoming hook request contains valid optional fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
|
|
31
|
+
* If the hook request's `context` field is valid according to the specific `context` requirements defined for
|
|
32
|
+
each hook type
|
|
33
|
+
* If the incoming hook request contains the optional `prefetch` field with valid resources
|
|
34
|
+
* If the hook response generated by Inferno is conformant.
|
|
35
|
+
* If the client can properly display the cards returned as a result of the hook request
|
|
36
|
+
|
|
37
|
+
Note: In order to successfully return a conformant `Coverage Information` system action, a Coverage resource must either be
|
|
38
|
+
provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for
|
|
39
|
+
the patient provided in the service request.
|
|
40
|
+
DESCRIPTION
|
|
41
|
+
id :crd_v201_client_hooks
|
|
42
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149'
|
|
43
|
+
|
|
44
|
+
input :cds_jwt_iss,
|
|
45
|
+
title: 'CRD JWT Issuer',
|
|
46
|
+
description: %(
|
|
47
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
48
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
49
|
+
change this value.
|
|
50
|
+
),
|
|
51
|
+
locked: true
|
|
52
|
+
|
|
53
|
+
input_order :cds_jwt_iss, :cds_jwk_set
|
|
54
|
+
|
|
55
|
+
group from: :crd_v201_client_appointment_book,
|
|
56
|
+
optional: true
|
|
57
|
+
|
|
58
|
+
group from: :crd_v201_client_encounter_start,
|
|
59
|
+
optional: true
|
|
60
|
+
|
|
61
|
+
group from: :crd_v201_client_encounter_discharge,
|
|
62
|
+
optional: true
|
|
63
|
+
|
|
64
|
+
group from: :crd_v201_client_order_select,
|
|
65
|
+
optional: true
|
|
66
|
+
|
|
67
|
+
group from: :crd_v201_client_order_dispatch,
|
|
68
|
+
optional: true
|
|
69
|
+
|
|
70
|
+
group from: :crd_v201_client_order_sign,
|
|
71
|
+
optional: true
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require_relative 'invocation/order_dispatch_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_optional_fields_test'
|
|
7
|
+
require_relative 'verify_request/hook_request_required_fields_test'
|
|
8
|
+
require_relative 'verify_request/hook_request_valid_context_test'
|
|
9
|
+
require_relative 'verify_request/hook_request_valid_prefetch_test'
|
|
10
|
+
require_relative 'verify_request/hook_request_fetched_data_test'
|
|
11
|
+
require_relative 'verify_request/hook_request_prefetch_equals_queried_test'
|
|
12
|
+
require_relative 'verify_response/inferno_response_validation'
|
|
13
|
+
require_relative 'verify_response/client_display_cards_attest'
|
|
14
|
+
|
|
15
|
+
module DaVinciCRDTestKit
|
|
16
|
+
module V201
|
|
17
|
+
class ClientOrderDispatchGroup < Inferno::TestGroup
|
|
18
|
+
title 'order-dispatch'
|
|
19
|
+
id :crd_v201_client_order_dispatch
|
|
20
|
+
description <<~DESCRIPTION
|
|
21
|
+
The order-dispatch hook fires when a practitioner is selecting a candidate performer for a pre-existing order
|
|
22
|
+
that was not tied to a specific performer. These tests are based on the following criteria:
|
|
23
|
+
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch),
|
|
24
|
+
which includes the profiles that are expected to be used for the resources resolved to by `context`
|
|
25
|
+
FHIR ID fields
|
|
26
|
+
* Specific [order-dispatch `context` requirements](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/)
|
|
27
|
+
defined in the CDS Hooks specification
|
|
28
|
+
|
|
29
|
+
This version of the CRD implementation guide refers to version 1.0 of the hook.
|
|
30
|
+
DESCRIPTION
|
|
31
|
+
|
|
32
|
+
run_as_group
|
|
33
|
+
|
|
34
|
+
input_order :cds_jwt_iss, :cds_jwk_set
|
|
35
|
+
|
|
36
|
+
config(
|
|
37
|
+
inputs: {
|
|
38
|
+
auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json },
|
|
39
|
+
auth_tokens: { name: :order_dispatch_auth_tokens },
|
|
40
|
+
auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json },
|
|
41
|
+
client_access_token: { name: :order_dispatch_client_access_token },
|
|
42
|
+
override_access_token: { name: :order_dispatch_override_access_token,
|
|
43
|
+
title: 'order-dispatch Prefetch Validation Override Bearer Token' },
|
|
44
|
+
client_fhir_server: { name: :order_dispatch_client_fhir_server },
|
|
45
|
+
crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json },
|
|
46
|
+
custom_response_template: { name: :order_dispatch_custom_response_template },
|
|
47
|
+
selected_response_types: { name: :order_dispatch_selected_response_types }
|
|
48
|
+
},
|
|
49
|
+
outputs: {
|
|
50
|
+
auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json },
|
|
51
|
+
auth_token_payloads_json: { name: :order_dispatch_auth_token_payloads_json },
|
|
52
|
+
auth_tokens: { name: :order_dispatch_auth_tokens },
|
|
53
|
+
auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json },
|
|
54
|
+
client_access_token: { name: :order_dispatch_client_access_token },
|
|
55
|
+
client_fhir_server: { name: :order_dispatch_client_fhir_server },
|
|
56
|
+
crd_jwks_json: { name: :order_dispatch_crd_jwks_json },
|
|
57
|
+
crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }
|
|
58
|
+
},
|
|
59
|
+
options: {
|
|
60
|
+
hook_name: 'order-dispatch',
|
|
61
|
+
hook_path: ORDER_DISPATCH_PATH
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
group do
|
|
66
|
+
title 'Make Hook Requests'
|
|
67
|
+
test from: :crd_v201_order_dispatch_request
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
group do
|
|
71
|
+
title 'Verify Authorization'
|
|
72
|
+
test from: :crd_v201_decode_auth_token
|
|
73
|
+
test from: :crd_v201_retrieve_jwks
|
|
74
|
+
test from: :crd_v201_token_header
|
|
75
|
+
test from: :crd_v201_token_payload
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
group do
|
|
79
|
+
title 'Verify Requests'
|
|
80
|
+
test from: :crd_v201_hook_request_required_fields
|
|
81
|
+
test from: :crd_v201_hook_request_optional_fields
|
|
82
|
+
test from: :crd_v201_hook_request_valid_context do
|
|
83
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150',
|
|
84
|
+
'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285',
|
|
85
|
+
'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287',
|
|
86
|
+
'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289',
|
|
87
|
+
'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291',
|
|
88
|
+
'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293',
|
|
89
|
+
'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295',
|
|
90
|
+
'cds-hooks-library_1.0.1@57', 'cds-hooks-library_1.0.1@58',
|
|
91
|
+
'cds-hooks-library_1.0.1@59', 'cds-hooks-library_1.0.1@61',
|
|
92
|
+
'cds-hooks-library_1.0.1@62', 'cds-hooks-library_1.0.1@63',
|
|
93
|
+
'cds-hooks-library_1.0.1@65', 'cds-hooks-library_1.0.1@66',
|
|
94
|
+
'cds-hooks-library_1.0.1@67', 'cds-hooks-library_1.0.1@69',
|
|
95
|
+
'cds-hooks-library_1.0.1@70', 'cds-hooks-library_1.0.1@71',
|
|
96
|
+
'cds-hooks-library_1.0.1@72'
|
|
97
|
+
end
|
|
98
|
+
test from: :crd_v201_hook_request_valid_prefetch
|
|
99
|
+
test from: :crd_v201_hook_request_fetched_data
|
|
100
|
+
test from: :crd_v201_hook_request_prefetch_equals_queried
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
group do
|
|
104
|
+
title 'Verify Response Handling'
|
|
105
|
+
|
|
106
|
+
test from: :crd_v201_inferno_response_validation
|
|
107
|
+
test from: :crd_v201_card_display_attest_test
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
require_relative 'invocation/order_select_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_optional_fields_test'
|
|
7
|
+
require_relative 'verify_request/hook_request_required_fields_test'
|
|
8
|
+
require_relative 'verify_request/hook_request_valid_context_test'
|
|
9
|
+
require_relative 'verify_request/hook_request_valid_prefetch_test'
|
|
10
|
+
require_relative 'verify_request/hook_request_fetched_data_test'
|
|
11
|
+
require_relative 'verify_request/hook_request_prefetch_equals_queried_test'
|
|
12
|
+
require_relative 'verify_response/inferno_response_validation'
|
|
13
|
+
require_relative 'verify_response/client_display_cards_attest'
|
|
14
|
+
|
|
15
|
+
module DaVinciCRDTestKit
|
|
16
|
+
module V201
|
|
17
|
+
class ClientOrderSelectGroup < Inferno::TestGroup
|
|
18
|
+
title 'order-select'
|
|
19
|
+
id :crd_v201_client_order_select
|
|
20
|
+
description <<~DESCRIPTION
|
|
21
|
+
The order-select hook fires when a clinician selects one or more orders to place for a patient,
|
|
22
|
+
(including orders for medications, procedures, labs and other orders). If supported by the CDS client, this
|
|
23
|
+
hook may also be invoked each time the clinician selects a detail regarding the order. These tests are based on
|
|
24
|
+
the following criteria:
|
|
25
|
+
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-selecte),
|
|
26
|
+
which includes the profiles that are expected to be used for the resources resolved to by `context`
|
|
27
|
+
FHIR ID fields
|
|
28
|
+
* Specific [order-select `context` requirements](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/)
|
|
29
|
+
defined in the CDS Hooks specification
|
|
30
|
+
|
|
31
|
+
This version of the CRD implementation guide refers to version 1.0 of the hook.
|
|
32
|
+
DESCRIPTION
|
|
33
|
+
|
|
34
|
+
run_as_group
|
|
35
|
+
|
|
36
|
+
input_order :cds_jwt_iss, :cds_jwk_set
|
|
37
|
+
|
|
38
|
+
config(
|
|
39
|
+
inputs: {
|
|
40
|
+
auth_token_headers_json: { name: :order_select_auth_token_headers_json },
|
|
41
|
+
auth_tokens: { name: :order_select_auth_tokens },
|
|
42
|
+
auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json },
|
|
43
|
+
client_access_token: { name: :order_select_client_access_token },
|
|
44
|
+
override_access_token: { name: :order_select_override_access_token,
|
|
45
|
+
title: 'order-select Prefetch Validation Override Bearer Token' },
|
|
46
|
+
client_fhir_server: { name: :order_select_client_fhir_server },
|
|
47
|
+
crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json },
|
|
48
|
+
custom_response_template: { name: :order_select_custom_response_template },
|
|
49
|
+
selected_response_types: { name: :order_select_selected_response_types }
|
|
50
|
+
},
|
|
51
|
+
outputs: {
|
|
52
|
+
auth_token_headers_json: { name: :order_select_auth_token_headers_json },
|
|
53
|
+
auth_token_payloads_json: { name: :order_select_auth_token_payloads_json },
|
|
54
|
+
auth_tokens: { name: :order_select_auth_tokens },
|
|
55
|
+
auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json },
|
|
56
|
+
client_access_token: { name: :order_select_client_access_token },
|
|
57
|
+
client_fhir_server: { name: :order_select_client_fhir_server },
|
|
58
|
+
crd_jwks_json: { name: :order_select_crd_jwks_json },
|
|
59
|
+
crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json }
|
|
60
|
+
},
|
|
61
|
+
options: {
|
|
62
|
+
hook_name: 'order-select',
|
|
63
|
+
hook_path: ORDER_SELECT_PATH
|
|
64
|
+
}
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
group do
|
|
68
|
+
title 'Make Hook Requests'
|
|
69
|
+
test from: :crd_v201_order_select_request
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
group do
|
|
73
|
+
title 'Verify Authorization'
|
|
74
|
+
test from: :crd_v201_decode_auth_token
|
|
75
|
+
test from: :crd_v201_retrieve_jwks
|
|
76
|
+
test from: :crd_v201_token_header
|
|
77
|
+
test from: :crd_v201_token_payload
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
group do
|
|
81
|
+
title 'Verify Requests'
|
|
82
|
+
test from: :crd_v201_hook_request_required_fields
|
|
83
|
+
test from: :crd_v201_hook_request_optional_fields
|
|
84
|
+
test from: :crd_v201_hook_request_valid_context do
|
|
85
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150',
|
|
86
|
+
'hl7.fhir.us.davinci-crd_2.0.1@212', 'hl7.fhir.us.davinci-crd_2.0.1@213',
|
|
87
|
+
'hl7.fhir.us.davinci-crd_2.0.1@214', 'hl7.fhir.us.davinci-crd_2.0.1@215',
|
|
88
|
+
'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285',
|
|
89
|
+
'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287',
|
|
90
|
+
'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289',
|
|
91
|
+
'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291',
|
|
92
|
+
'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293',
|
|
93
|
+
'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295',
|
|
94
|
+
'cds-hooks-library_1.0.1@74', 'cds-hooks-library_1.0.1@75',
|
|
95
|
+
'cds-hooks-library_1.0.1@76', 'cds-hooks-library_1.0.1@78',
|
|
96
|
+
'cds-hooks-library_1.0.1@79', 'cds-hooks-library_1.0.1@80',
|
|
97
|
+
'cds-hooks-library_1.0.1@82', 'cds-hooks-library_1.0.1@83',
|
|
98
|
+
'cds-hooks-library_1.0.1@84', 'cds-hooks-library_1.0.1@86',
|
|
99
|
+
'cds-hooks-library_1.0.1@87', 'cds-hooks-library_1.0.1@88',
|
|
100
|
+
'cds-hooks-library_1.0.1@90', 'cds-hooks-library_1.0.1@91',
|
|
101
|
+
'cds-hooks-library_1.0.1@92'
|
|
102
|
+
end
|
|
103
|
+
test from: :crd_v201_hook_request_valid_prefetch
|
|
104
|
+
test from: :crd_v201_hook_request_fetched_data
|
|
105
|
+
test from: :crd_v201_hook_request_prefetch_equals_queried
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
group do
|
|
109
|
+
title 'Verify Response Handling'
|
|
110
|
+
|
|
111
|
+
test from: :crd_v201_inferno_response_validation
|
|
112
|
+
test from: :crd_v201_card_display_attest_test
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
require_relative 'invocation/order_sign_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_optional_fields_test'
|
|
7
|
+
require_relative 'verify_request/hook_request_required_fields_test'
|
|
8
|
+
require_relative 'verify_request/hook_request_valid_context_test'
|
|
9
|
+
require_relative 'verify_request/hook_request_valid_prefetch_test'
|
|
10
|
+
require_relative 'verify_request/hook_request_fetched_data_test'
|
|
11
|
+
require_relative 'verify_request/hook_request_prefetch_equals_queried_test'
|
|
12
|
+
require_relative 'verify_response/inferno_response_validation'
|
|
13
|
+
require_relative 'verify_response/client_display_cards_attest'
|
|
14
|
+
|
|
15
|
+
module DaVinciCRDTestKit
|
|
16
|
+
module V201
|
|
17
|
+
class ClientOrderSignGroup < Inferno::TestGroup
|
|
18
|
+
title 'order-sign'
|
|
19
|
+
id :crd_v201_client_order_sign
|
|
20
|
+
description <<~DESCRIPTION
|
|
21
|
+
The order-sign hook fires when a clinician is ready to sign one or more orders for a patient, (including orders
|
|
22
|
+
for medications, procedures, labs and other orders). These tests are based on the following criteria:
|
|
23
|
+
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign),
|
|
24
|
+
which includes the profiles that are expected to be used for the resources resolved to by `context`
|
|
25
|
+
FHIR ID fields
|
|
26
|
+
* Specific [order-sign `context` requirements](https://cds-hooks.org/hooks/order-sign/)
|
|
27
|
+
defined in the CDS Hooks specification
|
|
28
|
+
|
|
29
|
+
This version of the CRD implementation guide refers to version 1.1 of the hook which, at the time of publication,
|
|
30
|
+
was not available as a snapshot. Therefore the preceding link refers to the CDS hooks current build.
|
|
31
|
+
DESCRIPTION
|
|
32
|
+
|
|
33
|
+
run_as_group
|
|
34
|
+
|
|
35
|
+
input_order :cds_jwt_iss, :cds_jwk_set
|
|
36
|
+
|
|
37
|
+
config(
|
|
38
|
+
inputs: {
|
|
39
|
+
auth_token_headers_json: { name: :order_sign_auth_token_headers_json },
|
|
40
|
+
auth_tokens: { name: :order_sign_auth_tokens },
|
|
41
|
+
auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json },
|
|
42
|
+
client_access_token: { name: :order_sign_client_access_token },
|
|
43
|
+
override_access_token: { name: :order_sign_override_access_token,
|
|
44
|
+
title: 'order-sign Prefetch Validation Override Bearer Token' },
|
|
45
|
+
client_fhir_server: { name: :order_sign_client_fhir_server },
|
|
46
|
+
crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json },
|
|
47
|
+
custom_response_template: { name: :order_sign_custom_response_template },
|
|
48
|
+
selected_response_types: { name: :order_sign_selected_response_types }
|
|
49
|
+
},
|
|
50
|
+
outputs: {
|
|
51
|
+
auth_token_headers_json: { name: :order_sign_auth_token_headers_json },
|
|
52
|
+
auth_token_payloads_json: { name: :order_sign_auth_token_payloads_json },
|
|
53
|
+
auth_tokens: { name: :order_sign_auth_tokens },
|
|
54
|
+
auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json },
|
|
55
|
+
client_access_token: { name: :order_sign_client_access_token },
|
|
56
|
+
client_fhir_server: { name: :order_sign_client_fhir_server },
|
|
57
|
+
crd_jwks_json: { name: :order_sign_crd_jwks_json },
|
|
58
|
+
crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json }
|
|
59
|
+
},
|
|
60
|
+
options: {
|
|
61
|
+
hook_name: 'order-sign',
|
|
62
|
+
hook_path: ORDER_SIGN_PATH
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
group do
|
|
67
|
+
title 'Make Hook Requests'
|
|
68
|
+
test from: :crd_v201_order_sign_request
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
group do
|
|
72
|
+
title 'Verify Authorization'
|
|
73
|
+
test from: :crd_v201_decode_auth_token
|
|
74
|
+
test from: :crd_v201_retrieve_jwks
|
|
75
|
+
test from: :crd_v201_token_header
|
|
76
|
+
test from: :crd_v201_token_payload
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
group do
|
|
80
|
+
title 'Verify Requests'
|
|
81
|
+
test from: :crd_v201_hook_request_required_fields
|
|
82
|
+
test from: :crd_v201_hook_request_optional_fields
|
|
83
|
+
test from: :crd_v201_hook_request_valid_context do
|
|
84
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150',
|
|
85
|
+
'hl7.fhir.us.davinci-crd_2.0.1@220', 'hl7.fhir.us.davinci-crd_2.0.1@221',
|
|
86
|
+
'hl7.fhir.us.davinci-crd_2.0.1@222', 'hl7.fhir.us.davinci-crd_2.0.1@223',
|
|
87
|
+
'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285',
|
|
88
|
+
'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287',
|
|
89
|
+
'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289',
|
|
90
|
+
'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291',
|
|
91
|
+
'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293',
|
|
92
|
+
'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295',
|
|
93
|
+
'cds-hooks-library_1.0.1@1', 'cds-hooks-library_1.0.1@2',
|
|
94
|
+
'cds-hooks-library_1.0.1@3', 'cds-hooks-library_1.0.1@5',
|
|
95
|
+
'cds-hooks-library_1.0.1@6', 'cds-hooks-library_1.0.1@7',
|
|
96
|
+
'cds-hooks-library_1.0.1@9', 'cds-hooks-library_1.0.1@10',
|
|
97
|
+
'cds-hooks-library_1.0.1@11', 'cds-hooks-library_1.0.1@13',
|
|
98
|
+
'cds-hooks-library_1.0.1@14', 'cds-hooks-library_1.0.1@15'
|
|
99
|
+
end
|
|
100
|
+
test from: :crd_v201_hook_request_valid_prefetch
|
|
101
|
+
test from: :crd_v201_hook_request_fetched_data
|
|
102
|
+
test from: :crd_v201_hook_request_prefetch_equals_queried
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
group do
|
|
106
|
+
title 'Verify Response Handling'
|
|
107
|
+
|
|
108
|
+
test from: :crd_v201_inferno_response_validation
|
|
109
|
+
test from: :crd_v201_card_display_attest_test
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
require_relative '
|
|
1
|
+
require_relative 'registration/client_registration_verification_test'
|
|
2
|
+
require_relative 'registration/client_service_registration_attestation_test'
|
|
2
3
|
|
|
3
4
|
module DaVinciCRDTestKit
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
module V201
|
|
6
|
+
class PASClientRegistrationGroup < Inferno::TestGroup
|
|
7
|
+
id :crd_v201_client_registration
|
|
8
|
+
title 'Client Registration'
|
|
9
|
+
description %(
|
|
10
|
+
Register the CRD client under test with Inferno's simulated CRD server by
|
|
9
11
|
providing required information for Inferno to use in identifying and verify
|
|
10
12
|
hook requests.
|
|
11
13
|
|
|
@@ -19,8 +21,10 @@ module DaVinciCRDTestKit
|
|
|
19
21
|
of the client under test with the Inferno service. If the client needs to make a
|
|
20
22
|
change to its registered values during execution, this test will need to be re-run.
|
|
21
23
|
)
|
|
22
|
-
|
|
24
|
+
run_as_group
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
test from: :crd_v201_client_registration_verification
|
|
27
|
+
test from: :crd_v201_client_service_registration_attestation
|
|
28
|
+
end
|
|
25
29
|
end
|
|
26
30
|
end
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require_relative 'client_fhir_api_group'
|
|
2
|
+
require_relative 'client_hooks_group'
|
|
3
|
+
require_relative 'client_card_must_support_group'
|
|
4
|
+
require_relative 'client_registration_group'
|
|
5
|
+
require_relative '../endpoints/cds_services_discovery_handler'
|
|
6
|
+
require_relative '../../cross_suite/tags'
|
|
7
|
+
require_relative 'client_urls'
|
|
8
|
+
require_relative '../crd_client_options'
|
|
9
|
+
require_relative '../endpoints/hook_request_endpoint'
|
|
10
|
+
require_relative '../../ext/inferno_core/runnable'
|
|
11
|
+
|
|
12
|
+
module DaVinciCRDTestKit
|
|
13
|
+
module V201
|
|
14
|
+
class CRDClientSuite < Inferno::TestSuite
|
|
15
|
+
id :crd_client
|
|
16
|
+
title 'Da Vinci CRD Client v2.0.1 Test Suite'
|
|
17
|
+
description <<~DESCRIPTION
|
|
18
|
+
The Da Vinci CRD Client Test Suite tests the conformance of client systems
|
|
19
|
+
to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD)
|
|
20
|
+
Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2).
|
|
21
|
+
|
|
22
|
+
For details on the design and use of these tests, see the wiki including
|
|
23
|
+
- [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details)
|
|
24
|
+
for a high-level description of the test
|
|
25
|
+
organization, including its components and limitations.
|
|
26
|
+
- [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions)
|
|
27
|
+
for a step-by-step guide to execution of these
|
|
28
|
+
tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions#demonstration-execution)
|
|
29
|
+
against the [public reference implementation](https://crd-request-generator.davinci.hl7.org/).
|
|
30
|
+
DESCRIPTION
|
|
31
|
+
|
|
32
|
+
suite_summary <<~SUMMARY
|
|
33
|
+
The Da Vinci CRD Client Test Suite tests the conformance of client systems
|
|
34
|
+
to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD)
|
|
35
|
+
Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2).
|
|
36
|
+
SUMMARY
|
|
37
|
+
|
|
38
|
+
links [
|
|
39
|
+
{
|
|
40
|
+
label: 'Report Issue',
|
|
41
|
+
url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: 'Open Source',
|
|
45
|
+
url: 'https://github.com/inferno-framework/davinci-crd-test-kit'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
label: 'Download',
|
|
49
|
+
url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases'
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
requirement_sets(
|
|
54
|
+
{
|
|
55
|
+
identifier: 'hl7.fhir.us.davinci-crd_2.0.1',
|
|
56
|
+
title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.0.1',
|
|
57
|
+
actor: 'Client'
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
identifier: 'cds-hooks_2.0',
|
|
61
|
+
title: 'CDS Hooks',
|
|
62
|
+
actor: 'Client'
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
identifier: 'cds-hooks-library_1.0.1',
|
|
66
|
+
title: 'CDS Hooks Library',
|
|
67
|
+
actor: 'Client',
|
|
68
|
+
requirements: 'referenced'
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
fhir_resource_validator do
|
|
73
|
+
igs('hl7.fhir.us.davinci-crd#2.0.1')
|
|
74
|
+
|
|
75
|
+
validation_context do
|
|
76
|
+
snomedCT '731000124108' # explicit snomedCT expansion parameter
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
exclude_message do |message|
|
|
80
|
+
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
suite_option :smart_app_launch_version,
|
|
85
|
+
title: 'SMART App Launch Version',
|
|
86
|
+
list_options: [
|
|
87
|
+
{
|
|
88
|
+
label: 'SMART App Launch 1.0.0',
|
|
89
|
+
value: CRDClientOptions::SMART_1
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: 'SMART App Launch 2.0.0',
|
|
93
|
+
value: CRDClientOptions::SMART_2
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
def self.extract_token_from_query_params(request)
|
|
98
|
+
request.query_parameters['token']
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
route :get, '/cds-services', CDSServicesDiscoveryHandler
|
|
102
|
+
allow_cors APPOINTMENT_BOOK_PATH, ENCOUNTER_START_PATH, ENCOUNTER_DISCHARGE_PATH, ORDER_DISPATCH_PATH,
|
|
103
|
+
ORDER_SELECT_PATH, ORDER_SIGN_PATH, '/cds-services'
|
|
104
|
+
suite_endpoint :post, APPOINTMENT_BOOK_PATH, HookRequestEndpoint
|
|
105
|
+
suite_endpoint :post, ENCOUNTER_START_PATH, HookRequestEndpoint
|
|
106
|
+
suite_endpoint :post, ENCOUNTER_DISCHARGE_PATH, HookRequestEndpoint
|
|
107
|
+
suite_endpoint :post, ORDER_DISPATCH_PATH, HookRequestEndpoint
|
|
108
|
+
suite_endpoint :post, ORDER_SELECT_PATH, HookRequestEndpoint
|
|
109
|
+
suite_endpoint :post, ORDER_SIGN_PATH, HookRequestEndpoint
|
|
110
|
+
|
|
111
|
+
resume_test_route :get, RESUME_PASS_PATH do |request|
|
|
112
|
+
CRDClientSuite.extract_token_from_query_params(request)
|
|
113
|
+
end
|
|
114
|
+
resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
|
|
115
|
+
CRDClientSuite.extract_token_from_query_params(request)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
group do
|
|
119
|
+
id :crd_v201_client_hook_invocation
|
|
120
|
+
title 'Hook Invocation'
|
|
121
|
+
description %(
|
|
122
|
+
This group checks that the system can register as a CDS client with
|
|
123
|
+
Inferno's simulated CRD server and make hook invocations.
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
group from: :crd_v201_client_registration
|
|
127
|
+
group from: :crd_v201_client_hooks
|
|
128
|
+
group from: :crd_v201_client_card_must_support
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
group from: :crd_v201_client_fhir_api
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|