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,90 +7,86 @@ 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 DaVinciPASV221
13
14
  class PASClientMustSupportGroup < Inferno::TestGroup
14
15
  id :pas_client_v221_must_support
15
16
  title 'Must Support Elements'
16
- 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
17
+ description "#{DaVinciPASTestKit.must_support_group_description('v2.2.1', 'da-vinci-pas-v221')}\n" \
18
+ "#{MUST_SUPPORT_SEPARATE_GROUPS_DESCRIPTION}"
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
+ MUST_SUPPORT_INPUT_ORDER = [:ms_submit_responses, :ms_inquire_responses, :client_id, :session_url_path].freeze
25
21
 
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
- )
22
+ input_order(*MUST_SUPPORT_INPUT_ORDER)
36
23
 
37
24
  # Combined receive group - single wait test for both submit and inquire
38
25
  group do
39
26
  id :pas_client_v221_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
- )
27
+ title MUST_SUPPORT_RECEIVE_GROUP_TITLE
28
+ description MUST_SUPPORT_RECEIVE_GROUP_DESCRIPTION
46
29
  run_as_group
47
30
 
48
- test from: :pas_client_v221_gather_must_support
49
- end
31
+ # The must support response inputs already belong to pas_client_v221_gather_must_support
32
+ # (the wait test below); declaring them here too, before the tests are defined, propagates
33
+ # them onto the bundle validation tests as well, so they can tell whether a tester-provided
34
+ # response was used - see PasClientResponseBundleValidationTest/PasClientInquireResponseBundleValidationTest
35
+ # #failed_entities_description. They are declared on this group rather than the parent so they
36
+ # do not also propagate onto the coverage group, which does not use them.
37
+ input :ms_submit_responses, optional: true
38
+ input :ms_inquire_responses, optional: true
50
39
 
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
40
+ input_order(*MUST_SUPPORT_INPUT_ORDER)
41
+
42
+ test from: :pas_client_v221_gather_must_support
43
+ test from: :pas_client_v221_response_attest,
44
+ id: :pas_client_v221_response_attest_ms_submit_inquire,
45
+ title: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_TITLE,
46
+ description: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_DESCRIPTION,
47
+ config: { options: {
48
+ workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
49
+ no_requests_ok: true,
50
+ multiple_requests_ok: true,
51
+ attest_message: MUST_SUPPORT_SUBMIT_INQUIRE_ATTEST_MESSAGE
52
+ } } do
53
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-8'
54
+ end
60
55
 
61
56
  test from: :pas_client_v221_request_bundle_validation_test,
62
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
57
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
58
+ multiple_requests_ok: true } }
63
59
  test from: :pas_client_v221_response_bundle_validation_test,
64
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
60
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
61
+ multiple_requests_ok: true } }
62
+ test from: :pas_client_v221_inquire_request_bundle_validation_test,
63
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
64
+ multiple_requests_ok: true } }
65
+ test from: :pas_client_v221_inquire_response_bundle_validation_test,
66
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG, no_requests_ok: true,
67
+ multiple_requests_ok: true } }
65
68
  end
66
69
 
67
- # $submit Request Must Support (fail when errors detected)
68
- group from: :pas_client_v221_submit_must_support
69
-
70
- # $submit Response Must Support (skip when errors detected)
71
- group from: :pas_client_v221_submit_response_must_support
72
-
73
- # $inquire Bundle Conformance Validation
70
+ # Kept separate from the receive group so the analysis can be re-run without re-running the receive
71
+ # group, which would discard the requests made during its previous run
74
72
  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
- )
73
+ id :pas_client_v221_must_support_coverage
74
+ title MUST_SUPPORT_COVERAGE_GROUP_TITLE
75
+ description MUST_SUPPORT_COVERAGE_GROUP_DESCRIPTION
81
76
  run_as_group
82
77
 
83
- test from: :pas_client_v221_inquire_request_bundle_validation_test,
84
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
85
- test from: :pas_client_v221_inquire_response_bundle_validation_test,
86
- config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
87
- end
78
+ # $submit Request Must Support (fail when errors detected)
79
+ group from: :pas_client_v221_submit_must_support
88
80
 
89
- # $inquire Request Must Support (fail when errors detected)
90
- group from: :pas_client_v221_inquire_must_support
81
+ # $submit Response Must Support (skip when errors detected)
82
+ group from: :pas_client_v221_submit_response_must_support
91
83
 
