davinci_pas_test_kit 0.15.2 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/g33_br_provider.json +13 -0
  3. data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +28 -17
  4. data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +26 -16
  5. data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +43 -26
  6. data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +29 -19
  7. data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +75 -6
  8. data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +26 -9
  9. data/lib/davinci_pas_test_kit/client/abstract_subscription_update_delete_test.rb +91 -0
  10. data/lib/davinci_pas_test_kit/client/client_bundle_validation_helper.rb +245 -0
  11. data/lib/davinci_pas_test_kit/client/client_input_descriptions.rb +91 -25
  12. data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +108 -68
  13. data/lib/davinci_pas_test_kit/client/endpoints/endpoint_session_identification.rb +24 -0
  14. data/lib/davinci_pas_test_kit/client/endpoints/expired_token.rb +40 -0
  15. data/lib/davinci_pas_test_kit/client/endpoints/subscription_create_endpoint.rb +7 -12
  16. data/lib/davinci_pas_test_kit/client/endpoints/subscription_delete_endpoint.rb +13 -0
  17. data/lib/davinci_pas_test_kit/client/endpoints/subscription_read_endpoint.rb +13 -0
  18. data/lib/davinci_pas_test_kit/client/endpoints/subscription_status_endpoint.rb +15 -20
  19. data/lib/davinci_pas_test_kit/client/endpoints/subscription_update_endpoint.rb +13 -0
  20. data/lib/davinci_pas_test_kit/client/endpoints/token_endpoint.rb +16 -0
  21. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb +3 -3
  22. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +3 -3
  23. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb +3 -3
  24. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +3 -3
  25. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  26. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  27. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +3 -3
  28. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +3 -3
  29. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +3 -3
  30. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +3 -3
  31. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +3 -3
  32. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb +3 -3
  33. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +3 -3
  34. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +3 -3
  35. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +3 -3
  36. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +3 -3
  37. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +1 -1
  38. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +9 -31
  39. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +1 -1
  40. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +10 -32
  41. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +3 -3
  42. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +3 -3
  43. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +3 -3
  44. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +3 -3
  45. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +3 -3
  46. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +3 -3
  47. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +3 -3
  48. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +3 -3
  49. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +3 -3
  50. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +3 -3
  51. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +3 -3
  52. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +3 -3
  53. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +3 -3
  54. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +3 -3
  55. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +3 -3
  56. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +3 -3
  57. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb +3 -3
  58. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb +3 -3
  59. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +4 -3
  60. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +4 -3
  61. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  62. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  63. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +4 -3
  64. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +4 -3
  65. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +4 -3
  66. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +4 -3
  67. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +4 -3
  68. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +8 -6
  69. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +9 -31
  70. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +13 -9
  71. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +10 -32
  72. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +4 -3
  73. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +4 -3
  74. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +4 -3
  75. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +4 -3
  76. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +4 -3
  77. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +4 -3
  78. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +4 -3
  79. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +4 -3
  80. data/lib/davinci_pas_test_kit/client/jobs/send_pas_subscription_notification.rb +64 -3
  81. data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +4 -3
  82. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +6 -4
  83. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +8 -4
  84. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +9 -4
  85. data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +5 -4
  86. data/lib/davinci_pas_test_kit/client/request_count_gating.rb +14 -0
  87. data/lib/davinci_pas_test_kit/client/response_generator.rb +50 -9
  88. data/lib/davinci_pas_test_kit/client/session_identification.rb +26 -7
  89. data/lib/davinci_pas_test_kit/client/subscription_notification_trigger.rb +80 -0
  90. data/lib/davinci_pas_test_kit/client/subscription_setup_requirement.rb +59 -0
  91. data/lib/davinci_pas_test_kit/client/user_input_response.rb +27 -6
  92. data/lib/davinci_pas_test_kit/client/v2.0.1/client_suite.rb +30 -15
  93. data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb +2 -2
  94. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_approval_group.rb +8 -7
  95. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_smart_group.rb +4 -4
  96. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_udap_group.rb +4 -4
  97. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_denial_group.rb +8 -7
  98. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +38 -52
  99. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_pended_group.rb +28 -22
  100. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_registration_group.rb +2 -2
  101. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_subscription_setup_group.rb +2 -2
  102. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_workflows_group.rb +2 -2
  103. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +15 -21
  104. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +29 -29
  105. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_pended_submit_test.rb +49 -40
  106. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_request_bundle_validation_test.rb +15 -21
  107. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_bundle_validation_test.rb +29 -29
  108. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  109. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  110. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_provider_review_attestation_test.rb +45 -0
  111. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_security_attestation_test.rb +42 -0
  112. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_subscription_error_recovery_attestation_test.rb +42 -0
  113. data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +64 -12
  114. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +20 -10
  115. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +11 -5
  116. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +21 -12
  117. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +19 -8
  118. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +90 -40
  119. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +12 -11
  120. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_attestations_group.rb +32 -0
  121. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +4 -4
  122. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +4 -4
  123. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +24 -6
  124. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +12 -10
  125. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +13 -14
  126. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +55 -59
  127. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +8 -5
  128. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +53 -41
  129. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +9 -7
  130. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +2 -2
  131. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +9 -4
  132. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_update_delete_group.rb +57 -0
  133. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +22 -2
  134. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +2 -1
  135. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_put_update_pas_conformance_test.rb +49 -0
  136. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_update_delete_test.rb +12 -0
  137. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +5 -6
  138. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +82 -56
  139. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +17 -20
  140. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +59 -27
  141. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +0 -3
  142. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_send_notification_test.rb +138 -0
  143. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +32 -85
  144. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +16 -21
  145. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +27 -27
  146. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/task/metadata.yml +0 -4
  147. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +0 -1
  148. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +0 -4
  149. data/lib/davinci_pas_test_kit/cross_suite/pas_bundle_validation.rb +489 -289
  150. data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +7 -0
  151. data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +8 -4
  152. data/lib/davinci_pas_test_kit/cross_suite/referenced_resource_presence_validation.rb +141 -0
  153. data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +13 -11
  154. data/lib/davinci_pas_test_kit/cross_suite/tags.rb +11 -6
  155. data/lib/davinci_pas_test_kit/cross_suite/validator_configuration.rb +16 -0
  156. data/lib/davinci_pas_test_kit/cross_suite/validator_suppressions.rb +4 -0
  157. data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +3 -3
  158. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +1 -0
  159. data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +47 -16
  160. data/lib/davinci_pas_test_kit/generator/must_support_target_profiles.rb +17 -0
  161. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +8 -2
  162. data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +1 -1
  163. data/lib/davinci_pas_test_kit/generator/server_suite_generator.rb +4 -9
  164. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +22 -3
  165. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +7 -16
  166. data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +8 -8
  167. data/lib/davinci_pas_test_kit/generator/templates/server_suite.rb.erb +6 -7
  168. data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +5 -5
  169. data/lib/davinci_pas_test_kit/parameters_helper.rb +13 -5
  170. data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +2 -2
  171. data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +14 -7
  172. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +21 -21
  173. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +30 -26
  174. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +12 -6
  175. data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
  176. data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +1 -1
  177. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  178. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  179. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  180. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  181. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  182. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  183. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  184. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  185. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  186. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  187. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  188. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  189. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  190. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  191. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  192. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  193. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  194. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  195. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  196. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  197. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +3 -3
  198. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +3 -3
  199. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +6 -6
  200. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  201. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  202. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  203. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  204. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  205. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  206. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  207. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  208. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  209. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  210. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  211. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  212. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/server_suite.rb +6 -7
  213. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  214. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  215. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  216. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +1 -1
  217. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  218. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  219. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  220. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  221. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  222. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  223. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  224. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  225. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  226. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  227. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  228. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  229. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  230. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  231. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  232. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  233. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  234. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  235. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  236. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  237. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +3 -3
  238. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +3 -3
  239. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +4 -4
  240. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  241. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  242. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  243. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  244. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  245. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  246. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  247. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  248. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  249. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  250. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  251. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  252. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +6 -7
  253. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  254. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  255. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  256. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +1 -1
  257. data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +2 -2
  258. data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +4 -6
  259. data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +4 -6
  260. data/lib/davinci_pas_test_kit/server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  261. data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_setup.rb +1 -1
  262. data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  263. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +1 -1
  264. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +1 -1
  265. data/lib/davinci_pas_test_kit/version.rb +2 -2
  266. metadata +31 -13
  267. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +0 -45
  268. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +0 -45
  269. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +0 -55
  270. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +0 -55
  271. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +0 -20
