davinci_crd_test_kit 0.12.2 → 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 +59 -2
- 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 +308 -101
- data/lib/davinci_crd_test_kit/client_fhir_api_group.rb +0 -785
- data/lib/davinci_crd_test_kit/client_hooks_group.rb +0 -75
- 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 -41
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -39
- 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 -41
- data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -60
- 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 -44
- 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 -185
- 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
data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
require_relative '../client_urls'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V201
|
|
5
|
+
class AppointmentBookReceiveRequestTest < Inferno::Test
|
|
6
|
+
include ClientURLs
|
|
7
|
+
|
|
8
|
+
id :crd_v201_appointment_book_request
|
|
9
|
+
title 'Request received for appointment-book hook'
|
|
10
|
+
description %(
|
|
11
|
+
This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
|
|
12
|
+
hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
|
|
13
|
+
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)
|
|
14
|
+
system action for these hooks, even if the response indicates that further information is needed or that the
|
|
15
|
+
level of detail provided is insufficient to determine coverage.
|
|
16
|
+
|
|
17
|
+
For more details on how Inferno's simulated CDS Service behave during hook invocation see the
|
|
18
|
+
[simulated CRD server(https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
|
|
19
|
+
documentation.
|
|
20
|
+
)
|
|
21
|
+
config options: { accepts_multiple_requests: true }
|
|
22
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171',
|
|
23
|
+
'hl7.fhir.us.davinci-crd_2.0.1@183', 'hl7.fhir.us.davinci-crd_2.0.1@243',
|
|
24
|
+
'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
|
|
25
|
+
'cds-hooks_2.0@15'
|
|
26
|
+
|
|
27
|
+
input :cds_jwt_iss,
|
|
28
|
+
title: 'CRD JWT Issuer',
|
|
29
|
+
description: %(
|
|
30
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
31
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
32
|
+
change this value.
|
|
33
|
+
),
|
|
34
|
+
locked: true
|
|
35
|
+
input :appointment_book_response_approach,
|
|
36
|
+
title: 'Response generation approach for appointment-book',
|
|
37
|
+
description: %(
|
|
38
|
+
Determines how Inferno will generate response for appointment-book
|
|
39
|
+
hook invocations.
|
|
40
|
+
),
|
|
41
|
+
type: 'radio',
|
|
42
|
+
default: 'mocked',
|
|
43
|
+
options: {
|
|
44
|
+
list_options: [
|
|
45
|
+
{
|
|
46
|
+
label: 'Create simple mocks based on selected response types',
|
|
47
|
+
value: 'mocked'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
label: 'Generate responses based on a tester-provided template',
|
|
51
|
+
value: 'custom'
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
input :appointment_book_selected_response_types,
|
|
56
|
+
title: 'Response types to return from appointment-book hook requests',
|
|
57
|
+
description: %(
|
|
58
|
+
Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
|
|
59
|
+
when responding to hook invocations. If no types are selected, Inferno will mock and return
|
|
60
|
+
a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)
|
|
61
|
+
response for this primary hook.
|
|
62
|
+
),
|
|
63
|
+
type: 'checkbox',
|
|
64
|
+
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
65
|
+
optional: true,
|
|
66
|
+
options: {
|
|
67
|
+
list_options: [
|
|
68
|
+
{
|
|
69
|
+
label: 'External Reference',
|
|
70
|
+
value: 'external_reference'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: 'Instructions',
|
|
74
|
+
value: 'instructions'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: 'Coverage Information',
|
|
78
|
+
value: 'coverage_information'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
label: 'Request Form Completion',
|
|
82
|
+
value: 'request_form_completion'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
label: 'Create/Update Coverage Information',
|
|
86
|
+
value: 'create_update_coverage_info'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
label: 'Launch SMART Application',
|
|
90
|
+
value: 'launch_smart_app'
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
enable_when: { input_name: 'appointment_book_response_approach', value: 'mocked' }
|
|
95
|
+
input :appointment_book_custom_response_template,
|
|
96
|
+
title: 'Custom response template for appointment-book hook requests',
|
|
97
|
+
description: %(
|
|
98
|
+
Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
|
|
99
|
+
in JSON form for Inferno to use when responding to hook invocations.
|
|
100
|
+
),
|
|
101
|
+
type: 'textarea',
|
|
102
|
+
optional: true,
|
|
103
|
+
enable_when: { input_name: 'appointment_book_response_approach', value: 'custom' }
|
|
104
|
+
output :continuation_url
|
|
105
|
+
|
|
106
|
+
run do
|
|
107
|
+
identifier = cds_jwt_iss
|
|
108
|
+
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
109
|
+
output(continuation_url:)
|
|
110
|
+
|
|
111
|
+
wait(
|
|
112
|
+
identifier:,
|
|
113
|
+
message: %(
|
|
114
|
+
**Appointment Book CDS Service Test**:
|
|
115
|
+
|
|
116
|
+
Invoke the appointment-book hook and send requests to:
|
|
117
|
+
|
|
118
|
+
`#{appointment_book_url}`
|
|
119
|
+
|
|
120
|
+
Inferno will process the requests and return CDS cards if successful.
|
|
121
|
+
|
|
122
|
+
[Click here](#{continuation_url}) when you have finished
|
|
123
|
+
submitting requests.
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require_relative '../client_urls'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V201
|
|
5
|
+
class EncounterDischargeReceiveRequestTest < Inferno::Test
|
|
6
|
+
include ClientURLs
|
|
7
|
+
|
|
8
|
+
id :crd_v201_encounter_discharge_request
|
|
9
|
+
title 'Request received for encounter-discharge hook'
|
|
10
|
+
description %(
|
|
11
|
+
This test waits for multiple incoming [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
|
|
12
|
+
hook requests and responds to the client with the response types selected as an input.
|
|
13
|
+
|
|
14
|
+
For more details on how Inferno's simulated CDS Service behave during hook invocation see the
|
|
15
|
+
[simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
|
|
16
|
+
documentation.
|
|
17
|
+
)
|
|
18
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@197', '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
|
+
'cds-hooks_2.0@15'
|
|
21
|
+
|
|
22
|
+
config options: { accepts_multiple_requests: true }
|
|
23
|
+
|
|
24
|
+
input :cds_jwt_iss,
|
|
25
|
+
title: 'CRD JWT Issuer',
|
|
26
|
+
description: %(
|
|
27
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
28
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
29
|
+
change this value.
|
|
30
|
+
),
|
|
31
|
+
locked: true
|
|
32
|
+
input :encounter_discharge_response_approach,
|
|
33
|
+
title: 'Response generation approach for encounter-discharge',
|
|
34
|
+
description: %(
|
|
35
|
+
Determines how Inferno will generate response for encounter-discharge
|
|
36
|
+
hook invocations.
|
|
37
|
+
),
|
|
38
|
+
type: 'radio',
|
|
39
|
+
default: 'mocked',
|
|
40
|
+
options: {
|
|
41
|
+
list_options: [
|
|
42
|
+
{
|
|
43
|
+
label: 'Create simple mocks based on selected response types',
|
|
44
|
+
value: 'mocked'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: 'Generate responses based on a tester-provided template',
|
|
48
|
+
value: 'custom'
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
input :encounter_discharge_selected_response_types,
|
|
53
|
+
title: 'Response types to return from encounter-discharge hook requests',
|
|
54
|
+
description: %(
|
|
55
|
+
Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
|
|
56
|
+
when responding to hook invocations. If no types are selected, Inferno will mock and return
|
|
57
|
+
an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
|
|
58
|
+
response for this secondary hook.
|
|
59
|
+
),
|
|
60
|
+
type: 'checkbox',
|
|
61
|
+
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
62
|
+
optional: true,
|
|
63
|
+
options: {
|
|
64
|
+
list_options: [
|
|
65
|
+
{
|
|
66
|
+
label: 'External Reference',
|
|
67
|
+
value: 'external_reference'
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
label: 'Instructions',
|
|
71
|
+
value: 'instructions'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: 'Coverage Information',
|
|
75
|
+
value: 'coverage_information'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: 'Request Form Completion',
|
|
79
|
+
value: 'request_form_completion'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: 'Create/Update Coverage Information',
|
|
83
|
+
value: 'create_update_coverage_info'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: 'Launch SMART Application',
|
|
87
|
+
value: 'launch_smart_app'
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
enable_when: { input_name: 'encounter_discharge_response_approach', value: 'mocked' }
|
|
92
|
+
input :encounter_discharge_custom_response_template,
|
|
93
|
+
title: 'Custom response template for encounter-discharge hook requests',
|
|
94
|
+
description: %(
|
|
95
|
+
Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
|
|
96
|
+
in JSON form for Inferno to use when responding to hook invocations.
|
|
97
|
+
),
|
|
98
|
+
type: 'textarea',
|
|
99
|
+
optional: true,
|
|
100
|
+
enable_when: { input_name: 'encounter_discharge_response_approach', value: 'custom' }
|
|
101
|
+
output :continuation_url
|
|
102
|
+
|
|
103
|
+
run do
|
|
104
|
+
identifier = cds_jwt_iss
|
|
105
|
+
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
106
|
+
output(continuation_url:)
|
|
107
|
+
|
|
108
|
+
wait(
|
|
109
|
+
identifier:,
|
|
110
|
+
message: %(
|
|
111
|
+
**Encounter Discharge CDS Service Test**:
|
|
112
|
+
|
|
113
|
+
Invoke the encounter-discharge hook and send requests to:
|
|
114
|
+
|
|
115
|
+
`#{encounter_discharge_url}`
|
|
116
|
+
|
|
117
|
+
Inferno will process the requests and return CDS cards if successful.
|
|
118
|
+
|
|
119
|
+
[Click here](#{continuation_url}) when you have finished submitting
|
|
120
|
+
requests.
|
|
121
|
+
)
|
|
122
|
+
)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require_relative '../client_urls'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V201
|
|
5
|
+
class EncounterStartReceiveRequestTest < Inferno::Test
|
|
6
|
+
include ClientURLs
|
|
7
|
+
|
|
8
|
+
id :crd_v201_encounter_start_request
|
|
9
|
+
title 'Request received for encounter-start hook'
|
|
10
|
+
description %(
|
|
11
|
+
This test waits for multiple incoming [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
|
|
12
|
+
hook requests and responds to the client with the response types selected as an input.
|
|
13
|
+
|
|
14
|
+
For more details on how Inferno's simulated CDS Service behave during hook invocation see the
|
|
15
|
+
[simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
|
|
16
|
+
documentation.
|
|
17
|
+
)
|
|
18
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@186', '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
|
+
'cds-hooks_2.0@15'
|
|
21
|
+
|
|
22
|
+
config options: { accepts_multiple_requests: true }
|
|
23
|
+
|
|
24
|
+
input :cds_jwt_iss,
|
|
25
|
+
title: 'CRD JWT Issuer',
|
|
26
|
+
description: %(
|
|
27
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
28
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
29
|
+
change this value.
|
|
30
|
+
),
|
|
31
|
+
locked: true
|
|
32
|
+
input :encounter_start_response_approach,
|
|
33
|
+
title: 'Response generation approach for encounter-start',
|
|
34
|
+
description: %(
|
|
35
|
+
Determines how Inferno will generate response for encounter-start
|
|
36
|
+
hook invocations.
|
|
37
|
+
),
|
|
38
|
+
type: 'radio',
|
|
39
|
+
default: 'mocked',
|
|
40
|
+
options: {
|
|
41
|
+
list_options: [
|
|
42
|
+
{
|
|
43
|
+
label: 'Create simple mocks based on selected response types',
|
|
44
|
+
value: 'mocked'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: 'Generate responses based on a tester-provided template',
|
|
48
|
+
value: 'custom'
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
input :encounter_start_selected_response_types,
|
|
53
|
+
title: 'Response types to return from encounter-start hook requests',
|
|
54
|
+
description: %(
|
|
55
|
+
Select the cards/action response types that the Inferno hook request endpoints will return. The default
|
|
56
|
+
response type that will be returned for this hook is the `Instructions` card type.
|
|
57
|
+
),
|
|
58
|
+
type: 'checkbox',
|
|
59
|
+
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
60
|
+
optional: true,
|
|
61
|
+
options: {
|
|
62
|
+
list_options: [
|
|
63
|
+
{
|
|
64
|
+
label: 'External Reference',
|
|
65
|
+
value: 'external_reference'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
label: 'Instructions',
|
|
69
|
+
value: 'instructions'
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: 'Coverage Information',
|
|
73
|
+
value: 'coverage_information'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: 'Request Form Completion',
|
|
77
|
+
value: 'request_form_completion'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: 'Create/Update Coverage Information',
|
|
81
|
+
value: 'create_update_coverage_info'
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
label: 'Launch SMART Application',
|
|
85
|
+
value: 'launch_smart_app'
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
enable_when: { input_name: 'encounter_start_response_approach', value: 'mocked' }
|
|
90
|
+
input :encounter_start_custom_response_template,
|
|
91
|
+
title: 'Custom response template for encounter-start hook requests',
|
|
92
|
+
description: %(
|
|
93
|
+
Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
|
|
94
|
+
when responding to hook invocations. If no types are selected, Inferno will mock and return
|
|
95
|
+
an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
|
|
96
|
+
response for this secondary hook.
|
|
97
|
+
),
|
|
98
|
+
type: 'textarea',
|
|
99
|
+
optional: true,
|
|
100
|
+
enable_when: { input_name: 'encounter_start_response_approach', value: 'custom' }
|
|
101
|
+
output :continuation_url
|
|
102
|
+
|
|
103
|
+
run do
|
|
104
|
+
identifier = cds_jwt_iss
|
|
105
|
+
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
106
|
+
output(continuation_url:)
|
|
107
|
+
|
|
108
|
+
wait(
|
|
109
|
+
identifier:,
|
|
110
|
+
message: %(
|
|
111
|
+
**Encounter Start CDS Service Test**:
|
|
112
|
+
|
|
113
|
+
Invoke the encounter-start hook and send requests to:
|
|
114
|
+
|
|
115
|
+
`#{encounter_start_url}`
|
|
116
|
+
|
|
117
|
+
Inferno will process the requests and return CDS cards if successful.
|
|
118
|
+
|
|
119
|
+
[Click here](#{continuation_url}) when you have finished submitting
|
|
120
|
+
requests.
|
|
121
|
+
)
|
|
122
|
+
)
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
require_relative '../client_urls'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V201
|
|
5
|
+
class OrderDispatchReceiveRequestTest < Inferno::Test
|
|
6
|
+
include ClientURLs
|
|
7
|
+
|
|
8
|
+
id :crd_v201_order_dispatch_request
|
|
9
|
+
title 'Request received for order-dispatch hook'
|
|
10
|
+
description %(
|
|
11
|
+
This test waits for multiple incoming [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
|
|
12
|
+
hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
|
|
13
|
+
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)
|
|
14
|
+
system action for these hooks, even if the response indicates that further information is needed or that the
|
|
15
|
+
level of detail provided is insufficient to determine coverage.
|
|
16
|
+
|
|
17
|
+
For more details on how Inferno's simulated CDS Service behave during hook invocation see the
|
|
18
|
+
[simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
|
|
19
|
+
documentation.
|
|
20
|
+
)
|
|
21
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@205',
|
|
22
|
+
'hl7.fhir.us.davinci-crd_2.0.1@207', 'hl7.fhir.us.davinci-crd_2.0.1@243',
|
|
23
|
+
'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
|
|
24
|
+
'cds-hooks_2.0@15'
|
|
25
|
+
|
|
26
|
+
config options: { accepts_multiple_requests: true }
|
|
27
|
+
|
|
28
|
+
input :cds_jwt_iss,
|
|
29
|
+
title: 'CRD JWT Issuer',
|
|
30
|
+
description: %(
|
|
31
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
32
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
33
|
+
change this value.
|
|
34
|
+
),
|
|
35
|
+
locked: true
|
|
36
|
+
input :order_dispatch_response_approach,
|
|
37
|
+
title: 'Response generation approach for order-dispatch',
|
|
38
|
+
description: %(
|
|
39
|
+
Determines how Inferno will generate response for order-dispatch
|
|
40
|
+
hook invocations.
|
|
41
|
+
),
|
|
42
|
+
type: 'radio',
|
|
43
|
+
default: 'mocked',
|
|
44
|
+
options: {
|
|
45
|
+
list_options: [
|
|
46
|
+
{
|
|
47
|
+
label: 'Create simple mocks based on selected response types',
|
|
48
|
+
value: 'mocked'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: 'Generate responses based on a tester-provided template',
|
|
52
|
+
value: 'custom'
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
input :order_dispatch_selected_response_types,
|
|
57
|
+
title: 'Response types to return from order-dispatch hook requests',
|
|
58
|
+
description: %(
|
|
59
|
+
Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
|
|
60
|
+
when responding to hook invocations. If no types are selected, Inferno will mock and return
|
|
61
|
+
a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)
|
|
62
|
+
response for this primary hook.
|
|
63
|
+
),
|
|
64
|
+
type: 'checkbox',
|
|
65
|
+
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
66
|
+
optional: true,
|
|
67
|
+
options: {
|
|
68
|
+
list_options: [
|
|
69
|
+
{
|
|
70
|
+
label: 'External Reference',
|
|
71
|
+
value: 'external_reference'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: 'Instructions',
|
|
75
|
+
value: 'instructions'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: 'Coverage Information',
|
|
79
|
+
value: 'coverage_information'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: 'Request Form Completion',
|
|
83
|
+
value: 'request_form_completion'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: 'Create/Update Coverage Information',
|
|
87
|
+
value: 'create_update_coverage_info'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: 'Launch SMART Application',
|
|
91
|
+
value: 'launch_smart_app'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Propose Alternate Request',
|
|
95
|
+
value: 'propose_alternate_request'
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: 'Additional Orders as Companions/Prerequisites',
|
|
99
|
+
value: 'companions_prerequisites'
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
enable_when: { input_name: 'order_dispatch_response_approach', value: 'mocked' }
|
|
104
|
+
input :order_dispatch_custom_response_template,
|
|
105
|
+
title: 'Custom response template for order-dispatch hook requests',
|
|
106
|
+
description: %(
|
|
107
|
+
Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
|
|
108
|
+
in JSON form for Inferno to use when responding to hook invocations.
|
|
109
|
+
),
|
|
110
|
+
type: 'textarea',
|
|
111
|
+
optional: true,
|
|
112
|
+
enable_when: { input_name: 'order_dispatch_response_approach', value: 'custom' }
|
|
113
|
+
output :continuation_url
|
|
114
|
+
|
|
115
|
+
run do
|
|
116
|
+
identifier = cds_jwt_iss
|
|
117
|
+
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
118
|
+
output(continuation_url:)
|
|
119
|
+
|
|
120
|
+
wait(
|
|
121
|
+
identifier:,
|
|
122
|
+
message: %(
|
|
123
|
+
**Order Dispatch CDS Service Test**:
|
|
124
|
+
|
|
125
|
+
Invoke the order-dispatch hook and send requests to:
|
|
126
|
+
|
|
127
|
+
`#{order_dispatch_url}`
|
|
128
|
+
|
|
129
|
+
Inferno will process the requests and return CDS cards if successful.
|
|
130
|
+
|
|
131
|
+
[Click here](#{continuation_url}) when you have finished submitting
|
|
132
|
+
requests.
|
|
133
|
+
)
|
|
134
|
+
)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require_relative '../client_urls'
|
|
2
|
+
|
|
3
|
+
module DaVinciCRDTestKit
|
|
4
|
+
module V201
|
|
5
|
+
class OrderSelectReceiveRequestTest < Inferno::Test
|
|
6
|
+
include ClientURLs
|
|
7
|
+
|
|
8
|
+
id :crd_v201_order_select_request
|
|
9
|
+
title 'Request received for order-select hook'
|
|
10
|
+
description %(
|
|
11
|
+
This test waits for multiple incoming [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
|
|
12
|
+
hook requests and responds to the client with the response types selected as an input.
|
|
13
|
+
|
|
14
|
+
For more details on how Inferno's simulated CDS Service behave during hook invocation see the
|
|
15
|
+
[simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
|
|
16
|
+
documentation.
|
|
17
|
+
)
|
|
18
|
+
verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@209', '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
|
+
'cds-hooks_2.0@15'
|
|
21
|
+
|
|
22
|
+
config options: { accepts_multiple_requests: true }
|
|
23
|
+
|
|
24
|
+
input :cds_jwt_iss,
|
|
25
|
+
title: 'CRD JWT Issuer',
|
|
26
|
+
description: %(
|
|
27
|
+
Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
|
|
28
|
+
header of all requests. Run or re-run the **Client Registration** group to set or
|
|
29
|
+
change this value.
|
|
30
|
+
),
|
|
31
|
+
locked: true
|
|
32
|
+
input :order_select_response_approach,
|
|
33
|
+
title: 'Response generation approach for order-select',
|
|
34
|
+
description: %(
|
|
35
|
+
Determines how Inferno will generate response for order-select
|
|
36
|
+
hook invocations.
|
|
37
|
+
),
|
|
38
|
+
type: 'radio',
|
|
39
|
+
default: 'mocked',
|
|
40
|
+
options: {
|
|
41
|
+
list_options: [
|
|
42
|
+
{
|
|
43
|
+
label: 'Create simple mocks based on selected response types',
|
|
44
|
+
value: 'mocked'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: 'Generate responses based on a tester-provided template',
|
|
48
|
+
value: 'custom'
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
input :order_select_selected_response_types,
|
|
53
|
+
title: 'Response types to return from order-select hook requests',
|
|
54
|
+
description: %(
|
|
55
|
+
Select the cards/action response types that the Inferno hook request endpoints will return. The default
|
|
56
|
+
response type that will be returned for this hook is the `Instructions` card type.
|
|
57
|
+
),
|
|
58
|
+
type: 'checkbox',
|
|
59
|
+
default: ['coverage_information', 'external_reference', 'instructions'],
|
|
60
|
+
optional: true,
|
|
61
|
+
options: {
|
|
62
|
+
list_options: [
|
|
63
|
+
{
|
|
64
|
+
label: 'External Reference',
|
|
65
|
+
value: 'external_reference'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
label: 'Instructions',
|
|
69
|
+
value: 'instructions'
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: 'Coverage Information',
|
|
73
|
+
value: 'coverage_information'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: 'Request Form Completion',
|
|
77
|
+
value: 'request_form_completion'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: 'Create/Update Coverage Information',
|
|
81
|
+
value: 'create_update_coverage_info'
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
label: 'Launch SMART Application',
|
|
85
|
+
value: 'launch_smart_app'
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
label: 'Propose Alternate Request',
|
|
89
|
+
value: 'propose_alternate_request'
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: 'Additional Orders as Companions/Prerequisites',
|
|
93
|
+
value: 'companions_prerequisites'
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
enable_when: { input_name: 'order_select_response_approach', value: 'mocked' }
|
|
98
|
+
input :order_select_custom_response_template,
|
|
99
|
+
title: 'Custom response template for order-select hook requests',
|
|
100
|
+
description: %(
|
|
101
|
+
Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
|
|
102
|
+
when responding to hook invocations. If no types are selected, Inferno will mock and return
|
|
103
|
+
an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
|
|
104
|
+
response for this secondary hook.
|
|
105
|
+
),
|
|
106
|
+
type: 'textarea',
|
|
107
|
+
optional: true,
|
|
108
|
+
enable_when: { input_name: 'order_select_response_approach', value: 'custom' }
|
|
109
|
+
output :continuation_url
|
|
110
|
+
|
|
111
|
+
run do
|
|
112
|
+
identifier = cds_jwt_iss
|
|
113
|
+
continuation_url = "#{resume_pass_url}?token=#{identifier}"
|
|
114
|
+
output(continuation_url:)
|
|
115
|
+
|
|
116
|
+
wait(
|
|
117
|
+
identifier:,
|
|
118
|
+
message: %(
|
|
119
|
+
**Order Select CDS Service Test**:
|
|
120
|
+
|
|
121
|
+
Invoke the order-select hook and send requests to:
|
|
122
|
+
|
|
123
|
+
`#{order_select_url}`
|
|
124
|
+
|
|
125
|
+
Inferno will process the requests and return CDS cards if successful.
|
|
126
|
+
|
|
127
|
+
[Click here](#{continuation_url}) when you have finished submitting
|
|
128
|
+
requests.
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|