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
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require_relative 'pas_client_claim_update_validation_utils'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# spec-71 and spec-72
|
|
6
|
+
class PASClientClaimUpdateChangedEntriesTest < Inferno::Test
|
|
7
|
+
include ClaimUpdateValidationUtils
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_claim_update_changed_entries_test
|
|
10
|
+
title 'Added, modified, or canceled entries carry an infoChanged extension with the correct valueCode'
|
|
11
|
+
description %(
|
|
12
|
+
The PAS IG requires that entries added, modified, or canceled compared to the immediately prior version
|
|
13
|
+
of the Claim referenced in `Claim.related.claim`
|
|
14
|
+
[contain an infoChanged extension](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-71)
|
|
15
|
+
within the `Claim.item` or `Claim.supportingInfo` element, and that the
|
|
16
|
+
[infoChanged valueCode](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-72)
|
|
17
|
+
distinguishes added entries from modified or canceled entries.
|
|
18
|
+
|
|
19
|
+
The bound [PAS Information Change Mode value set](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/ValueSet-PASInformationChangeMode.html)
|
|
20
|
+
defines exactly two codes: `added` ("new information that was not sent previously") and `changed`
|
|
21
|
+
("previously sent information has been changed"). This test compares each detail-bearing Claim Update
|
|
22
|
+
against the immediately prior Claim, classifies each entry as added/modified/canceled (comparing content
|
|
23
|
+
while ignoring the change-tracking extensions), and confirms that each changed entry carries an
|
|
24
|
+
infoChanged extension whose valueCode is valid and matches its change type - `added` for newly added
|
|
25
|
+
entries and `changed` for modified or canceled entries.
|
|
26
|
+
|
|
27
|
+
**Note:** the spec-72 conformance text states added entries use `changed`, which conflicts with the
|
|
28
|
+
value set's definition of `added`; this test follows the value set definitions.
|
|
29
|
+
)
|
|
30
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-71',
|
|
31
|
+
'hl7.fhir.us.davinci-pas_2.2.1@spec-72',
|
|
32
|
+
'hl7.fhir.us.davinci-pas_2.2.1@prof-9',
|
|
33
|
+
'hl7.fhir.us.davinci-pas_2.2.1@prof-10'
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
comparisons = claim_update_detail_comparisons
|
|
37
|
+
skip_if comparisons.empty?,
|
|
38
|
+
'Not enough consecutive Claim Update requests were received to verify change marking.'
|
|
39
|
+
|
|
40
|
+
comparisons.each do |comparison|
|
|
41
|
+
check_changed_entries_marked(comparison[:current].item, comparison[:prior].item, 'item', comparison)
|
|
42
|
+
check_changed_entries_marked(comparison[:current].supportingInfo, comparison[:prior].supportingInfo,
|
|
43
|
+
'supportingInfo', comparison)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
assert_no_error_messages('One or more changed entries were missing an infoChanged extension or used an ' \
|
|
47
|
+
'incorrect valueCode. See Messages for details.')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def check_changed_entries_marked(current_entries, prior_entries, kind, comparison)
|
|
51
|
+
prior_by_sequence = index_by_sequence(prior_entries)
|
|
52
|
+
|
|
53
|
+
Array(current_entries).each do |entry|
|
|
54
|
+
prior_entry = prior_by_sequence[entry.sequence]
|
|
55
|
+
change_type =
|
|
56
|
+
if prior_entry.nil?
|
|
57
|
+
'added'
|
|
58
|
+
elsif newly_cancelled?(entry, prior_entry)
|
|
59
|
+
'canceled'
|
|
60
|
+
elsif entry_modified?(entry, prior_entry)
|
|
61
|
+
'modified'
|
|
62
|
+
end
|
|
63
|
+
next if change_type.nil?
|
|
64
|
+
|
|
65
|
+
extension = info_changed_extension(entry)
|
|
66
|
+
if extension.nil?
|
|
67
|
+
add_message('error',
|
|
68
|
+
"The #{change_type} #{kind} (sequence #{entry.sequence}) in the " \
|
|
69
|
+
"#{comparison[:current_label]} must contain an infoChanged extension (it changed " \
|
|
70
|
+
"relative to the #{comparison[:prior_label]}).")
|
|
71
|
+
next
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
check_info_changed_code(extension.valueCode, change_type, kind, entry, comparison)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Newly added entries SHALL use `added`; modified or canceled entries SHALL use `changed`.
|
|
79
|
+
def check_info_changed_code(code, change_type, kind, entry, comparison)
|
|
80
|
+
unless INFO_CHANGE_MODE_CODES.include?(code)
|
|
81
|
+
add_message('error',
|
|
82
|
+
"The infoChanged extension on the #{kind} (sequence #{entry.sequence}) in the " \
|
|
83
|
+
"#{comparison[:current_label]} has valueCode '#{code}', which is not in the PAS Information " \
|
|
84
|
+
"Change Mode value set (allowed: #{INFO_CHANGE_MODE_CODES.join(', ')}).")
|
|
85
|
+
return
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
expected_code = change_type == 'added' ? 'added' : 'changed'
|
|
89
|
+
return if code == expected_code
|
|
90
|
+
|
|
91
|
+
descriptor = change_type == 'added' ? 'newly added' : 'modified or canceled'
|
|
92
|
+
add_message('error',
|
|
93
|
+
"The infoChanged extension on the #{kind} (sequence #{entry.sequence}) in the " \
|
|
94
|
+
"#{comparison[:current_label]} has valueCode '#{code}', but an entry that was #{descriptor} " \
|
|
95
|
+
"relative to the #{comparison[:prior_label]} SHALL use valueCode '#{expected_code}' per the " \
|
|
96
|
+
'value set definitions.')
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require_relative 'pas_client_claim_update_validation_utils'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# spec-68
|
|
6
|
+
class PASClientClaimUpdateEntriesPreservedTest < Inferno::Test
|
|
7
|
+
include ClaimUpdateValidationUtils
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_claim_update_entries_preserved_test
|
|
10
|
+
title 'Claims updating a Claim preserve all prior item and supportingInfo entries'
|
|
11
|
+
description %(
|
|
12
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-68)
|
|
13
|
+
that when changing the details of the request, the Claim contains all item and supportingInfo entries
|
|
14
|
+
from the original Claim and any previous update Claims, with `sequence` values preserved. This test
|
|
15
|
+
compares each detail-bearing Claim Update against the immediately prior Claim and confirms that every
|
|
16
|
+
prior item and supportingInfo sequence is still present.
|
|
17
|
+
)
|
|
18
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-68',
|
|
19
|
+
'hl7.fhir.us.davinci-pas_2.2.1@prof-5',
|
|
20
|
+
'hl7.fhir.us.davinci-pas_2.2.1@prof-6'
|
|
21
|
+
|
|
22
|
+
run do
|
|
23
|
+
comparisons = claim_update_detail_comparisons
|
|
24
|
+
skip_if comparisons.empty?,
|
|
25
|
+
'Not enough consecutive Claim Update requests were received to verify entry preservation.'
|
|
26
|
+
|
|
27
|
+
comparisons.each do |comparison|
|
|
28
|
+
missing_items = entry_sequences(comparison[:prior].item) - entry_sequences(comparison[:current].item)
|
|
29
|
+
unless missing_items.empty?
|
|
30
|
+
add_message('error',
|
|
31
|
+
"The #{comparison[:current_label]} Claim must retain all item entries from the " \
|
|
32
|
+
"#{comparison[:prior_label]} Claim with their sequence values preserved. " \
|
|
33
|
+
"Missing item sequence(s): #{missing_items.join(', ')}.")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
missing_supporting_info =
|
|
37
|
+
entry_sequences(comparison[:prior].supportingInfo) - entry_sequences(comparison[:current].supportingInfo)
|
|
38
|
+
next if missing_supporting_info.empty?
|
|
39
|
+
|
|
40
|
+
add_message('error',
|
|
41
|
+
"The #{comparison[:current_label]} Claim must retain all supportingInfo entries from the " \
|
|
42
|
+
"#{comparison[:prior_label]} Claim with their sequence values preserved. " \
|
|
43
|
+
"Missing supportingInfo sequence(s): #{missing_supporting_info.join(', ')}.")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
assert_no_error_messages('One or more Claim Updates did not preserve all prior item or supportingInfo ' \
|
|
47
|
+
'entries. See Messages for details.')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require_relative 'pas_client_claim_update_validation_utils'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# spec-66
|
|
6
|
+
class PASClientClaimUpdateGrandparentExcludedTest < Inferno::Test
|
|
7
|
+
include ClaimUpdateValidationUtils
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_claim_update_grandparent_excluded_test
|
|
10
|
+
title 'Request Bundles updating an updated Claim omit the grandparent Claim'
|
|
11
|
+
description %(
|
|
12
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-66)
|
|
13
|
+
that when the Claim being updated is itself a Claim Update, its referenced (grandparent) Claim is not
|
|
14
|
+
included. This test checks each Claim Update whose referenced Claim is itself an update and confirms
|
|
15
|
+
that the grandparent Claim is not included in the Bundle.
|
|
16
|
+
)
|
|
17
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-66'
|
|
18
|
+
|
|
19
|
+
run do
|
|
20
|
+
applicable = received_claim_update_steps(claim_update_updates).filter_map do |step|
|
|
21
|
+
parent_reference = related_claim_references(step[:claim]).first
|
|
22
|
+
next if parent_reference.blank?
|
|
23
|
+
|
|
24
|
+
parent_entry = bundle_entry_for_reference(step[:bundle], parent_reference)
|
|
25
|
+
parent_claim = parent_entry&.resource
|
|
26
|
+
next unless parent_claim.is_a?(FHIR::Claim)
|
|
27
|
+
|
|
28
|
+
grandparent_reference = related_claim_references(parent_claim).first
|
|
29
|
+
next if grandparent_reference.blank? # the referenced Claim is not itself an update
|
|
30
|
+
|
|
31
|
+
step.merge(parent_reference:, grandparent_reference:)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
skip_if applicable.empty?,
|
|
35
|
+
'No Claim Update referencing another Claim Update was received, so this requirement was not checked.'
|
|
36
|
+
|
|
37
|
+
applicable.each do |step|
|
|
38
|
+
grandparent_entry = bundle_entry_for_reference(step[:bundle], step[:grandparent_reference])
|
|
39
|
+
next if grandparent_entry.nil?
|
|
40
|
+
|
|
41
|
+
add_message('error',
|
|
42
|
+
"In the #{step[:label]}, the included Claim (#{step[:parent_reference]}) is itself a Claim " \
|
|
43
|
+
"Update, so its referenced Claim (#{step[:grandparent_reference]}) SHALL NOT be included in " \
|
|
44
|
+
'the Bundle.')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
assert_no_error_messages('One or more Claim Updates included the grandparent Claim that SHALL NOT be ' \
|
|
48
|
+
'present. See Messages for details.')
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require_relative 'pas_client_claim_update_validation_utils'
|
|
2
|
+
|
|
3
|
+
module DaVinciPASTestKit
|
|
4
|
+
module DaVinciPASV221
|
|
5
|
+
# spec-65
|
|
6
|
+
class PASClientClaimUpdateReferencedClaimTest < Inferno::Test
|
|
7
|
+
include ClaimUpdateValidationUtils
|
|
8
|
+
|
|
9
|
+
id :pas_client_v221_claim_update_referenced_claim_test
|
|
10
|
+
title 'Request Bundles updating a Claim include the related Claim'
|
|
11
|
+
description %(
|
|
12
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-65)
|
|
13
|
+
that the Claim being updated is referenced in the `Claim.related.claim` element and included in the
|
|
14
|
+
Bundle. This test checks each Claim Update made during this group and confirms that it references a
|
|
15
|
+
prior Claim and that the referenced Claim is present in the Bundle.
|
|
16
|
+
)
|
|
17
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-65', 'hl7.fhir.us.davinci-pas_2.2.1@prof-4'
|
|
18
|
+
|
|
19
|
+
run do
|
|
20
|
+
steps = received_claim_update_steps(claim_update_updates)
|
|
21
|
+
skip_if steps.empty?, 'No Claim Update requests were received to verify.'
|
|
22
|
+
|
|
23
|
+
steps.each do |step|
|
|
24
|
+
references = related_claim_references(step[:claim])
|
|
25
|
+
if references.blank?
|
|
26
|
+
add_message('error',
|
|
27
|
+
"The #{step[:label]} Claim must reference the Claim being updated in Claim.related.claim.")
|
|
28
|
+
next
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
references.each do |reference|
|
|
32
|
+
referenced_entry = bundle_entry_for_reference(step[:bundle], reference)
|
|
33
|
+
next if referenced_entry&.resource.is_a?(FHIR::Claim)
|
|
34
|
+
|
|
35
|
+
add_message('error',
|
|
36
|
+
"The Claim referenced in Claim.related.claim (#{reference}) of the #{step[:label]} " \
|
|
37
|
+
'must be included in the Bundle.')
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
assert_no_error_messages('One or more Claim Updates did not reference and include the Claim being ' \
|
|
42
|
+
'updated. See Messages for details.')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative 'pas_client_claim_update_validation_utils'
|
|
2
|
+
require_relative '../../../cross_suite/pas_bundle_validation'
|
|
3
|
+
|
|
4
|
+
module DaVinciPASTestKit
|
|
5
|
+
module DaVinciPASV221
|
|
6
|
+
# spec-67 - reuses the existing PasBundleValidation reference-presence logic.
|
|
7
|
+
class PASClientClaimUpdateReferencedResourcesTest < Inferno::Test
|
|
8
|
+
include ClaimUpdateValidationUtils
|
|
9
|
+
include DaVinciPASTestKit::PasBundleValidation
|
|
10
|
+
|
|
11
|
+
id :pas_client_v221_claim_update_referenced_resources_test
|
|
12
|
+
title 'Request Bundles updating a Claim include all resources referenced by the updated Claim'
|
|
13
|
+
description %(
|
|
14
|
+
The PAS IG [requires](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformancedetails.html#ci-c-spec-67)
|
|
15
|
+
that all other referenced resources are included in the Bundle. This test checks each Claim Update made
|
|
16
|
+
during this group and confirms every resource referenced by the Claim is present in the Bundle exactly
|
|
17
|
+
once.
|
|
18
|
+
)
|
|
19
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-67'
|
|
20
|
+
|
|
21
|
+
run do
|
|
22
|
+
steps = received_claim_update_steps
|
|
23
|
+
skip_if steps.empty?, 'No Claim Update requests were received to verify.'
|
|
24
|
+
|
|
25
|
+
steps.each do |step|
|
|
26
|
+
bundle = step[:bundle]
|
|
27
|
+
base_url = extract_base_url(bundle.entry.first&.fullUrl)
|
|
28
|
+
# The reused reference-presence check verifies the primary Update Claim's parent reference and the
|
|
29
|
+
# parent's own referenced resources, while skipping a non-primary Claim's `related` so the
|
|
30
|
+
# deliberately-omitted grandparent (spec-65/66) is not flagged as missing.
|
|
31
|
+
validation_error_messages.clear
|
|
32
|
+
check_presence_of_referenced_resources(step[:claim], base_url, bundle.entry)
|
|
33
|
+
validation_error_messages.each do |message|
|
|
34
|
+
add_message('error', "In the #{step[:label]} request: #{message}")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
assert_no_error_messages('Not all resources referenced by a Claim Update are included in the Bundle ' \
|
|
39
|
+
'exactly once. See Messages for details.')
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
require_relative '../urls'
|
|
2
|
+
require_relative '../../client_input_descriptions'
|
|
3
|
+
require_relative '../../user_input_response'
|
|
4
|
+
require_relative '../../session_identification'
|
|
5
|
+
require_relative '../../../cross_suite/tags'
|
|
6
|
+
|
|
7
|
+
module DaVinciPASTestKit
|
|
8
|
+
module DaVinciPASV221
|
|
9
|
+
# Shared behavior for the Claim Update "wait" tests. Each subclass waits for a
|
|
10
|
+
# single `$submit` request from the client and, on receipt, returns the response
|
|
11
|
+
# configured through its dedicated response input (or an Inferno-generated approval
|
|
12
|
+
# if none was provided). Subclasses differ only in:
|
|
13
|
+
# - their dedicated response input + `submit_respond_with`
|
|
14
|
+
# - the unique `claim_update_tag` used to tag the received request
|
|
15
|
+
# - the instructions shown to the tester (`interaction_instructions`)
|
|
16
|
+
#
|
|
17
|
+
# These tests auto-continue when a request is received (they do not set
|
|
18
|
+
# `accepts_multiple_requests`, so `ClaimEndpoint#update_result` marks the result
|
|
19
|
+
# `pass` and resumes the wait), and they never trigger a Subscription notification
|
|
20
|
+
# (`suppress_notifications` is honored by `ClaimEndpoint#make_response`), even when
|
|
21
|
+
# the configured response indicates the request was pended.
|
|
22
|
+
class AbstractClaimUpdateSubmitTest < Inferno::Test
|
|
23
|
+
include URLs
|
|
24
|
+
include SessionIdentification
|
|
25
|
+
include UserInputResponse
|
|
26
|
+
|
|
27
|
+
id :pas_client_v221_claim_update_submit_base
|
|
28
|
+
|
|
29
|
+
config options: { suppress_notifications: true }
|
|
30
|
+
|
|
31
|
+
input :client_id,
|
|
32
|
+
title: 'Client Id',
|
|
33
|
+
type: 'text',
|
|
34
|
+
optional: true,
|
|
35
|
+
locked: true,
|
|
36
|
+
description: INPUT_CLIENT_ID_LOCKED
|
|
37
|
+
input :session_url_path,
|
|
38
|
+
title: 'Session-specific URL path extension',
|
|
39
|
+
type: 'text',
|
|
40
|
+
optional: true,
|
|
41
|
+
locked: true,
|
|
42
|
+
description: INPUT_SESSION_URL_PATH_LOCKED
|
|
43
|
+
|
|
44
|
+
run do
|
|
45
|
+
response_input = config.options[:submit_respond_with]
|
|
46
|
+
if response_input.present? && send(response_input).present?
|
|
47
|
+
assert_valid_json send(response_input),
|
|
48
|
+
"Input '#{input_title(response_input)}' must be valid JSON"
|
|
49
|
+
elsif response_input.present?
|
|
50
|
+
add_message('info', %(
|
|
51
|
+
No response provided in input '#{input_title(response_input)}'. Inferno will generate an
|
|
52
|
+
approved response to the $submit request from the submitted Claim.
|
|
53
|
+
))
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
wait_identifier = session_wait_identifier(client_id, session_url_path)
|
|
57
|
+
submit_endpoint = session_endpoint_url(:submit, client_id, session_url_path)
|
|
58
|
+
|
|
59
|
+
wait(
|
|
60
|
+
identifier: wait_identifier,
|
|
61
|
+
timeout: 600,
|
|
62
|
+
message: claim_update_wait_message(submit_endpoint)
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def claim_update_wait_message(submit_endpoint)
|
|
67
|
+
%(
|
|
68
|
+
**Claim Update Workflow**
|
|
69
|
+
|
|
70
|
+
#{interaction_instructions}
|
|
71
|
+
|
|
72
|
+
Submit the request to
|
|
73
|
+
|
|
74
|
+
`#{submit_endpoint}`
|
|
75
|
+
|
|
76
|
+
#{response_note}
|
|
77
|
+
|
|
78
|
+
Inferno will automatically continue once it receives the request, so no further
|
|
79
|
+
action is required after submitting.
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def response_note
|
|
84
|
+
response_input = config.options[:submit_respond_with]
|
|
85
|
+
if response_input.present? && send(response_input).present?
|
|
86
|
+
"The response provided in the '**#{input_title(response_input)}**' input will be returned, " \
|
|
87
|
+
'updated with current timestamps.'
|
|
88
|
+
else
|
|
89
|
+
'Inferno will generate an approved response from the submitted Claim and return it.'
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Overridden by subclasses to describe the specific submission the tester should make.
|
|
94
|
+
def interaction_instructions
|
|
95
|
+
raise NotImplementedError, "#{self.class} must implement #interaction_instructions"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Step 1: the initial prior authorization submission that subsequent updates build on.
|
|
100
|
+
class PASClientClaimUpdateInitialSubmitTest < AbstractClaimUpdateSubmitTest
|
|
101
|
+
id :pas_client_v221_claim_update_initial_submit_test
|
|
102
|
+
title 'PAS client submits an initial prior authorization request'
|
|
103
|
+
description %(
|
|
104
|
+
Inferno waits for an initial prior authorization `$submit` request from the client.
|
|
105
|
+
This establishes the original Claim that the subsequent updates will reference and
|
|
106
|
+
modify. Upon receipt, Inferno returns the configured response (or generates an
|
|
107
|
+
approved response from the submitted Claim) and continues automatically.
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
input :claim_update_initial_response,
|
|
111
|
+
title: 'Initial claim response JSON',
|
|
112
|
+
type: 'textarea',
|
|
113
|
+
optional: true,
|
|
114
|
+
description: %(
|
|
115
|
+
If provided, this JSON will be returned in response to the initial `$submit` request,
|
|
116
|
+
updated with current timestamps. If not provided, an approved response will be generated
|
|
117
|
+
from the submitted Claim.
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
submit_respond_with :claim_update_initial_response
|
|
121
|
+
config options: { claim_update_tag: CLAIM_UPDATE_INITIAL_TAG }
|
|
122
|
+
|
|
123
|
+
def interaction_instructions
|
|
124
|
+
'Submit an **initial** prior authorization request (a `$submit` containing a Claim with one ' \
|
|
125
|
+
'or more items and no `Claim.related.claim`).'
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Step 2: an update that adds a new item to the previously submitted Claim.
|
|
130
|
+
class PASClientClaimUpdateAddItemSubmitTest < AbstractClaimUpdateSubmitTest
|
|
131
|
+
id :pas_client_v221_claim_update_add_item_submit_test
|
|
132
|
+
title 'PAS client submits an update that adds an item'
|
|
133
|
+
description %(
|
|
134
|
+
Inferno waits for an updated prior authorization `$submit` request that adds a new item to
|
|
135
|
+
the previously submitted Claim. The update is expected to reference the original Claim in
|
|
136
|
+
`Claim.related.claim` (and include it in the Bundle), retain all previously submitted item
|
|
137
|
+
and supportingInfo entries with their `sequence` values, and mark the newly added item with
|
|
138
|
+
an `infoChanged` extension. Upon receipt, Inferno returns the configured response and
|
|
139
|
+
continues automatically.
|
|
140
|
+
)
|
|
141
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-63'
|
|
142
|
+
|
|
143
|
+
input :claim_update_add_item_response,
|
|
144
|
+
title: 'Add-item update response JSON',
|
|
145
|
+
type: 'textarea',
|
|
146
|
+
optional: true,
|
|
147
|
+
description: %(
|
|
148
|
+
If provided, this JSON will be returned in response to the add-item update `$submit`
|
|
149
|
+
request, updated with current timestamps. If not provided, an approved response will be
|
|
150
|
+
generated from the submitted Claim.
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
submit_respond_with :claim_update_add_item_response
|
|
154
|
+
config options: { claim_update_tag: CLAIM_UPDATE_ADD_ITEM_TAG }
|
|
155
|
+
|
|
156
|
+
def interaction_instructions
|
|
157
|
+
'Submit an **update that adds a new item** to the prior authorization. Reference the ' \
|
|
158
|
+
'previously submitted Claim in `Claim.related.claim` and include that Claim in the Bundle, ' \
|
|
159
|
+
'retain all previously submitted items and supportingInfo (preserving their `sequence` ' \
|
|
160
|
+
'values), and mark the newly added item with an `infoChanged` extension.'
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Step 3: an update that modifies one item and cancels another.
|
|
165
|
+
class PASClientClaimUpdateModifyCancelSubmitTest < AbstractClaimUpdateSubmitTest
|
|
166
|
+
id :pas_client_v221_claim_update_modify_cancel_submit_test
|
|
167
|
+
title 'PAS client submits an update that modifies an item and cancels an item'
|
|
168
|
+
description %(
|
|
169
|
+
Inferno waits for a second updated prior authorization `$submit` request that modifies one
|
|
170
|
+
existing item and cancels another. Modified entries are expected to carry an `infoChanged`
|
|
171
|
+
extension; the canceled item is expected to carry the `infoCancelled` modifier extension
|
|
172
|
+
(valueBoolean `true`), a `certificationType` extension with code `3` (Cancel) in
|
|
173
|
+
`Claim.item.extension`, and an `infoChanged` extension. All prior item and supportingInfo
|
|
174
|
+
entries are expected to be retained with preserved `sequence` values, referencing the
|
|
175
|
+
immediately prior Claim update. Upon receipt, Inferno returns the configured response and
|
|
176
|
+
continues automatically.
|
|
177
|
+
)
|
|
178
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-63'
|
|
179
|
+
|
|
180
|
+
input :claim_update_modify_cancel_response,
|
|
181
|
+
title: 'Modify-and-cancel update response JSON',
|
|
182
|
+
type: 'textarea',
|
|
183
|
+
optional: true,
|
|
184
|
+
description: %(
|
|
185
|
+
If provided, this JSON will be returned in response to the modify-and-cancel update
|
|
186
|
+
`$submit` request, updated with current timestamps. If not provided, an approved response
|
|
187
|
+
will be generated from the submitted Claim.
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
submit_respond_with :claim_update_modify_cancel_response
|
|
191
|
+
config options: { claim_update_tag: CLAIM_UPDATE_MODIFY_CANCEL_TAG }
|
|
192
|
+
|
|
193
|
+
def interaction_instructions
|
|
194
|
+
'Submit an **update that modifies one item and cancels another**. Mark the modified item ' \
|
|
195
|
+
'with an `infoChanged` extension. Mark the canceled item with the `infoCancelled` modifier ' \
|
|
196
|
+
'extension (valueBoolean `true`), a `certificationType` extension with code `3` (Cancel) in ' \
|
|
197
|
+
'`Claim.item.extension`, and an `infoChanged` extension. Retain all prior items and ' \
|
|
198
|
+
'supportingInfo (preserving their `sequence` values) and reference the immediately prior ' \
|
|
199
|
+
'Claim update in `Claim.related.claim`.'
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# Step 4: an update that cancels the entire prior authorization request.
|
|
204
|
+
class PASClientClaimUpdateCancelAllSubmitTest < AbstractClaimUpdateSubmitTest
|
|
205
|
+
id :pas_client_v221_claim_update_cancel_all_submit_test
|
|
206
|
+
title 'PAS client submits an update that cancels the entire request'
|
|
207
|
+
description %(
|
|
208
|
+
Inferno waits for a third updated prior authorization `$submit` request that cancels the
|
|
209
|
+
entire prior authorization. The update is expected to include a `certificationType` extension
|
|
210
|
+
with code `3` (Cancel) in `Claim.extension`; no items are required to cancel the entire
|
|
211
|
+
authorization. The update is expected to reference the immediately prior Claim update in
|
|
212
|
+
`Claim.related.claim`. Upon receipt, Inferno returns the configured response and continues
|
|
213
|
+
automatically.
|
|
214
|
+
)
|
|
215
|
+
verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-63'
|
|
216
|
+
|
|
217
|
+
input :claim_update_cancel_all_response,
|
|
218
|
+
title: 'Cancel-entire-request update response JSON',
|
|
219
|
+
type: 'textarea',
|
|
220
|
+
optional: true,
|
|
221
|
+
description: %(
|
|
222
|
+
If provided, this JSON will be returned in response to the cancel-entire-request update
|
|
223
|
+
`$submit` request, updated with current timestamps. If not provided, an approved response
|
|
224
|
+
will be generated from the submitted Claim.
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
submit_respond_with :claim_update_cancel_all_response
|
|
228
|
+
config options: { claim_update_tag: CLAIM_UPDATE_CANCEL_ALL_TAG }
|
|
229
|
+
|
|
230
|
+
def interaction_instructions
|
|
231
|
+
'Submit an **update that cancels the entire prior authorization**. Include a ' \
|
|
232
|
+
'`certificationType` extension with code `3` (Cancel) in `Claim.extension`; no items are ' \
|
|
233
|
+
'required to cancel the entire authorization. Reference the immediately prior Claim update ' \
|
|
234
|
+
'in `Claim.related.claim`.'
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|