@@ -7,6 +7,7 @@ require_relative 'workflows/pas_client_request_bundle_validation_test'
7
7
  require_relative 'workflows/pas_client_response_bundle_validation_test'
8
8
  require_relative 'workflows/pas_client_inquire_request_bundle_validation_test'
9
9
  require_relative 'workflows/pas_client_inquire_response_bundle_validation_test'
10
+ require_relative '../client_input_descriptions'
10
11
 
11
12
  module DaVinciPASTestKit
12
13
  module DaVinciPASV201
@@ -14,54 +15,55 @@ module DaVinciPASTestKit
14
15
  id :pas_client_v201_must_support
15
16
  title 'Must Support Elements'
16
17
  run_as_group
17
- description %(
18
- During these tests, the client will show that it supports all PAS-defined profiles and the must support
19
- elements defined in them. This includes
18
+ description DaVinciPASTestKit.must_support_group_description('v2.0.1', 'da-vinci-pas-v201')
20
19
 
21
- - The ability to make prior authorization submission and inquiry requests that contain all
22
- PAS-defined profiles and their must support elements.
23
- - The ability to receive in responses to those requests all PAS-defined profiles and their
24
- must support elements.
20
+ # The must support response inputs already belong to pas_client_v201_gather_must_support
21
+ # (the wait test below); declaring them here too, before the receive group is defined,
22
+ # propagates them onto the bundle validation tests in that group as well, so they can tell
23
+ # whether a tester-provided response was used - see
24
+ # PasClientResponseBundleValidationTest/PasClientInquireResponseBundleValidationTest
25
+ # #failed_entities_description.
26
+ input :ms_submit_responses, optional: true
27
+ input :ms_inquire_responses, optional: true
25
28
 
26
- Clients under test will be asked to make additional requests to Inferno demonstrating coverage
27
- of all must support items in the requests. Clients must also demonstrate that they can handle
28
- all response must support elements. Because Inferno's mocked responses do not include all must
29
- support elements, testers will need to provide responses that include examples of all must
30
- support elements for Inferno to respond with.
31
-
32
- Note that Inferno will consider requests made during the workflow group of tests, so only
33
- profiles and must support elements not demonstrated during those tests need to be submitted
34
- as a part of these.
35
- )
29
+ input_order :ms_submit_responses,
30
+ :ms_inquire_responses,
31
+ :client_id,
32
+ :session_url_path
36
33
 
