davinci_pas_test_kit 0.14.0 → 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} +19 -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} +19 -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} +198 -62
- 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} +33 -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 +7 -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 +13 -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 +19 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_inquiry/metadata.yml +59 -22
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_update/metadata.yml +60 -22
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claiminquiryresponse/metadata.yml +17 -10
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claimresponse/metadata.yml +17 -13
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/communication_request/metadata.yml +7 -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 +1 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/encounter/metadata.yml +6 -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 +1 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/metadata.yml +276 -135
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/nutrition_order/metadata.yml +1 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_request_bundle/metadata.yml +5 -7
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_response_bundle/metadata.yml +5 -5
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_request_bundle/metadata.yml +5 -7
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_response_bundle/metadata.yml +5 -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 +2 -6
- data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/subscriber/metadata.yml +11 -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 +199 -192
- 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} +383 -56
- 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} +19 -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 -20
- 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} +19 -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} +19 -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 +14 -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 +5 -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 +386 -190
- 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 -50
- 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/client/v2.2.1/workflows/pas_client_claim_update_validation_utils.rb
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/tags'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# Shared helpers for the Claim Update verification tests. These tests reload the
|
|
6
|
+
# requests received during the Claim Update wait tests (by their unique tags) and
|
|
7
|
+
# inspect the submitted PAS Claim Update Bundles against the relevant conformance
|
|
8
|
+
# requirements. No live state is used - everything is reloaded from the tagged,
|
|
9
|
+
# persisted requests.
|
|
10
|
+
module ClaimUpdateValidationUtils
|
|
11
|
+
CERTIFICATION_TYPE_EXTENSION_URL =
|
|
12
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-certificationType'.freeze
|
|
13
|
+
INFO_CHANGED_EXTENSION_URL =
|
|
14
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-infoChanged'.freeze
|
|
15
|
+
INFO_CANCELLED_EXTENSION_URL =
|
|
16
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/modifierextension-infoCancelled'.freeze
|
|
17
|
+
CERTIFICATION_TYPE_CANCEL_CODE = '3'.freeze
|
|
18
|
+
# The PAS Information Change Mode value set (CodeSystem PASTempCodes) defines exactly
|
|
19
|
+
# these two codes: 'added' (new information) and 'changed' (previously sent info changed).
|
|
20
|
+
INFO_CHANGE_MODE_CODES = %w[added changed].freeze
|
|
21
|
+
|
|
22
|
+
# The ordered Claim Update submissions, paired with the unique tag each was stored under.
|
|
23
|
+
def claim_update_steps
|
|
24
|
+
[
|
|
25
|
+
{ label: 'initial submission', tag: CLAIM_UPDATE_INITIAL_TAG },
|
|
26
|
+
{ label: 'add-item update', tag: CLAIM_UPDATE_ADD_ITEM_TAG },
|
|
27
|
+
{ label: 'modify-and-cancel update', tag: CLAIM_UPDATE_MODIFY_CANCEL_TAG },
|
|
28
|
+
{ label: 'cancel-entire-request update', tag: CLAIM_UPDATE_CANCEL_ALL_TAG }
|
|
29
|
+
]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# The submissions that are updates to a previously submitted Claim (everything except
|
|
33
|
+
# the initial submission).
|
|
34
|
+
def claim_update_updates
|
|
35
|
+
claim_update_steps.drop(1)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# The submissions that carry item/supportingInfo detail and can be compared against the
|
|
39
|
+
# immediately prior version. The cancel-entire-request update is excluded because it needs
|
|
40
|
+
# no items.
|
|
41
|
+
def claim_update_detail_chain
|
|
42
|
+
claim_update_steps.take(3)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Reloads the most recent request stored under `tag` and parses it as a FHIR::Bundle.
|
|
46
|
+
# Returns nil if no such request was received or it does not parse to a Bundle.
|
|
47
|
+
def claim_update_bundle(tag)
|
|
48
|
+
request = load_tagged_requests(tag).last
|
|
49
|
+
return nil if request.nil? || request.request_body.blank?
|
|
50
|
+
|
|
51
|
+
resource = FHIR.from_contents(request.request_body)
|
|
52
|
+
resource.is_a?(FHIR::Bundle) ? resource : nil
|
|
53
|
+
rescue StandardError
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# The Claim being submitted is the first Claim entry in a PAS Request Bundle.
|
|
58
|
+
def first_claim(bundle)
|
|
59
|
+
return nil if bundle.nil?
|
|
60
|
+
|
|
61
|
+
bundle.entry.map(&:resource).find { |resource| resource.is_a?(FHIR::Claim) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Builds ordered prior/current Claim comparisons across the detail chain, skipping any
|
|
65
|
+
# link where a request was not received.
|
|
66
|
+
def claim_update_detail_comparisons
|
|
67
|
+
claims = claim_update_detail_chain.map do |step|
|
|
68
|
+
bundle = claim_update_bundle(step[:tag])
|
|
69
|
+
{ label: step[:label], claim: first_claim(bundle) }
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
claims.each_cons(2).filter_map do |prior, current|
|
|
73
|
+
next if prior[:claim].nil? || current[:claim].nil?
|
|
74
|
+
|
|
75
|
+
{ prior: prior[:claim], current: current[:claim],
|
|
76
|
+
prior_label: prior[:label], current_label: current[:label] }
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Finds the bundle entry that a reference points to, accommodating absolute fullUrls,
|
|
81
|
+
# urn:uuid fullUrls, and relative "ResourceType/id" references.
|
|
82
|
+
# NOTE: purposefully more permissive than strict FHIR Bundle reference resolution logic
|
|
83
|
+
# to allow for evaluation. Other steps will catch issues like missing fullUrl values.
|
|
84
|
+
def bundle_entry_for_reference(bundle, reference)
|
|
85
|
+
return nil if bundle.nil? || reference.blank?
|
|
86
|
+
|
|
87
|
+
bundle.entry.find do |entry|
|
|
88
|
+
next false if entry.nil?
|
|
89
|
+
|
|
90
|
+
resource = entry.resource
|
|
91
|
+
full_url = entry.fullUrl.to_s
|
|
92
|
+
full_url == reference ||
|
|
93
|
+
(resource && "#{resource.resourceType}/#{resource.id}" == reference) ||
|
|
94
|
+
(full_url.present? && full_url.end_with?("/#{reference}"))
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def related_claim_references(claim)
|
|
99
|
+
Array(claim&.related).filter_map { |related| related.claim&.reference }
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def entry_sequences(entries)
|
|
103
|
+
Array(entries).map(&:sequence).compact
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def index_by_sequence(entries)
|
|
107
|
+
Array(entries).to_h { |entry| [entry.sequence, entry] }
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def entry_kind(entry)
|
|
111
|
+
entry.class.name.to_s.split('::').last == 'Item' ? 'item' : 'supportingInfo'
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Returns true if the element (an item or the Claim itself) carries a certificationType
|
|
115
|
+
# extension with code 3 (Cancel).
|
|
116
|
+
def certification_type_cancel?(element)
|
|
117
|
+
Array(element&.extension).any? do |extension|
|
|
118
|
+
extension.url == CERTIFICATION_TYPE_EXTENSION_URL &&
|
|
119
|
+
Array(extension.valueCodeableConcept&.coding).any? do |coding|
|
|
120
|
+
coding.code == CERTIFICATION_TYPE_CANCEL_CODE
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def info_cancelled_extension(element)
|
|
126
|
+
Array(element&.modifierExtension).find { |extension| extension.url == INFO_CANCELLED_EXTENSION_URL }
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def info_cancelled?(element)
|
|
130
|
+
info_cancelled_extension(element)&.valueBoolean == true
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def info_changed_extension(element)
|
|
134
|
+
Array(element&.extension).find { |extension| extension.url == INFO_CHANGED_EXTENSION_URL }
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# An entry is treated as "canceled" when it carries either change marker.
|
|
138
|
+
def cancellation_marked?(element)
|
|
139
|
+
certification_type_cancel?(element) || info_cancelled_extension(element).present?
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def newly_cancelled?(current_entry, prior_entry)
|
|
143
|
+
info_cancelled?(current_entry) && !info_cancelled?(prior_entry)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Compares an entry against its prior version, ignoring the change-tracking extensions
|
|
147
|
+
# (infoChanged, certificationType) and modifier extension (infoCancelled), to determine
|
|
148
|
+
# whether its substantive content was modified.
|
|
149
|
+
def entry_modified?(current_entry, prior_entry)
|
|
150
|
+
normalized_entry_hash(current_entry) != normalized_entry_hash(prior_entry)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def normalized_entry_hash(entry)
|
|
154
|
+
hash = entry.to_hash
|
|
155
|
+
if hash['extension'].is_a?(Array)
|
|
156
|
+
hash['extension'] = hash['extension'].reject do |extension|
|
|
157
|
+
[INFO_CHANGED_EXTENSION_URL, CERTIFICATION_TYPE_EXTENSION_URL].include?(extension['url'])
|
|
158
|
+
end
|
|
159
|
+
hash.delete('extension') if hash['extension'].empty?
|
|
160
|
+
end
|
|
161
|
+
if hash['modifierExtension'].is_a?(Array)
|
|
162
|
+
hash['modifierExtension'] = hash['modifierExtension'].reject do |extension|
|
|
163
|
+
extension['url'] == INFO_CANCELLED_EXTENSION_URL
|
|
164
|
+
end
|
|
165
|
+
hash.delete('modifierExtension') if hash['modifierExtension'].empty?
|
|
166
|
+
end
|
|
167
|
+
hash
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Collects the Claim Update steps for which a request was actually received, attaching the
|
|
171
|
+
# parsed Bundle and Claim. Used by tests that inspect each submission independently.
|
|
172
|
+
def received_claim_update_steps(steps = claim_update_steps)
|
|
173
|
+
steps.filter_map do |step|
|
|
174
|
+
bundle = claim_update_bundle(step[:tag])
|
|
175
|
+
claim = first_claim(bundle)
|
|
176
|
+
next if claim.nil?
|
|
177
|
+
|
|
178
|
+
step.merge(bundle:, claim:)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../../abstract_denial_submit_test'
|
|
2
|
+
require_relative '../urls'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASClientDenialSubmitTest < AbstractDenialSubmitTest
|
|
7
|
+
include URLs
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_denial_submit_test
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/pas_bundle_validation'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
class PasClientInquireRequestBundleValidationTest < Inferno::Test
|
|
6
|
+
include DaVinciPASTestKit::PasBundleValidation
|
|
7
|
+
|
|
8
|
+
id :pas_client_v221_inquire_request_bundle_validation_test
|
|
9
|
+
title '$inquire request Bundles have the correct structure and content'
|
|
10
|
+
description %(
|
|
11
|
+
This test verifies the conformity of the client's request body to the
|
|
12
|
+
[PAS Inquiry Request Bundle](http://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-pas-inquiry-request-bundle.html)
|
|
13
|
+
structure. It also checks that other conformance requirements defined in the [PAS Formal
|
|
14
|
+
Specification](https://hl7.org/fhir/us/davinci-pas/2.2.1/specification.html),
|
|
15
|
+
such as the presence of all referenced instances within the bundle and the
|
|
16
|
+
conformance of those instances to the appropriate profiles, are met.
|
|
17
|
+
|
|
18
|
+
It verifies the presence of mandatory elements and that elements with
|
|
19
|
+
required bindings contain appropriate values. CodeableConcept element
|
|
20
|
+
bindings will fail if none of their codings have a code/system belonging
|
|
21
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
|
22
|
+
fail if their code/system are not found in the valueset.
|
|
23
|
+
|
|
24
|
+
Note that because X12 value sets are not public, elements bound to value
|
|
25
|
+
sets containing X12 codes are not validated.
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def request_type_tag
|
|
29
|
+
INQUIRE_TAG
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def workflow_tag
|
|
33
|
+
config.options[:workflow_tag]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
run do
|
|
37
|
+
if workflow_tag.present?
|
|
38
|
+
load_tagged_requests(request_type_tag, workflow_tag)
|
|
39
|
+
else
|
|
40
|
+
load_tagged_requests(request_type_tag)
|
|
41
|
+
end
|
|
42
|
+
skip_if !request.present?, 'No inquire requests received.'
|
|
43
|
+
|
|
44
|
+
validate_pas_bundle_json(
|
|
45
|
+
request.request_body,
|
|
46
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle',
|
|
47
|
+
'2.2.1',
|
|
48
|
+
'inquire',
|
|
49
|
+
'request_bundle',
|
|
50
|
+
message: 'The Bundle provided for the Claim/$inquire operation is invalid:'
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/pas_bundle_validation'
|
|
2
|
+
require_relative '../../user_input_response'
|
|
3
|
+
require_relative '../../response_generator'
|
|
4
|
+
|
|
5
|
+
module DaVinciPASTestKit
|
|
6
|
+
module DaVinciPASV221
|
|
7
|
+
class PasClientInquireResponseBundleValidationTest < Inferno::Test
|
|
8
|
+
include DaVinciPASTestKit::PasBundleValidation
|
|
9
|
+
include UserInputResponse
|
|
10
|
+
include ResponseGenerator
|
|
11
|
+
|
|
12
|
+
id :pas_client_v221_inquire_response_bundle_validation_test
|
|
13
|
+
title '$inquire response Bundles have the correct structure and content'
|
|
14
|
+
description %(
|
|
15
|
+
This test verifies the conformity of the inquire response sent by Inferno, which will have been
|
|
16
|
+
either:
|
|
17
|
+
- the response body provided by the tester in the corresponding input, or
|
|
18
|
+
- created by Inferno from the $inquire Bundle.
|
|
19
|
+
|
|
20
|
+
In either case, this test verifies the conformity of the response body to the
|
|
21
|
+
[PAS Inquiry Response Bundle](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-pas-inquiry-response-bundle.html)
|
|
22
|
+
structure. It also checks that other conformance requirements defined in the [PAS Formal
|
|
23
|
+
Specification](https://hl7.org/fhir/us/davinci-pas/2.2.1/specification.html),
|
|
24
|
+
such as the presence of all referenced instances within the bundle and the
|
|
25
|
+
conformance of those instances to the appropriate profiles, are met.
|
|
26
|
+
|
|
27
|
+
It verifies the presence of mandatory elements and that elements with
|
|
28
|
+
required bindings contain appropriate values. CodeableConcept element
|
|
29
|
+
bindings will fail if none of their codings have a code/system belonging
|
|
30
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
|
31
|
+
fail if their code/system are not found in the valueset.
|
|
32
|
+
|
|
33
|
+
Note that because X12 value sets are not public, elements bound to value
|
|
34
|
+
sets containing X12 codes are not validated.
|
|
35
|
+
)
|
|
36
|
+
simulation_verification
|
|
37
|
+
|
|
38
|
+
def request_type
|
|
39
|
+
'inquire'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def workflow_tag
|
|
43
|
+
config.options[:workflow_tag]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def target_user_input
|
|
47
|
+
case workflow_tag
|
|
48
|
+
when MUST_SUPPORT_WORKFLOW_TAG
|
|
49
|
+
:ms_inquire_responses
|
|
50
|
+
else
|
|
51
|
+
:inquire_json_response
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
run do
|
|
56
|
+
load_tagged_requests(workflow_tag, INQUIRE_TAG)
|
|
57
|
+
skip_if requests.empty?, 'No responses to verify because no inquire requests were made.'
|
|
58
|
+
message = if workflow_tag == MUST_SUPPORT_WORKFLOW_TAG
|
|
59
|
+
'Invalid must support response bundle provided:'
|
|
60
|
+
elsif user_inputted_response? target_user_input
|
|
61
|
+
"Invalid response generated from provided input '#{input_title(target_user_input)}':"
|
|
62
|
+
else
|
|
63
|
+
'Invalid response generated from the submitted claim:'
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
validate_pas_bundle_json(
|
|
67
|
+
request.response_body,
|
|
68
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle',
|
|
69
|
+
'2.2.1',
|
|
70
|
+
request_type,
|
|
71
|
+
'response_bundle',
|
|
72
|
+
skips: true,
|
|
73
|
+
message:
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../../abstract_modification_submit_test'
|
|
2
|
+
require_relative '../urls'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASClientModificationSubmitTest < AbstractModificationSubmitTest
|
|
7
|
+
include URLs
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_modification_submit_test
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/tags'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
class PasClientModificationVerificationTest < Inferno::Test
|
|
6
|
+
id :pas_client_v221_modification_verification_test
|
|
7
|
+
title '$submit response represents a payer modification'
|
|
8
|
+
description %(
|
|
9
|
+
In PAS v2.2.1, a payer may authorize items that differ from those that were requested. This test
|
|
10
|
+
verifies that the response returned for the $submit request represents such a payer modification by
|
|
11
|
+
checking that:
|
|
12
|
+
|
|
13
|
+
- at least one `ClaimResponse.item` entry has an adjudication review action code of A6 ('Modified'), and
|
|
14
|
+
- each modified item is paired with a `ClaimResponse.addItem` entry that references it via the same
|
|
15
|
+
`itemSequence` value, conveying the details of what was actually authorized.
|
|
16
|
+
|
|
17
|
+
The response checked here is either the response body provided by the tester in the corresponding
|
|
18
|
+
input or the one generated by Inferno from the $submit Bundle.
|
|
19
|
+
)
|
|
20
|
+
simulation_verification
|
|
21
|
+
|
|
22
|
+
REVIEW_ACTION_URL =
|
|
23
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewAction'.freeze
|
|
24
|
+
REVIEW_ACTION_CODE_URL =
|
|
25
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionCode'.freeze
|
|
26
|
+
MODIFIED_REVIEW_ACTION_CODE = 'A6'.freeze
|
|
27
|
+
|
|
28
|
+
run do
|
|
29
|
+
load_tagged_requests(MODIFICATION_WORKFLOW_TAG, SUBMIT_TAG)
|
|
30
|
+
skip_if requests.empty?, 'No responses to verify because no submit requests were made.'
|
|
31
|
+
|
|
32
|
+
# Log findings directly to the result rather than asserting inline so that every issue
|
|
33
|
+
# across all received responses is reported in a single run instead of halting on the first.
|
|
34
|
+
requests.each { |submit_request| check_modification_response(submit_request) }
|
|
35
|
+
|
|
36
|
+
assert_no_error_messages('The $submit response does not represent a payer modification. ' \
|
|
37
|
+
'See Messages for details.')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def check_modification_response(submit_request)
|
|
41
|
+
claim_response = claim_response_from_response_body(submit_request.response_body)
|
|
42
|
+
if claim_response.blank?
|
|
43
|
+
add_message('error', 'No ClaimResponse was found in the $submit response.')
|
|
44
|
+
return
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
modified_sequences = modified_item_sequences(claim_response)
|
|
48
|
+
if modified_sequences.blank?
|
|
49
|
+
add_message('error',
|
|
50
|
+
'Expected at least one ClaimResponse.item entry with an adjudication review action code of ' \
|
|
51
|
+
"'#{MODIFIED_REVIEW_ACTION_CODE}' (Modified), but none were found.")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
add_item_sequences = Array(claim_response.addItem).flat_map { |add_item| Array(add_item.itemSequence) }
|
|
55
|
+
missing = modified_sequences.reject { |sequence| add_item_sequences.include?(sequence) }
|
|
56
|
+
return if missing.empty?
|
|
57
|
+
|
|
58
|
+
add_message('error',
|
|
59
|
+
'Each modified item must be paired with a ClaimResponse.addItem entry that has the same ' \
|
|
60
|
+
"itemSequence. No matching addItem was found for itemSequence(s): #{missing.join(', ')}.")
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Extracts the ClaimResponse from a $submit response body, unwrapping the Parameters resource
|
|
64
|
+
# that wraps the Bundle for v2.2.1 inquire responses if one is present.
|
|
65
|
+
def claim_response_from_response_body(response_body)
|
|
66
|
+
resource = FHIR.from_contents(response_body)
|
|
67
|
+
return if resource.blank?
|
|
68
|
+
|
|
69
|
+
bundle =
|
|
70
|
+
if resource.is_a?(FHIR::Parameters)
|
|
71
|
+
resource.parameter&.map(&:resource)&.find { |r| r.is_a?(FHIR::Bundle) }
|
|
72
|
+
else
|
|
73
|
+
resource
|
|
74
|
+
end
|
|
75
|
+
return unless bundle.is_a?(FHIR::Bundle)
|
|
76
|
+
|
|
77
|
+
bundle.entry&.map(&:resource)&.find { |r| r.is_a?(FHIR::ClaimResponse) }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def modified_item_sequences(claim_response)
|
|
81
|
+
Array(claim_response.item).select { |item| item_modified?(item) }.map(&:itemSequence).compact
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def item_modified?(item)
|
|
85
|
+
Array(item.adjudication).any? { |adjudication| adjudication_modified?(adjudication) }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def adjudication_modified?(adjudication)
|
|
89
|
+
review_action = Array(adjudication.extension).find { |ext| ext.url == REVIEW_ACTION_URL }
|
|
90
|
+
return false if review_action.blank?
|
|
91
|
+
|
|
92
|
+
review_action_code = Array(review_action.extension).find { |ext| ext.url == REVIEW_ACTION_CODE_URL }
|
|
93
|
+
return false if review_action_code&.valueCodeableConcept.blank?
|
|
94
|
+
|
|
95
|
+
Array(review_action_code.valueCodeableConcept.coding).any? do |coding|
|
|
96
|
+
coding.code == MODIFIED_REVIEW_ACTION_CODE
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require_relative '../urls'
|
|
2
|
+
require_relative '../../client_input_descriptions'
|
|
3
|
+
require_relative '../../user_input_response'
|
|
4
|
+
require_relative '../../../cross_suite/pas_bundle_validation'
|
|
5
|
+
require_relative '../../session_identification'
|
|
6
|
+
|
|
7
|
+
module DaVinciPASTestKit
|
|
8
|
+
module DaVinciPASV221
|
|
9
|
+
class PASClientPendedSubmitTest < Inferno::Test
|
|
10
|
+
include URLs
|
|
11
|
+
include SessionIdentification
|
|
12
|
+
include UserInputResponse
|
|
13
|
+
include PasBundleValidation
|
|
14
|
+
|
|
15
|
+
id :pas_client_v221_pended_submit_test
|
|
16
|
+
title 'PAS Client submits a claim and receives a final decision via a notification'
|
|
17
|
+
description %(
|
|
18
|
+
Inferno will wait for a prior authorization submission request
|
|
19
|
+
from the client. Upon receipt, Inferno will respond with the
|
|
20
|
+
provided pended response. Subsequently, Inferno will send a
|
|
21
|
+
full-resource notification containing the final decision.
|
|
22
|
+
In v2.2.1, no follow-up `$inquire` request is needed as the
|
|
23
|
+
notification includes all details.
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
config options: { accepts_multiple_requests: true }
|
|
27
|
+
input :notification_bundle,
|
|
28
|
+
title: 'Claim updated notification JSON',
|
|
29
|
+
type: 'textarea',
|
|
30
|
+
optional: true,
|
|
31
|
+
description: %(
|
|
32
|
+
If provided, this JSON will be sent as the notification for the
|
|
33
|
+
PAS Subscription to tell the client that a decision has been made on the pended claim.
|
|
34
|
+
Before sending, Inferno will update the provided notification with details that the tester cannot
|
|
35
|
+
know ahead of time, including timestamps corresponding to the notification trigger time, and the id of
|
|
36
|
+
the triggering ClaimResponse if Inferno mocks that ClaimResponse because it is not provided by the
|
|
37
|
+
tester through the *Claim pended response JSON* input.
|
|
38
|
+
If not provided, a notification will be generated from the returned ClaimResponse.
|
|
39
|
+
In either case the response will be validated to ensure that the notification
|
|
40
|
+
is conformant. For v2.2.1, the notification will be a full-resource notification
|
|
41
|
+
containing the complete ClaimResponse.
|
|
42
|
+
)
|
|
43
|
+
input :pended_json_response,
|
|
44
|
+
title: 'Claim pended response JSON',
|
|
45
|
+
type: 'textarea',
|
|
46
|
+
optional: true,
|
|
47
|
+
description: %(
|
|
48
|
+
If provided, this JSON will be sent in response to $submit requests during this test
|
|
49
|
+
to indicate that the request has been pended awaiting a final decision.
|
|
50
|
+
It will be updated to make creation timestamps current.
|
|
51
|
+
If not provided, a pended response will be generated from the submitted Claim.
|
|
52
|
+
In either case the response will be validated against the PAS Response Bundle profile.
|
|
53
|
+
)
|
|
54
|
+
input :client_endpoint_access_token,
|
|
55
|
+
optional: true,
|
|
56
|
+
title: 'Client Notification Access Token',
|
|
57
|
+
description: %(
|
|
58
|
+
The bearer token that Inferno will send on requests to the client under test's rest-hook notification
|
|
59
|
+
endpoint. Not needed if the client under test will create a Subscription with an appropriate header value
|
|
60
|
+
in the `channel.header` element. If a value for the `authorization` header is provided in
|
|
61
|
+
`channel.header`, this value will override it.
|
|
62
|
+
)
|
|
63
|
+
input :client_id,
|
|
64
|
+
title: 'Client Id',
|
|
65
|
+
type: 'text',
|
|
66
|
+
optional: true,
|
|
67
|
+
locked: true,
|
|
68
|
+
description: INPUT_CLIENT_ID_LOCKED
|
|
69
|
+
input :session_url_path,
|
|
70
|
+
title: 'Session-specific URL path extension',
|
|
71
|
+
type: 'text',
|
|
72
|
+
optional: true,
|
|
73
|
+
locked: true,
|
|
74
|
+
description: INPUT_SESSION_URL_PATH_LOCKED
|
|
75
|
+
|
|
76
|
+
submit_respond_with :pended_json_response
|
|
77
|
+
output :confirmation_url
|
|
78
|
+
|
|
79
|
+
run do
|
|
80
|
+
load_tagged_requests(SUBSCRIPTION_CREATE_TAG)
|
|
81
|
+
skip_if requests.empty?, # NOTE: subscription needed ahead of time to support notification generation
|
|
82
|
+
%(
|
|
83
|
+
Pended workflow tests cannot proceed because no Subscription exists to receive notifications
|
|
84
|
+
for pended claims. Run the _PAS Subscription Setup_ tests to provide a Subscription for use
|
|
85
|
+
in delivering notifications before re-running the pended workflow tests.
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
if user_inputted_response? :pended_json_response
|
|
89
|
+
assert_valid_json pended_json_response,
|
|
90
|
+
"Input '#{input_title(:pended_json_response)}' must be valid JSON"
|
|
91
|
+
else
|
|
92
|
+
add_message('info', %(
|
|
93
|
+
No pended response provided in input '#{input_title(:pended_json_response)}'. Any responses to $submit
|
|
94
|
+
requests will be generated by Inferno from the submitted Claim.
|
|
95
|
+
))
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
if notification_bundle.present?
|
|
99
|
+
assert_valid_json notification_bundle,
|
|
100
|
+
"Input '#{input_title(:notification_bundle)}' must be valid JSON"
|
|
101
|
+
else
|
|
102
|
+
add_message('info', %(
|
|
103
|
+
No notification body provided in input '#{input_title(:notification_bundle)}'. When sending a
|
|
104
|
+
notification finalizing a pended $submit response, the notification body will be generated by Inferno
|
|
105
|
+
from the submitted Claim.
|
|
106
|
+
))
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
wait_identifier = session_wait_identifier(client_id, session_url_path)
|
|
110
|
+
submit_endpoint = session_endpoint_url(:submit, client_id, session_url_path)
|
|
111
|
+
confirmation_url = "#{resume_pass_url}?token=#{wait_identifier}"
|
|
112
|
+
output(confirmation_url:)
|
|
113
|
+
|
|
114
|
+
wait(
|
|
115
|
+
identifier: wait_identifier,
|
|
116
|
+
timeout: 600,
|
|
117
|
+
message: %(
|
|
118
|
+
**Pended Workflow Test**:
|
|
119
|
+
|
|
120
|
+
1. Submit a PAS request to
|
|
121
|
+
|
|
122
|
+
`#{submit_endpoint}`
|
|
123
|
+
|
|
124
|
+
If the optional '**#{input_title(:pended_json_response)}**' input is populated, it will
|
|
125
|
+
be returned, updated with current timestamps. Otherwise, a pended response will
|
|
126
|
+
be generated by Inferno using the received Claim.
|
|
127
|
+
|
|
128
|
+
2. Within 5-10 seconds, Inferno will send a full-resource notification indicating that the
|
|
129
|
+
ClaimResponse has been finalized. The notification will contain the complete updated
|
|
130
|
+
ClaimResponse. If the optional '**#{input_title(:notification_bundle)}**' input is populated
|
|
131
|
+
Inferno will send it as a notification. Otherwise, a notification will be generated
|
|
132
|
+
from Inferno. In either case, the notification will be delivered to the endpoint provided on the
|
|
133
|
+
Subscription during the _PAS Subscription Setup_ tests.
|
|
134
|
+
|
|
135
|
+
Note that Inferno will ask testers to attest to correct behavior of the system between these steps,
|
|
136
|
+
i.e., that the system marked the pended prior auth request appropriately after step 1 (submit) but
|
|
137
|
+
before step 2 (notification). Thus testers should check their system state as appropriate in order
|
|
138
|
+
to be able to faithfully answer the attestations.
|
|
139
|
+
|
|
140
|
+
Once the client has completed these steps,
|
|
141
|
+
[click here to complete the test](#{confirmation_url})
|
|
142
|
+
and continue Inferno's evaluation of the interaction.
|
|
143
|
+
)
|
|
144
|
+
)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require_relative '../../../cross_suite/pas_bundle_validation'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
class PasClientRequestBundleValidationTest < Inferno::Test
|
|
6
|
+
include DaVinciPASTestKit::PasBundleValidation
|
|
7
|
+
|
|
8
|
+
id :pas_client_v221_request_bundle_validation_test
|
|
9
|
+
title '$submit request Bundles have the correct structure and content'
|
|
10
|
+
description %(
|
|
11
|
+
This test verifies the conformity of the client's submit request body to the
|
|
12
|
+
[PAS Request Bundle](http://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-pas-request-bundle.html)
|
|
13
|
+
structure. It also checks that other conformance requirements defined in the [PAS Formal
|
|
14
|
+
Specification](https://hl7.org/fhir/us/davinci-pas/2.2.1/specification.html),
|
|
15
|
+
such as the presence of all referenced instances within the bundle and the
|
|
16
|
+
conformance of those instances to the appropriate profiles, are met.
|
|
17
|
+
|
|
18
|
+
It verifies the presence of mandatory elements and that elements with
|
|
19
|
+
required bindings contain appropriate values. CodeableConcept element
|
|
20
|
+
bindings will fail if none of their codings have a code/system belonging
|
|
21
|
+
to the bound ValueSet. Quantity, Coding, and code element bindings will
|
|
22
|
+
fail if their code/system are not found in the valueset.
|
|
23
|
+
|
|
24
|
+
Note that because X12 value sets are not public, elements bound to value
|
|
25
|
+
sets containing X12 codes are not validated.
|
|
26
|
+
)
|
|
27
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-1'
|
|
28
|
+
|
|
29
|
+
def workflow_tag
|
|
30
|
+
config.options[:workflow_tag]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def request_type_tag
|
|
34
|
+
SUBMIT_TAG
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
run do
|
|
38
|
+
if workflow_tag.present?
|
|
39
|
+
load_tagged_requests(request_type_tag, workflow_tag)
|
|
40
|
+
else
|
|
41
|
+
load_tagged_requests(request_type_tag)
|
|
42
|
+
end
|
|
43
|
+
skip_if !request.present?, 'No submit requests received.'
|
|
44
|
+
|
|
45
|
+
validate_pas_bundle_json(
|
|
46
|
+
request.request_body,
|
|
47
|
+
'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle',
|
|
48
|
+
'2.2.1',
|
|
49
|
+
'submit',
|
|
50
|
+
'request_bundle',
|
|
51
|
+
message: 'The Bundle provided for the Claim/$submit operation is invalid:'
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../../abstract_response_attest'
|
|
2
|
+
require_relative '../urls'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
class PASClientResponseAttest < AbstractResponseAttest
|
|
7
|
+
include URLs
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_response_attest
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|