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
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
require_relative 'client_tests/client_appointment_book_group'
|
|
2
|
-
require_relative 'client_tests/client_encounter_discharge_group'
|
|
3
|
-
require_relative 'client_tests/client_encounter_start_group'
|
|
4
|
-
require_relative 'client_tests/client_order_dispatch_group'
|
|
5
|
-
require_relative 'client_tests/client_order_select_group'
|
|
6
|
-
require_relative 'client_tests/client_order_sign_group'
|
|
7
|
-
|
|
8
|
-
require_relative 'jwt_helper'
|
|
9
|
-
require_relative 'urls'
|
|
10
|
-
|
|
11
|
-
module DaVinciCRDTestKit
|
|
12
|
-
class ClientHooksGroup < Inferno::TestGroup
|
|
13
|
-
title 'Hooks'
|
|
14
|
-
description <<~DESCRIPTION
|
|
15
|
-
This Group contains tests which verify that valid hook requests can be made for each of the following
|
|
16
|
-
[six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html):
|
|
17
|
-
* [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
18
|
-
* [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
|
|
19
|
-
* [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
|
|
20
|
-
* [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
|
|
21
|
-
* [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
|
|
22
|
-
* [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
|
|
23
|
-
|
|
24
|
-
Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which
|
|
25
|
-
verify the incoming hook requests conform to the specific hook requirements specified the
|
|
26
|
-
CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/).
|
|
27
|
-
|
|
28
|
-
Each hook group tests the following:
|
|
29
|
-
* If the CRD Client can invoke the specific hook service request
|
|
30
|
-
* 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)
|
|
31
|
-
* If the incoming hook request contains the required fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
|
|
32
|
-
* OPTIONAL: If the incoming hook request contains the optional fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
|
|
33
|
-
* If the hook request's `context` field is valid according to the specific `context` requirements defined for
|
|
34
|
-
each hook type
|
|
35
|
-
* OPTIONAL: If the incoming hook contains the optional `prefetch` field with valid resources
|
|
36
|
-
* If the client can properly display the cards returned as a result of the hook request
|
|
37
|
-
|
|
38
|
-
Note: In order to successfully return a `Coverage Information` system action, a Coverage resource must either be
|
|
39
|
-
provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for
|
|
40
|
-
the patient provided in the service request.
|
|
41
|
-
DESCRIPTION
|
|
42
|
-
id :crd_client_hooks
|
|
43
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149'
|
|
44
|
-
|
|
45
|
-
input :cds_jwt_iss,
|
|
46
|
-
title: 'CRD JWT Issuer',
|
|
47
|
-
description: %(
|
|
48
|
-
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
49
|
-
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
50
|
-
change this value.
|
|
51
|
-
),
|
|
52
|
-
locked: true
|
|
53
|
-
|
|
54
|
-
input_order :cds_jwt_iss, :cds_jwk_set
|
|
55
|
-
|
|
56
|
-
group from: :crd_client_appointment_book,
|
|
57
|
-
optional: true
|
|
58
|
-
|
|
59
|
-
group from: :crd_client_encounter_start,
|
|
60
|
-
optional: true
|
|
61
|
-
|
|
62
|
-
group from: :crd_client_encounter_discharge,
|
|
63
|
-
optional: true
|
|
64
|
-
|
|
65
|
-
group from: :crd_client_order_select,
|
|
66
|
-
optional: true
|
|
67
|
-
|
|
68
|
-
group from: :crd_client_order_dispatch,
|
|
69
|
-
optional: true
|
|
70
|
-
|
|
71
|
-
group from: :crd_client_order_sign,
|
|
72
|
-
optional: true
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
require_relative '../urls'
|
|
2
|
-
|
|
3
|
-
module DaVinciCRDTestKit
|
|
4
|
-
class AppointmentBookReceiveRequestTest < Inferno::Test
|
|
5
|
-
include URLs
|
|
6
|
-
|
|
7
|
-
id :crd_appointment_book_request
|
|
8
|
-
title 'Request received for appointment-book hook'
|
|
9
|
-
description %(
|
|
10
|
-
This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
11
|
-
hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
|
|
12
|
-
hook, meaning that CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html)
|
|
13
|
-
system action for these hooks, even if the response indicates that further information is needed or that the
|
|
14
|
-
level of detail provided is insufficient to determine coverage.
|
|
15
|
-
)
|
|
16
|
-
config options: { accepts_multiple_requests: true }
|
|
17
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171',
|
|
18
|
-
'hl7.fhir.us.davinci-crd_2.0.1@183', 'hl7.fhir.us.davinci-crd_2.0.1@243',
|
|
19
|
-
'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245'
|
|
20
|
-
|
|
21
|
-
input :cds_jwt_iss,
|
|
22
|
-
title: 'CRD JWT Issuer',
|
|
23
|
-
description: %(
|
|
24
|
-
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
25
|
-
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
26
|
-
change this value.
|
|
27
|
-
),
|
|
28
|
-
locked: true
|
|
29
|
-
input :appointment_book_selected_response_types,
|
|
30
|
-
title: 'Response types to return from appointment-book hook requests',
|
|
31
|
-
description: %(
|
|
32
|
-
Select the cards/action response types that the Inferno hook request endpoints will return. The default
|
|
33
|
-
response type that will be returned for this hook is the `Coverage Information` card type.
|
|
34
|
-
),
|
|
35
|
-
type: 'checkbox',
|
|
36
|
-
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
37
|
-
optional: true,
|
|
38
|
-
options: {
|
|
39
|
-
list_options: [
|
|
40
|
-
{
|
|
41
|
-
label: 'External Reference',
|
|
42
|
-
value: 'external_reference'
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
label: 'Instructions',
|
|
46
|
-
value: 'instructions'
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
label: 'Coverage Information',
|
|
50
|
-
value: 'coverage_information'
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
label: 'Request Form Completion',
|
|
54
|
-
value: 'request_form_completion'
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
label: 'Create/Update Coverage Information',
|
|
58
|
-
value: 'create_update_coverage_info'
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
label: 'Launch SMART Application',
|
|
62
|
-
value: 'launch_smart_app'
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
}
|
|
66
|
-
input :appointment_book_custom_response,
|
|
67
|
-
title: 'Custom response for appointment-book hook requests',
|
|
68
|
-
description: %(
|
|
69
|
-
A JSON string may be provided here to replace the normal response
|
|
70
|
-
from the hook request endpoint
|
|
71
|
-
),
|
|
72
|
-
type: 'textarea',
|
|
73
|
-
optional: true
|
|
74
|
-
|
|
75
|
-
run do
|
|
76
|
-
wait(
|
|
77
|
-
identifier: "appointment-book #{cds_jwt_iss}",
|
|
78
|
-
message: %(
|
|
79
|
-
**Appointment Book CDS Service Test**:
|
|
80
|
-
|
|
81
|
-
Invoke the appointment-book hook and send requests to:
|
|
82
|
-
|
|
83
|
-
`#{appointment_book_url}`
|
|
84
|
-
|
|
85
|
-
Inferno will process the requests and return CDS cards if successful.
|
|
86
|
-
|
|
87
|
-
[Click here](#{resume_pass_url}?token=appointment-book%20#{cds_jwt_iss}) when you have finished
|
|
88
|
-
submitting requests.
|
|
89
|
-
)
|
|
90
|
-
)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
require_relative 'appointment_book_receive_request_test'
|
|
2
|
-
require_relative 'client_display_cards_attest'
|
|
3
|
-
require_relative 'decode_auth_token_test'
|
|
4
|
-
require_relative 'hook_request_optional_fields_test'
|
|
5
|
-
require_relative 'hook_request_required_fields_test'
|
|
6
|
-
require_relative 'hook_request_valid_context_test'
|
|
7
|
-
require_relative 'hook_request_valid_prefetch_test'
|
|
8
|
-
require_relative 'retrieve_jwks_test'
|
|
9
|
-
require_relative 'submitted_response_validation'
|
|
10
|
-
require_relative 'token_header_test'
|
|
11
|
-
require_relative 'token_payload_test'
|
|
12
|
-
|
|
13
|
-
module DaVinciCRDTestKit
|
|
14
|
-
class ClientAppointmentBookGroup < Inferno::TestGroup
|
|
15
|
-
title 'appointment-book'
|
|
16
|
-
id :crd_client_appointment_book
|
|
17
|
-
description <<~DESCRIPTION
|
|
18
|
-
The appointment-book hook is invoked when the user is scheduling one or more future encounters/visits for the
|
|
19
|
-
patient. These tests are based on the following criteria:
|
|
20
|
-
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book),
|
|
21
|
-
which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID
|
|
22
|
-
fields
|
|
23
|
-
* Specific [appointment-book `context` requirements](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/)
|
|
24
|
-
defined in the CDS Hooks specification
|
|
25
|
-
|
|
26
|
-
This version of the CRD implementation guide refers to version 1.0 of the hook.
|
|
27
|
-
DESCRIPTION
|
|
28
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@172'
|
|
29
|
-
|
|
30
|
-
run_as_group
|
|
31
|
-
|
|
32
|
-
input_order :cds_jwt_iss, :cds_jwk_set
|
|
33
|
-
|
|
34
|
-
config(
|
|
35
|
-
inputs: {
|
|
36
|
-
auth_token_headers_json: { name: :appointment_book_auth_token_headers_json },
|
|
37
|
-
auth_tokens: { name: :appointment_book_auth_tokens },
|
|
38
|
-
auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json },
|
|
39
|
-
client_access_token: { name: :appointment_book_client_access_token },
|
|
40
|
-
client_fhir_server: { name: :appointment_book_client_fhir_server },
|
|
41
|
-
crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json },
|
|
42
|
-
custom_response: { name: :appointment_book_custom_response },
|
|
43
|
-
selected_response_types: { name: :appointment_book_selected_response_types }
|
|
44
|
-
},
|
|
45
|
-
outputs: {
|
|
46
|
-
auth_token_headers_json: { name: :appointment_book_auth_token_headers_json },
|
|
47
|
-
auth_token_payloads_json: { name: :appointment_book_auth_token_payloads_json },
|
|
48
|
-
auth_tokens: { name: :appointment_book_auth_tokens },
|
|
49
|
-
auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json },
|
|
50
|
-
client_access_token: { name: :appointment_book_client_access_token },
|
|
51
|
-
client_fhir_server: { name: :appointment_book_client_fhir_server },
|
|
52
|
-
crd_jwks_json: { name: :appointment_book_crd_jwks_json },
|
|
53
|
-
crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }
|
|
54
|
-
},
|
|
55
|
-
options: {
|
|
56
|
-
hook_name: 'appointment-book',
|
|
57
|
-
hook_path: APPOINTMENT_BOOK_PATH
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
test from: :crd_submitted_response_validation
|
|
62
|
-
test from: :crd_appointment_book_request
|
|
63
|
-
test from: :crd_decode_auth_token
|
|
64
|
-
test from: :crd_retrieve_jwks
|
|
65
|
-
test from: :crd_token_header
|
|
66
|
-
test from: :crd_token_payload
|
|
67
|
-
test from: :crd_hook_request_required_fields
|
|
68
|
-
test from: :crd_hook_request_optional_fields
|
|
69
|
-
test from: :crd_hook_request_valid_context do
|
|
70
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@286'
|
|
71
|
-
end
|
|
72
|
-
test from: :crd_hook_request_valid_prefetch
|
|
73
|
-
test from: :crd_card_display_attest_test
|
|
74
|
-
end
|
|
75
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
require_relative '../urls'
|
|
2
|
-
|
|
3
|
-
module DaVinciCRDTestKit
|
|
4
|
-
class ClientCardDisplayAttest < Inferno::Test
|
|
5
|
-
include URLs
|
|
6
|
-
|
|
7
|
-
id :crd_card_display_attest_test
|
|
8
|
-
title 'Check that Cards returned are displayed to the user'
|
|
9
|
-
|
|
10
|
-
input :selected_response_types,
|
|
11
|
-
type: 'checkbox'
|
|
12
|
-
|
|
13
|
-
def format_selected_response_types
|
|
14
|
-
selected_response_types
|
|
15
|
-
.map do |response_type|
|
|
16
|
-
response_type_string =
|
|
17
|
-
response_type.split('_')
|
|
18
|
-
.map(&:capitalize)
|
|
19
|
-
.join(' ')
|
|
20
|
-
.prepend('- ')
|
|
21
|
-
.sub('Smart', 'SMART')
|
|
22
|
-
.sub('Create Update', 'Create/Update')
|
|
23
|
-
.sub('Companions Prerequisites', 'Companions/Prerequisites')
|
|
24
|
-
response_type_string
|
|
25
|
-
end
|
|
26
|
-
.join("\n")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
run do
|
|
30
|
-
identifier = SecureRandom.hex(32)
|
|
31
|
-
wait(
|
|
32
|
-
identifier:,
|
|
33
|
-
message: <<~MESSAGE
|
|
34
|
-
**Approval Workflow Test**:
|
|
35
|
-
|
|
36
|
-
I attest that the following CDS response types were returned and that the client system displays
|
|
37
|
-
each of the CDS Service Cards to the user:
|
|
38
|
-
|
|
39
|
-
#{format_selected_response_types}
|
|
40
|
-
|
|
41
|
-
[Click here](#{resume_pass_url}?token=#{identifier}) if the above statement is **true**.
|
|
42
|
-
|
|
43
|
-
[Click here](#{resume_fail_url}?token=#{identifier}) if the above statement is **false**.
|
|
44
|
-
MESSAGE
|
|
45
|
-
)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
require_relative 'encounter_discharge_receive_request_test'
|
|
2
|
-
require_relative 'client_display_cards_attest'
|
|
3
|
-
require_relative 'decode_auth_token_test'
|
|
4
|
-
require_relative 'hook_request_optional_fields_test'
|
|
5
|
-
require_relative 'hook_request_required_fields_test'
|
|
6
|
-
require_relative 'hook_request_valid_context_test'
|
|
7
|
-
require_relative 'hook_request_valid_prefetch_test'
|
|
8
|
-
require_relative 'retrieve_jwks_test'
|
|
9
|
-
require_relative 'submitted_response_validation'
|
|
10
|
-
require_relative 'token_header_test'
|
|
11
|
-
require_relative 'token_payload_test'
|
|
12
|
-
|
|
13
|
-
module DaVinciCRDTestKit
|
|
14
|
-
class ClientEncounterDischargeGroup < Inferno::TestGroup
|
|
15
|
-
title 'encounter-discharge'
|
|
16
|
-
id :crd_client_encounter_discharge
|
|
17
|
-
description <<~DESCRIPTION
|
|
18
|
-
The encounter-discharge hook is invoked when the user is performing the discharge process for an encounter where
|
|
19
|
-
the notion of 'discharge' is relevant - typically an inpatient encounter. These tests are based on the
|
|
20
|
-
following criteria:
|
|
21
|
-
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge),
|
|
22
|
-
which includes the profiles that are expected to be used for the resources resolved to by `context`
|
|
23
|
-
FHIR ID fields
|
|
24
|
-
* Specific [encounter-discharge `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)
|
|
25
|
-
defined in the CDS Hooks specification
|
|
26
|
-
|
|
27
|
-
This version of the CRD implementation guide refers to version 1.0 of the hook.
|
|
28
|
-
DESCRIPTION
|
|
29
|
-
|
|
30
|
-
run_as_group
|
|
31
|
-
|
|
32
|
-
input_order :cds_jwt_iss, :cds_jwk_set
|
|
33
|
-
|
|
34
|
-
config(
|
|
35
|
-
inputs: {
|
|
36
|
-
auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json },
|
|
37
|
-
auth_tokens: { name: :encounter_discharge_auth_tokens },
|
|
38
|
-
auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json },
|
|
39
|
-
client_access_token: { name: :encounter_discharge_client_access_token },
|
|
40
|
-
client_fhir_server: { name: :encounter_discharge_client_fhir_server },
|
|
41
|
-
crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json },
|
|
42
|
-
custom_response: { name: :encounter_discharge_custom_response },
|
|
43
|
-
selected_response_types: { name: :encounter_discharge_selected_response_types }
|
|
44
|
-
},
|
|
45
|
-
outputs: {
|
|
46
|
-
auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json },
|
|
47
|
-
auth_token_payloads_json: { name: :encounter_discharge_auth_token_payloads_json },
|
|
48
|
-
auth_tokens: { name: :encounter_discharge_auth_tokens },
|
|
49
|
-
auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json },
|
|
50
|
-
client_access_token: { name: :encounter_discharge_client_access_token },
|
|
51
|
-
client_fhir_server: { name: :encounter_discharge_client_fhir_server },
|
|
52
|
-
crd_jwks_json: { name: :encounter_discharge_crd_jwks_json },
|
|
53
|
-
crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }
|
|
54
|
-
},
|
|
55
|
-
options: {
|
|
56
|
-
hook_name: 'encounter-discharge',
|
|
57
|
-
hook_path: ENCOUNTER_DISCHARGE_PATH
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
test from: :crd_submitted_response_validation
|
|
62
|
-
test from: :crd_encounter_discharge_request
|
|
63
|
-
test from: :crd_decode_auth_token
|
|
64
|
-
test from: :crd_retrieve_jwks
|
|
65
|
-
test from: :crd_token_header
|
|
66
|
-
test from: :crd_token_payload
|
|
67
|
-
test from: :crd_hook_request_required_fields
|
|
68
|
-
test from: :crd_hook_request_optional_fields
|
|
69
|
-
test from: :crd_hook_request_valid_context
|
|
70
|
-
test from: :crd_hook_request_valid_prefetch
|
|
71
|
-
test from: :crd_card_display_attest_test
|
|
72
|
-
end
|
|
73
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
require_relative 'encounter_start_receive_request_test'
|
|
2
|
-
require_relative 'client_display_cards_attest'
|
|
3
|
-
require_relative 'decode_auth_token_test'
|
|
4
|
-
require_relative 'hook_request_optional_fields_test'
|
|
5
|
-
require_relative 'hook_request_required_fields_test'
|
|
6
|
-
require_relative 'hook_request_valid_context_test'
|
|
7
|
-
require_relative 'hook_request_valid_prefetch_test'
|
|
8
|
-
require_relative 'retrieve_jwks_test'
|
|
9
|
-
require_relative 'submitted_response_validation'
|
|
10
|
-
require_relative 'token_header_test'
|
|
11
|
-
require_relative 'token_payload_test'
|
|
12
|
-
|
|
13
|
-
module DaVinciCRDTestKit
|
|
14
|
-
class ClientEncounterStartGroup < Inferno::TestGroup
|
|
15
|
-
title 'encounter-start'
|
|
16
|
-
id :crd_client_encounter_start
|
|
17
|
-
description <<~DESCRIPTION
|
|
18
|
-
The encounter-start hook is invoked when the user is initiating a new encounter. These tests are based on the
|
|
19
|
-
following criteria:
|
|
20
|
-
* [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start),
|
|
21
|
-
which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID
|
|
22
|
-
fields
|
|
23
|
-
* Specific [encounter-start `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)
|
|
24
|
-
defined in the CDS Hooks specification
|
|
25
|
-
|
|
26
|
-
This version of the CRD implementation guide refers to version 1.0 of the hook.
|
|
27
|
-
DESCRIPTION
|
|
28
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@187'
|
|
29
|
-
|
|
30
|
-
run_as_group
|
|
31
|
-
|
|
32
|
-
input_order :cds_jwt_iss, :cds_jwk_set
|
|
33
|
-
|
|
34
|
-
config(
|
|
35
|
-
inputs: {
|
|
36
|
-
auth_token_headers_json: { name: :encounter_start_auth_token_headers_json },
|
|
37
|
-
auth_tokens: { name: :encounter_start_auth_tokens },
|
|
38
|
-
auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json },
|
|
39
|
-
client_access_token: { name: :encounter_start_client_access_token },
|
|
40
|
-
client_fhir_server: { name: :encounter_start_client_fhir_server },
|
|
41
|
-
crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json },
|
|
42
|
-
custom_response: { name: :encounter_start_custom_response },
|
|
43
|
-
selected_response_types: { name: :encounter_start_selected_response_types }
|
|
44
|
-
},
|
|
45
|
-
outputs: {
|
|
46
|
-
auth_token_headers_json: { name: :encounter_start_auth_token_headers_json },
|
|
47
|
-
auth_token_payloads_json: { name: :encounter_start_auth_token_payloads_json },
|
|
48
|
-
auth_tokens: { name: :encounter_start_auth_tokens },
|
|
49
|
-
auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json },
|
|
50
|
-
client_access_token: { name: :encounter_start_client_access_token },
|
|
51
|
-
client_fhir_server: { name: :encounter_start_client_fhir_server },
|
|
52
|
-
crd_jwks_json: { name: :encounter_start_crd_jwks_json },
|
|
53
|
-
crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }
|
|
54
|
-
},
|
|
55
|
-
options: {
|
|
56
|
-
hook_name: 'encounter-start',
|
|
57
|
-
hook_path: ENCOUNTER_START_PATH
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
test from: :crd_submitted_response_validation
|
|
62
|
-
test from: :crd_encounter_start_request
|
|
63
|
-
test from: :crd_decode_auth_token
|
|
64
|
-
test from: :crd_retrieve_jwks
|
|
65
|
-
test from: :crd_token_header
|
|
66
|
-
test from: :crd_token_payload
|
|
67
|
-
test from: :crd_hook_request_required_fields
|
|
68
|
-
test from: :crd_hook_request_optional_fields
|
|
69
|
-
test from: :crd_hook_request_valid_context
|
|
70
|
-
test from: :crd_hook_request_valid_prefetch
|
|
71
|
-
test from: :crd_card_display_attest_test
|
|
72
|
-
end
|
|
73
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
module DaVinciCRDTestKit
|
|
2
|
-
class ClientFHIRApiCreateTest < Inferno::Test
|
|
3
|
-
id :crd_client_fhir_api_create_test
|
|
4
|
-
title 'Create Interaction'
|
|
5
|
-
description %(
|
|
6
|
-
Verify that the CRD client supports the create interaction for the given resource. The capabilities required
|
|
7
|
-
by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1
|
|
8
|
-
)
|
|
9
|
-
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@74'
|
|
10
|
-
|
|
11
|
-
input :create_resources,
|
|
12
|
-
type: 'textarea',
|
|
13
|
-
description: 'Provide a list of resources to create. e.g., [json_resource_1, json_resource_2]',
|
|
14
|
-
optional: true
|
|
15
|
-
|
|
16
|
-
def resource_type
|
|
17
|
-
config.options[:resource_type]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
run do
|
|
21
|
-
skip_if create_resources.blank?, 'Provide a list of resources to create to run this test.'
|
|
22
|
-
assert_valid_json(create_resources)
|
|
23
|
-
create_resources_list = JSON.parse(create_resources)
|
|
24
|
-
skip_if(!create_resources_list.is_a?(Array), 'Resources to create not inputted in list format, skipping test.')
|
|
25
|
-
|
|
26
|
-
valid_create_resources =
|
|
27
|
-
create_resources_list
|
|
28
|
-
.compact_blank
|
|
29
|
-
.map { |resource| FHIR.from_contents(resource.to_json) }
|
|
30
|
-
.select { |resource| resource.resourceType == resource_type }
|
|
31
|
-
.select { |resource| resource_is_valid?(resource:) }
|
|
32
|
-
|
|
33
|
-
skip_if(valid_create_resources.blank?,
|
|
34
|
-
%(No valid #{resource_type} resources were provided to send in Create requests, skipping test.))
|
|
35
|
-
|
|
36
|
-
valid_create_resources.each do |create_resource|
|
|
37
|
-
fhir_create(create_resource)
|
|
38
|
-
assert_response_status(201)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module DaVinciCRDTestKit
|
|
2
|
-
class ClientFHIRApiReadTest < Inferno::Test
|
|
3
|
-
id :crd_client_fhir_api_read_test
|
|
4
|
-
title 'Read Interaction'
|
|
5
|
-
description %(
|
|
6
|
-
Verify that the CRD client supports the read interaction for the given resource. The capabilities required by
|
|
7
|
-
each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
input :resource_ids,
|
|
11
|
-
optional: true
|
|
12
|
-
|
|
13
|
-
def resource_type
|
|
14
|
-
config.options[:resource_type]
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def no_resources_skip_message
|
|
18
|
-
"No #{resource_type} resource ids were provided, skipping test. "
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def bad_resource_id_message(expected_id)
|
|
22
|
-
"Expected resource to have id: `#{expected_id}`, but found `#{resource.id}`"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
run do
|
|
26
|
-
skip_if resource_ids.blank?, no_resources_skip_message
|
|
27
|
-
|
|
28
|
-
resource_id_list = resource_ids.split(',').map(&:strip)
|
|
29
|
-
assert resource_id_list.present?, "No #{resource_type} id provided."
|
|
30
|
-
|
|
31
|
-
resource_id_list.each do |resource_id_to_read|
|
|
32
|
-
fhir_read resource_type, resource_id_to_read, tags: [resource_type, 'read']
|
|
33
|
-
|
|
34
|
-
assert_response_status(200)
|
|
35
|
-
assert_resource_type(resource_type)
|
|
36
|
-
assert resource.id.present? && resource.id == resource_id_to_read, bad_resource_id_message(resource_id_to_read)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|