37
34
  # Combined receive group - single wait test for both submit and inquire
38
35
  group do
39
36
  id :pas_client_v201_must_support_receive
40
- title 'Demonstrate Must Support Coverage'
41
- description %(
42
- Submit $submit and $inquire requests demonstrating coverage of must support elements.
43
- Optionally, provide response bundles for Inferno to use when responding. Inferno will
44
- verify both the requests received and the responses provided.
45
- )
37
+ title MUST_SUPPORT_RECEIVE_GROUP_TITLE
38
+ description MUST_SUPPORT_RECEIVE_GROUP_DESCRIPTION
46
39
  run_as_group
47
40
 
48
41
  test from: :pas_client_v201_gather_must_support
49
- end
50
-
51
- # $submit Bundle Conformance Validation
52
- group do
53
- title '$submit Bundle Conformance'
54
- description %(
55
- Verify that the $submit request bundles sent by the client are conformant
56
- and that the $submit response bundles provided for Inferno to send back
57
- are conformant.
58
- )
59
- run_as_group
42
+ test from: :pas_client_v201_response_attest,
43
+ id: :pas_client_v201_response_attest_ms_submit_inquire,
44
+ title: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_TITLE,
45
+ description: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_DESCRIPTION,
46
+ config: { options: {
47
+ workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
48
+ no_requests_ok: true,
49
+ multiple_requests_ok: true,
50
+ attest_message: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_MESSAGE
51
+ } } do
52
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.0.1@41'
53
+ end
60
54
 
61
55
  test from: :pas_client_v201_request_bundle_validation_test,
62
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
56
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
57
+ multiple_requests_ok: true } }
63
58
  test from: :pas_client_v201_response_bundle_validation_test,
64
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
59
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
60
+ multiple_requests_ok: true } }
61
+ test from: :pas_client_v201_inquire_request_bundle_validation_test,
62
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
63
+ multiple_requests_ok: true } }
64
+ test from: :pas_client_v201_inquire_response_bundle_validation_test,
65
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
66
+ multiple_requests_ok: true } }
65
67
  end
66
68
 
67
69
  # $submit Request Must Support (fail when errors detected)
@@ -70,22 +72,6 @@ module DaVinciPASTestKit
70
72
  # $submit Response Must Support (skip when errors detected)
71
73
  group from: :pas_client_v201_submit_response_must_support
72
74
 
73
- # $inquire Bundle Conformance Validation
74
- group do
75
- title '$inquire Bundle Conformance'
76
- description %(
77
- Verify that the $inquire request bundles sent by the client are conformant
78
- and that the $inquire response bundles provided for Inferno to send back
79
- are conformant.
80
- )
81
- run_as_group
82
-
83
- test from: :pas_client_v201_inquire_request_bundle_validation_test,
84
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
85
- test from: :pas_client_v201_inquire_response_bundle_validation_test,
86
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
87
- end
88
-
89
75
  # $inquire Request Must Support (fail when errors detected)