92
- # $inquire Response Must Support (skip when errors detected)
93
- group from: :pas_client_v221_inquire_response_must_support
84
+ # $inquire Request Must Support (fail when errors detected)
85
+ group from: :pas_client_v221_inquire_must_support
86
+
87
+ # $inquire Response Must Support (skip when errors detected)
88
+ group from: :pas_client_v221_inquire_response_must_support
89
+ end
94
90
  end
95
91
  end
96
92
  end
@@ -9,8 +9,8 @@ module DaVinciPASTestKit
9
9
  id :pas_client_v221_operation_failure_group
10
10
  title 'Operation Failure'
11
11
  description %(
12
- During these tests, the client will initiate a prior authorization
13
- request and show it can respond appropriately to an operation failure response —
12
+ During these tests, the PAS client will initiate a prior authorization
13
+ request and show it can react appropriately to an operation failure response —
14
14
  a non-2XX HTTP status code accompanied by an OperationOutcome resource.
15
15
  )
16
16
  run_as_group
@@ -24,22 +24,25 @@ module DaVinciPASTestKit
24
24
  :session_url_path
25
25
 
26
26
  test from: :pas_client_v221_operation_failure_submit_test
27
- test from: :pas_client_v221_operation_outcome_validation_test
28
27
  test from: :pas_client_v221_response_attest,
29
28
  title: 'PAS client handles the operation failure appropriately',
30
29
  description: %(
31
- This test provides the tester an opportunity to observe their client following
30
+ During this test, the tester will observe the PAS client following
32
31
  the receipt of the operation failure response and attest that the error details
33
32
  from the OperationOutcome were made available to the appropriate users (e.g.,
34
33
  technical staff, not the clinical end user).
35
34
  ),
36
35
  config: { options: {
37
36
  workflow_tag: OPERATION_FAILURE_WORKFLOW_TAG,
38
- attest_message: 'I attest that the client system handles the operation failure response ' \
37
+ operation_tag: SUBMIT_TAG,
38
+ error_status_expected: true,
39
+ attest_message: 'I attest that the PAS client did not error when receiving the operation ' \
40
+ 'failure response and handles it ' \
39
41
  'appropriately: the OperationOutcome details are available to technical staff ' \
40
42
  'for review and the clinical end user is informed that the submission could ' \
41
43
  'not be processed.'
42
44
  } }
45
+ test from: :pas_client_v221_operation_outcome_validation_test
43
46
  end
44
47
  end
45
48
  end
@@ -1,4 +1,5 @@
1
1
  require_relative 'workflows/pas_client_pended_submit_test'
2
+ require_relative 'workflows/pas_client_pended_send_notification_test'
2
3
  require_relative 'workflows/pas_client_response_attest'
3
4
  require_relative 'workflows/pas_client_response_bundle_validation_test'
4
5
  require_relative 'workflows/pas_client_request_bundle_validation_test'
@@ -12,65 +13,89 @@ module DaVinciPASTestKit
12
13
  include UserInputResponse
13
14
 
14
15
  id :pas_client_v221_pended_group
15
- title 'Pended Workflow'
16
+ title 'Pended Response'
16
17
  description %(
17
- During these tests, the client will initiate a prior authorization
18
- 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
19
20
  waiting for a full-resource notification that contains the final decision.
20
- In v2.2.1, the notification includes all details so no follow-up `$inquire`
21
- request is needed.
21
+ In PAS v2.2.1, the notification includes all details so no follow-up `$inquire`
22
+ request is needed and Inferno does not currently accept them during this group.
22
23
  )
23
24
  run_as_group
24
25
 
25
26
  input :pended_json_response, optional: true
26
27
 
27
28
  input_order :pended_json_response,
29
+ :notification_bundle,
30
+ :client_endpoint_access_token,
28
31
  :client_id,
29
32
  :session_url_path
30
33
 
31
34
  group do
32
- title 'Interaction'
35
+ title 'Interaction and Response Handling'
33
36
  description %(
34
- All interactions for the pended prior authorization request workflow
35
- between Inferno and the client under test will be performed during this test
37
+ All interactions for the pended prior authorization request scenario
38
+ between Inferno and the PAS client will be performed during this group
36
39
  including
37
- - A `$submit` request from the client to Inferno where Inferno returns a pended response.
40
+ - A `$submit` request from the PAS client to Inferno where Inferno returns a pended response.
38
41
  - A full-resource notification that the prior authorization decision has been finalized
39
- from Inferno to the client under test.
42
+ from Inferno to the PAS client.
43
+
44
+ In between these requests, testers will confirm that the PAS client registers
45
+ the request as pended and that it is updated with the final response
46
+ after the notification is received.
40
47
  )
