davinci_pas_test_kit 0.15.1 → 0.16.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/g33_br_provider.json +13 -0
- data/config/presets/pas_client_example.json +2 -2
- data/config/presets/pas_client_v201_run_against_pas_server.json +2 -2
- data/config/presets/pas_client_v221_run_against_pas_server.json +3 -3
- data/config/presets/pas_ri.json +6 -6
- data/config/presets/pas_server_v201_run_against_pas_client.json.erb +6 -6
- data/config/presets/pas_server_v221_run_against_pas_client.json.erb +10 -10
- data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +28 -17
- data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +26 -16
- data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +45 -74
- data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +29 -19
- data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +75 -6
- data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +26 -9
- data/lib/davinci_pas_test_kit/client/abstract_subscription_update_delete_test.rb +91 -0
- data/lib/davinci_pas_test_kit/client/client_bundle_validation_helper.rb +245 -0
- data/lib/davinci_pas_test_kit/client/client_input_descriptions.rb +96 -1
- data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +128 -72
- data/lib/davinci_pas_test_kit/client/endpoints/endpoint_session_identification.rb +24 -0
- data/lib/davinci_pas_test_kit/client/endpoints/expired_token.rb +40 -0
- data/lib/davinci_pas_test_kit/client/endpoints/subscription_create_endpoint.rb +7 -12
- data/lib/davinci_pas_test_kit/client/endpoints/subscription_delete_endpoint.rb +13 -0
- data/lib/davinci_pas_test_kit/client/endpoints/subscription_read_endpoint.rb +13 -0
- data/lib/davinci_pas_test_kit/client/endpoints/subscription_status_endpoint.rb +15 -20
- data/lib/davinci_pas_test_kit/client/endpoints/subscription_update_endpoint.rb +13 -0
- data/lib/davinci_pas_test_kit/client/endpoints/token_endpoint.rb +16 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +1 -1
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +9 -31
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +1 -1
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +10 -32
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +8 -6
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +9 -31
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +13 -9
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +10 -32
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/jobs/send_pas_subscription_notification.rb +64 -3
- data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +4 -3
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +6 -4
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +8 -4
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +9 -4
- data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +5 -4
- data/lib/davinci_pas_test_kit/client/request_count_gating.rb +14 -0
- data/lib/davinci_pas_test_kit/client/response_generator.rb +50 -9
- data/lib/davinci_pas_test_kit/client/session_identification.rb +26 -7
- data/lib/davinci_pas_test_kit/client/subscription_notification_trigger.rb +80 -0
- data/lib/davinci_pas_test_kit/client/subscription_setup_requirement.rb +59 -0
- data/lib/davinci_pas_test_kit/client/user_input_response.rb +50 -10
- data/lib/davinci_pas_test_kit/client/v2.0.1/client_suite.rb +30 -15
- data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb +2 -2
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_approval_group.rb +8 -7
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_smart_group.rb +4 -4
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_udap_group.rb +4 -4
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_denial_group.rb +8 -7
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +38 -52
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_pended_group.rb +28 -22
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_registration_group.rb +2 -2
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_subscription_setup_group.rb +2 -2
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_workflows_group.rb +2 -2
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +15 -21
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +29 -29
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_pended_submit_test.rb +49 -40
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_request_bundle_validation_test.rb +15 -21
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_bundle_validation_test.rb +29 -29
- data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_provider_review_attestation_test.rb +45 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_security_attestation_test.rb +42 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_subscription_error_recovery_attestation_test.rb +42 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +64 -12
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +20 -10
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +11 -5
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +21 -12
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +19 -8
- data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +90 -40
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +12 -11
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_attestations_group.rb +32 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +4 -4
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +4 -4
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +24 -6
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +12 -10
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +13 -14
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +55 -59
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +8 -5
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +53 -41
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +9 -7
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +2 -2
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +9 -4
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_update_delete_group.rb +57 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +22 -2
- data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +2 -1
- data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_put_update_pas_conformance_test.rb +49 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_update_delete_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +5 -6
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +82 -56
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +17 -20
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +59 -27
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +0 -3
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_send_notification_test.rb +138 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +32 -85
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +16 -21
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +27 -27
- data/lib/davinci_pas_test_kit/cross_suite/fhirpath_utils.rb +13 -3
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/beneficiary/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_inquiry/metadata.yml +15 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_update/metadata.yml +17 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claiminquiryresponse/metadata.yml +15 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claimresponse/metadata.yml +15 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/communication_request/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/coverage/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/device_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/encounter/metadata.yml +3 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/insurer/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/medication_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/metadata.yml +143 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/nutrition_order/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_request_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_response_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner_role/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/requestor/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/service_request/metadata.yml +3 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/subscriber/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/task/metadata.yml +1 -4
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/beneficiary/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_inquiry/metadata.yml +23 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_update/metadata.yml +31 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claiminquiryresponse/metadata.yml +42 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claimresponse/metadata.yml +42 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/communication_request/metadata.yml +4 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/coverage/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/device_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/encounter/metadata.yml +3 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/insurer/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/medication_request/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +265 -1
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/nutrition_order/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_request_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_response_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_request_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_response_bundle/metadata.yml +2 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner_role/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/requestor/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/service_request/metadata.yml +3 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/subscriber/metadata.yml +1 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +4 -4
- data/lib/davinci_pas_test_kit/cross_suite/pas_bundle_validation.rb +570 -312
- data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +13 -0
- data/lib/davinci_pas_test_kit/cross_suite/pas_datatype_constraints.rb +166 -0
- data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +8 -4
- data/lib/davinci_pas_test_kit/cross_suite/referenced_resource_presence_validation.rb +141 -0
- data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +39 -21
- data/lib/davinci_pas_test_kit/cross_suite/tags.rb +11 -6
- data/lib/davinci_pas_test_kit/cross_suite/validator_configuration.rb +16 -0
- data/lib/davinci_pas_test_kit/cross_suite/validator_suppressions.rb +210 -146
- data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +7 -7
- data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +1 -0
- data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +47 -16
- data/lib/davinci_pas_test_kit/generator/must_support_target_profiles.rb +17 -0
- data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +14 -2
- data/lib/davinci_pas_test_kit/generator/pas_must_support_metadata_extractor.rb +1 -2
- data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +1 -1
- data/lib/davinci_pas_test_kit/generator/server_must_support_group_generator.rb +23 -0
- data/lib/davinci_pas_test_kit/generator/server_suite_generator.rb +8 -7
- data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +22 -3
- data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +7 -16
- data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +11 -10
- data/lib/davinci_pas_test_kit/generator/templates/server_must_support_group.rb.erb +22 -0
- data/lib/davinci_pas_test_kit/generator/templates/server_suite.rb.erb +9 -11
- data/lib/davinci_pas_test_kit/generator/templates/use_case_group.rb.erb +3 -0
- data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +19 -13
- data/lib/davinci_pas_test_kit/parameters_helper.rb +13 -5
- data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +2 -2
- data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +14 -7
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +21 -21
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +30 -26
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +39 -33
- data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
- data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +4 -3
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +4 -3
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +7 -6
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/server_suite.rb +9 -11
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +3 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +3 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +5 -3
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +5 -3
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_must_support_group.rb +12 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +9 -4
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +9 -11
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +2 -2
- data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +4 -6
- data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +17 -10
- data/lib/davinci_pas_test_kit/server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_setup.rb +1 -1
- data/lib/davinci_pas_test_kit/server/v2.2.1/claim_inquiry/server_claim_inquiry_response_tests.rb +89 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_error_group.rb +2 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_inquiry_responses_group.rb +17 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +1 -1
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_no_custom_extensions_test.rb +241 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_capability_statement_test.rb +40 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +15 -10
- data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_input_test.rb +63 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_test.rb +109 -0
- data/lib/davinci_pas_test_kit/version.rb +2 -2
- metadata +38 -13
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +0 -45
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +0 -45
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +0 -55
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +0 -55
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +0 -20
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
require_relative '../user_input_response'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
2
4
|
require_relative '../response_generator'
|
|
5
|
+
require_relative '../subscription_notification_trigger'
|
|
3
6
|
require_relative '../client_urls'
|
|
4
|
-
require_relative '../jobs/send_pas_subscription_notification'
|
|
5
7
|
require_relative '../../cross_suite/fhirpath_utils'
|
|
6
8
|
require_relative '../../cross_suite/response_selection_utils'
|
|
7
9
|
require 'subscriptions_test_kit'
|
|
@@ -11,24 +13,25 @@ module DaVinciPASTestKit
|
|
|
11
13
|
class ClaimEndpoint < Inferno::DSL::SuiteEndpoint
|
|
12
14
|
include SubscriptionsTestKit::SubscriptionsR5BackportR4Client::SubscriptionSimulationUtils
|
|
13
15
|
include ResponseGenerator
|
|
16
|
+
include SubscriptionNotificationTrigger
|
|
14
17
|
include ClientURLs
|
|
15
18
|
include FhirpathUtils
|
|
16
19
|
include ResponseSelectionUtils
|
|
20
|
+
include EndpointSessionIdentification
|
|
21
|
+
include ExpiredToken
|
|
17
22
|
|
|
18
23
|
# override the one from URLs to make it version specific
|
|
19
24
|
def suite_id
|
|
20
25
|
request.path.split('/custom/')[1].split('/')[0] # request.path = {base inferno path}/custom/{suite_id}/...
|
|
21
26
|
end
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
return request.params[:session_path] if request.params[:session_path].present?
|
|
25
|
-
|
|
26
|
-
UDAPSecurityTestKit::MockUDAPServer.issued_token_to_client_id(
|
|
27
|
-
request.headers['authorization']&.delete_prefix('Bearer ')
|
|
28
|
-
)
|
|
29
|
-
end
|
|
28
|
+
error_response_format :operation_outcome
|
|
30
29
|
|
|
31
30
|
def tags
|
|
31
|
+
# Requests rejected for an expired token or a rejected $inquire are not treated as
|
|
32
|
+
# submissions of any workflow.
|
|
33
|
+
return [] if expired_token? || !operation_enabled?
|
|
34
|
+
|
|
32
35
|
operation_tag = operation == 'submit' ? SUBMIT_TAG : INQUIRE_TAG
|
|
33
36
|
workflow_tag = WORKFLOW_TAG_MAP[workflow]
|
|
34
37
|
|
|
@@ -52,6 +55,13 @@ module DaVinciPASTestKit
|
|
|
52
55
|
test.config.options[:suppress_notifications] == true
|
|
53
56
|
end
|
|
54
57
|
|
|
58
|
+
# Tests must opt in to each operation with the submit_enabled and inquire_enabled options. Inferno responds
|
|
59
|
+
# to every request for an operation that is not enabled with an OperationOutcome, without tagging the
|
|
60
|
+
# request or continuing the test.
|
|
61
|
+
def operation_enabled?
|
|
62
|
+
%w[inquire submit].include?(operation) && test.config.options[:"#{operation}_enabled"] == true
|
|
63
|
+
end
|
|
64
|
+
|
|
55
65
|
def workflow
|
|
56
66
|
case test.id
|
|
57
67
|
when /.*pended.*/
|
|
@@ -70,7 +80,7 @@ module DaVinciPASTestKit
|
|
|
70
80
|
end
|
|
71
81
|
|
|
72
82
|
def must_support_workflow?
|
|
73
|
-
test.id =~ /.*must_support.*/
|
|
83
|
+
test.id =~ /.*must_support.*/
|
|
74
84
|
end
|
|
75
85
|
|
|
76
86
|
WORKFLOW_TAG_MAP = {
|
|
@@ -87,6 +97,11 @@ module DaVinciPASTestKit
|
|
|
87
97
|
|
|
88
98
|
response.format = :json
|
|
89
99
|
|
|
100
|
+
unless operation_enabled?
|
|
101
|
+
make_rejected_operation_response
|
|
102
|
+
return
|
|
103
|
+
end
|
|
104
|
+
|
|
90
105
|
# Handle the operation failure and processing error workflows, which require a user-provided response.
|
|
91
106
|
if workflow == :operation_failure
|
|
92
107
|
make_operation_failure_response
|
|
@@ -136,10 +151,11 @@ module DaVinciPASTestKit
|
|
|
136
151
|
end
|
|
137
152
|
|
|
138
153
|
def update_result
|
|
139
|
-
if
|
|
154
|
+
if expired_token?
|
|
140
155
|
UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response, 'Bearer token')
|
|
141
156
|
return
|
|
142
157
|
end
|
|
158
|
+
return unless operation_enabled? # keep waiting for the request that the test is looking for
|
|
143
159
|
|
|
144
160
|
results_repo.update_result(result.id, 'pass') unless test.config.options[:accepts_multiple_requests]
|
|
145
161
|
end
|
|
@@ -152,27 +168,39 @@ module DaVinciPASTestKit
|
|
|
152
168
|
private
|
|
153
169
|
|
|
154
170
|
# Resolves the user-provided response, using criteria-based selection for must support
|
|
155
|
-
# workflows or the single-response approach for other workflows
|
|
171
|
+
# workflows or the single-response approach for other workflows
|
|
172
|
+
# and replaces {{fhirpath}} tokens with values from the request.
|
|
156
173
|
def resolve_user_response(req_bundle)
|
|
157
|
-
if must_support_workflow?
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
174
|
+
user_response = if must_support_workflow?
|
|
175
|
+
select_must_support_response(req_bundle)
|
|
176
|
+
else
|
|
177
|
+
UserInputResponse.user_inputted_response(test, operation, result)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
return nil unless user_response.present?
|
|
181
|
+
|
|
182
|
+
replace_tokens(user_response, req_bundle)
|
|
183
|
+
rescue FhirpathUtils::FhirpathServiceError => e
|
|
184
|
+
add_result_warning(
|
|
185
|
+
'Unable to instantiate a tester-provided response, so Inferno will generate a default response: ' \
|
|
186
|
+
"#{e.message}"
|
|
187
|
+
)
|
|
188
|
+
nil
|
|
162
189
|
end
|
|
163
190
|
|
|
164
191
|
# Selects the first tester-provided response candidate whose selection criteria all
|
|
165
192
|
# match the incoming request, extracts its response Bundle (unwrapping it when the
|
|
166
|
-
# candidate pairs the Bundle with criteria),
|
|
167
|
-
#
|
|
168
|
-
#
|
|
193
|
+
# candidate pairs the Bundle with criteria). Returns nil, causing Inferno to generate a default
|
|
194
|
+
# response, if no candidates are provided or none match. Problems with the
|
|
195
|
+
# tester-provided input or the FHIRPath service also result in nil, with a warning
|
|
196
|
+
# on the waiting test so that the tester can see what went wrong.
|
|
169
197
|
def select_must_support_response(req_bundle)
|
|
170
|
-
candidates = UserInputResponse.response_candidates(
|
|
198
|
+
candidates = UserInputResponse.response_candidates(test, operation, result)
|
|
171
199
|
return if candidates.blank?
|
|
172
200
|
|
|
173
201
|
operation_url_suffix = "$#{operation}"
|
|
174
202
|
request_number = count_previous_successful_requests(operation_url_suffix) + 1
|
|
175
|
-
selected_index = candidates.index { |candidate| include_entity?(candidate, req_bundle,
|
|
203
|
+
selected_index = candidates.index { |candidate| include_entity?(candidate, req_bundle, request_number) }
|
|
176
204
|
|
|
177
205
|
if selected_index.nil?
|
|
178
206
|
Inferno::Application['logger'].info(
|
|
@@ -186,17 +214,33 @@ module DaVinciPASTestKit
|
|
|
186
214
|
"Selected tester-provided response bundle #{selected_index + 1} of #{candidates.length} " \
|
|
187
215
|
"for #{operation_url_suffix} request ##{request_number}."
|
|
188
216
|
)
|
|
189
|
-
|
|
217
|
+
entity_response(candidates[selected_index])
|
|
218
|
+
rescue UserInputResponse::InvalidInputError, FhirpathUtils::FhirpathServiceError => e
|
|
219
|
+
add_result_warning(
|
|
220
|
+
'Unable to select a tester-provided response, so Inferno will generate a default response: ' \
|
|
221
|
+
"#{e.message}"
|
|
222
|
+
)
|
|
223
|
+
nil
|
|
190
224
|
end
|
|
191
225
|
|
|
192
|
-
#
|
|
193
|
-
#
|
|
194
|
-
#
|
|
226
|
+
# Replaces {{fhirpath}} tokens using values from the incoming request, round-tripping
|
|
227
|
+
# the result through the FHIR model to normalize it. The response may be a parsed hash
|
|
228
|
+
# (must support workflow) or the raw JSON string of a single input. If a replaced value
|
|
229
|
+
# breaks the JSON structure, the result cannot be returned as a FHIR response, so nil is
|
|
230
|
+
# returned with a warning on the waiting test and Inferno generates a default response.
|
|
195
231
|
def replace_tokens(bundle_hash, req_bundle)
|
|
196
|
-
|
|
232
|
+
bundle_json = bundle_hash.is_a?(String) ? bundle_hash : bundle_hash.to_json
|
|
233
|
+
replaced = replace_tokens_in_string(bundle_json, req_bundle)
|
|
234
|
+
return bundle_json if replaced.equal?(bundle_json)
|
|
235
|
+
|
|
197
236
|
FHIR.from_contents(replaced)&.to_json || replaced
|
|
198
237
|
rescue JSON::ParserError
|
|
199
|
-
|
|
238
|
+
add_result_warning(
|
|
239
|
+
'Unable to use the selected tester-provided response, so Inferno will generate a default response. ' \
|
|
240
|
+
'The response is not valid JSON after {{fhirpath}} token replacement, for example because a token ' \
|
|
241
|
+
'value contains a double quote.'
|
|
242
|
+
)
|
|
243
|
+
nil
|
|
200
244
|
end
|
|
201
245
|
|
|
202
246
|
def handle_missing_required_elements(claim_entry, response)
|
|
@@ -236,68 +280,80 @@ module DaVinciPASTestKit
|
|
|
236
280
|
end
|
|
237
281
|
|
|
238
282
|
def make_processing_error_response
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
283
|
+
unless UserInputResponse.user_inputted_response(test, operation, result).present?
|
|
284
|
+
error_outcome_response('The processing_error_response input is required for this test and was not provided.')
|
|
285
|
+
return
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
req_bundle = FHIR.from_contents(request.body.string)
|
|
289
|
+
if req_bundle.blank?
|
|
290
|
+
handle_missing_required_elements(nil, response)
|
|
291
|
+
return
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# Unlike other workflows, there is no mocked response to fall back to when instantiation fails.
|
|
295
|
+
instantiated_response = resolve_user_response(req_bundle)
|
|
296
|
+
if instantiated_response.blank?
|
|
297
|
+
error_outcome_response('The processing_error_response input could not be instantiated. ' \
|
|
298
|
+
'See the warnings on the waiting test for details.')
|
|
250
299
|
return
|
|
251
300
|
end
|
|
252
301
|
|
|
302
|
+
claim_entry = req_bundle.entry&.find { |e| e&.resource&.resourceType == 'Claim' }
|
|
253
303
|
response.status = 200
|
|
254
|
-
response.body =
|
|
304
|
+
response.body = update_tester_provided_response(instantiated_response, claim_entry&.fullUrl, operation,
|
|
305
|
+
ig_version)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def make_rejected_operation_response
|
|
309
|
+
response.status = 501
|
|
310
|
+
response.body = FHIR::OperationOutcome.new(
|
|
311
|
+
issue: FHIR::OperationOutcome::Issue.new(
|
|
312
|
+
severity: 'error', code: 'not-supported',
|
|
313
|
+
details: FHIR::CodeableConcept.new(
|
|
314
|
+
text: "Inferno does not support the $#{operation} operation during this test."
|
|
315
|
+
)
|
|
316
|
+
)
|
|
317
|
+
).to_json
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def error_outcome_response(text)
|
|
321
|
+
response.status = 400
|
|
322
|
+
response.body = FHIR::OperationOutcome.new(
|
|
323
|
+
issue: FHIR::OperationOutcome::Issue.new(
|
|
324
|
+
severity: 'fatal', code: 'required', details: FHIR::CodeableConcept.new(text:)
|
|
325
|
+
)
|
|
326
|
+
).to_json
|
|
255
327
|
end
|
|
256
328
|
|
|
257
329
|
def operation
|
|
258
|
-
request.
|
|
330
|
+
request.path.split('$').last
|
|
259
331
|
end
|
|
260
332
|
|
|
261
|
-
|
|
262
|
-
notification_bearer_token = client_access_token_input(result)
|
|
263
|
-
notification_contents = notification_json(response_bundle_json, decision, generated_claim_response_uuid)
|
|
333
|
+
# Helper methods for SubscriptionNotificationTrigger
|
|
264
334
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
ig_version)
|
|
335
|
+
def notification_test_run_id
|
|
336
|
+
test_run.id
|
|
268
337
|
end
|
|
269
338
|
|
|
270
|
-
def
|
|
271
|
-
|
|
272
|
-
|
|
339
|
+
def notification_test_session_id
|
|
340
|
+
test_run.test_session_id
|
|
341
|
+
end
|
|
273
342
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
else
|
|
277
|
-
generate_notification(response_bundle_json, decision)
|
|
278
|
-
end
|
|
343
|
+
def notification_result_id
|
|
344
|
+
result.id
|
|
279
345
|
end
|
|
280
346
|
|
|
281
|
-
def
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
mock_full_resource_notification_bundle(response_bundle_json, subscription_reference, subscription_topic,
|
|
288
|
-
decision, ig_version)
|
|
289
|
-
else # assume id-only since empty not allowed - if asked for empty, other failures will occur
|
|
290
|
-
mock_id_only_notification_bundle(response_bundle_json, subscription_reference, subscription_topic,
|
|
291
|
-
ig_version)
|
|
292
|
-
end
|
|
347
|
+
def notification_bearer_token
|
|
348
|
+
client_access_token_input(result)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def tester_notification_bundle
|
|
352
|
+
notification_bundle_input(result)
|
|
293
353
|
end
|
|
294
354
|
|
|
295
|
-
def
|
|
296
|
-
|
|
297
|
-
&.find do |ext|
|
|
298
|
-
ext['url'] == 'http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content'
|
|
299
|
-
end
|
|
300
|
-
content_ext&.dig('valueCode')
|
|
355
|
+
def client_subscription_json
|
|
356
|
+
find_subscription(test_run.test_session_id, as_json: true)
|
|
301
357
|
end
|
|
302
358
|
end
|
|
303
359
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'udap_security_test_kit'
|
|
4
|
+
|
|
5
|
+
module DaVinciPASTestKit
|
|
6
|
+
# Identifies the test session for the claim and Subscription endpoints, using either the session
|
|
7
|
+
# path or the client id embedded in the bearer token.
|
|
8
|
+
module EndpointSessionIdentification
|
|
9
|
+
# Where the session identifier is expected. Used in responses when no session is found.
|
|
10
|
+
LOCATION_DESCRIPTION = 'the path or embedded within the bearer token in the Authorization header'
|
|
11
|
+
|
|
12
|
+
def test_run_identifier_location_description
|
|
13
|
+
LOCATION_DESCRIPTION
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_run_identifier
|
|
17
|
+
return request.params[:session_path] if request.params[:session_path].present?
|
|
18
|
+
|
|
19
|
+
UDAPSecurityTestKit::MockUDAPServer.issued_token_to_client_id(
|
|
20
|
+
request.headers['authorization']&.delete_prefix('Bearer ')
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'udap_security_test_kit'
|
|
4
|
+
|
|
5
|
+
module DaVinciPASTestKit
|
|
6
|
+
# Checks whether the request's bearer token has expired.
|
|
7
|
+
module ExpiredToken
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# Memoized so the token is only decoded and parsed once per request, even though both
|
|
11
|
+
# #tags and the response handling need to check it.
|
|
12
|
+
def expired_token?
|
|
13
|
+
return @expired_token if defined?(@expired_token)
|
|
14
|
+
|
|
15
|
+
@expired_token = UDAPSecurityTestKit::MockUDAPServer.request_has_expired_token?(request)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Prepended to endpoints that reject requests made with an expired bearer token before any other
|
|
20
|
+
# handling.
|
|
21
|
+
module ExpiredTokenRejection
|
|
22
|
+
include ExpiredToken
|
|
23
|
+
|
|
24
|
+
def make_response
|
|
25
|
+
if expired_token?
|
|
26
|
+
UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response, 'Bearer token')
|
|
27
|
+
return
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
super
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def tags
|
|
34
|
+
# Requests rejected for an expired token are not treated as submissions of any workflow.
|
|
35
|
+
return [] if expired_token?
|
|
36
|
+
|
|
37
|
+
super
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
2
4
|
require_relative '../jobs/send_subscription_handshake'
|
|
3
5
|
require 'subscriptions_test_kit'
|
|
4
6
|
|
|
5
7
|
module DaVinciPASTestKit
|
|
6
8
|
class SubscriptionCreateEndpoint < Inferno::DSL::SuiteEndpoint
|
|
7
9
|
include SubscriptionsTestKit::SubscriptionsR5BackportR4Client::SubscriptionSimulationUtils
|
|
10
|
+
include EndpointSessionIdentification
|
|
11
|
+
prepend ExpiredTokenRejection
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
return request.params[:session_path] if request.params[:session_path].present?
|
|
11
|
-
|
|
12
|
-
UDAPSecurityTestKit::MockUDAPServer.issued_token_to_client_id(
|
|
13
|
-
request.headers['authorization']&.delete_prefix('Bearer ')
|
|
14
|
-
)
|
|
15
|
-
end
|
|
13
|
+
error_response_format :operation_outcome
|
|
16
14
|
|
|
17
15
|
def make_response
|
|
18
|
-
if UDAPSecurityTestKit::MockUDAPServer.request_has_expired_token?(request)
|
|
19
|
-
UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response, 'Bearer token')
|
|
20
|
-
return
|
|
21
|
-
end
|
|
22
|
-
|
|
23
16
|
response.format = :json
|
|
24
17
|
response.status = 400
|
|
25
18
|
|
|
@@ -73,6 +66,8 @@ module DaVinciPASTestKit
|
|
|
73
66
|
[SUBSCRIPTION_CREATE_TAG]
|
|
74
67
|
end
|
|
75
68
|
|
|
69
|
+
private
|
|
70
|
+
|
|
76
71
|
def verify_subscription(subscription)
|
|
77
72
|
unless subscription.is_a? FHIR::Subscription
|
|
78
73
|
return operation_outcome('error', 'invalid', 'No recognized R4 Subscription in request body')
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
4
|
+
require 'subscriptions_test_kit'
|
|
5
|
+
|
|
6
|
+
module DaVinciPASTestKit
|
|
7
|
+
class SubscriptionDeleteEndpoint < SubscriptionsTestKit::SubscriptionDeleteEndpoint
|
|
8
|
+
include EndpointSessionIdentification
|
|
9
|
+
prepend ExpiredTokenRejection
|
|
10
|
+
|
|
11
|
+
error_response_format :operation_outcome
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
4
|
+
require 'subscriptions_test_kit'
|
|
5
|
+
|
|
6
|
+
module DaVinciPASTestKit
|
|
7
|
+
class SubscriptionReadEndpoint < SubscriptionsTestKit::SubscriptionReadEndpoint
|
|
8
|
+
include EndpointSessionIdentification
|
|
9
|
+
prepend ExpiredTokenRejection
|
|
10
|
+
|
|
11
|
+
error_response_format :operation_outcome
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
2
4
|
require 'subscriptions_test_kit'
|
|
3
5
|
|
|
4
6
|
module DaVinciPASTestKit
|
|
5
7
|
class SubscriptionStatusEndpoint < Inferno::DSL::SuiteEndpoint
|
|
6
8
|
include SubscriptionsTestKit::SubscriptionsR5BackportR4Client::SubscriptionSimulationUtils
|
|
7
9
|
include ResponseGenerator
|
|
10
|
+
include EndpointSessionIdentification
|
|
11
|
+
prepend ExpiredTokenRejection
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
return request.params[:session_path] if request.params[:session_path].present?
|
|
11
|
-
|
|
12
|
-
UDAPSecurityTestKit::MockUDAPServer.issued_token_to_client_id(
|
|
13
|
-
request.headers['authorization']&.delete_prefix('Bearer ')
|
|
14
|
-
)
|
|
15
|
-
end
|
|
13
|
+
error_response_format :operation_outcome
|
|
16
14
|
|
|
17
15
|
def make_response
|
|
18
|
-
if UDAPSecurityTestKit::MockUDAPServer.request_has_expired_token?(request)
|
|
19
|
-
UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response)
|
|
20
|
-
return
|
|
21
|
-
end
|
|
22
|
-
|
|
23
16
|
response.format = :json
|
|
24
|
-
|
|
17
|
+
# Reflects any updates or deletion of the Subscription by the client
|
|
18
|
+
subscription = find_current_subscription(test_run.test_session_id)
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
subscription_id = request.params[:id]
|
|
21
|
+
if subscription.blank? || (subscription_id.present? && subscription_id != subscription.id)
|
|
27
22
|
not_found
|
|
28
23
|
return
|
|
29
24
|
end
|
|
30
25
|
|
|
31
|
-
|
|
26
|
+
status_code = current_subscription_status_code(subscription)
|
|
32
27
|
|
|
33
28
|
# Handle resource-level status params
|
|
34
29
|
unless subscription_id.present?
|
|
@@ -40,7 +35,7 @@ module DaVinciPASTestKit
|
|
|
40
35
|
return
|
|
41
36
|
end
|
|
42
37
|
|
|
43
|
-
unless subscription_params_match?(params, subscription)
|
|
38
|
+
unless subscription_params_match?(params, subscription, status_code)
|
|
44
39
|
not_found
|
|
45
40
|
return
|
|
46
41
|
end
|
|
@@ -48,7 +43,6 @@ module DaVinciPASTestKit
|
|
|
48
43
|
|
|
49
44
|
subscription_url = "#{base_subscription_url}/#{subscription.id}"
|
|
50
45
|
subscription_topic = subscription.criteria
|
|
51
|
-
status_code = determine_subscription_status_code(subscription_id)
|
|
52
46
|
event_count = determine_event_count(test_run.test_session_id)
|
|
53
47
|
|
|
54
48
|
notification_json = notification_bundle_input(result)
|
|
@@ -69,20 +63,21 @@ module DaVinciPASTestKit
|
|
|
69
63
|
response.status = 200
|
|
70
64
|
end
|
|
71
65
|
|
|
72
|
-
def subscription_params_match?(params, subscription)
|
|
66
|
+
def subscription_params_match?(params, subscription, status_code)
|
|
73
67
|
id_params = find_params(params, 'id')
|
|
74
68
|
|
|
75
69
|
return false if id_params&.any? && id_params&.none? { |p| p.valueString == subscription.id }
|
|
76
70
|
|
|
77
71
|
status_params = find_params(params, 'status')
|
|
78
|
-
|
|
79
|
-
status_params.blank? || status_params.any? { |p| p.valueString == subscription_status }
|
|
72
|
+
status_params.blank? || status_params.any? { |p| p.valueString == status_code }
|
|
80
73
|
end
|
|
81
74
|
|
|
82
75
|
def tags
|
|
83
76
|
[SUBSCRIPTION_STATUS_TAG]
|
|
84
77
|
end
|
|
85
78
|
|
|
79
|
+
private
|
|
80
|
+
|
|
86
81
|
def not_found
|
|
87
82
|
response.status = 404
|
|
88
83
|
response.body = operation_outcome('error', 'not-found').to_json
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../cross_suite/tags'
|
|
2
|
+
require_relative 'endpoint_session_identification'
|
|
3
|
+
require_relative 'expired_token'
|
|
4
|
+
require 'subscriptions_test_kit'
|
|
5
|
+
|
|
6
|
+
module DaVinciPASTestKit
|
|
7
|
+
class SubscriptionUpdateEndpoint < SubscriptionsTestKit::SubscriptionUpdateEndpoint
|
|
8
|
+
include EndpointSessionIdentification
|
|
9
|
+
prepend ExpiredTokenRejection
|
|
10
|
+
|
|
11
|
+
error_response_format :operation_outcome
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -12,6 +12,22 @@ module DaVinciPASTestKit
|
|
|
12
12
|
|
|
13
13
|
def test_run_identifier
|
|
14
14
|
UDAPSecurityTestKit::MockUDAPServer.client_id_from_client_assertion(request.params[:client_assertion])
|
|
15
|
+
rescue JWT::DecodeError
|
|
16
|
+
nil
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_run_identifier_location_description
|
|
20
|
+
"the client assertion's 'iss' claim representing the client's id"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def no_session_response
|
|
24
|
+
response.status = 401
|
|
25
|
+
response.format = :json
|
|
26
|
+
response.body = {
|
|
27
|
+
error: 'invalid_client',
|
|
28
|
+
error_description: no_session_message
|
|
29
|
+
|
|
30
|
+
}.to_json
|
|
15
31
|
end
|
|
16
32
|
|
|
17
33
|
def make_response
|
|
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
|
|
|
7
7
|
title 'All must support elements for profile PAS Beneficiary Patient are observed on $inquire requests'
|
|
8
8
|
description %(
|
|
9
9
|
|
|
10
|
-
PAS
|
|
11
|
-
must support elements on instances of all profiles included in
|
|
10
|
+
PAS clients are required to be able to populate all
|
|
11
|
+
must support elements on instances of all profiles included in `$inquire`
|
|
12
12
|
requests, including instances of the PAS Beneficiary Patient Profile.
|
|
13
13
|
This test checks all identified instances of the PAS Beneficiary Patient
|
|
14
|
-
Profile on requests sent by the client to ensure that the following
|
|
14
|
+
Profile on requests sent by the PAS client to ensure that the following
|
|
15
15
|
must support elements are observed:
|
|
16
16
|
|
|
17
17
|
* Patient.address
|
|
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
|
|
|
7
7
|
title 'All must support elements for profile PAS Beneficiary Patient are observed on $inquire responses'
|
|
8
8
|
description %(
|
|
9
9
|
|
|
10
|
-
PAS
|
|
11
|
-
must support elements on instances of all profiles included in
|
|
10
|
+
PAS clients are required to be able to receive all
|
|
11
|
+
must support elements on instances of all profiles included in `$inquire`
|
|
12
12
|
responses, including instances of the PAS Beneficiary Patient Profile.
|
|
13
13
|
This test checks all identified instances of the PAS Beneficiary Patient
|
|
14
|
-
Profile on responses sent to the client to ensure that the following
|
|
14
|
+
Profile on responses sent to the PAS client to ensure that the following
|
|
15
15
|
must support elements are observed:
|
|
16
16
|
|
|
17
17
|
* Patient.address
|
|
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
|
|
|
7
7
|
title 'All must support elements for profile PAS Beneficiary Patient are observed on $submit requests'
|
|
8
8
|
description %(
|
|
9
9
|
|
|
10
|
-
PAS
|
|
11
|
-
must support elements on instances of all profiles included in
|
|
10
|
+
PAS clients are required to be able to populate all
|
|
11
|
+
must support elements on instances of all profiles included in `$submit`
|
|
12
12
|
requests, including instances of the PAS Beneficiary Patient Profile.
|
|
13
13
|
This test checks all identified instances of the PAS Beneficiary Patient
|
|
14
|
-
Profile on requests sent by the client to ensure that the following
|
|
14
|
+
Profile on requests sent by the PAS client to ensure that the following
|
|
15
15
|
must support elements are observed:
|
|
16
16
|
|
|
17
17
|
* Patient.address
|
|
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
|
|
|
7
7
|
title 'All must support elements for profile PAS Beneficiary Patient are observed on $submit responses'
|
|
8
8
|
description %(
|
|
9
9
|
|
|
10
|
-
PAS
|
|
11
|
-
must support elements on instances of all profiles included in
|
|
10
|
+
PAS clients are required to be able to receive all
|
|
11
|
+
must support elements on instances of all profiles included in `$submit`
|
|
12
12
|
responses, including instances of the PAS Beneficiary Patient Profile.
|
|
13
13
|
This test checks all identified instances of the PAS Beneficiary Patient
|
|
14
|
-
Profile on responses sent to the client to ensure that the following
|
|
14
|
+
Profile on responses sent to the PAS client to ensure that the following
|
|
15
15
|
must support elements are observed:
|
|
16
16
|
|
|
17
17
|
* Patient.address
|
|
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
|
|
|
7
7
|
title 'All must support elements for profile PAS Claim Inquiry are observed on $inquire requests'
|
|
8
8
|
description %(
|
|
9
9
|
|
|
10
|
-
PAS
|
|
11
|
-
must support elements on instances of all profiles included in
|
|
10
|
+
PAS clients are required to be able to populate all
|
|
11
|
+
must support elements on instances of all profiles included in `$inquire`
|
|
12
12
|
requests, including instances of the PAS Claim Inquiry Profile.
|
|
13
13
|
This test checks all identified instances of the PAS Claim Inquiry
|
|
14
|
-
Profile on requests sent by the client to ensure that the following
|
|
14
|
+
Profile on requests sent by the PAS client to ensure that the following
|
|
15
15
|
must support elements are observed:
|
|
16
16
|
|
|
17
17
|
* Claim.accident
|