90
76
  group from: :pas_client_v201_inquire_must_support
91
77
 
@@ -13,10 +13,10 @@ module DaVinciPASTestKit
13
13
  include UserInputResponse
14
14
 
15
15
  id :pas_client_v201_pended_group
16
- title 'Pended Workflow'
16
+ title 'Pended Response'
17
17
  description %(
18
- During these tests, the client will initiate a prior authorization
19
- request and show it can respond appropriately to a 'pended' decision, including
18
+ During these tests, the PAS client will initiate a prior authorization
19
+ request and show it can react appropriately to a 'pended' decision, including
20
20
  waiting for a notification that an update has been made
21
21
  and making an inquiry request to retrieve the final result.
22
22
  )
@@ -31,15 +31,15 @@ module DaVinciPASTestKit
31
31
  :session_url_path
32
32
 
33
33
  group do
34
- title 'Perform the pended workflow'
34
+ title 'Perform the pended scenario'
35
35
  description %(
36
- All interactions for the pended prior authorization request workflow
37
- between Inferno and the client under test will be performed during this test
36
+ All interactions for the pended prior authorization request scenario
37
+ between Inferno and the PAS client will be performed during this group
38
38
  including
39
- - A `$submit` request from the client to Inferno where Inferno returns a pended response.
39
+ - A `$submit` request from the PAS client to Inferno where Inferno returns a pended response.
40
40
  - A notification that the prior authorization decision has been finalized from Inferno
41
- to the client under test.
42
- - An `$inquire` request from the client to Inferno where Inferno returns an approved response.
41
+ to the PAS client.
42
+ - An `$inquire` request from the PAS client to Inferno where Inferno returns an approved response.
43
43
  )
44
44
 
45
45
  test from: :pas_client_v201_pended_submit_test
@@ -53,17 +53,19 @@ module DaVinciPASTestKit
53
53
  test from: :pas_client_v201_response_bundle_validation_test,
54
54
  config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
55
55
  test from: :pas_client_v201_response_attest,
56
- title: 'Check that the client registers the request as pended (Attestation)',
56
+ title: 'Check that the PAS client registers the request as pended',
57
57
  description: %(
58
- This test provides the tester an opportunity to observe their client following
58
+ During this test, the tester will observe the PAS client following
59
59
  the receipt of the pended response and attest that users are able to determine
60
60
  that the response has been pended and a decision will be forthcoming.
61
61
  ),
62
62
  config: { options: {
63
63
  workflow_tag: PENDED_WORKFLOW_TAG,
64
- attest_message: "I attest that following the receipt of the 'pended' response to the submitted " \
65
- 'claim, the client system indicates to users that a final decision on request ' \
66
- 'has not yet been made.'
64
+ operation_tag: SUBMIT_TAG,
65
+ multiple_requests_ok: true,
66
+ attest_message: "I attest that the PAS client did not error when handling the 'pended' " \
67
+ 'response to the submitted claim and that it indicated to users that a final decision ' \
68
+ 'on the request had not yet been made.'
67
69
  } }
68
70
  end
69
71
 
@@ -73,7 +75,7 @@ module DaVinciPASTestKit
73
75
  test from: :subscriptions_r4_client_notification_input_verification,
74
76
  title: 'Tester-provided event notification Bundle is conformant',