41
48
 
42
49
  test from: :pas_client_v221_pended_submit_test
43
- end
44
-
45
- group do
46
- title '$submit Conformance and Handling'
47
-
48
- test from: :pas_client_v221_request_bundle_validation_test,
49
- config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
50
- test from: :pas_client_v221_response_bundle_validation_test,
51
- config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
52
50
  test from: :pas_client_v221_response_attest,
51
+ id: :pas_client_v221_pended_response_attest,
53
52
  title: 'PAS client displays the request as "pended"',
54
53
  description: %(
55
- This test provides the tester an opportunity to observe their client following
54
+ During this test, the tester will observe the PAS client following
56
55
  the receipt of the pended response and attest that users are able to determine
57
56
  that the response has been pended and a decision will be forthcoming.
58
57
  ),
59
58
  config: { options: {
60
59
  workflow_tag: PENDED_WORKFLOW_TAG,
61
- attest_message: "I attest that following the receipt of the 'pended' response to the submitted " \
62
- 'claim, the client system indicates to users that a final decision on request ' \
63
- 'has not yet been made.'
60
+ operation_tag: SUBMIT_TAG,
61
+ attest_message: 'I attest that the PAS client did not error when handling the `$submit` ' \
62
+ "response and displays the submitted claim as 'pended' meaning " \
63
+ 'that a final decision on prior authorization of the service has not been made.'
64
+ } }
65
+ test from: :pas_client_v221_pended_notify_and_attest_finalized_test
66
+ test from: :pas_client_v221_response_attest,
67
+ id: :pas_client_v221_pended_finalized_response_attest,
68
+ title: 'PAS client displays the final decision as "approved"',
69
+ description: %(
70
+ During this test, the tester will observe the PAS client following
71
+ the receipt of the full-resource notification containing the approved final decision
72
+ and attest that users are able to determine that the request has been approved.
73
+ ),
74
+ config: { options: {
75
+ workflow_tag: PENDED_WORKFLOW_TAG,
76
+ request_tags: [REST_HOOK_EVENT_NOTIFICATION_TAG],
77
+ attest_message: 'I attest that the PAS client did not error when handling the notification ' \
78
+ "and displays the submitted claim as 'approved' meaning that the " \
79
+ 'user can proceed with ordering or providing the requested service.'
64
80
  } }
65
81
  end
66
82
 
67
83
  group do
68
- title 'Notification Conformance and Handling'
84
+ title '$submit Conformance'
85
+
86
+ test from: :pas_client_v221_request_bundle_validation_test,
87
+ config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
88
+ test from: :pas_client_v221_response_bundle_validation_test,
89
+ config: { options: { workflow_tag: PENDED_WORKFLOW_TAG } }
90
+ end
91
+
92
+ group do
93
+ title 'Notification Conformance'
69
94
 
70
95
  test from: :subscriptions_r4_client_notification_input_verification,
71
96
  title: 'Inferno\'s event notification Bundle is conformant',
