davinci_pas_test_kit 0.14.1 → 0.15.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/pas_client_v201_run_against_pas_server.json +39 -0
- data/config/presets/pas_client_v221_run_against_pas_server.json +85 -0
- data/config/presets/pas_ri.json +2 -2
- data/config/presets/pas_server_v201_run_against_pas_client.json.erb +76 -0
- data/config/presets/pas_server_v221_run_against_pas_client.json.erb +104 -0
- data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +75 -0
- data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +74 -0
- data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +160 -0
- data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +78 -0
- data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +64 -0
- data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +57 -0
- data/lib/davinci_pas_test_kit/{urls.rb → client/client_urls.rb} +7 -23
- data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +303 -0
- data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/subscription_create_endpoint.rb +1 -1
- data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/subscription_status_endpoint.rb +1 -1
- data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/token_endpoint.rb +1 -2
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb → client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +59 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/client_inquire_request_beneficiary_must_support_test.rb → client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +59 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_inquiry/client_inquire_request_claim_inquiry_must_support_test.rb → client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb → client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +57 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +59 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +42 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +39 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +39 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb → client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +48 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +79 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +58 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +84 -0
- 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 +37 -0
- 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 +36 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +36 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +47 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/client_inquire_request_subscriber_must_support_test.rb → client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb → client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +45 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +45 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +53 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +53 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +123 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +143 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +102 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +103 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +42 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +60 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +79 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +89 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +84 -0
- 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 +38 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +39 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +44 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +40 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +40 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +50 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +50 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +55 -0
- data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +55 -0
- data/lib/davinci_pas_test_kit/{jobs → client/jobs}/send_pas_subscription_notification.rb +12 -7
- data/lib/davinci_pas_test_kit/{jobs → client/jobs}/send_subscription_handshake.rb +1 -1
- data/lib/davinci_pas_test_kit/client/metadata/mock_pas_server.rb +26 -0
- data/lib/davinci_pas_test_kit/client/metadata/pas_server_capability_statement.json +60 -0
- data/lib/davinci_pas_test_kit/client/pas_client_options.rb +23 -0
- data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +45 -0
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +37 -0
- data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +39 -0
- data/lib/davinci_pas_test_kit/{response_generator.rb → client/response_generator.rb} +197 -61
- data/lib/davinci_pas_test_kit/{session_identification.rb → client/session_identification.rb} +1 -2
- data/lib/davinci_pas_test_kit/client/user_input_response.rb +64 -0
- data/lib/davinci_pas_test_kit/{client_suite.rb → client/v2.0.1/client_suite.rb} +29 -16
- data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_gather_must_support_test.rb +12 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb → client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb} +12 -46
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_approval_group.rb +5 -5
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_auth_smart_group.rb +1 -2
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_auth_udap_group.rb +1 -2
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_denial_group.rb +6 -6
- data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +96 -0
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_pended_group.rb +12 -10
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_registration_group.rb +5 -6
- data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_subscription_setup_group.rb +6 -3
- data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_other_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_smart_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_udap_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/registration/other_auth_attest_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/subscription/pas_client_subscription_create_test.rb +15 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/urls.rb +15 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_approval_submit_test.rb +15 -0
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_denial_submit_test.rb +15 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_inquire_request_bundle_validation_test.rb +1 -3
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_inquire_response_bundle_validation_test.rb +18 -6
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_pended_submit_test.rb +12 -8
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_request_bundle_validation_test.rb +1 -3
- data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_attest.rb +12 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_response_bundle_validation_test.rb +10 -5
- data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +240 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +76 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +38 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +55 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +67 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +214 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/pas_client_gather_must_support_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +40 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +31 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +30 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +112 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +47 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +20 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +52 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +96 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +45 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +125 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +44 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +65 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +31 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +25 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_other_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_smart_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_udap_display_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/registration/other_auth_attest_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +14 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/urls.rb +15 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_approval_submit_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancel_request_test.rb +33 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancelled_entries_test.rb +50 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancelled_items_certtype_test.rb +47 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_changed_entries_test.rb +100 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_entries_preserved_test.rb +51 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_grandparent_excluded_test.rb +52 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_claim_test.rb +46 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +43 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +238 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_validation_utils.rb +183 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_denial_submit_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +55 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +78 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_submit_test.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +101 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +148 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +56 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_attest.rb +12 -0
- data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +84 -0
- data/lib/davinci_pas_test_kit/cross_suite/base_urls.rb +27 -0
- data/lib/davinci_pas_test_kit/cross_suite/fhirpath_utils.rb +55 -0
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/beneficiary/metadata.yml +16 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_inquiry/metadata.yml +4 -21
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_update/metadata.yml +4 -22
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claiminquiryresponse/metadata.yml +4 -10
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claimresponse/metadata.yml +4 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/communication_request/metadata.yml +4 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/coverage/metadata.yml +8 -12
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/device_request/metadata.yml +0 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/encounter/metadata.yml +4 -5
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/insurer/metadata.yml +16 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/medication_request/metadata.yml +0 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/metadata.yml +1 -133
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/nutrition_order/metadata.yml +0 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_request_bundle/metadata.yml +4 -7
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_response_bundle/metadata.yml +4 -5
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_request_bundle/metadata.yml +4 -7
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_response_bundle/metadata.yml +4 -5
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/practitioner/metadata.yml +16 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/practitioner_role/metadata.yml +16 -19
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/requestor/metadata.yml +16 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/service_request/metadata.yml +0 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/subscriber/metadata.yml +8 -9
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/task/metadata.yml +8 -5
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/beneficiary/metadata.yml +150 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim → cross_suite/generated/v2.2.1/claim_inquiry}/metadata.yml +154 -203
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_update/metadata.yml +733 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claiminquiryresponse/metadata.yml +456 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claimresponse/metadata.yml +461 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/communication_request/metadata.yml +120 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/coverage/metadata.yml +163 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/device_request_metadata.yml → cross_suite/generated/v2.2.1/device_request/metadata.yml} +32 -33
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/encounter/metadata.yml +237 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/insurer/metadata.yml +111 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/medication_request_metadata.yml → cross_suite/generated/v2.2.1/medication_request/metadata.yml} +59 -26
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +6544 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/nutrition_order_metadata.yml → cross_suite/generated/v2.2.1/nutrition_order/metadata.yml} +13 -14
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_request_bundle/metadata.yml +74 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_response_bundle/metadata.yml +70 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_request_bundle/metadata.yml +74 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_response_bundle/metadata.yml +72 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner/metadata.yml +101 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner_role/metadata.yml +101 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/requestor/metadata.yml +114 -0
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/service_request_metadata.yml → cross_suite/generated/v2.2.1/service_request/metadata.yml} +39 -45
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/subscriber/metadata.yml +136 -0
- data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +237 -0
- data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_data_gathering.rb +111 -0
- data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_request_type_test.rb +75 -0
- data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_test.rb +67 -0
- data/lib/davinci_pas_test_kit/{pas_bundle_validation.rb → cross_suite/pas_bundle_validation.rb} +380 -53
- data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +31 -0
- data/lib/davinci_pas_test_kit/cross_suite/pas_notification_verification.rb +120 -0
- data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +72 -0
- data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +88 -0
- data/lib/davinci_pas_test_kit/cross_suite/tags.rb +35 -0
- data/lib/davinci_pas_test_kit/cross_suite/validation_test.rb +25 -0
- data/lib/davinci_pas_test_kit/{validator_suppressions.rb → cross_suite/validator_suppressions.rb} +23 -1
- data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +22 -0
- data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +230 -0
- data/lib/davinci_pas_test_kit/generator/descriptions.rb +95 -0
- data/lib/davinci_pas_test_kit/generator/ig_metadata.rb +45 -38
- data/lib/davinci_pas_test_kit/generator/ig_metadata_extractor.rb +3 -5
- data/lib/davinci_pas_test_kit/generator/{must_support_check_profiles.rb → must_support_target_profiles.rb} +12 -12
- data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +63 -83
- data/lib/davinci_pas_test_kit/generator/pas_must_support_metadata_extractor.rb +129 -0
- data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +86 -0
- data/lib/davinci_pas_test_kit/generator/{group_metadata_extractor.rb → profile_metadata_extractor.rb} +11 -78
- data/lib/davinci_pas_test_kit/generator/server_must_support_group_generator.rb +166 -0
- data/lib/davinci_pas_test_kit/generator/{suite_generator.rb → server_suite_generator.rb} +32 -5
- data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +80 -0
- data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +43 -0
- data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +14 -35
- data/lib/davinci_pas_test_kit/generator/templates/server_must_support_group.rb.erb +121 -0
- data/lib/davinci_pas_test_kit/generator/templates/{suite.rb.erb → server_suite.rb.erb} +15 -23
- data/lib/davinci_pas_test_kit/generator/templates/use_case_group.rb.erb +181 -0
- data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +227 -0
- data/lib/davinci_pas_test_kit/generator.rb +46 -26
- data/lib/davinci_pas_test_kit/igs/davinci_pas_2.2.1.tgz +0 -0
- data/lib/davinci_pas_test_kit/metadata.rb +21 -55
- data/lib/davinci_pas_test_kit/parameters_helper.rb +18 -0
- data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +40 -0
- data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +121 -0
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +22 -22
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +66 -0
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v201_requirements_coverage.csv +42 -42
- data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +212 -0
- 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/{custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb → server/abstract_pas_subscription_notification_wait_test.rb} +13 -21
- data/lib/davinci_pas_test_kit/server/claim_inquire_operation_test.rb +31 -0
- data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +67 -0
- data/lib/davinci_pas_test_kit/server/claim_submit_operation_test.rb +32 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb} +16 -36
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_inquire_request_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_inquire_response_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb} +16 -36
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_inquiry/server_inquire_request_claim_inquiry_must_support_test.rb → server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb → server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claiminquiryresponse/server_inquire_response_claiminquiryresponse_must_support_test.rb → server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb → server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +43 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +41 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +41 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb → server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +45 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +45 -0
- 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 +39 -0
- 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 +37 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +39 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +37 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +145 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +145 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_must_support_group.rb +442 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +280 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +39 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +38 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +39 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +38 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +35 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +34 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +35 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +34 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb → server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +48 -0
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/requestor/server_inquire_request_requestor_must_support_test.rb → server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +48 -0
- data/lib/davinci_pas_test_kit/{generated → server/generated}/v2.0.1/server_suite.rb +10 -20
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/server_inquire_request_subscriber_must_support_test.rb → server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb → server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb} +14 -35
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +55 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +53 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +55 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +53 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +125 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +145 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +102 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +103 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +42 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +52 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +52 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +58 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +49 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +47 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +49 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +47 -0
- 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 +41 -0
- 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 +38 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +41 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +39 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +125 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +125 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_must_support_group.rb +403 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +150 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +44 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +46 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +44 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +42 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +40 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +42 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +40 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +52 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +50 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +52 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +50 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +148 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +54 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +54 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +55 -0
- data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +55 -0
- data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +73 -0
- data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +64 -0
- data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +76 -0
- data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/pas_inquiry_error_test.rb +2 -2
- data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/pas_submission_error_test.rb +2 -2
- data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb → server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb} +12 -45
- data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_error_group.rb +3 -3
- data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_server_subscription_input_conformance.rb +4 -3
- data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_notification_wait_test.rb +12 -0
- data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_server_subscription_setup.rb +5 -3
- data/lib/davinci_pas_test_kit/server/v2.0.1/server_urls.rb +13 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/claim_updates/server_claim_update_response_tests.rb +143 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/nonconformant_pas_bundle.json +16 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/pas_inquiry_error_test.rb +38 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/pas_submission_error_test.rb +56 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +86 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_error_group.rb +20 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +104 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_input_conformance.rb +48 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_notification_wait_test.rb +12 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +42 -0
- data/lib/davinci_pas_test_kit/server/v2.2.1/server_urls.rb +13 -0
- data/lib/davinci_pas_test_kit/version.rb +2 -2
- data/lib/davinci_pas_test_kit.rb +5 -2
- metadata +364 -186
- data/config/presets/pas_server_subscription_creation_against_pas_client.json +0 -32
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test.rb +0 -43
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_other_display_test.rb +0 -46
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_smart_display_test.rb +0 -37
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_udap_display_test.rb +0 -37
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/other_auth_attest_test.rb +0 -36
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_test.rb +0 -80
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_test.rb +0 -79
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_must_support_test.rb +0 -63
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_response_attest.rb +0 -52
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_submit_must_support_test.rb +0 -72
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_create_test.rb +0 -62
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_pas_conformance_test.rb +0 -30
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_must_support_group.rb +0 -29
- data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_options.rb +0 -25
- data/lib/davinci_pas_test_kit/endpoints/claim_endpoint.rb +0 -157
- data/lib/davinci_pas_test_kit/fhir_resource_navigation.rb +0 -72
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +0 -67
- data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +0 -56
- data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +0 -63
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquire_request_coverage_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquire_request_coverage_must_support_test.rb +0 -62
- data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +0 -62
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +0 -56
- data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquire_request_insurer_must_support_test.rb +0 -65
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +0 -65
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquire_request_insurer_must_support_test.rb +0 -67
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquire_response_insurer_must_support_test.rb +0 -65
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +0 -67
- data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +0 -65
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +0 -66
- data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +0 -68
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_inquiry_must_support_use_case_group.rb +0 -51
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_submit_must_support_use_case_group.rb +0 -61
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_pas_inquiry_request_bundle_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_pas_inquiry_request_bundle_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +0 -95
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_pas_inquiry_response_bundle_must_support_test.rb +0 -57
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +0 -89
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +0 -95
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +0 -89
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +0 -57
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +0 -268
- data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +0 -90
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquire_request_practitioner_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquire_request_practitioner_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquire_response_practitioner_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquire_request_practitioner_role_must_support_test.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquire_request_practitioner_role_must_support_test.rb +0 -56
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquire_response_practitioner_role_must_support_test.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +0 -56
- data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquire_request_requestor_must_support_test.rb +0 -68
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +0 -68
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquire_response_requestor_must_support_test.rb +0 -68
- data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +0 -68
- data/lib/davinci_pas_test_kit/generated/v2.0.1/resource_list.rb +0 -54
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +0 -58
- data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +0 -60
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquire_response_task_must_support_test.rb +0 -66
- data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +0 -66
- data/lib/davinci_pas_test_kit/generator/group_generator.rb +0 -470
- data/lib/davinci_pas_test_kit/generator/group_metadata.rb +0 -73
- data/lib/davinci_pas_test_kit/generator/naming.rb +0 -51
- data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +0 -149
- data/lib/davinci_pas_test_kit/generator/resource_list_generator.rb +0 -59
- data/lib/davinci_pas_test_kit/generator/templates/group.rb.erb +0 -136
- data/lib/davinci_pas_test_kit/generator/templates/operation.rb.erb +0 -65
- data/lib/davinci_pas_test_kit/generator/templates/resource_list.rb.erb +0 -13
- data/lib/davinci_pas_test_kit/generator/templates/validation.rb.erb +0 -99
- data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +0 -172
- data/lib/davinci_pas_test_kit/generator/value_extractor.rb +0 -51
- data/lib/davinci_pas_test_kit/must_support_test.rb +0 -71
- data/lib/davinci_pas_test_kit/pas_subscription_verification.rb +0 -30
- data/lib/davinci_pas_test_kit/tags.rb +0 -17
- data/lib/davinci_pas_test_kit/user_input_response.rb +0 -35
- data/lib/davinci_pas_test_kit/validation_test.rb +0 -57
- /data/lib/davinci_pas_test_kit/{certs → client/certs}/InfernoCA.key +0 -0
- /data/lib/davinci_pas_test_kit/{certs → client/certs}/InfernoCA.pem +0 -0
- /data/lib/davinci_pas_test_kit/{certs → client/certs}/TestKit.pem +0 -0
- /data/lib/davinci_pas_test_kit/{certs → client/certs}/TestKitPrivateKey.key +0 -0
- /data/lib/davinci_pas_test_kit/{descriptions.rb → client/client_input_descriptions.rb} +0 -0
- /data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_workflows_group.rb +0 -0
- /data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/nonconformant_pas_bundle.json +0 -0
data/lib/davinci_pas_test_kit/server/v2.2.1/claim_updates/server_claim_update_response_tests.rb
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/tags'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# Shared helpers for the server-side Claim Update response verification tests. Inferno (acting
|
|
6
|
+
# as the client) sends a sequence of update submissions to the server under test; these helpers
|
|
7
|
+
# reload each submission by its unique tag and compare the submitted Claim's items against the
|
|
8
|
+
# ClaimResponse the server returned. No live state is used - everything is reloaded from the
|
|
9
|
+
# tagged, persisted requests/responses.
|
|
10
|
+
module ServerClaimUpdateResponseValidation
|
|
11
|
+
# The ordered Claim Update submissions, paired with the unique tag each was stored under.
|
|
12
|
+
def claim_update_response_steps
|
|
13
|
+
[
|
|
14
|
+
{ label: 'initial submission', tag: CLAIM_UPDATE_INITIAL_TAG },
|
|
15
|
+
{ label: 'add-item update', tag: CLAIM_UPDATE_ADD_ITEM_TAG },
|
|
16
|
+
{ label: 'modify-and-cancel update', tag: CLAIM_UPDATE_MODIFY_CANCEL_TAG },
|
|
17
|
+
{ label: 'cancel-entire-request update', tag: CLAIM_UPDATE_CANCEL_ALL_TAG }
|
|
18
|
+
]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# The most recent request stored under `tag` (it carries both the request body Inferno sent
|
|
22
|
+
# and the response body the server returned).
|
|
23
|
+
def tagged_update_request(tag)
|
|
24
|
+
load_tagged_requests(tag).last
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# The Claim under submission is the first Bundle entry (a conformant update Bundle also
|
|
28
|
+
# includes the referenced prior Claim per spec-65, so select by position, not by type-order).
|
|
29
|
+
def submitted_claim(request)
|
|
30
|
+
first_resource_of_type(request&.request_body, FHIR::Claim)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# The PAS Response Bundle starts with the ClaimResponse.
|
|
34
|
+
def response_claim_response(request)
|
|
35
|
+
first_resource_of_type(request&.response_body, FHIR::ClaimResponse)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def first_resource_of_type(body, type)
|
|
39
|
+
return nil if body.blank?
|
|
40
|
+
|
|
41
|
+
bundle = FHIR.from_contents(body)
|
|
42
|
+
return nil unless bundle.is_a?(FHIR::Bundle)
|
|
43
|
+
|
|
44
|
+
first_resource = bundle.entry.first&.resource
|
|
45
|
+
return first_resource if first_resource.is_a?(type)
|
|
46
|
+
|
|
47
|
+
# Fall back to the first matching resource if the Bundle is ordered unexpectedly.
|
|
48
|
+
bundle.entry.map(&:resource).find { |resource| resource.is_a?(type) }
|
|
49
|
+
rescue StandardError
|
|
50
|
+
nil
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def claim_item_sequences(claim)
|
|
54
|
+
Array(claim&.item).map(&:sequence).compact
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def claim_response_item_sequences(claim_response)
|
|
58
|
+
Array(claim_response&.item).map(&:itemSequence).compact
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Collects the steps for which the server returned a ClaimResponse, attaching the submitted
|
|
62
|
+
# Claim item sequences and the returned ClaimResponse item sequences.
|
|
63
|
+
def evaluated_update_steps
|
|
64
|
+
claim_update_response_steps.filter_map do |step|
|
|
65
|
+
request = tagged_update_request(step[:tag])
|
|
66
|
+
next if request.nil?
|
|
67
|
+
|
|
68
|
+
claim = submitted_claim(request)
|
|
69
|
+
claim_response = response_claim_response(request)
|
|
70
|
+
next if claim.nil? || claim_response.nil?
|
|
71
|
+
|
|
72
|
+
step.merge(submitted_sequences: claim_item_sequences(claim),
|
|
73
|
+
response_sequences: claim_response_item_sequences(claim_response))
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# The item-bearing steps (cancel-entire-request carries no items, so item.sequence checks do
|
|
78
|
+
# not apply to it).
|
|
79
|
+
def item_bearing_update_steps
|
|
80
|
+
evaluated_update_steps.reject { |step| step[:submitted_sequences].empty? }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# spec-34
|
|
85
|
+
class PASServerClaimUpdateItemSequenceEchoTest < Inferno::Test
|
|
86
|
+
include ServerClaimUpdateResponseValidation
|
|
87
|
+
|
|
88
|
+
id :pas_server_v221_claim_update_item_sequence_echo_test
|
|
89
|
+
title 'Server echoes item.sequence values in Claim Update responses'
|
|
90
|
+
description %(
|
|
91
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-34)
|
|
92
|
+
that each item returned on a ClaimResponse echoes the same `item.sequence` it had on the submitted Claim.
|
|
93
|
+
This test checks each Claim Update made during this group and confirms that every item returned in the
|
|
94
|
+
server's response corresponds to an item that was submitted.
|
|
95
|
+
)
|
|
96
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-34'
|
|
97
|
+
|
|
98
|
+
run do
|
|
99
|
+
steps = item_bearing_update_steps
|
|
100
|
+
skip_if steps.empty?,
|
|
101
|
+
'No Claim Update responses with items were returned by the server to verify.'
|
|
102
|
+
|
|
103
|
+
steps.each do |step|
|
|
104
|
+
unexpected = step[:response_sequences] - step[:submitted_sequences]
|
|
105
|
+
assert unexpected.empty?,
|
|
106
|
+
"In the server's response to the #{step[:label]}, the ClaimResponse returned " \
|
|
107
|
+
"item.itemSequence value(s) #{unexpected.join(', ')} that were not present on the submitted " \
|
|
108
|
+
'Claim. Each returned item SHALL echo an item.sequence from the submitted Claim.'
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# spec-46
|
|
114
|
+
class PASServerClaimUpdateCurrentResultsTest < Inferno::Test
|
|
115
|
+
include ServerClaimUpdateResponseValidation
|
|
116
|
+
|
|
117
|
+
id :pas_server_v221_claim_update_current_results_test
|
|
118
|
+
title 'Server returns current results for all submitted items in Claim Update responses'
|
|
119
|
+
description %(
|
|
120
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-46)
|
|
121
|
+
that a ClaimResponse includes the current results for all submitted items, including any items changed or
|
|
122
|
+
canceled since the original authorization request. This test checks each Claim Update made during this
|
|
123
|
+
group and confirms the server's response includes a result for every submitted item.
|
|
124
|
+
)
|
|
125
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-46'
|
|
126
|
+
|
|
127
|
+
run do
|
|
128
|
+
steps = item_bearing_update_steps
|
|
129
|
+
skip_if steps.empty?,
|
|
130
|
+
'No Claim Update responses with items were returned by the server to verify.'
|
|
131
|
+
|
|
132
|
+
steps.each do |step|
|
|
133
|
+
missing = step[:submitted_sequences] - step[:response_sequences]
|
|
134
|
+
assert missing.empty?,
|
|
135
|
+
"The server's response to the #{step[:label]} did not include results for all submitted items. " \
|
|
136
|
+
"Missing ClaimResponse item.itemSequence value(s): #{missing.join(', ')}. The returned " \
|
|
137
|
+
'ClaimResponse SHALL include the current results for all submitted items, including changed or ' \
|
|
138
|
+
'canceled items.'
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"resourceType" : "Bundle",
|
|
3
|
+
"id" : "ReferralAuthorizationBundleExample",
|
|
4
|
+
"meta" : {
|
|
5
|
+
"profile" : [
|
|
6
|
+
"http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle"
|
|
7
|
+
]
|
|
8
|
+
},
|
|
9
|
+
"identifier" : {
|
|
10
|
+
"system" : "http://example.org/SUBMITTER_TRANSACTION_IDENTIFIER",
|
|
11
|
+
"value" : "A12345"
|
|
12
|
+
},
|
|
13
|
+
"type" : "collection",
|
|
14
|
+
"timestamp" : "2005-05-02T11:01:00+05:00",
|
|
15
|
+
"entry" : []
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module DaVinciPASTestKit
|
|
2
|
+
module DaVinciPASV221
|
|
3
|
+
class PasServerInquiryErrorTest < Inferno::Test
|
|
4
|
+
id :pas_server_v221_prior_auth_inquiry_error
|
|
5
|
+
title %(
|
|
6
|
+
Server returns OperationOutcome instance when invoking the $inquire operation on the Claim endpoint
|
|
7
|
+
(/Claim/$inquire) with nonconformant PAS Request Bundle
|
|
8
|
+
)
|
|
9
|
+
description %(
|
|
10
|
+
A server SHALL support PAS Inquiry requests (a POST interaction to the /Claim/$inquire endpoint).
|
|
11
|
+
This test submits a Prior Authorization Inquiry request containing an empty Bundle
|
|
12
|
+
to the server and verifies that an OperationOutcome instance is returned with request
|
|
13
|
+
status 400 when a nonconformant PAS Inquiry Bundle is submitted.
|
|
14
|
+
|
|
15
|
+
It is possible that the incoming prior authorization Bundle can not be processed due to validation errors or
|
|
16
|
+
other non-business-errors. In these instances, the receiving system SHALL return OperationOutcome instances
|
|
17
|
+
that detail why the Bundle could not be processed and no ClaimResponse will be returned. These errors are NOT
|
|
18
|
+
the errors that are detected by the system processing the request and that can be conveyed in a ClaimResponse
|
|
19
|
+
via the error capability.
|
|
20
|
+
)
|
|
21
|
+
makes_request :pa_invalid_inquiry
|
|
22
|
+
|
|
23
|
+
run do
|
|
24
|
+
file_path = File.join(File.dirname(__FILE__), 'nonconformant_pas_bundle.json')
|
|
25
|
+
|
|
26
|
+
begin
|
|
27
|
+
invalid_bundle_json = JSON.parse(File.read(file_path))
|
|
28
|
+
fhir_operation('/Claim/$inquire', body: invalid_bundle_json, name: :pa_invalid_inquiry)
|
|
29
|
+
|
|
30
|
+
assert !(200..299).include?(response[:status]), 'HTTP status code should not be within the 2xx range'
|
|
31
|
+
assert_resource_type(:operation_outcome)
|
|
32
|
+
rescue JSON::ParserError => e
|
|
33
|
+
skip "Internal error parsing the invalid bundle JSON: #{e.message}"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module DaVinciPASTestKit
|
|
2
|
+
module DaVinciPASV221
|
|
3
|
+
class PasServerSubmissionErrorTest < Inferno::Test
|
|
4
|
+
id :pas_server_v221_prior_auth_submission_error
|
|
5
|
+
title %(
|
|
6
|
+
Server returns OperationOutcome instance when invoking the $submit operation on the Claim endpoint
|
|
7
|
+
(/Claim/$submit) with nonconformant PAS Request Bundle
|
|
8
|
+
)
|
|
9
|
+
description %{
|
|
10
|
+
A server SHALL support PAS prior authorization requests (a POST interaction to the /Claim/$submit endpoint).
|
|
11
|
+
This test submits a Prior Authorization (PA) request containing an empty Bundle
|
|
12
|
+
to the server and verifies that an OperationOutcome instance is returned with request
|
|
13
|
+
status 400 when a nonconformant PAS Request Bundle is submitted.
|
|
14
|
+
|
|
15
|
+
It is possible that the incoming prior authorization Bundle can not be processed due to validation errors or
|
|
16
|
+
other non-business-errors. In these instances, the receiving system SHALL return OperationOutcome instances
|
|
17
|
+
that detail why the Bundle could not be processed and no ClaimResponse will be returned. These errors are NOT
|
|
18
|
+
the errors that are detected by the system processing the request and that can be conveyed in a ClaimResponse
|
|
19
|
+
via the error capability.
|
|
20
|
+
|
|
21
|
+
The server SHOULD respond within 15 seconds.
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
output :response_time
|
|
25
|
+
makes_request :pa_invalid_request
|
|
26
|
+
|
|
27
|
+
run do
|
|
28
|
+
file_path = File.join(File.dirname(__FILE__), 'nonconformant_pas_bundle.json')
|
|
29
|
+
|
|
30
|
+
begin
|
|
31
|
+
invalid_bundle_json = JSON.parse(File.read(file_path))
|
|
32
|
+
start_time = Time.now
|
|
33
|
+
fhir_operation('/Claim/$submit', body: invalid_bundle_json, name: :pa_invalid_request)
|
|
34
|
+
end_time = Time.now
|
|
35
|
+
response_time = end_time - start_time
|
|
36
|
+
|
|
37
|
+
if response_time > 15
|
|
38
|
+
warning %(
|
|
39
|
+
The server took more that 15 seconds to respond to the Prior Authorization
|
|
40
|
+
request.
|
|
41
|
+
|
|
42
|
+
Response Time: #{response_time}
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
assert !(200..299).include?(response[:status]), 'HTTP status code should not be within the 2xx range'
|
|
47
|
+
assert_resource_type(:operation_outcome)
|
|
48
|
+
|
|
49
|
+
output response_time:
|
|
50
|
+
rescue JSON::ParserError => e
|
|
51
|
+
skip "Internal error parsing the invalid bundle JSON: #{e.message}"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/must_support/must_support_request_type_test'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
class PasServerMustSupportRequestProfilesTest < DaVinciPASTestKit::MustSupportRequestTypeTest
|
|
6
|
+
id :pas_server_v221_must_support_request_profiles
|
|
7
|
+
title %(
|
|
8
|
+
At least one instance of a request profile (PAS Medication Request, PAS Service Request,
|
|
9
|
+
PAS Device Request, or PAS Nutrition Order) is observed with all of its must support elements
|
|
10
|
+
)
|
|
11
|
+
description %(
|
|
12
|
+
**USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test.
|
|
13
|
+
Errors encountered will be treated as a skip instead of a failure.
|
|
14
|
+
|
|
15
|
+
The PAS IG includes four profiles for providing the specifics of the service or product requested
|
|
16
|
+
in the prior authorization request. Any one of these profiles can be referenced in
|
|
17
|
+
the must support element `Claim.item.extension:requestedService`:
|
|
18
|
+
|
|
19
|
+
* PAS Medication Request
|
|
20
|
+
* PAS Service Request
|
|
21
|
+
* PAS Device Request
|
|
22
|
+
* PAS Nutrition Order
|
|
23
|
+
|
|
24
|
+
System are allowed to support only the request profiles that fit their use cases. However,
|
|
25
|
+
they must support at least one of them (because `Claim.item.extension:requestedService` is a
|
|
26
|
+
must support element) and for any request profiles they support, they must be able to
|
|
27
|
+
populate all of the defined must support elements.
|
|
28
|
+
|
|
29
|
+
This test ensures that the submitted request bundles include at least one instance of a
|
|
30
|
+
profile listed above. Then for each profile observed, it checks for the presence of
|
|
31
|
+
each must support element defined in that profile.
|
|
32
|
+
|
|
33
|
+
The test will look through the instances included in submissions for the following must
|
|
34
|
+
support elements:
|
|
35
|
+
|
|
36
|
+
### PAS Medication Request
|
|
37
|
+
* MedicationRequest.authoredOn
|
|
38
|
+
* MedicationRequest.dispenseRequest
|
|
39
|
+
* MedicationRequest.dispenseRequest.quantity
|
|
40
|
+
* MedicationRequest.dosageInstruction
|
|
41
|
+
* MedicationRequest.dosageInstruction.text
|
|
42
|
+
* MedicationRequest.dosageInstruction.timing
|
|
43
|
+
* MedicationRequest.encounter
|
|
44
|
+
* MedicationRequest.extension:coverage
|
|
45
|
+
* MedicationRequest.intent
|
|
46
|
+
* MedicationRequest.medication[x]
|
|
47
|
+
* MedicationRequest.reported[x]
|
|
48
|
+
* MedicationRequest.requester
|
|
49
|
+
* MedicationRequest.status
|
|
50
|
+
* MedicationRequest.subject
|
|
51
|
+
|
|
52
|
+
### PAS Service Request
|
|
53
|
+
* ServiceRequest.code
|
|
54
|
+
* ServiceRequest.extension:coverage
|
|
55
|
+
* ServiceRequest.extension:serviceCodeEnd
|
|
56
|
+
* ServiceRequest.occurrence[x]
|
|
57
|
+
* ServiceRequest.quantity[x]
|
|
58
|
+
* ServiceRequest.subject
|
|
59
|
+
|
|
60
|
+
### PAS Device Request
|
|
61
|
+
* DeviceRequest.code[x]
|
|
62
|
+
* DeviceRequest.extension:coverage
|
|
63
|
+
* DeviceRequest.occurrence[x]
|
|
64
|
+
* DeviceRequest.subject
|
|
65
|
+
|
|
66
|
+
### PAS Nutrition Order
|
|
67
|
+
* NutritionOrder.enteralFormula
|
|
68
|
+
* NutritionOrder.enteralFormula.baseFormulaType
|
|
69
|
+
* NutritionOrder.extension:coverage
|
|
70
|
+
* NutritionOrder.oralDiet
|
|
71
|
+
* NutritionOrder.oralDiet.type
|
|
72
|
+
* NutritionOrder.patient
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
config(
|
|
76
|
+
options: {
|
|
77
|
+
profile_keys: ['device_request', 'medication_request', 'nutrition_order', 'service_request'],
|
|
78
|
+
user_input_validation: true,
|
|
79
|
+
ig_version: 'v2.2.1',
|
|
80
|
+
type: 'request',
|
|
81
|
+
operation: 'submit'
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative 'error_tests/pas_submission_error_test'
|
|
2
|
+
require_relative 'error_tests/pas_inquiry_error_test'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASServerErrorGroup < Inferno::TestGroup
|
|
7
|
+
title 'Demonstrate Error Handling'
|
|
8
|
+
description %(
|
|
9
|
+
Validates Prior Authorization transaction error handling for malformed
|
|
10
|
+
request bundles.
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
id :pas_v221_error_group
|
|
14
|
+
run_as_group
|
|
15
|
+
|
|
16
|
+
test from: :pas_server_v221_prior_auth_submission_error
|
|
17
|
+
test from: :pas_server_v221_prior_auth_inquiry_error
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
require_relative '../server_request_bundle_validation_test'
|
|
2
|
+
require_relative '../claim_submit_operation_test'
|
|
3
|
+
require_relative '../server_response_bundle_validation_test'
|
|
4
|
+
require_relative 'claim_updates/server_claim_update_response_tests'
|
|
5
|
+
require_relative '../../cross_suite/tags'
|
|
6
|
+
|
|
7
|
+
module DaVinciPASTestKit
|
|
8
|
+
module DaVinciPASV221
|
|
9
|
+
class PASServerClaimUpdatesGroup < Inferno::TestGroup
|
|
10
|
+
id :pas_server_v221_claim_updates
|
|
11
|
+
title 'Claim Updates'
|
|
12
|
+
description %(
|
|
13
|
+
Demonstrate the ability of the server to receive and respond to a sequence of Claim Update
|
|
14
|
+
`$submit` requests: an initial request, an update that adds an item, an update that modifies one
|
|
15
|
+
item and cancels another, and an update that cancels the entire request.
|
|
16
|
+
|
|
17
|
+
Inferno acts as the client: for each step it validates the tester-provided request Bundle, POSTs it
|
|
18
|
+
to the server's `/Claim/$submit` endpoint, and validates that the server's response Bundle is
|
|
19
|
+
conformant. The tester provides the four request Bundles (the same Bundles used to drive the Client
|
|
20
|
+
Suite's Claim Update tests can be reused here).
|
|
21
|
+
|
|
22
|
+
After the sequence is sent, the verification tests check the server's handling of updates against the
|
|
23
|
+
[updating authorization requests](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#updating-authorization-requests)
|
|
24
|
+
requirements of the PAS IG - that the returned ClaimResponse echoes submitted item sequences and
|
|
25
|
+
includes current results for all submitted items, including changed or canceled items.
|
|
26
|
+
)
|
|
27
|
+
run_as_group
|
|
28
|
+
|
|
29
|
+
claim_update_steps = [
|
|
30
|
+
{ key: 'initial', title: 'Initial submission',
|
|
31
|
+
input: :claim_update_initial_submit_payload,
|
|
32
|
+
input_title: 'PAS $submit Payload: Initial Claim',
|
|
33
|
+
use_case: 'initial claim submission', tag: CLAIM_UPDATE_INITIAL_TAG },
|
|
34
|
+
{ key: 'add_item', title: 'Update - add an item',
|
|
35
|
+
input: :claim_update_add_item_submit_payload,
|
|
36
|
+
input_title: 'PAS $submit Payload: Update Adding an Item',
|
|
37
|
+
use_case: 'add-item claim update', tag: CLAIM_UPDATE_ADD_ITEM_TAG },
|
|
38
|
+
{ key: 'modify_cancel', title: 'Update - modify an item and cancel an item',
|
|
39
|
+
input: :claim_update_modify_cancel_submit_payload,
|
|
40
|
+
input_title: 'PAS $submit Payload: Update Modifying and Canceling Items',
|
|
41
|
+
use_case: 'modify-and-cancel claim update', tag: CLAIM_UPDATE_MODIFY_CANCEL_TAG },
|
|
42
|
+
{ key: 'cancel_all', title: 'Update - cancel the entire request',
|
|
43
|
+
input: :claim_update_cancel_all_submit_payload,
|
|
44
|
+
input_title: 'PAS $submit Payload: Update Canceling the Entire Request',
|
|
45
|
+
use_case: 'cancel-entire-request claim update', tag: CLAIM_UPDATE_CANCEL_ALL_TAG }
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
claim_update_steps.each do |step|
|
|
49
|
+
group do
|
|
50
|
+
title step[:title]
|
|
51
|
+
|
|
52
|
+
test from: :pas_server_request_bundle_validation_test do
|
|
53
|
+
id :"pas_server_v221_claim_update_request_validation_#{step[:key]}"
|
|
54
|
+
title 'Provided $submit Request Bundle is conformant'
|
|
55
|
+
description %(
|
|
56
|
+
**USER INPUT VALIDATION**: This test validates input provided by the tester instead of the
|
|
57
|
+
system under test. Errors encountered will be treated as a skip instead of a failure.
|
|
58
|
+
|
|
59
|
+
This test validates the conformity of the tester-provided Claim Update request Bundle to the
|
|
60
|
+
PAS Request Bundle profile so that subsequent tests can accurately exercise the server.
|
|
61
|
+
)
|
|
62
|
+
config(
|
|
63
|
+
inputs: { bundle_payload: { name: step[:input], title: step[:input_title] } },
|
|
64
|
+
options: { operation: 'submit', use_case: step[:use_case], ig_version: 'v2.2.1' }
|
|
65
|
+
)
|
|
66
|
+
simulation_verification
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
test from: :pas_claim_submit_operation_test do
|
|
70
|
+
id :"pas_server_v221_claim_update_submit_#{step[:key]}"
|
|
71
|
+
config(
|
|
72
|
+
inputs: { pa_submit_request_payload: { name: step[:input], title: step[:input_title] } },
|
|
73
|
+
options: { use_case: step[:use_case], ig_version: 'v2.2.1', request_tag: step[:tag] }
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
test from: :pas_server_response_bundle_validation_test do
|
|
78
|
+
id :"pas_server_v221_claim_update_response_validation_#{step[:key]}"
|
|
79
|
+
title 'Server $submit Response Bundle is conformant'
|
|
80
|
+
description %(
|
|
81
|
+
This test validates the conformity of the server's response to the Claim Update `$submit`
|
|
82
|
+
request against the PAS Response Bundle profile.
|
|
83
|
+
)
|
|
84
|
+
config(
|
|
85
|
+
options: { use_case: step[:use_case], operation: 'submit', ig_version: 'v2.2.1',
|
|
86
|
+
request_tag: step[:tag] }
|
|
87
|
+
)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
group do
|
|
93
|
+
title "Verify the server's responses to the claim updates"
|
|
94
|
+
description %(
|
|
95
|
+
These tests check the server's responses from the submission sequence and verify that the server
|
|
96
|
+
returned current results for all submitted items and echoed the submitted item sequences.
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
test from: :pas_server_v221_claim_update_item_sequence_echo_test
|
|
100
|
+
test from: :pas_server_v221_claim_update_current_results_test
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require_relative '../../cross_suite/pas_subscription_verification'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
class PASServerSubscriptionInputConformance < Inferno::Test
|
|
6
|
+
include PASSubscriptionVerification
|
|
7
|
+
include SubscriptionsTestKit::SubscriptionConformanceVerification
|
|
8
|
+
|
|
9
|
+
id :pas_server_v221_subscription_input_conformance
|
|
10
|
+
title 'Verify Subscription PAS conformance'
|
|
11
|
+
description %(
|
|
12
|
+
This test accepts a Subscription resource as an input and verifies that it is conformant to PAS requirements on
|
|
13
|
+
the Subscriptions, including:
|
|
14
|
+
- The payload content type must be `full-resource`
|
|
15
|
+
- Conformance to the [PAS Subscription
|
|
16
|
+
profile](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscription)
|
|
17
|
+
- The channel type is `rest-hook`
|
|
18
|
+
- Inclusion of filter criteria for the client's organization.
|
|
19
|
+
)
|
|
20
|
+
input :subscription_resource
|
|
21
|
+
input :access_token,
|
|
22
|
+
title: 'Notification Access Token',
|
|
23
|
+
description: %(
|
|
24
|
+
An access token that the server under test will send to Inferno on notifications
|
|
25
|
+
so that the request gets associated with this test session. The token must be
|
|
26
|
+
provided as a `Bearer` token in the `Authorization` header of HTTP requests
|
|
27
|
+
sent to Inferno.
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
output :updated_subscription
|
|
31
|
+
|
|
32
|
+
simulation_verification
|
|
33
|
+
|
|
34
|
+
run do
|
|
35
|
+
omit_if subscription_resource.blank?, 'Did not input a Subscription resource of this type.'
|
|
36
|
+
|
|
37
|
+
assert_valid_json(subscription_resource)
|
|
38
|
+
subscription = JSON.parse(subscription_resource)
|
|
39
|
+
server_check_channel(subscription, access_token)
|
|
40
|
+
|
|
41
|
+
updated_subscription = subscription.to_json
|
|
42
|
+
output(updated_subscription:)
|
|
43
|
+
|
|
44
|
+
verify_pas_subscription(updated_subscription, ig_version: 'v2.2.1')
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../abstract_pas_subscription_notification_wait_test'
|
|
2
|
+
require_relative 'server_urls'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASSubscriptionNotificationWaitTest < AbstractPASSubscriptionNotificationWaitTest
|
|
7
|
+
include ServerURLs
|
|
8
|
+
|
|
9
|
+
id :pas_server_v221_subscription_notification_wait
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'subscriptions_test_kit'
|
|
2
|
+
require_relative 'pas_server_subscription_input_conformance'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASServerSubscriptionSetup < Inferno::TestGroup
|
|
7
|
+
id :pas_server_v221_subscription_setup
|
|
8
|
+
title 'Subscription Setup'
|
|
9
|
+
description %(
|
|
10
|
+
The Subscription Setup tests verify that the server supports creation of a rest-hook Subscription. The
|
|
11
|
+
Subscription instance created in these tests will be used for a notification in the pended workflow tests
|
|
12
|
+
later.
|
|
13
|
+
)
|
|
14
|
+
config inputs: { url: { name: :server_endpoint } }
|
|
15
|
+
input_order :server_endpoint, :smart_credentials, :access_token, :subscription_resource
|
|
16
|
+
run_as_group
|
|
17
|
+
|
|
18
|
+
test from: :pas_server_v221_subscription_input_conformance do
|
|
19
|
+
input :subscription_resource,
|
|
20
|
+
title: 'Pended Prior Authorization Subscription',
|
|
21
|
+
type: 'textarea',
|
|
22
|
+
description: %(
|
|
23
|
+
A Subscription resource in JSON format that Inferno will send to the server under test so that it
|
|
24
|
+
can demonstrate its ability to notify Inferno when pended prior authorization requests have been
|
|
25
|
+
updated. The instance must be conformant to the R4/B Topic-Based Subscription profile. Inferno may
|
|
26
|
+
modify the Subscription before submission, e.g., to point to Inferno's notification endpoint.
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
test from: :subscriptions_r4_server_notification_delivery,
|
|
30
|
+
title: 'Send Subscription and Receive Handshake Notification from Server',
|
|
31
|
+
description: %(
|
|
32
|
+
This test sends a request to create the Subscription resource to the Subscriptions Backport FHIR Server.
|
|
33
|
+
If successful, it then waits for a handshake
|
|
34
|
+
[notification](https://hl7.org/fhir/uv/subscriptions-backport/STU1.1/notifications.html#notifications).
|
|
35
|
+
Other types of notifications, including heartbeat and event notifications, will be accepted by Inferno
|
|
36
|
+
but ignored by this test group.
|
|
37
|
+
)
|
|
38
|
+
test from: :subscriptions_r4_server_creation_response_conformance
|
|
39
|
+
test from: :subscriptions_r4_server_handshake_conformance
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/davinci_pas_test_kit.rb
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
require_relative 'davinci_pas_test_kit/ext/inferno_core/runnable'
|
|
1
2
|
require_relative 'davinci_pas_test_kit/metadata'
|
|
2
|
-
require_relative 'davinci_pas_test_kit/client_suite'
|
|
3
|
-
require_relative 'davinci_pas_test_kit/
|
|
3
|
+
require_relative 'davinci_pas_test_kit/client/v2.0.1/client_suite'
|
|
4
|
+
require_relative 'davinci_pas_test_kit/client/v2.2.1/client_suite'
|
|
5
|
+
require_relative 'davinci_pas_test_kit/server/generated/v2.0.1/server_suite'
|
|
6
|
+
require_relative 'davinci_pas_test_kit/server/generated/v2.2.1/server_suite'
|