75
77
  description: %(
76
- This test checks that the notification Bundle sent to the client, which will be either
78
+ This test checks that the notification Bundle sent to the PAS client, which will be either
77
79
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
78
80
  or mocked by Inferno based on details in the Subscription and submitted Claim, is conformant
79
81
  to Subscription Backport IG requirements.
@@ -87,10 +89,10 @@ module DaVinciPASTestKit
87
89
  test from: :subscriptions_r4_client_notification_input_payload_verification,
88
90
  title: 'Tester-provided event notification Bundle matches the Subscription',
89
91
  description: %(
90
- This test checks that the notification Bundle sent to the client, which will be either
92
+ This test checks that the notification Bundle sent to the PAS client, which will be either
91
93
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
92
94
  or mocked by Inferno based on details in the Subscription and submitted Claim, matches the details
93
- requested in the Subscription provided during the **2.1** "PAS Subscription Setup" tests.
95
+ requested in the Subscription provided during the "Subscription Setup" tests.
94
96
  ),
95
97
  simulation_verification: true,
96
98
  config: {
@@ -102,9 +104,9 @@ module DaVinciPASTestKit
102
104
  # and testers have to demonstrate and attest that their systems work, which will require some
103
105
  # correspondence.
104
106
  test from: :subscriptions_r4_client_event_notification_verification,
105
- title: 'Client accepts the "claim updated" event notification',
107
+ title: 'PAS client accepts the "claim updated" event notification',
106
108
  description: %(
107
- This test checks that the client responds appropriately to the event notification request.
109
+ This test checks that the PAS client responds appropriately to the event notification request.
108
110
  )
109
111
  end
110
112
 
@@ -116,15 +118,19 @@ module DaVinciPASTestKit
116
118
  test from: :pas_client_v201_inquire_response_bundle_validation_test,
117
119
  config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
118
120
  test from: :pas_client_v201_response_attest,
119
- title: 'Check that the client registers the request as approved (Attestation)',
121
+ title: 'Check that the PAS client registers the request as approved',
120
122
  description: %(
121
- This test provides the tester an opportunity to observe their client following
123
+ During this test, the tester will observe the PAS client following
122
124
  the receipt of the inquiry response with a final decision and attest that users
123
125
  are able to determine that the response has been approved in full.
124
126
  ),
125
127
  config: { options: {
126
128
  workflow_tag: PENDED_WORKFLOW_TAG,
127
- attest_message: "I attest that the client system displays the submitted claim as 'approved' meaning that the user can proceed with ordering or providing the requested service." # rubocop:disable Layout/LineLength
129
+ operation_tag: INQUIRE_TAG,
130
+ multiple_requests_ok: true,
131
+ attest_message: 'I attest that the PAS client did not error when handling the `$inquire` ' \
132
+ "response and displays the submitted claim as 'approved' meaning that the " \
133
+ 'user can proceed with ordering or providing the requested service.'
128
134
  } }
129
135
  end
130
136
  end
@@ -12,8 +12,8 @@ module DaVinciPASTestKit
12
12
  id :pas_client_v201_registration
13
13
  title 'Client Registration'
14
14
  description %(
15
- Register the client under test with Inferno's simulated PAS Server,
16
- including configuration of the system under test to make requests against
15
+ Register the PAS client with Inferno's simulated PAS Server,
16
+ including configuration necessary to make requests against
17
17
  Inferno's simulated PAS endpoints and enable authentication and authorization of PAS requests.
18
18
  )
19
19
  run_as_group
@@ -8,8 +8,8 @@ module DaVinciPASTestKit
8
8
  id :pas_client_v201_subscription_setup
9
9
  title 'Subscription Setup'
10
10
  description %(
11
- These tests verify that the client can create a Subscription instance
12
- that will tell the Payer how to notify the client when pended claims
11
+ These tests verify that the PAS client can create a Subscription instance
12
+ that will tell the Payer how to notify the PAS client when pended claims
13
13
  are updated.
14
14
  )
15
15
  run_as_group
@@ -6,9 +6,9 @@ module DaVinciPASTestKit
6
6
  module DaVinciPASV201
7
7
  class PASClientWorkflowsGroup < Inferno::TestGroup
8
8
  id :pas_client_v201_workflows
9
- title 'PAS Workflows'
9
+ title 'PAS Scenarios'
10
10
  description %(
11
- The workflow tests verify that the client can participate in complete end-to-end prior
11
+ The scenario tests verify that the PAS client can participate in complete end-to-end prior
12
12
  authorization interactions, initiating requests and reacting appropriately to the
13
13
  responses returned.
14
14
  )
@@ -1,14 +1,16 @@
1
1
  require_relative '../../../cross_suite/pas_bundle_validation'
2
+ require_relative '../../client_bundle_validation_helper'
2
3
 
3
4
  module DaVinciPASTestKit
4
5
  module DaVinciPASV201
5
6
  class PasClientInquireRequestBundleValidationTest < Inferno::Test
6
7
  include DaVinciPASTestKit::PasBundleValidation
8
+ include DaVinciPASTestKit::ClientBundleValidationHelper
7
9
 
8
10
  id :pas_client_v201_inquire_request_bundle_validation_test
9
- title 'Inquire Request Bundle is valid'
11
+ title '$inquire request Bundles have the correct structure and content'
10
12
  description %(
11
- This test verifies the conformity of the client's request body to the
13
+ This test verifies the conformity of each of the PAS client's `$inquire` request bodies to the
12
14
  [PAS Inquiry Request Bundle](http://hl7.org/fhir/us/davinci-pas/STU2/StructureDefinition-profile-pas-inquiry-request-bundle.html)
13
15
  structure. It also checks that other conformance requirements defined in the [PAS Formal
14
16
  Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html),
@@ -37,30 +39,22 @@ module DaVinciPASTestKit
37
39
  'hl7.fhir.us.davinci-pas_2.0.1@125', 'hl7.fhir.us.davinci-pas_2.0.1@126',
38
40
  'hl7.fhir.us.davinci-pas_2.0.1@127', 'hl7.fhir.us.davinci-pas_2.0.1@128'
39
41
 
40
- def request_type_tag
41
- INQUIRE_TAG
42
+ def operation_name
43
+ 'inquire'
42
44
  end
43
45
 
44
- def workflow_tag
45
- config.options[:workflow_tag]
46
+ def message_direction_name
47
+ 'request'
46
48
  end
47
49
 
48
- run do
49
- if workflow_tag.present?
50
- load_tagged_requests(request_type_tag, workflow_tag)
51
- else
52
- load_tagged_requests(request_type_tag)
53
- end
54
- skip_if !request.present?, 'No inquire requests received.'
50
+ def ig_version
51
+ '2.0.1'
52
+ end
55
53
 
56
- validate_pas_bundle_json(
57
- request.request_body,
58
- 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle',
59
- '2.0.1',
60
- 'inquire',
61
- 'request_bundle',
62
- message: 'The Bundle provided for the Claim/$inquire operation is invalid:'
63
- )
54
+ run do
55
+ failed = non_conformant_bundles
56
+ assert failed.empty?,
57
+ "Non-conformant request Bundles detected: #{failed.join(', ')}. Check messages for issues found."
64
58
  end
65
59
  end
66
60
  end
@@ -1,21 +1,21 @@
1
1
  require_relative '../../../cross_suite/pas_bundle_validation'
2
2
  require_relative '../../user_input_response'
3
- require_relative '../../response_generator'
3
+ require_relative '../../client_bundle_validation_helper'
4
4
 
5
5
  module DaVinciPASTestKit
6
6
  module DaVinciPASV201
7
7
  class PasClientInquireResponseBundleValidationTest < Inferno::Test
8
8
  include DaVinciPASTestKit::PasBundleValidation
9
9
  include UserInputResponse
10
- include ResponseGenerator
10
+ include DaVinciPASTestKit::ClientBundleValidationHelper
11
11
 
12
12
  id :pas_client_v201_inquire_response_bundle_validation_test
13
- title 'Inquire Response Bundle is valid'
13
+ title '$inquire response Bundles have the correct structure and content'
14
14
  description %(
15
- **USER INPUT VERIFICATION**: This test verifies input provided by the tester instead of the system under test.
15
+ This test verifies input provided by the tester instead of the PAS client.
16
16
  Errors encountered will be treated as a skip instead of a failure.
17
17
 
18
- This test verifies the conformity of the inquire response sent by Inferno, which will have been
18
+ This test verifies the conformity of each `$inquire` response sent by Inferno, which will have been
19
19
  either:
20
20
  - the response body provided by the tester in the corresponding input, or
21
21
  - created by Inferno from the $inquire Bundle.
@@ -33,8 +33,11 @@ module DaVinciPASTestKit
33
33
  to the bound ValueSet. Quantity, Coding, and code element bindings will
34
34
  fail if their code/system are not found in the valueset.
35
35
 
36
- Note that because X12 value sets are not public, elements bound to value
37
- sets containing X12 codes are not validated.
36
+ Note that:
37
+ - To ensure that the PAS client is driving its behavior only based on standard
38
+ PAS information, custom extensions are not allowed within the responses.
39
+ - Because X12 value sets are not public, elements bound to value
40
+ sets containing X12 codes are not validated.
38
41
 
39
42
  **Limitations**
40
43
 
@@ -46,12 +49,16 @@ module DaVinciPASTestKit
46
49
  )
47
50
  simulation_verification
48
51
 
49
- def request_type
52
+ def operation_name
50
53
  'inquire'
51
54
  end
52
55
 
53
- def workflow_tag
54
- config.options[:workflow_tag]
56
+ def message_direction_name
57
+ 'response'
58
+ end
59
+
60
+ def ig_version
61
+ '2.0.1'
55
62
  end
56
63
 
57
64
  def target_user_input
@@ -63,26 +70,19 @@ module DaVinciPASTestKit
63
70
  end
64
71
  end
65
72
 
66
- run do
67
- load_tagged_requests(workflow_tag, INQUIRE_TAG)
68
- skip_if requests.empty?, 'No responses to verify because no inquire requests were made.'
69
- message = if workflow_tag == MUST_SUPPORT_WORKFLOW_TAG
70
- 'Invalid must support response bundle provided:'
71
- elsif user_inputted_response? target_user_input
72
- "Invalid response generated from provided input '#{input_title(target_user_input)}':"
73
- else
74
- 'Invalid response generated from the submitted claim:'
75
- end
73
+ def failed_entities_description
74
+ if user_inputted_response? target_user_input
75
+ "built from tester-provided response in '#{input_title(target_user_input)}'"
76
+ else
77
+ 'generated from the submitted claim'
78
+ end
79
+ end
76
80
 
77
- validate_pas_bundle_json(
78
- request.response_body,
79
- 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle',
80
- '2.0.1',
81
- request_type,
82
- 'response_bundle',
83
- skips: true,
84
- message:
85
- )
81
+ run do
82
+ failed = non_conformant_bundles
83
+ skip_if failed.present?,
84
+ "Non-conformant response Bundles #{failed_entities_description}: #{failed.join(', ')}. " \
85
+ 'Check messages for issues found.'
86
86
  end
87
87
  end
88
88
  end
@@ -3,6 +3,7 @@ require_relative '../../client_input_descriptions'
3
3
  require_relative '../../user_input_response'
4
4
  require_relative '../../../cross_suite/pas_bundle_validation'
5
5
  require_relative '../../session_identification'
6
+ require_relative '../../subscription_setup_requirement'
6
7
 
7
8
  module DaVinciPASTestKit
8
9
  module DaVinciPASV201
@@ -11,15 +12,16 @@ module DaVinciPASTestKit
11
12
  include SessionIdentification
12
13
  include UserInputResponse
13
14
  include PasBundleValidation
15
+ include SubscriptionSetupRequirement
14
16
 
15
17
  id :pas_client_v201_pended_submit_test
16
- title 'Client submits a claim and reacts to a pended response'
18
+ title 'PAS client submits a claim and reacts to a pended response'
17
19
  description %(
18
- Inferno will wait for a prior authorization submission request
19
- from the client. Upon receipt, Inferno will respond with the
20
+ During this test, Inferno will wait for a prior authorization submission request
21
+ from the PAS client. Upon receipt, Inferno will respond with the
20
22
  provided pended response. Subsequently, Inferno will send a
21
23
  notification that the claim has been finalized and expect the
22
- client under test to send a follow-up inquiry.
24
+ PAS client to send a follow-up inquiry.
23
25
  )
24
26
  verifies_requirements 'hl7.fhir.us.davinci-pas_2.0.1@58', 'hl7.fhir.us.davinci-pas_2.0.1@62',
25
27
  'hl7.fhir.us.davinci-pas_2.0.1@67', 'hl7.fhir.us.davinci-pas_2.0.1@70',
@@ -27,14 +29,14 @@ module DaVinciPASTestKit
27
29
  'hl7.fhir.us.davinci-pas_2.0.1@153', 'hl7.fhir.us.davinci-pas_2.0.1@202',
28
30
  'hl7.fhir.us.davinci-pas_2.0.1@203'
29
31
 
30
- config options: { accepts_multiple_requests: true }
32
+ config options: { accepts_multiple_requests: true, submit_enabled: true, inquire_enabled: true }
31
33
  input :notification_bundle,
32
34
  title: 'Claim updated notification JSON',
33
35
  type: 'textarea',
34
36
  optional: true,
35
37
  description: %(
36
38
  If provided, this JSON will be sent as the notification for the
37
- PAS Subscription to tell the client that a decision has been made on the pended claim.
39
+ PAS Subscription to tell the PAS client that a decision has been made on the pended claim.
38
40
  Before sending, Inferno will update the provided notification with details that the tester cannot
39
41
  know ahead of time, including timestamps corresponding to the notification trigger time, and the id of
40
42
  the triggering ClaimResponse if Inferno mocks that ClaimResponse because it is not provided by the
@@ -69,8 +71,8 @@ module DaVinciPASTestKit
69
71
  optional: true,
70
72
  title: 'Client Notification Access Token',
71
73
  description: %(
72
- The bearer token that Inferno will send on requests to the client under test's rest-hook notification
73
- endpoint. Not needed if the client under test will create a Subscription with an appropriate header value
74
+ The bearer token that Inferno will send on requests to the PAS client's rest-hook notification
75
+ endpoint. Not needed if the PAS client will create a Subscription with an appropriate header value
74
76
  in the `channel.header` element. If a value for the `authorization` header is provided in
75
77
  `channel.header`, this value will override it.
76
78
  )
@@ -92,13 +94,7 @@ module DaVinciPASTestKit
92
94
  inquire_respond_with :inquire_json_response
93
95
 
94
96
  run do
95
- load_tagged_requests(SUBSCRIPTION_CREATE_TAG)
96
- skip_if requests.empty?, # NOTE: subscription needed ahead of time to support notification generation
97
- %(
98
- Pended workflow tests cannot proceed because no Subscription exists to receive notifications
99
- for pended claims. Run the _PAS Subscription Setup_ tests to provide a Subscription for use
100
- in delivering notifications before re-running the pended workflow tests.
101
- )
97
+ require_unmodified_subscription
102
98
 
103
99
  if user_inputted_response? :pended_json_response
104
100
  assert_valid_json pended_json_response,
@@ -141,42 +137,55 @@ module DaVinciPASTestKit
141
137
  wait(
142
138
  identifier: wait_identifier,
143
139
  timeout: 600,
144
- message: %(
145
- **Pended Workflow Test**:
140
+ message: <<~MESSAGE
141
+ **Pended Scenario Test**:
146
142
 
147
- 1. Submit a PAS request to
143
+ Inferno will wait while the tester uses the PAS client to complete the following steps:
148
144
 
149
- `#{submit_endpoint}`
145
+ 1. Submit a PAS request to Inferno's `$submit` endpoint. Inferno will return a pended response.
146
+ 2. Within 5-10 seconds, Inferno will send a notification indicating that the ClaimResponse has
147
+ been finalized to the endpoint provided on the Subscription during the _Subscription Setup_ tests.
148
+ 3. Once the notification has been received, submit a PAS inquiry request to Inferno's `$inquire`
149
+ endpoint. Inferno will return an approval response.
150
150
 
151
- If the optional '**#{input_title(:pended_json_response)}**' input is populated, it will
152
- be returned, updated with current timestamps. Otherwise, a pended response will
153
- be generated by Inferno using the received Claim.
151
+ Inferno will later ask testers to attest that the PAS client marked the request as pended after
152
+ step 1 (submit) and before step 2 (notification), so testers should check their PAS client's state
153
+ between these steps in order to faithfully answer the attestation.
154
154
 
155
- 2. Within 5-10 seconds, Inferno will send a notification indicating that the ClaimResponse has been
156
- finalized. If the optional '**#{input_title(:notification_bundle)}**' input is populated
157
- Inferno will send it as a notification. Otherwise, a notification will be generated
158
- from Inferno. In either case, the notification will be delivered to the endpoint provided on the
159
- Subscription during the _PAS Subscription Setup_ tests.
155
+ [Click here](#{confirmation_url}) once the PAS client has completed these steps.
160
156
 
161
- 3. Once the notification has been received, submit a PAS inquiry request to
157
+ ### Endpoints
162
158
 
163
- `#{inquire_endpoint}`
159
+ - $submit: `#{submit_endpoint}`
160
+ - $inquire: `#{inquire_endpoint}`
164
161
 
165
- If the optional '**#{input_title(:inquire_json_response)}**' input is populated, it will
166
- be returned, updated with current timestamps. Otherwise, an approval response will
167
- be generated by Inferno using the received Claim.
162
+ ### Authentication and Identification
168
163
 
169
- Note that Inferno will ask testers to attest to correct behavior of the system between these steps,
170
- i.e., that the system marked the pended prior auth request appropriately after step 1 (submit) but
171
- before step 2 (notification). Thus testers should check their system state as appropriate in order
172
- to be able to faithfully answer the attestations.
164
+ #{auth_description_for_wait(client_id)}
173
165
 
174
- Once the client has completed these steps,
175
- [click here to complete the test](#{confirmation_url})
176
- and continue Inferno's evaluation of the interaction.
177
- )
166
+ ### Responses
167
+
168
+ #{response_description_for_wait(user_inputted_response?(:pended_json_response),
169
+ input_title(:pended_json_response),
170
+ '$submit')}
171
+
172
+ #{response_description_for_wait(user_inputted_response?(:inquire_json_response),
173
+ input_title(:inquire_json_response),
174
+ '$inquire')}
175
+
176
+ #{notification_description_for_wait}
177
+ MESSAGE
178
178
  )
179
179
  end
180
+
181
+ def notification_description_for_wait
182
+ if notification_bundle.present?
183
+ "Inferno will send the content of the '**#{input_title(:notification_bundle)}**' input as the " \
184
+ 'notification, updated with current timestamps.'
185
+ else
186
+ 'Inferno will send a notification generated from the pended response.'
187
+ end
188
+ end
180
189
  end
181
190
  end
182
191
  end