davinci_crd_test_kit 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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 +188 -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 +239 -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}/external_reference.json +1 -1
- data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/launch_smart_app.json +1 -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 +109 -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 +102 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +101 -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 +84 -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 +107 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +108 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +113 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +33 -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 +234 -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 +54 -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 +108 -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 +133 -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 +75 -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 +321 -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 +476 -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 +203 -0
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +435 -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 +46 -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/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/{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 +183 -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} +3 -3
- 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 +118 -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/discovery/discovery_standard_prefetch_expressions_test.rb +166 -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/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 +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +94 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +71 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +107 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +107 -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 +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +132 -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/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 +31 -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 +40 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +41 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +109 -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/coverage_info_configuration_test.rb +83 -0
- 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 +130 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +119 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +89 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +126 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +174 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +83 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +88 -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 +81 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +63 -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 +307 -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}/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
data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/cards_identification'
|
|
2
|
+
require_relative '../../../cross_suite/tags'
|
|
3
|
+
|
|
4
|
+
module DaVinciCRDTestKit
|
|
5
|
+
module V221
|
|
6
|
+
class CoverageInformationMustSupportTest < Inferno::Test
|
|
7
|
+
include DaVinciCRDTestKit::CardsIdentification
|
|
8
|
+
|
|
9
|
+
title 'Coverage Information responses demonstrate Must Support elements'
|
|
10
|
+
id :crd_v221_coverage_information_must_support
|
|
11
|
+
description <<~DESCRIPTION
|
|
12
|
+
Checks that the server demonstrated must support coverage for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)
|
|
13
|
+
extension across the hook responses returned during this test session.
|
|
14
|
+
|
|
15
|
+
At least one hook invocation must have returned a Coverage Information system action.
|
|
16
|
+
Additionally, the set of [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html)
|
|
17
|
+
instances returned across those actions must collectively demonstrate all must support elements.
|
|
18
|
+
|
|
19
|
+
If this test fails, re-run the hook tests using request payloads that cause the server to return
|
|
20
|
+
Coverage Information system actions that cover the full set of must support elements.
|
|
21
|
+
DESCRIPTION
|
|
22
|
+
|
|
23
|
+
ALL_HOOKS = [
|
|
24
|
+
DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG,
|
|
25
|
+
DaVinciCRDTestKit::ENCOUNTER_START_TAG,
|
|
26
|
+
DaVinciCRDTestKit::ENCOUNTER_DISCHARGE_TAG,
|
|
27
|
+
DaVinciCRDTestKit::ORDER_DISPATCH_TAG,
|
|
28
|
+
DaVinciCRDTestKit::ORDER_SELECT_TAG,
|
|
29
|
+
DaVinciCRDTestKit::ORDER_SIGN_TAG
|
|
30
|
+
].freeze
|
|
31
|
+
|
|
32
|
+
def metadata
|
|
33
|
+
@metadata ||= YAML.load_file(
|
|
34
|
+
File.join(__dir__, '..', '..', '..', 'cross_suite', 'coverage-information_stu221_metadata.yml')
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class MustSupportMetadataHolder
|
|
39
|
+
attr_accessor :metadata
|
|
40
|
+
|
|
41
|
+
def initialize(metadata)
|
|
42
|
+
self.metadata = metadata
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def must_supports
|
|
46
|
+
@must_supports ||= {
|
|
47
|
+
extensions: metadata[:must_supports][:extensions] || [],
|
|
48
|
+
slices: metadata[:must_supports][:slices] || [],
|
|
49
|
+
elements: metadata[:must_supports][:elements] || []
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
run do
|
|
55
|
+
ALL_HOOKS.each { |hook_tag| load_tagged_requests(hook_tag) }
|
|
56
|
+
sorted_cards = sorted_cards_from_requests(requests)
|
|
57
|
+
coverage_info_system_actions = sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE]
|
|
58
|
+
|
|
59
|
+
assert coverage_info_system_actions.present?,
|
|
60
|
+
'Coverage Information system action support not demonstrated.'
|
|
61
|
+
|
|
62
|
+
coverage_information_extensions = extract_coverage_information_extensions(sorted_cards)
|
|
63
|
+
assert_must_support_elements_present(
|
|
64
|
+
coverage_information_extensions,
|
|
65
|
+
COVERAGE_INFO_EXT_URL,
|
|
66
|
+
metadata: MustSupportMetadataHolder.new(metadata)
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require_relative '../../server_test_helper'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V221
|
|
5
|
+
class CoverageInformationSystemActionAcrossHooksValidationTest < Inferno::Test
|
|
6
|
+
include DaVinciCRDTestKit::ServerTestHelper
|
|
7
|
+
|
|
8
|
+
title 'Coverage Information system actions are valid across all hooks'
|
|
9
|
+
id :crd_v221_coverage_info_system_action_across_hooks_validation
|
|
10
|
+
description %(
|
|
11
|
+
This test verifies the presence of valid [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
|
|
12
|
+
system action returned by CRD services across all hooks invoked. It verifies the following for each action:
|
|
13
|
+
- The action type is `update`.
|
|
14
|
+
- The resource within the action conforms its respective FHIR profile.
|
|
15
|
+
|
|
16
|
+
Additionally, the test examines the `coverage-info` extensions within the resource to ensure that:
|
|
17
|
+
- Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids`
|
|
18
|
+
(if present).
|
|
19
|
+
- Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids`
|
|
20
|
+
(if present).
|
|
21
|
+
|
|
22
|
+
The test will be skipped if no valid Coverage Information system actions are returned across all hooks.
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-14'
|
|
26
|
+
|
|
27
|
+
run do
|
|
28
|
+
verify_at_least_one_test_passes(
|
|
29
|
+
self.class.parent.parent.groups,
|
|
30
|
+
'crd_v221_coverage_info_system_action_validation',
|
|
31
|
+
'None of the hooks invoked returned valid Coverage Info system actions.'
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require_relative '../../resource_extractor'
|
|
3
|
+
require_relative '../../server_test_helper'
|
|
4
|
+
require_relative '../../../cross_suite/tags'
|
|
5
|
+
|
|
6
|
+
module DaVinciCRDTestKit
|
|
7
|
+
module V221
|
|
8
|
+
class SupportedUSCoreVersionsTest < Inferno::Test
|
|
9
|
+
include DaVinciCRDTestKit::ResourceExtractor
|
|
10
|
+
include DaVinciCRDTestKit::ServerTestHelper
|
|
11
|
+
|
|
12
|
+
title 'Provided resources demonstrate support for all required US Core versions'
|
|
13
|
+
id :crd_v221_supported_us_core_versions
|
|
14
|
+
description <<~DESCRIPTION
|
|
15
|
+
Checks whether the embedded FHIR resources provided across hook requests during this test
|
|
16
|
+
session demonstrate support for all US Core versions required by the CRD implementation
|
|
17
|
+
guide: 3.1.1, 6.1.0, and 7.0.0.
|
|
18
|
+
|
|
19
|
+
This test does not verify exhaustive support for each US Core version. It inspects FHIR
|
|
20
|
+
resources included in successful hook request `context` and `prefetch` data and verifies
|
|
21
|
+
that at least one provided resource validates against a US Core profile for each required
|
|
22
|
+
version.
|
|
23
|
+
DESCRIPTION
|
|
24
|
+
|
|
25
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@conf-2'
|
|
26
|
+
|
|
27
|
+
US_CORE_VERSIONS = {
|
|
28
|
+
'3.1.1' => 'v3.1.1',
|
|
29
|
+
'6.1.0' => 'v6.1.0',
|
|
30
|
+
'7.0.0' => 'v7.0.0'
|
|
31
|
+
}.freeze
|
|
32
|
+
|
|
33
|
+
GENERATED_METADATA_DIR = File.join(
|
|
34
|
+
Gem::Specification.find_by_name('us_core_test_kit').gem_dir,
|
|
35
|
+
'lib', 'us_core_test_kit', 'generated'
|
|
36
|
+
).freeze
|
|
37
|
+
|
|
38
|
+
run do
|
|
39
|
+
ALL_HOOK_TAGS.each { |hook_tag| load_tagged_requests(hook_tag) }
|
|
40
|
+
skip_if requests.empty?, 'No requests were made in a previous test as expected.'
|
|
41
|
+
|
|
42
|
+
successful_requests = requests.select { |request| request.status == 200 }
|
|
43
|
+
skip_if successful_requests.empty?, 'All service requests were unsuccessful.'
|
|
44
|
+
|
|
45
|
+
embedded_resources = successful_requests.each.flat_map { |request| resources_from_request(request) }
|
|
46
|
+
|
|
47
|
+
skip_if embedded_resources.blank?,
|
|
48
|
+
'No embedded FHIR resources were found in successful hook requests.'
|
|
49
|
+
|
|
50
|
+
version_matches = determine_version_matches(embedded_resources)
|
|
51
|
+
missing_versions = US_CORE_VERSIONS.keys - version_matches.keys
|
|
52
|
+
|
|
53
|
+
missing_versions.each do |version|
|
|
54
|
+
add_message('error', "Support for US Core #{version} was not demonstrated.")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
assert missing_versions.empty?,
|
|
58
|
+
'Support for one or more required US Core versions was not demonstrated.'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
private
|
|
62
|
+
|
|
63
|
+
def determine_version_matches(embedded_resources)
|
|
64
|
+
embedded_resources.each_with_object({}) do |resource, matches|
|
|
65
|
+
US_CORE_VERSIONS.each_key do |version|
|
|
66
|
+
next if matches.key?(version)
|
|
67
|
+
|
|
68
|
+
matching_profile = us_core_profiles_by_version
|
|
69
|
+
.dig(version, resource.resourceType)
|
|
70
|
+
&.find { |profile_url| resource_valid_for_profile?(resource, profile_url) }
|
|
71
|
+
|
|
72
|
+
next unless matching_profile.present?
|
|
73
|
+
|
|
74
|
+
matches[version] = matching_profile
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def resource_valid_for_profile?(resource, profile_url)
|
|
80
|
+
validation_details = []
|
|
81
|
+
resource_is_valid?(
|
|
82
|
+
resource:,
|
|
83
|
+
profile_url:,
|
|
84
|
+
validator_response_details: validation_details,
|
|
85
|
+
add_messages_to_runnable: false
|
|
86
|
+
)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def us_core_profiles_by_version
|
|
90
|
+
@us_core_profiles_by_version ||= US_CORE_VERSIONS.transform_values do |directory|
|
|
91
|
+
version_profile_metadata(directory).each_with_object(
|
|
92
|
+
Hash.new { |hash, key| hash[key] = [] }
|
|
93
|
+
) do |metadata, profiles_by_resource|
|
|
94
|
+
profile_identifier = versioned_profile_identifier(metadata)
|
|
95
|
+
next unless profile_identifier.present?
|
|
96
|
+
|
|
97
|
+
profiles_by_resource[metadata[:resource]] << profile_identifier
|
|
98
|
+
end.transform_values(&:uniq)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def version_profile_metadata(directory)
|
|
103
|
+
Dir.glob(File.join(GENERATED_METADATA_DIR, directory, '*', 'metadata.yml')).map do |path|
|
|
104
|
+
YAML.load_file(path, aliases: true)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def versioned_profile_identifier(metadata)
|
|
109
|
+
resource_type = metadata[:resource]
|
|
110
|
+
profile_url = metadata[:profile_url]
|
|
111
|
+
profile_version = metadata[:profile_version]
|
|
112
|
+
return if resource_type.blank? || profile_url.blank? || profile_version.blank?
|
|
113
|
+
|
|
114
|
+
"#{profile_url}|#{profile_version}"
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'interaction/server_invoke_hook_test'
|
|
3
|
+
require_relative 'verify_request/service_request_required_fields_validation_test'
|
|
4
|
+
require_relative 'verify_request/service_request_optional_fields_validation_test'
|
|
5
|
+
require_relative 'verify_request/service_request_context_validation_test'
|
|
6
|
+
require_relative 'verify_response/service_response_validation_test'
|
|
7
|
+
require_relative 'verify_response/external_reference_card_validation_test'
|
|
8
|
+
require_relative 'verify_response/coverage_information_system_action_validation_test'
|
|
9
|
+
require_relative 'verify_response/coverage_information_card_absence_test'
|
|
10
|
+
require_relative 'verify_response/coverage_info_configuration_test'
|
|
11
|
+
require_relative 'verify_response/instructions_card_received_test'
|
|
12
|
+
require_relative 'verify_response/form_completion_response_validation_test'
|
|
13
|
+
require_relative 'verify_response/launch_smart_app_card_validation_test'
|
|
14
|
+
require_relative 'verify_response/create_or_update_coverage_info_response_validation_test'
|
|
15
|
+
require_relative 'verify_response/all_responses_include_coverage_information_test'
|
|
16
|
+
require_relative 'verify_response/unknown_configuration_test'
|
|
17
|
+
require_relative 'verify_response/unknown_context_test'
|
|
18
|
+
require_relative 'verify_response/unknown_cds_hooks_elements_test'
|
|
19
|
+
|
|
20
|
+
module DaVinciCRDTestKit
|
|
21
|
+
module V221
|
|
22
|
+
class ServerAppointmentBookGroup < Inferno::TestGroup
|
|
23
|
+
title 'appointment-book'
|
|
24
|
+
id :crd_v221_server_appointment_book
|
|
25
|
+
description %(
|
|
26
|
+
This group of tests invokes the appointment-book hook and ensures that
|
|
27
|
+
the user-provided requests are valid as per the requirements described
|
|
28
|
+
in the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
29
|
+
and the [CDS Hooks specification section on appointment-book context](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/).
|
|
30
|
+
It also ensures that the contents of the server's response are valid as per the requirements described in
|
|
31
|
+
the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
32
|
+
and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response).
|
|
33
|
+
|
|
34
|
+
The [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
35
|
+
states that "servers SHALL, at minimum, support returning and processing the Coverage Information
|
|
36
|
+
system action for all invocations of this hook."
|
|
37
|
+
|
|
38
|
+
This group includes tests to validate the following CRD response types:
|
|
39
|
+
- [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
|
|
40
|
+
- [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\
|
|
41
|
+
- optional
|
|
42
|
+
- [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional
|
|
43
|
+
- [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional
|
|
44
|
+
- [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) -
|
|
45
|
+
optional
|
|
46
|
+
- [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) -
|
|
47
|
+
optional
|
|
48
|
+
)
|
|
49
|
+
# verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168',
|
|
50
|
+
# 'hl7.fhir.us.davinci-crd_2.0.1@170', 'hl7.fhir.us.davinci-crd_2.0.1@184'
|
|
51
|
+
|
|
52
|
+
config options: { hook_name: APPOINTMENT_BOOK_TAG }
|
|
53
|
+
run_as_group
|
|
54
|
+
|
|
55
|
+
group do
|
|
56
|
+
title 'Interaction'
|
|
57
|
+
|
|
58
|
+
test from: :crd_v221_server_invoke_hook_test,
|
|
59
|
+
config: {
|
|
60
|
+
inputs: {
|
|
61
|
+
service_ids: {
|
|
62
|
+
name: :appointment_book_service_ids,
|
|
63
|
+
title: 'Service id for the service that implements the `appointment-book` hook'
|
|
64
|
+
},
|
|
65
|
+
service_request_bodies: {
|
|
66
|
+
name: :appointment_book_request_bodies,
|
|
67
|
+
title: 'Request body or bodies for invoking the `appointment-book` hook'
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
group do
|
|
74
|
+
title 'Requests'
|
|
75
|
+
simulation_verification
|
|
76
|
+
|
|
77
|
+
test from: :crd_v221_service_request_required_fields_validation,
|
|
78
|
+
config: {
|
|
79
|
+
outputs: {
|
|
80
|
+
contexts: {
|
|
81
|
+
name: :appointment_book_contexts
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
test from: :crd_v221_service_request_context_validation,
|
|
86
|
+
config: {
|
|
87
|
+
inputs: {
|
|
88
|
+
contexts: {
|
|
89
|
+
name: :appointment_book_contexts
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
test from: :crd_v221_service_request_optional_fields_validation
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
group do
|
|
97
|
+
title 'Responses'
|
|
98
|
+
|
|
99
|
+
test from: :crd_v221_service_response_validation
|
|
100
|
+
test from: :crd_v221_external_reference_card_validation
|
|
101
|
+
test from: :crd_v221_launch_smart_app_card_validation
|
|
102
|
+
test from: :crd_v221_valid_instructions_card_received
|
|
103
|
+
test from: :crd_v221_coverage_info_system_action_validation
|
|
104
|
+
test from: :crd_v221_all_responses_include_coverage_information,
|
|
105
|
+
verifies_requirements: [
|
|
106
|
+
'hl7.fhir.us.davinci-crd_2.2.1@hook-16',
|
|
107
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-28',
|
|
108
|
+
'hl7.fhir.us.davinci-crd_2.2.1@hook-26',
|
|
109
|
+
'hl7.fhir.us.davinci-crd_2.2.1@resp-29'
|
|
110
|
+
]
|
|
111
|
+
test from: :crd_v221_coverage_information_card_absence
|
|
112
|
+
test from: :crd_v221_request_form_completion_response_validation
|
|
113
|
+
test from: :crd_v221_create_or_update_coverage_info_response_validation
|
|
114
|
+
test from: :crd_v221_coverage_info_configuration
|
|
115
|
+
test from: :crd_v221_unknown_configuration
|
|
116
|
+
test from: :crd_v221_unknown_context
|
|
117
|
+
test from: :crd_v221_unknown_cds_hooks_elements
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'interaction/server_invoke_hook_test'
|
|
3
|
+
require_relative 'verify_request/service_request_required_fields_validation_test'
|
|
4
|
+
require_relative 'verify_request/service_request_optional_fields_validation_test'
|
|
5
|
+
require_relative 'verify_request/service_request_context_validation_test'
|
|
6
|
+
require_relative 'verify_response/service_response_validation_test'
|
|
7
|
+
|
|
8
|
+
module DaVinciCRDTestKit
|
|
9
|
+
module V221
|
|
10
|
+
class ServerDemonstrateHookResponseGroup < Inferno::TestGroup
|
|
11
|
+
title 'Hook Response Demonstration'
|
|
12
|
+
id :crd_v221_server_demonstrate_hook_response
|
|
13
|
+
description %(
|
|
14
|
+
This group of tests allows the system to demonstrate its ability to respond to a CRD Hook invocation
|
|
15
|
+
and return a valid response. Inferno will use the provided request body and will either use the provided service
|
|
16
|
+
id or infer one from the hook indicated in the request and the server's discovery response.
|
|
17
|
+
It ensures that the user-provided request and the server's response are both
|
|
18
|
+
valid as per the requirements described in the [CRD IG section](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html)
|
|
19
|
+
and the [CDS Hooks](https://cds-hooks.hl7.org/) hook specification for the corresponding hook.
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
config options: { hook_name: ANY_HOOK_TAG }
|
|
23
|
+
run_as_group
|
|
24
|
+
|
|
25
|
+
group do
|
|
26
|
+
title 'Interaction'
|
|
27
|
+
|
|
28
|
+
test from: :crd_v221_server_invoke_hook_test,
|
|
29
|
+
config: {
|
|
30
|
+
inputs: {
|
|
31
|
+
service_ids: {
|
|
32
|
+
name: :any_hook_service_ids,
|
|
33
|
+
title: 'Service id to use for the "Demonstrate a Hook Response" test',
|
|
34
|
+
description: %(
|
|
35
|
+
If blank, Inferno will attempt to infer the service id to use by finding a service entry in the
|
|
36
|
+
Discovery response for the hook indicated in the provided request body. If it cannot be inferred,
|
|
37
|
+
the tests will be skipped.
|
|
38
|
+
)
|
|
39
|
+
},
|
|
40
|
+
service_request_bodies: {
|
|
41
|
+
name: :any_hook_request_body,
|
|
42
|
+
title: 'Request body to use for the "Demonstrate a Hook Response" test',
|
|
43
|
+
description: %(
|
|
44
|
+
Provide a single JSON request body to submit for the hook invocation. The type of hook invoked
|
|
45
|
+
will be inferred based on the `hook` element in the request.
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
group do
|
|
53
|
+
title 'Requests'
|
|
54
|
+
simulation_verification
|
|
55
|
+
|
|
56
|
+
test from: :crd_v221_service_request_required_fields_validation,
|
|
57
|
+
config: {
|
|
58
|
+
outputs: {
|
|
59
|
+
contexts: {
|
|
60
|
+
name: :any_hook_contexts
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
test from: :crd_v221_service_request_context_validation,
|
|
65
|
+
config: {
|
|
66
|
+
inputs: {
|
|
67
|
+
contexts: {
|
|
68
|
+
name: :any_hook_contexts
|
|
69
|
+
},
|
|
70
|
+
request_body: {
|
|
71
|
+
name: :any_hook_request_body
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
group do
|
|
78
|
+
title 'Responses'
|
|
79
|
+
|
|
80
|
+
test from: :crd_v221_service_response_validation,
|
|
81
|
+
config: {
|
|
82
|
+
outputs: {
|
|
83
|
+
valid_cards: {
|
|
84
|
+
name: :any_hook_valid_cards
|
|
85
|
+
},
|
|
86
|
+
valid_system_actions: {
|
|
87
|
+
name: :any_hook_valid_system_actions
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'tls_test_kit'
|
|
2
|
+
require_relative 'discovery/discovery_configuration_test'
|
|
3
|
+
require_relative 'discovery/discovery_endpoint_test'
|
|
4
|
+
require_relative 'discovery/discovery_services_validation_test'
|
|
5
|
+
require_relative 'discovery/discovery_prefetch_support_test'
|
|
6
|
+
require_relative 'discovery/discovery_standard_prefetch_expressions_test'
|
|
7
|
+
|
|
8
|
+
module DaVinciCRDTestKit
|
|
9
|
+
module V221
|
|
10
|
+
class ServerDiscoveryGroup < Inferno::TestGroup
|
|
11
|
+
title 'Discovery'
|
|
12
|
+
id :crd_v221_server_discovery_group
|
|
13
|
+
description %(
|
|
14
|
+
# Background
|
|
15
|
+
|
|
16
|
+
The #{title} Group checks for a CDS Service's Discovery endpoint as described by the
|
|
17
|
+
[CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery).
|
|
18
|
+
A CDS Service is discoverable via a stable endpoint by CDS Clients. The Discovery endpoint
|
|
19
|
+
includes information such as a description of the CDS Service, when it should be invoked,
|
|
20
|
+
and any data that is requested to be prefetched.
|
|
21
|
+
The Discovery endpoint SHALL always be available at `{baseUrl}/cds-services`.
|
|
22
|
+
|
|
23
|
+
# Test Methodology
|
|
24
|
+
|
|
25
|
+
This test sequence accesses the CRD server Discovery endpoint at /cds-services using a GET request.
|
|
26
|
+
It parses the response and verifies that:
|
|
27
|
+
- The Discovery endpoint is TLS secured.
|
|
28
|
+
- The Discovery endpoint is available at `{baseURL}/cds-services`.
|
|
29
|
+
- Each CDS Service in the response contains the required fields as specified in the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response).
|
|
30
|
+
|
|
31
|
+
It collects the following information that is saved in the testing session for use by later tests:
|
|
32
|
+
- List of supported CDS Services/Hooks
|
|
33
|
+
- List of service IDs for each supported Hook.
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
run_as_group
|
|
37
|
+
|
|
38
|
+
test from: :tls_version_test do
|
|
39
|
+
title 'CRD server uses TLS 1.2 or higher'
|
|
40
|
+
description <<~DESCRIPTION
|
|
41
|
+
Under [Privacy, Safety, and
|
|
42
|
+
Security](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html),
|
|
43
|
+
the CRD Implementation Guide imposes the following rule about TLS:
|
|
44
|
+
|
|
45
|
+
As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety),
|
|
46
|
+
communications between CRD Clients and CRD Servers SHALL
|
|
47
|
+
use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and
|
|
48
|
+
CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based
|
|
49
|
+
on HRex rules for PHI exchange.
|
|
50
|
+
|
|
51
|
+
This test verifies that the CRD server is using TLS 1.2 or higher.
|
|
52
|
+
DESCRIPTION
|
|
53
|
+
|
|
54
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@sec-2'
|
|
55
|
+
|
|
56
|
+
id :crd_v221_server_tls_version_stu2
|
|
57
|
+
|
|
58
|
+
config(
|
|
59
|
+
options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION },
|
|
60
|
+
inputs: { url: { name: :base_url } }
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
test from: :crd_v221_discovery_endpoint_test
|
|
65
|
+
test from: :crd_v221_discovery_services_validation
|
|
66
|
+
test from: :crd_v221_discovery_configuration
|
|
67
|
+
test from: :crd_v221_discovery_prefetch_support
|
|
68
|
+
test from: :crd_v221_discovery_standard_prefetch_expressions
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'interaction/server_invoke_hook_test'
|
|
3
|
+
require_relative 'verify_request/service_request_required_fields_validation_test'
|
|
4
|
+
require_relative 'verify_request/service_request_optional_fields_validation_test'
|
|
5
|
+
require_relative 'verify_request/service_request_context_validation_test'
|
|
6
|
+
require_relative 'verify_response/service_response_validation_test'
|
|
7
|
+
require_relative 'verify_response/external_reference_card_validation_test'
|
|
8
|
+
require_relative 'verify_response/launch_smart_app_card_validation_test'
|
|
9
|
+
require_relative 'verify_response/instructions_card_received_test'
|
|
10
|
+
require_relative 'verify_response/form_completion_response_validation_test'
|
|
11
|
+
require_relative 'verify_response/create_or_update_coverage_info_response_validation_test'
|
|
12
|
+
require_relative 'verify_response/coverage_information_card_absence_test'
|
|
13
|
+
require_relative 'verify_response/coverage_info_configuration_test'
|
|
14
|
+
require_relative 'verify_response/unknown_configuration_test'
|
|
15
|
+
require_relative 'verify_response/unknown_context_test'
|
|
16
|
+
require_relative 'verify_response/unknown_cds_hooks_elements_test'
|
|
17
|
+
|
|
18
|
+
module DaVinciCRDTestKit
|
|
19
|
+
module V221
|
|
20
|
+
class ServerEncounterDischargeGroup < Inferno::TestGroup
|
|
21
|
+
title 'encounter-discharge'
|
|
22
|
+
id :crd_v221_server_encounter_discharge
|
|
23
|
+
description %(
|
|
24
|
+
This group of tests invokes the encounter-discharge hook and ensures that
|
|
25
|
+
the user-provided requests are valid as per the requirements described
|
|
26
|
+
in the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
|
|
27
|
+
and the [CDS Hooks specification section on encounter-discharge context](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/).
|
|
28
|
+
It also ensures that the contents of the server's response are valid as per the requirements described in
|
|
29
|
+
the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
|
|
30
|
+
and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response).
|
|
31
|
+
|
|
32
|
+
This group includes tests to validate the following CRD response types:
|
|
33
|
+
- [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional
|
|
34
|
+
- [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\
|
|
35
|
+
- optional
|
|
36
|
+
- [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional
|
|
37
|
+
- [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional
|
|
38
|
+
- [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) -
|
|
39
|
+
optional
|
|
40
|
+
- [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) -
|
|
41
|
+
optional
|
|
42
|
+
)
|
|
43
|
+
# verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@196'
|
|
44
|
+
|
|
45
|
+
config options: { hook_name: ENCOUNTER_DISCHARGE_TAG }
|
|
46
|
+
run_as_group
|
|
47
|
+
|
|
48
|
+
group do
|
|
49
|
+
title 'Interaction'
|
|
50
|
+
|
|
51
|
+
test from: :crd_v221_server_invoke_hook_test,
|
|
52
|
+
config: {
|
|
53
|
+
inputs: {
|
|
54
|
+
service_ids: {
|
|
55
|
+
name: :encounter_discharge_service_ids,
|
|
56
|
+
title: 'Service id for the service that implements the `encounter-discharge` hook'
|
|
57
|
+
},
|
|
58
|
+
service_request_bodies: {
|
|
59
|
+
name: :encounter_discharge_request_bodies,
|
|
60
|
+
title: 'Request body or bodies for invoking the `encounter-discharge` hook'
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
group do
|
|
67
|
+
title 'Requests'
|
|
68
|
+
simulation_verification
|
|
69
|
+
|
|
70
|
+
test from: :crd_v221_service_request_required_fields_validation,
|
|
71
|
+
config: {
|
|
72
|
+
outputs: {
|
|
73
|
+
contexts: {
|
|
74
|
+
name: :encounter_discharge_contexts
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
test from: :crd_v221_service_request_context_validation,
|
|
79
|
+
config: {
|
|
80
|
+
inputs: {
|
|
81
|
+
contexts: {
|
|
82
|
+
name: :encounter_discharge_contexts
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
test from: :crd_v221_service_request_optional_fields_validation
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
group do
|
|
90
|
+
title 'Responses'
|
|
91
|
+
|
|
92
|
+
test from: :crd_v221_service_response_validation
|
|
93
|
+
test from: :crd_v221_external_reference_card_validation
|
|
94
|
+
test from: :crd_v221_launch_smart_app_card_validation
|
|
95
|
+
test from: :crd_v221_valid_instructions_card_received
|
|
96
|
+
test from: :crd_v221_coverage_info_system_action_validation
|
|
97
|
+
test from: :crd_v221_coverage_information_card_absence
|
|
98
|
+
test from: :crd_v221_request_form_completion_response_validation
|
|
99
|
+
test from: :crd_v221_create_or_update_coverage_info_response_validation
|
|
100
|
+
test from: :crd_v221_coverage_info_configuration
|
|
101
|
+
test from: :crd_v221_unknown_configuration
|
|
102
|
+
test from: :crd_v221_unknown_context
|
|
103
|
+
test from: :crd_v221_unknown_cds_hooks_elements
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|