72
97
  description: %(
73
- This test checks that the notification Bundle sent to the client, which will be either
98
+ This test checks that the notification Bundle sent to the PAS client, which will be either
74
99
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
75
100
  or mocked by Inferno based on details in the Subscription and submitted Claim, is conformant
76
101
  to Subscription Backport IG requirements.
@@ -84,10 +109,10 @@ module DaVinciPASTestKit
84
109
  test from: :subscriptions_r4_client_notification_input_payload_verification,
85
110
  title: 'Inferno\'s event notification Bundle matches the Subscription',
86
111
  description: %(
87
- This test checks that the notification Bundle sent to the client, which will be either
112
+ This test checks that the notification Bundle sent to the PAS client, which will be either
88
113
  the tester-provided notification Bundle in the **Claim updated notification JSON** input
89
114
  or mocked by Inferno based on details in the Subscription and submitted Claim, matches the details
90
- requested in the Subscription provided during the **2.1** "PAS Subscription Setup" tests.
115
+ requested in the Subscription provided during the "Subscription Setup" tests.
91
116
  ),
92
117
  simulation_verification: true,
93
118
  config: {
@@ -101,24 +126,11 @@ module DaVinciPASTestKit
101
126
  test from: :subscriptions_r4_client_event_notification_verification,
102
127
  title: 'PAS client accepts the "claim updated" event notification',
103
128
  description: %(
104
- This test checks that the client responds appropriately to the event notification request.
129
+ This test checks that the PAS client responds appropriately to the event notification request.
105
130
  ) do
106
131
  verifies_requirements(*SubscriptionsTestKit::SubscriptionsR5BackportR4Client::EventNotificationVerificationTest.verifies_requirements,
107
132
  'hl7.fhir.us.davinci-pas_2.2.1@spec-8')
108
133
  end
109
- test from: :pas_client_v221_response_attest,
110
- title: 'PAS client displays the final decision as "approved"',
111
- description: %(
112
- This test provides the tester an opportunity to observe their client following
113
- the receipt of the full-resource notification containing the approved final decision
114
- and attest that users are able to determine that the request has been approved.
115
- ),
116
- config: { options: {
117
- workflow_tag: PENDED_WORKFLOW_TAG,
118
- attest_message: "I attest that the client system displays the submitted claim as 'approved' based " \
119
- 'on the full-resource notification, meaning that the user can proceed with ' \
120
- 'ordering or providing the requested service.'
121
- } }
122
134
  end
123
135
  end
124
136
  end
@@ -10,8 +10,8 @@ module DaVinciPASTestKit
10
10
  id :pas_client_v221_processing_error_group
11
11
  title 'Processing Errors'
12
12
  description %(
13
- During these tests, the client will initiate a prior authorization
14
- request and show it can respond appropriately to a response containing
13
+ During these tests, the PAS client will initiate a prior authorization
14
+ request and show it can react appropriately to a response containing
15
15
  one or more ClaimResponse.error entries.
16
16
  )
17
17
  run_as_group
@@ -23,22 +23,24 @@ module DaVinciPASTestKit
23
23
  :session_url_path
24
24
 
25
25
  test from: :pas_client_v221_processing_error_submit_test
26
- test from: :pas_client_v221_request_bundle_validation_test,
27
- config: { options: { workflow_tag: PROCESSING_ERROR_WORKFLOW_TAG } }
28
- test from: :pas_client_v221_processing_error_response_validation_test
29
26
  test from: :pas_client_v221_response_attest,
30
27
  title: 'PAS client handles the processing errors appropriately',
31
28
  description: %(
32
- This test provides the tester an opportunity to observe their client following
29
+ During this test, the tester will observe the PAS client following
33
30
  the receipt of the response containing ClaimResponse.error entries and attest
34
31
  that the processing error details were made available to the appropriate users.
35
32
  ),
36
33
  config: { options: {
37
34
  workflow_tag: PROCESSING_ERROR_WORKFLOW_TAG,
38
- attest_message: 'I attest that the client system handles the processing error response ' \
35
+ operation_tag: SUBMIT_TAG,
36
+ attest_message: 'I attest that the PAS client did not error when receiving the processing ' \
37
+ 'error response and handles it ' \
39
38
  'appropriately: the ClaimResponse error details are surfaced to the ' \
40
39
  'appropriate users so that corrective action can be taken.'
41
40
  } }
41
+ test from: :pas_client_v221_request_bundle_validation_test,
42
+ config: { options: { workflow_tag: PROCESSING_ERROR_WORKFLOW_TAG } }
43
+ test from: :pas_client_v221_processing_error_response_validation_test
42
44
  end
43
45
  end
44
46
  end
@@ -12,8 +12,8 @@ module DaVinciPASTestKit
12
12
  id :pas_client_v221_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,20 +8,25 @@ module DaVinciPASTestKit
8
8
  id :pas_client_v221_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
16
16
 
17
+ input_order :client_endpoint_access_token
18
+
17
19
  test from: :pas_client_v221_subscription_create_test
20
+ test from: :subscriptions_r4_client_subscription_verification,
21
+ title: 'Subscription creation request has the correct structure and content'
18
22
  test from: :pas_client_subscription_pas_conformance_test,
23
+ title: 'Subscription creation request meets PAS Subscription requirements',
19
24
  description: %(
20
- This test verifies that the Subscription created by the client under test
25
+ This test verifies that the Subscription created by the PAS client
21
26
  is conformant to PAS requirements on the Subscription, including
22
27
  - The use of the [PAS-defined Subscription
23
28
  Topic](https://hl7.org/fhir/us/davinci-pas/2.2.1/SubscriptionTopic-PASSubscriptionTopic.html), and
24
- - Inclusion of filter criteria for the client's organization.
29
+ - Inclusion of filter criteria for the PAS client's organization.
25
30
  ),
26
31
  config: { options: { ig_version: 'v2.2.1' } }
27
32
  test from: :subscriptions_r4_client_handshake_notification_verification,
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'subscriptions_test_kit'
4
+ require_relative 'subscription/pas_client_subscription_update_delete_test'
5
+ require_relative 'subscription/pas_client_subscription_put_update_pas_conformance_test'
6
+
7
+ module DaVinciPASTestKit
8
+ module DaVinciPASV221
9
+ class PASClientSubscriptionUpdateDeleteGroup < Inferno::TestGroup
10
+ id :pas_client_v221_subscription_update_delete
11
+ title 'Subscription Update and Deletion'
12
+ description %(
13
+ During this group, the tester will demonstrate the ability of the PAS client
14
+ to update and delete the PAS Subscription instance that it created
15
+ during the "Subscription Setup" group. This group must be run after
16
+ all scenario and must support tests have been run as Inferno will
17
+ not send notifications once the Subscription created during the
18
+ "Subscription Setup" group has been modified or deleted during this
19
+ group.
20
+
21
+ Inferno will wait for the PAS client to send update and delete requests and
22
+ will then verify that the requests are conformant. Note that
23
+ - Update and delete requests are only accepted by Inferno while
24
+ this group is waiting.
25
+ - Only requests for the Subscription created during the most recent
26
+ run of the "Subscription Setup" group in this session will
27
+ be accepted.
28
+ - Once the Subscription has been deleted, Inferno will respond to
29
+ further update and read requests for it with a `404 Not Found`
30
+ until this group is re-run.
31
+ - If this group is re-run, Inferno will forget about the previous
32
+ update and delete interactions sent by the PAS client, including
33
+ deletion. The PAS client can interact with the Subscription as it
34
+ was after it was created. If the PAS client cannot resume
35
+ interacting with a Subscription that it has deleted, re-run
36
+ the *Subscription Setup* group to create a new Subscription.
37
+ )
38
+ run_as_group
39
+
40
+ group 'Subscription Update and Delete Interaction' do
41
+ id :pas_client_v221_subscription_update_delete_interaction
42
+ test from: :pas_client_v221_subscription_update_delete_test
43
+ end
44
+
45
+ group 'Subscription Update and Delete Conformance' do
46
+ id :pas_client_v221_subscription_update_delete_conformance
47
+ test from: :subscriptions_r4_client_put_update_verification do
48
+ title 'Subscription update requests have the correct structure and content'
49
+ end
50
+ test from: :pas_client_v221_subscription_put_update_pas_conformance_test
51
+ test from: :subscriptions_r4_client_delete_verification do
52
+ title 'Subscription delete requests have the correct structure and content'
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -3,23 +3,43 @@ require_relative 'pas_client_denial_group'
3
3
  require_relative 'pas_client_pended_group'
4
4
  require_relative 'pas_client_claim_updates_group'
5
5
  require_relative 'pas_client_modification_group'
6
+ require_relative 'pas_client_operation_failure_group'
7
+ require_relative 'pas_client_processing_error_group'
6
8
 
7
9
  module DaVinciPASTestKit
8
10
  module DaVinciPASV221
9
11
  class PASClientWorkflowsGroup < Inferno::TestGroup
10
12
  id :pas_client_v221_workflows
11
- title 'PAS Workflows'
13
+ title 'PAS Scenarios'
12
14
  description %(
13
- The workflow tests verify that the client can participate in complete end-to-end prior
15
+ The scenario tests verify that the PAS client can participate in complete end-to-end prior
14
16
  authorization interactions, initiating requests and reacting appropriately to the
15
17
  responses returned.
16
18
  )
17
19
 
20
+ input_order :approval_json_response,
21
+ :denial_json_response,
22
+ :pended_json_response,
23
+ :notification_bundle,
24
+ :client_endpoint_access_token,
25
+ :claim_update_initial_response,
26
+ :claim_update_add_item_response,
27
+ :claim_update_modify_cancel_response,
28
+ :claim_update_cancel_all_response,
29
+ :modification_json_response,
30
+ :operation_failure_operation_outcome,
31
+ :operation_failure_http_status,
32
+ :processing_error_response,
33
+ :client_id,
34
+ :session_url_path
35
+
18
36
  group from: :pas_client_v221_approval_group
19
37
  group from: :pas_client_v221_denial_group
20
38
  group from: :pas_client_v221_pended_group
21
39
  group from: :pas_client_v221_claim_updates_group
22
40
  group from: :pas_client_v221_modification_group
41
+ group from: :pas_client_v221_operation_failure_group
42
+ group from: :pas_client_v221_processing_error_group
23
43
  end
24
44
  end
25
45
  end
@@ -8,7 +8,8 @@ module DaVinciPASTestKit
8
8
 
9
9
  id :pas_client_v221_subscription_create_test
10
10
 
11
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-8'
11
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-8',
12
+ 'hl7.fhir.uv.subscriptions_1.1.0@23'
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'subscriptions_test_kit'
4
+ require_relative '../../../cross_suite/pas_subscription_verification'
5
+
6
+ module DaVinciPASTestKit
7
+ module DaVinciPASV221
8
+ class PASClientSubscriptionPutUpdatePASConformanceTest < Inferno::Test
9
+ include SubscriptionsTestKit::SubscriptionsR5BackportR4Client::UpdateRequestLoading
10
+ include PASSubscriptionVerification
11
+
12
+ id :pas_client_v221_subscription_put_update_pas_conformance_test
13
+ title 'Subscription update requests meet PAS Subscription requirements'
14
+ description %(
15
+ This test verifies that the Subscriptions in the accepted [update](https://hl7.org/fhir/R4/http.html#update)
16
+ (`PUT`) requests that the PAS client sent to Inferno for the Subscription it created during this
17
+ session are conformant to PAS requirements on the Subscription, including
18
+ - Conformance to the [PAS Subscription
19
+ profile](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-subscription.html), and
20
+ - Filter criteria for the PAS client's organization in the format `org-identifier=<identifier>`.
21
+ )
22
+
23
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-62', 'hl7.fhir.uv.subscriptions_1.1.0@64',
24
+ 'hl7.fhir.uv.subscriptions_1.1.0@96', 'hl7.fhir.uv.subscriptions_1.1.0@116'
25
+
26
+ run do
27
+ load_update_requests('put')
28
+
29
+ # Numbered among all PUT requests so that messages line up with the general update conformance test
30
+ accepted_requests = requests.each.with_index(1).select { |update_request, _| update_request.status == 200 }
31
+ skip_if accepted_requests.none?, %(
32
+ Inferno did not accept any PUT update requests for the created Subscription, so there are no updated
33
+ Subscriptions to check.
34
+ )
35
+
36
+ accepted_requests.each do |update_request, request_number|
37
+ first_message_index = messages.length
38
+ add_pas_subscription_messages(JSON.parse(update_request.request_body), ig_version: 'v2.2.1')
39
+ messages[first_message_index..].each do |message|
40
+ message[:message] = "Request #{request_number}: #{message[:message]}"
41
+ end
42
+ end
43
+
44
+ assert messages.none? { |message| message[:type] == 'error' },
45
+ 'Subscription PUT update requests do not conform to PAS requirements - see messages for details.'
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../../abstract_subscription_update_delete_test'
2
+ require_relative '../urls'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ class PASClientSubscriptionUpdateDeleteTest < AbstractSubscriptionUpdateDeleteTest
7
+ include URLs
8
+
9
+ id :pas_client_v221_subscription_update_delete_test
10
+ end
11
+ end
12
+ end
@@ -1,12 +1,12 @@
1
1
  require_relative 'pas_client_claim_update_validation_utils'
2
- require_relative '../../../cross_suite/pas_bundle_validation'
2
+ require_relative '../../../cross_suite/referenced_resource_presence_validation'
3
3
 
4
4
  module DaVinciPASTestKit
5
5
  module DaVinciPASV221
6
- # spec-67 - reuses the existing PasBundleValidation reference-presence logic.
6
+ # spec-67 - reuses the existing reference-presence validation logic.
7
7
  class PASClientClaimUpdateReferencedResourcesTest < Inferno::Test
8
8
  include ClaimUpdateValidationUtils
9
- include DaVinciPASTestKit::PasBundleValidation
9
+ include DaVinciPASTestKit::ReferencedResourcePresenceValidation
10
10
 
11
11
  id :pas_client_v221_claim_update_referenced_resources_test
12
12
  title 'Request Bundles updating a Claim include all resources referenced by the updated Claim'
@@ -28,9 +28,8 @@ module DaVinciPASTestKit
28
28
  # The reused reference-presence check verifies the primary Update Claim's parent reference and the
29
29
  # parent's own referenced resources, while skipping a non-primary Claim's `related` so the
30
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|
31
+ errors = check_presence_of_referenced_resources(step[:claim], base_url, bundle.entry)
32
+ errors.each do |message|
34
33
  add_message('error', "In the #{step[:label]} request: #{message}")
35
34
  end
36
35
  end