davinci_pas_test_kit 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/pas_client_v201_run_against_pas_server.json +39 -0
  3. data/config/presets/pas_client_v221_run_against_pas_server.json +85 -0
  4. data/config/presets/pas_ri.json +2 -2
  5. data/config/presets/pas_server_v201_run_against_pas_client.json.erb +76 -0
  6. data/config/presets/pas_server_v221_run_against_pas_client.json.erb +104 -0
  7. data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +75 -0
  8. data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +74 -0
  9. data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +160 -0
  10. data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +78 -0
  11. data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +64 -0
  12. data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +57 -0
  13. data/lib/davinci_pas_test_kit/{urls.rb → client/client_urls.rb} +7 -23
  14. data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +303 -0
  15. data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/subscription_create_endpoint.rb +1 -1
  16. data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/subscription_status_endpoint.rb +1 -1
  17. data/lib/davinci_pas_test_kit/{endpoints → client/endpoints}/token_endpoint.rb +1 -2
  18. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb → client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb} +14 -35
  19. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +59 -0
  20. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/client_inquire_request_beneficiary_must_support_test.rb → client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb} +14 -35
  21. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +59 -0
  22. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_inquiry/client_inquire_request_claim_inquiry_must_support_test.rb → client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb} +19 -35
  23. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb → client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb} +19 -35
  24. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +57 -0
  25. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +59 -0
  26. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +42 -0
  27. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +39 -0
  28. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +39 -0
  29. data/lib/davinci_pas_test_kit/{generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb → client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb} +14 -35
  30. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +44 -0
  31. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +44 -0
  32. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +44 -0
  33. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +44 -0
  34. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +48 -0
  35. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +79 -0
  36. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +58 -0
  37. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +84 -0
  38. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +37 -0
  39. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +36 -0
  40. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +37 -0
  41. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +36 -0
  42. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +37 -0
  43. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +37 -0
  44. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +37 -0
  45. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +37 -0
  46. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +33 -0
  47. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +33 -0
  48. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +33 -0
  49. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +33 -0
  50. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +47 -0
  51. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +47 -0
  52. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +47 -0
  53. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +47 -0
  54. data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/client_inquire_request_subscriber_must_support_test.rb → client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb} +14 -35
  55. data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb → client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb} +14 -35
  56. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +45 -0
  57. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +45 -0
  58. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +53 -0
  59. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +53 -0
  60. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +123 -0
  61. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +143 -0
  62. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +102 -0
  63. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +103 -0
  64. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +42 -0
  65. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +47 -0
  66. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +47 -0
  67. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +60 -0
  68. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +79 -0
  69. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +89 -0
  70. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +84 -0
  71. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +38 -0
  72. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +39 -0
  73. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +44 -0
  74. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +44 -0
  75. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +40 -0
  76. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +40 -0
  77. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +50 -0
  78. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +50 -0
  79. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +55 -0
  80. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +55 -0
  81. data/lib/davinci_pas_test_kit/{jobs → client/jobs}/send_pas_subscription_notification.rb +12 -7
  82. data/lib/davinci_pas_test_kit/{jobs → client/jobs}/send_subscription_handshake.rb +1 -1
  83. data/lib/davinci_pas_test_kit/client/metadata/mock_pas_server.rb +26 -0
  84. data/lib/davinci_pas_test_kit/client/metadata/pas_server_capability_statement.json +60 -0
  85. data/lib/davinci_pas_test_kit/client/pas_client_options.rb +23 -0
  86. data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +33 -0
  87. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +45 -0
  88. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +37 -0
  89. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +37 -0
  90. data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +39 -0
  91. data/lib/davinci_pas_test_kit/{response_generator.rb → client/response_generator.rb} +198 -62
  92. data/lib/davinci_pas_test_kit/{session_identification.rb → client/session_identification.rb} +1 -2
  93. data/lib/davinci_pas_test_kit/client/user_input_response.rb +64 -0
  94. data/lib/davinci_pas_test_kit/{client_suite.rb → client/v2.0.1/client_suite.rb} +33 -16
  95. data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_gather_must_support_test.rb +12 -0
  96. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb → client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb} +12 -46
  97. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_approval_group.rb +5 -5
  98. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_auth_smart_group.rb +1 -2
  99. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_auth_udap_group.rb +1 -2
  100. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_denial_group.rb +7 -6
  101. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +96 -0
  102. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_pended_group.rb +13 -10
  103. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_registration_group.rb +5 -6
  104. data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_subscription_setup_group.rb +6 -3
  105. data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_other_display_test.rb +12 -0
  106. data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_smart_display_test.rb +12 -0
  107. data/lib/davinci_pas_test_kit/client/v2.0.1/registration/configuration_udap_display_test.rb +12 -0
  108. data/lib/davinci_pas_test_kit/client/v2.0.1/registration/other_auth_attest_test.rb +12 -0
  109. data/lib/davinci_pas_test_kit/client/v2.0.1/subscription/pas_client_subscription_create_test.rb +15 -0
  110. data/lib/davinci_pas_test_kit/client/v2.0.1/urls.rb +15 -0
  111. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_approval_submit_test.rb +15 -0
  112. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_denial_submit_test.rb +15 -0
  113. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_inquire_request_bundle_validation_test.rb +1 -3
  114. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_inquire_response_bundle_validation_test.rb +18 -6
  115. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_pended_submit_test.rb +12 -8
  116. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_request_bundle_validation_test.rb +1 -3
  117. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_attest.rb +12 -0
  118. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/client_tests → client/v2.0.1/workflows}/pas_client_response_bundle_validation_test.rb +10 -5
  119. data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +240 -0
  120. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +76 -0
  121. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +38 -0
  122. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +55 -0
  123. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +67 -0
  124. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +214 -0
  125. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/pas_client_gather_must_support_test.rb +12 -0
  126. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +40 -0
  127. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +31 -0
  128. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +30 -0
  129. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +112 -0
  130. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +47 -0
  131. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +20 -0
  132. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +52 -0
  133. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +96 -0
  134. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +45 -0
  135. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +125 -0
  136. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +44 -0
  137. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +65 -0
  138. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +31 -0
  139. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +25 -0
  140. data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_other_display_test.rb +12 -0
  141. data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_smart_display_test.rb +12 -0
  142. data/lib/davinci_pas_test_kit/client/v2.2.1/registration/configuration_udap_display_test.rb +12 -0
  143. data/lib/davinci_pas_test_kit/client/v2.2.1/registration/other_auth_attest_test.rb +12 -0
  144. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +14 -0
  145. data/lib/davinci_pas_test_kit/client/v2.2.1/urls.rb +15 -0
  146. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_approval_submit_test.rb +12 -0
  147. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancel_request_test.rb +33 -0
  148. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancelled_entries_test.rb +50 -0
  149. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_cancelled_items_certtype_test.rb +47 -0
  150. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_changed_entries_test.rb +100 -0
  151. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_entries_preserved_test.rb +51 -0
  152. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_grandparent_excluded_test.rb +52 -0
  153. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_claim_test.rb +46 -0
  154. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +43 -0
  155. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +238 -0
  156. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_validation_utils.rb +183 -0
  157. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_denial_submit_test.rb +12 -0
  158. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +55 -0
  159. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +78 -0
  160. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_submit_test.rb +12 -0
  161. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +101 -0
  162. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +148 -0
  163. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +56 -0
  164. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_attest.rb +12 -0
  165. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +84 -0
  166. data/lib/davinci_pas_test_kit/cross_suite/base_urls.rb +27 -0
  167. data/lib/davinci_pas_test_kit/cross_suite/fhirpath_utils.rb +55 -0
  168. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/beneficiary/metadata.yml +19 -13
  169. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_inquiry/metadata.yml +59 -22
  170. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claim_update/metadata.yml +60 -22
  171. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claiminquiryresponse/metadata.yml +17 -10
  172. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/claimresponse/metadata.yml +17 -13
  173. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/communication_request/metadata.yml +7 -13
  174. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/coverage/metadata.yml +8 -12
  175. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/device_request/metadata.yml +1 -6
  176. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/encounter/metadata.yml +6 -5
  177. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/insurer/metadata.yml +16 -13
  178. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/medication_request/metadata.yml +1 -6
  179. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/metadata.yml +276 -135
  180. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/nutrition_order/metadata.yml +1 -6
  181. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_request_bundle/metadata.yml +5 -7
  182. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_inquiry_response_bundle/metadata.yml +5 -5
  183. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_request_bundle/metadata.yml +5 -7
  184. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/pas_response_bundle/metadata.yml +5 -5
  185. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/practitioner/metadata.yml +16 -13
  186. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/practitioner_role/metadata.yml +16 -19
  187. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/requestor/metadata.yml +16 -13
  188. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/service_request/metadata.yml +2 -6
  189. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/subscriber/metadata.yml +11 -9
  190. data/lib/davinci_pas_test_kit/{generated → cross_suite/generated}/v2.0.1/task/metadata.yml +8 -5
  191. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/beneficiary/metadata.yml +150 -0
  192. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim → cross_suite/generated/v2.2.1/claim_inquiry}/metadata.yml +199 -192
  193. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_update/metadata.yml +733 -0
  194. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claiminquiryresponse/metadata.yml +456 -0
  195. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claimresponse/metadata.yml +461 -0
  196. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/communication_request/metadata.yml +120 -0
  197. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/coverage/metadata.yml +163 -0
  198. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/device_request_metadata.yml → cross_suite/generated/v2.2.1/device_request/metadata.yml} +32 -33
  199. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/encounter/metadata.yml +237 -0
  200. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/insurer/metadata.yml +111 -0
  201. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/medication_request_metadata.yml → cross_suite/generated/v2.2.1/medication_request/metadata.yml} +59 -26
  202. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +6544 -0
  203. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/nutrition_order_metadata.yml → cross_suite/generated/v2.2.1/nutrition_order/metadata.yml} +13 -14
  204. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_request_bundle/metadata.yml +74 -0
  205. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_response_bundle/metadata.yml +70 -0
  206. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_request_bundle/metadata.yml +74 -0
  207. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_response_bundle/metadata.yml +72 -0
  208. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner/metadata.yml +101 -0
  209. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner_role/metadata.yml +101 -0
  210. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/requestor/metadata.yml +114 -0
  211. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/service_request_metadata.yml → cross_suite/generated/v2.2.1/service_request/metadata.yml} +39 -45
  212. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/subscriber/metadata.yml +136 -0
  213. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +237 -0
  214. data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_data_gathering.rb +111 -0
  215. data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_request_type_test.rb +75 -0
  216. data/lib/davinci_pas_test_kit/cross_suite/must_support/must_support_test.rb +67 -0
  217. data/lib/davinci_pas_test_kit/{pas_bundle_validation.rb → cross_suite/pas_bundle_validation.rb} +383 -56
  218. data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +31 -0
  219. data/lib/davinci_pas_test_kit/cross_suite/pas_notification_verification.rb +120 -0
  220. data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +72 -0
  221. data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +88 -0
  222. data/lib/davinci_pas_test_kit/cross_suite/tags.rb +35 -0
  223. data/lib/davinci_pas_test_kit/cross_suite/validation_test.rb +25 -0
  224. data/lib/davinci_pas_test_kit/{validator_suppressions.rb → cross_suite/validator_suppressions.rb} +23 -1
  225. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +22 -0
  226. data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +230 -0
  227. data/lib/davinci_pas_test_kit/generator/descriptions.rb +95 -0
  228. data/lib/davinci_pas_test_kit/generator/ig_metadata.rb +45 -38
  229. data/lib/davinci_pas_test_kit/generator/ig_metadata_extractor.rb +3 -5
  230. data/lib/davinci_pas_test_kit/generator/{must_support_check_profiles.rb → must_support_target_profiles.rb} +12 -12
  231. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +63 -83
  232. data/lib/davinci_pas_test_kit/generator/pas_must_support_metadata_extractor.rb +129 -0
  233. data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +86 -0
  234. data/lib/davinci_pas_test_kit/generator/{group_metadata_extractor.rb → profile_metadata_extractor.rb} +11 -78
  235. data/lib/davinci_pas_test_kit/generator/server_must_support_group_generator.rb +166 -0
  236. data/lib/davinci_pas_test_kit/generator/{suite_generator.rb → server_suite_generator.rb} +32 -5
  237. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +80 -0
  238. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +43 -0
  239. data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +14 -35
  240. data/lib/davinci_pas_test_kit/generator/templates/server_must_support_group.rb.erb +121 -0
  241. data/lib/davinci_pas_test_kit/generator/templates/{suite.rb.erb → server_suite.rb.erb} +19 -23
  242. data/lib/davinci_pas_test_kit/generator/templates/use_case_group.rb.erb +181 -0
  243. data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +227 -0
  244. data/lib/davinci_pas_test_kit/generator.rb +46 -26
  245. data/lib/davinci_pas_test_kit/igs/davinci_pas_2.2.1.tgz +0 -0
  246. data/lib/davinci_pas_test_kit/metadata.rb +21 -55
  247. data/lib/davinci_pas_test_kit/parameters_helper.rb +18 -0
  248. data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +40 -0
  249. data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +121 -0
  250. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +22 -22
  251. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +66 -0
  252. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v201_requirements_coverage.csv +42 -42
  253. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +212 -0
  254. data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
  255. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb → server/abstract_pas_subscription_notification_wait_test.rb} +13 -20
  256. data/lib/davinci_pas_test_kit/server/claim_inquire_operation_test.rb +31 -0
  257. data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +67 -0
  258. data/lib/davinci_pas_test_kit/server/claim_submit_operation_test.rb +32 -0
  259. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb} +14 -35
  260. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb} +16 -36
  261. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_inquire_request_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb} +14 -35
  262. data/lib/davinci_pas_test_kit/{generated/v2.0.1/beneficiary/server_inquire_response_beneficiary_must_support_test.rb → server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb} +16 -36
  263. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_inquiry/server_inquire_request_claim_inquiry_must_support_test.rb → server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb} +19 -35
  264. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb → server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb} +19 -35
  265. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claiminquiryresponse/server_inquire_response_claiminquiryresponse_must_support_test.rb → server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb} +14 -35
  266. data/lib/davinci_pas_test_kit/{generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb → server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb} +14 -35
  267. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +43 -0
  268. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +41 -0
  269. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +41 -0
  270. data/lib/davinci_pas_test_kit/{generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb → server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb} +14 -35
  271. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +46 -0
  272. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +45 -0
  273. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +46 -0
  274. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +45 -0
  275. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +39 -0
  276. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +37 -0
  277. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +39 -0
  278. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +37 -0
  279. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +145 -0
  280. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +145 -0
  281. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_must_support_group.rb +442 -0
  282. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +280 -0
  283. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +39 -0
  284. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +38 -0
  285. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +39 -0
  286. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +38 -0
  287. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +35 -0
  288. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +34 -0
  289. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +35 -0
  290. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +34 -0
  291. data/lib/davinci_pas_test_kit/{generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb → server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb} +14 -35
  292. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +48 -0
  293. data/lib/davinci_pas_test_kit/{generated/v2.0.1/requestor/server_inquire_request_requestor_must_support_test.rb → server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb} +14 -35
  294. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +48 -0
  295. data/lib/davinci_pas_test_kit/{generated → server/generated}/v2.0.1/server_suite.rb +14 -20
  296. data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/server_inquire_request_subscriber_must_support_test.rb → server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb} +14 -35
  297. data/lib/davinci_pas_test_kit/{generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb → server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb} +14 -35
  298. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +46 -0
  299. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +46 -0
  300. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +55 -0
  301. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +53 -0
  302. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +55 -0
  303. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +53 -0
  304. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +125 -0
  305. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +145 -0
  306. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +102 -0
  307. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +103 -0
  308. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +42 -0
  309. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +52 -0
  310. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +52 -0
  311. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +58 -0
  312. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +49 -0
  313. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +47 -0
  314. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +49 -0
  315. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +47 -0
  316. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +41 -0
  317. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +38 -0
  318. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +41 -0
  319. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +39 -0
  320. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +125 -0
  321. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +125 -0
  322. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_must_support_group.rb +403 -0
  323. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +150 -0
  324. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +46 -0
  325. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +44 -0
  326. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +46 -0
  327. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +44 -0
  328. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +42 -0
  329. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +40 -0
  330. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +42 -0
  331. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +40 -0
  332. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +52 -0
  333. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +50 -0
  334. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +52 -0
  335. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +50 -0
  336. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +148 -0
  337. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +54 -0
  338. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +54 -0
  339. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +55 -0
  340. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +55 -0
  341. data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +73 -0
  342. data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +64 -0
  343. data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +76 -0
  344. data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/pas_inquiry_error_test.rb +2 -2
  345. data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/pas_submission_error_test.rb +2 -2
  346. data/lib/davinci_pas_test_kit/{custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb → server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb} +12 -45
  347. data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_error_group.rb +3 -3
  348. data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_server_subscription_input_conformance.rb +5 -3
  349. data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_notification_wait_test.rb +12 -0
  350. data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/pas_server_subscription_setup.rb +5 -3
  351. data/lib/davinci_pas_test_kit/server/v2.0.1/server_urls.rb +13 -0
  352. data/lib/davinci_pas_test_kit/server/v2.2.1/claim_updates/server_claim_update_response_tests.rb +143 -0
  353. data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/nonconformant_pas_bundle.json +16 -0
  354. data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/pas_inquiry_error_test.rb +38 -0
  355. data/lib/davinci_pas_test_kit/server/v2.2.1/error_tests/pas_submission_error_test.rb +56 -0
  356. data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +86 -0
  357. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_error_group.rb +20 -0
  358. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +104 -0
  359. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_input_conformance.rb +48 -0
  360. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_notification_wait_test.rb +12 -0
  361. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +42 -0
  362. data/lib/davinci_pas_test_kit/server/v2.2.1/server_urls.rb +13 -0
  363. data/lib/davinci_pas_test_kit/version.rb +2 -2
  364. data/lib/davinci_pas_test_kit.rb +5 -2
  365. metadata +386 -190
  366. data/config/presets/pas_server_subscription_creation_against_pas_client.json +0 -32
  367. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test.rb +0 -43
  368. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_other_display_test.rb +0 -46
  369. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_smart_display_test.rb +0 -37
  370. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/configuration_udap_display_test.rb +0 -37
  371. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_registration/other_auth_attest_test.rb +0 -36
  372. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_test.rb +0 -80
  373. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_test.rb +0 -79
  374. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_must_support_test.rb +0 -63
  375. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_response_attest.rb +0 -52
  376. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_submit_must_support_test.rb +0 -72
  377. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_create_test.rb +0 -62
  378. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_subscription_pas_conformance_test.rb +0 -30
  379. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_must_support_group.rb +0 -29
  380. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_options.rb +0 -25
  381. data/lib/davinci_pas_test_kit/endpoints/claim_endpoint.rb +0 -157
  382. data/lib/davinci_pas_test_kit/fhir_resource_navigation.rb +0 -72
  383. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +0 -67
  384. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +0 -56
  385. data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +0 -63
  386. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquire_request_coverage_must_support_test.rb +0 -60
  387. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +0 -60
  388. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquire_request_coverage_must_support_test.rb +0 -62
  389. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +0 -62
  390. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +0 -56
  391. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +0 -58
  392. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquire_request_insurer_must_support_test.rb +0 -65
  393. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +0 -65
  394. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquire_request_insurer_must_support_test.rb +0 -67
  395. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquire_response_insurer_must_support_test.rb +0 -65
  396. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +0 -67
  397. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +0 -65
  398. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +0 -66
  399. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +0 -68
  400. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +0 -58
  401. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +0 -60
  402. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_inquiry_must_support_use_case_group.rb +0 -51
  403. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_submit_must_support_use_case_group.rb +0 -61
  404. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_pas_inquiry_request_bundle_must_support_test.rb +0 -58
  405. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_pas_inquiry_request_bundle_must_support_test.rb +0 -60
  406. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +0 -95
  407. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_pas_inquiry_response_bundle_must_support_test.rb +0 -57
  408. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +0 -89
  409. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +0 -58
  410. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +0 -95
  411. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +0 -60
  412. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +0 -89
  413. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +0 -57
  414. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +0 -54
  415. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +0 -54
  416. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +0 -268
  417. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +0 -90
  418. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquire_request_practitioner_must_support_test.rb +0 -58
  419. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +0 -58
  420. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquire_request_practitioner_must_support_test.rb +0 -60
  421. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquire_response_practitioner_must_support_test.rb +0 -58
  422. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +0 -60
  423. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +0 -58
  424. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquire_request_practitioner_role_must_support_test.rb +0 -54
  425. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +0 -54
  426. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquire_request_practitioner_role_must_support_test.rb +0 -56
  427. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquire_response_practitioner_role_must_support_test.rb +0 -54
  428. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +0 -56
  429. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +0 -54
  430. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquire_request_requestor_must_support_test.rb +0 -68
  431. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +0 -68
  432. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquire_response_requestor_must_support_test.rb +0 -68
  433. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +0 -68
  434. data/lib/davinci_pas_test_kit/generated/v2.0.1/resource_list.rb +0 -54
  435. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +0 -58
  436. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +0 -60
  437. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquire_response_task_must_support_test.rb +0 -66
  438. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +0 -66
  439. data/lib/davinci_pas_test_kit/generator/group_generator.rb +0 -470
  440. data/lib/davinci_pas_test_kit/generator/group_metadata.rb +0 -73
  441. data/lib/davinci_pas_test_kit/generator/naming.rb +0 -50
  442. data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +0 -149
  443. data/lib/davinci_pas_test_kit/generator/resource_list_generator.rb +0 -59
  444. data/lib/davinci_pas_test_kit/generator/templates/group.rb.erb +0 -136
  445. data/lib/davinci_pas_test_kit/generator/templates/operation.rb.erb +0 -65
  446. data/lib/davinci_pas_test_kit/generator/templates/resource_list.rb.erb +0 -13
  447. data/lib/davinci_pas_test_kit/generator/templates/validation.rb.erb +0 -99
  448. data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +0 -172
  449. data/lib/davinci_pas_test_kit/generator/value_extractor.rb +0 -51
  450. data/lib/davinci_pas_test_kit/must_support_test.rb +0 -71
  451. data/lib/davinci_pas_test_kit/pas_subscription_verification.rb +0 -30
  452. data/lib/davinci_pas_test_kit/tags.rb +0 -17
  453. data/lib/davinci_pas_test_kit/user_input_response.rb +0 -35
  454. data/lib/davinci_pas_test_kit/validation_test.rb +0 -57
  455. /data/lib/davinci_pas_test_kit/{certs → client/certs}/InfernoCA.key +0 -0
  456. /data/lib/davinci_pas_test_kit/{certs → client/certs}/InfernoCA.pem +0 -0
  457. /data/lib/davinci_pas_test_kit/{certs → client/certs}/TestKit.pem +0 -0
  458. /data/lib/davinci_pas_test_kit/{certs → client/certs}/TestKitPrivateKey.key +0 -0
  459. /data/lib/davinci_pas_test_kit/{descriptions.rb → client/client_input_descriptions.rb} +0 -0
  460. /data/lib/davinci_pas_test_kit/{custom_groups → client}/v2.0.1/pas_client_workflows_group.rb +0 -0
  461. /data/lib/davinci_pas_test_kit/{custom_groups → server}/v2.0.1/error_tests/nonconformant_pas_bundle.json +0 -0
@@ -0,0 +1,214 @@
1
+ require_relative '../../../cross_suite/must_support/must_support_data_gathering'
2
+ require_relative '../urls'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ # Aggregates the must support assessment across a list of profiles. Each must support element
7
+ # that was not observed is logged as an info message, and when at least one was not observed the
8
+ # tester is given the opportunity to attest that the client system does not collect that data
9
+ # (and is not required to under the PAS implementation guide). A true attestation passes the
10
+ # test; a false attestation fails it. When every must support element was observed, the test
11
+ # passes without requiring any further input.
12
+ #
13
+ # The must support assessment - including the shared X12 / DataAbsentReason false-positive
14
+ # handling (remove_must_support_false_positives) is leveraged from the cross_suite must support
15
+ class MustSupportWithAttestationOption < Inferno::Test
16
+ include DaVinciPASTestKit::MustSupportDataGathering
17
+ include URLs
18
+
19
+ id :pas_client_v221_must_support_with_attestation_option
20
+ title 'Must support elements are observed across requests'
21
+ description %(
22
+ This test reviews the must support elements observed across the listed profiles in the
23
+ requests made by the client. If any were not observed, the tester has the opportunity to
24
+ attest that the client system does not collect that data (and is not required to under the
25
+ PAS implementation guide).
26
+ )
27
+
28
+ # config.options:
29
+ # profiles: Array of { resource_type:, profile_key:, title: } describing the profiles
30
+ # to assess.
31
+ # require_one_of: Boolean. When true, at least one of the listed resource types must be
32
+ # present (a hard requirement) and only the profiles that are actually
33
+ # present are assessed - used for the "at least one request profile" case.
34
+ # When false, every listed profile is assessed.
35
+ # ig_version:, type: ('request'), operation: ('submit' / 'inquire')
36
+ def profiles
37
+ config.options[:profiles]
38
+ end
39
+
40
+ def require_one_of
41
+ config.options[:require_one_of]
42
+ end
43
+
44
+ def ig_version
45
+ config.options[:ig_version]
46
+ end
47
+
48
+ def type
49
+ config.options[:type]
50
+ end
51
+
52
+ def operation
53
+ config.options[:operation]
54
+ end
55
+
56
+ def target_resource_types
57
+ @target_resource_types ||= profiles.map { |profile| profile[:resource_type] }.uniq
58
+ end
59
+
60
+ def type_of_interest?(resource_type)
61
+ target_resource_types.include?(resource_type)
62
+ end
63
+
64
+ def grouped_resources
65
+ @grouped_resources ||= (resources_of_interest || []).group_by(&:resourceType)
66
+ end
67
+
68
+ # Query the repository directly instead of the data gathering default (load_tagged_requests): these
69
+ # requests are owned by the gather test, so associating them here would duplicate that
70
+ # association onto each attestation test's result.
71
+ def must_support_requests
72
+ @must_support_requests ||= Inferno::Repositories::Requests.new.tagged_requests(test_session_id, [tag])
73
+ end
74
+
75
+ output :attest_true_url
76
+ output :attest_false_url
77
+
78
+ # Hard-fail if no requests were received at all, and (for require_one_of) if none of the
79
+ # target request profiles are present. These are the only failure paths that aren't attestations.
80
+ run do
81
+ assert must_support_requests.present?, "No #{operation} requests received."
82
+
83
+ if require_one_of
84
+ assert resources_of_interest.present?,
85
+ "#{type.titleize} Bundle(s) must include at least one instance of one of these " \
86
+ "resource types: #{target_resource_types.join(', ')}"
87
+ end
88
+
89
+ unobserved_by_profile = gather_unobserved_elements
90
+
91
+ unobserved_by_profile.each do |profile_title, elements|
92
+ elements.each do |element|
93
+ add_message('info', "Unobserved must support element for profile #{profile_title}: #{element}")
94
+ end
95
+ end
96
+
97
+ # If nothing was unobserved, the test passes immediately without requiring any attestation.
98
+ # Otherwise, the tester is given the opportunity to attest that the client system does not collect
99
+ pass 'All must support elements were observed in the requests made by the client.' if
100
+ unobserved_by_profile.empty?
101
+
102
+ identifier = test_session_id
103
+ output attest_true_url: "#{resume_pass_url}?token=#{identifier}",
104
+ attest_false_url: "#{resume_fail_url}?token=#{identifier}"
105
+
106
+ wait(identifier:, message: attestation_message(unobserved_by_profile))
107
+ end
108
+
109
+ # @return unobserved must support elements keyed by profile title
110
+ def gather_unobserved_elements
111
+ profiles.each_with_object({}) do |profile, result|
112
+ profile_title = profile[:title] || profile[:resource_type]
113
+ resources = grouped_resources[profile[:resource_type]] || []
114
+
115
+ if resources.blank?
116
+ # In require_one_of mode the tester only needs to demonstrate one of the alternatives,
117
+ # so a profile with no instances is not flagged. Otherwise, the absence of any instance
118
+ # means the profile's must support elements could not be observed at all - flag the
119
+ # resource type itself rather than enumerating every element.
120
+ next if require_one_of
121
+
122
+ result[profile_title] = ["(no #{profile[:resource_type]} instances were observed)"]
123
+ next
124
+ end
125
+
126
+ metadata = load_metadata_for_profile_version(profile[:profile_key], ig_version)
127
+ missing = missing_must_support_elements(resources, nil, metadata:)
128
+ missing = remove_must_support_false_positives(missing, resources, profile[:resource_type])
129
+
130
+ result[profile_title] = missing if missing.present?
131
+ end
132
+ end
133
+
134
+ def attestation_message(unobserved_by_profile)
135
+ unobserved_list = unobserved_by_profile.flat_map do |profile_title, elements|
136
+ elements.map { |element| "- #{profile_title}: #{element}" }
137
+ end.join("\n")
138
+
139
+ <<~MESSAGE
140
+ The following #{operation} request must support elements were not observed in the
141
+ requests made by the client:
142
+
143
+ #{unobserved_list}
144
+
145
+ Attest that the client system does **not** collect the data for these unobserved
146
+ must support elements (and is not required to under the PAS implementation guide).
147
+
148
+ [Click here](#{attest_true_url}) if the above statement is **true**. The test will **pass**.
149
+
150
+ [Click here](#{attest_false_url}) if the above statement is **false**. The test will **fail**.
151
+ MESSAGE
152
+ end
153
+
154
+ # Builds the test's description from the configured profiles' metadata at load time, so the
155
+ # generated group files stay lean and the listed must support elements stay in sync with the
156
+ # IG metadata. Called from the generated groups: `description build_description(config.options)`.
157
+ def self.build_description(options)
158
+ profiles = options[:profiles] || []
159
+
160
+ sections = profiles.map do |profile|
161
+ metadata = load_profile_metadata(profile[:profile_key], options[:ig_version])
162
+ "### #{profile[:title] || profile[:resource_type]}\n#{metadata.must_support_list_string(indent: 0)}"
163
+ end.join("\n\n")
164
+
165
+ "#{description_intro(require_one_of: options[:require_one_of])}\n\n#{sections}"
166
+ end
167
+
168
+ # The require_one_of intro reproduces the original PasClientMustSupportRequestProfilesTest
169
+ # description, tweaked only to describe the attestation option.
170
+ def self.description_intro(require_one_of:)
171
+ if require_one_of
172
+ <<~INTRO.chomp
173
+ The PAS IG includes four profiles for providing the specifics of the service or product requested
174
+ in the prior authorization request. Any one of these profiles can be referenced in
175
+ the must support element `Claim.item.extension:requestedService`:
176
+
177
+ * PAS Medication Request
178
+ * PAS Service Request
179
+ * PAS Device Request
180
+ * PAS Nutrition Order
181
+
182
+ System are allowed to support only the request profiles that fit their use cases. However,
183
+ they must support at least one of them (because `Claim.item.extension:requestedService` is a
184
+ must support element) and for any request profiles they support, they must be able to
185
+ populate all of the defined must support elements as long as that data is collected within
186
+ and displayed by the system.
187
+
188
+ This test ensures that the submitted request bundles include at least one instance of a
189
+ profile listed above. Then for each profile observed, it checks for the presence of
190
+ each must support element defined in that profile. For must support elements not observed
191
+ on an included request profile, testers can attest that they are not supported by the
192
+ client system.
193
+
194
+ The test will look through the instances included in submissions made by the client
195
+ for the following must support elements:
196
+ INTRO
197
+ else
198
+ <<~INTRO.chomp
199
+ PAS client systems are required to be able to populate must support elements representing
200
+ data collected and displayed to users on instances of all profiles included in requests.
201
+ This test checks all identified instances of the profiles listed below within requests sent
202
+ by the client to ensure that the must support elements are observed. For those not observed,
203
+ testers can attest that they are not supported by the client system.
204
+ INTRO
205
+ end
206
+ end
207
+
208
+ def self.load_profile_metadata(profile_key, version)
209
+ path = File.join(__dir__, '..', '..', '..', 'cross_suite', 'generated', version, profile_key, 'metadata.yml')
210
+ Generator::ProfileMetadata.new(YAML.load_file(path, aliases: true))
211
+ end
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../../abstract_gather_must_support_test'
2
+ require_relative '../urls'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ class PASClientGatherMustSupportTest < AbstractGatherMustSupportTest
7
+ include URLs
8
+
9
+ id :pas_client_v221_gather_must_support
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'workflows/pas_client_approval_submit_test'
2
+ require_relative 'workflows/pas_client_response_attest'
3
+ require_relative 'workflows/pas_client_request_bundle_validation_test'
4
+ require_relative 'workflows/pas_client_response_bundle_validation_test'
5
+ require_relative '../../cross_suite/tags'
6
+
7
+ module DaVinciPASTestKit
8
+ module DaVinciPASV221
9
+ class PASClientApprovalGroup < Inferno::TestGroup
10
+ id :pas_client_v221_approval_group
11
+ title 'Approval Workflow'
12
+ description %(
13
+ During these tests, the client will initiate a prior authorization
14
+ request and show it can respond appropriately to an 'approved' decision.
15
+ )
16
+ run_as_group
17
+
18
+ input :approval_json_response, optional: true
19
+
20
+ test from: :pas_client_v221_approval_submit_test
21
+ test from: :pas_client_v221_request_bundle_validation_test,
22
+ config: { options: { workflow_tag: APPROVAL_WORKFLOW_TAG } }
23
+
24
+ test from: :pas_client_v221_response_bundle_validation_test,
25
+ config: { options: { workflow_tag: APPROVAL_WORKFLOW_TAG } }
26
+ test from: :pas_client_v221_response_attest,
27
+ title: 'PAS client displays the request as "approved"',
28
+ description: %(
29
+ This test provides the tester an opportunity to observe their client following
30
+ the receipt of the approved response and attest that users are able to determine
31
+ that the response has been approved.
32
+ ),
33
+ config: { options: {
34
+ workflow_tag: APPROVAL_WORKFLOW_TAG,
35
+ attest_message: "I attest that the client system displays the submitted claim as 'approved' meaning " \
36
+ 'that the user can proceed with ordering or providing the requested service.'
37
+ } }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ require 'smart_app_launch_test_kit'
2
+ require_relative '../../cross_suite/tags'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ class PASClientAuthSMARTGroup < Inferno::TestGroup
7
+ id :pas_client_v221_auth_smart
8
+ title 'Review Authentication Interactions'
9
+ description %(
10
+ During these tests, Inferno will verify that the client interacted with Inferno's
11
+ simulated SMART authorization server in a conformant manner when requesting access tokens
12
+ and that the client under test was able to use provided access tokens to make PAS
13
+ requests.
14
+
15
+ Before running these tests, execute the tests for at least one "PAS workflows" sub-group
16
+ so that the client will request an access token and use it on a PAS request.
17
+ )
18
+ run_as_group
19
+
20
+ # smart auth verification
21
+ test from: :smart_client_token_request_bsca_verification,
22
+ config: {
23
+ options: { endpoint_suite_id: :davinci_pas_client_suite_v221 }
24
+ }
25
+ test from: :smart_client_token_use_verification,
26
+ config: {
27
+ options: { access_request_tags: [SUBMIT_TAG, INQUIRE_TAG] }
28
+ }
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ require 'udap_security_test_kit'
2
+ require_relative '../../cross_suite/tags'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ class PASClientAuthUDAPGroup < Inferno::TestGroup
7
+ id :pas_client_v221_auth_udap
8
+ title 'Review UDAP Authentication Interactions'
9
+ description %(
10
+ During these tests, Inferno will verify that the client interacted with Inferno's
11
+ simulated UDAP authorization server in a conformant manner when requesting access tokens
12
+ and that the client under test was able to use provided access tokens to make PAS
13
+ requests.
14
+
15
+ Before running these tests, execute the tests for at least one "PAS workflows" sub-group
16
+ so that the client will request an access token and use it on a PAS request.
17
+ )
18
+ run_as_group
19
+
20
+ test from: :udap_client_token_request_cc_verification,
21
+ config: {
22
+ options: { endpoint_suite_id: :davinci_pas_client_suite_v221 }
23
+ }
24
+ test from: :udap_client_token_use_verification,
25
+ config: {
26
+ options: { access_request_tags: [SUBMIT_TAG, INQUIRE_TAG] }
27
+ }
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,112 @@
1
+ require_relative 'workflows/pas_client_claim_update_submit_tests'
2
+ require_relative 'workflows/pas_client_request_bundle_validation_test'
3
+ require_relative 'workflows/pas_client_response_bundle_validation_test'
4
+ require_relative 'workflows/pas_client_claim_update_referenced_claim_test'
5
+ require_relative 'workflows/pas_client_claim_update_grandparent_excluded_test'
6
+ require_relative 'workflows/pas_client_claim_update_referenced_resources_test'
7
+ require_relative 'workflows/pas_client_claim_update_entries_preserved_test'
8
+ require_relative 'workflows/pas_client_claim_update_cancelled_entries_test'
9
+ require_relative 'workflows/pas_client_claim_update_cancelled_items_certtype_test'
10
+ require_relative 'workflows/pas_client_claim_update_changed_entries_test'
11
+ require_relative 'workflows/pas_client_claim_update_cancel_request_test'
12
+ require_relative '../../cross_suite/tags'
13
+
14
+ module DaVinciPASTestKit
15
+ module DaVinciPASV221
16
+ class PASClientClaimUpdatesGroup < Inferno::TestGroup
17
+ id :pas_client_v221_claim_updates_group
18
+ title 'Claim Updates'
19
+ description %(
20
+ During these tests, the client will demonstrate that it can update a previously submitted
21
+ prior authorization request by submitting a sequence of `$submit` requests: an initial
22
+ request, an update that adds an item, an update that modifies one item and cancels another,
23
+ and an update that cancels the entire request.
24
+
25
+ Inferno waits for each submission in turn, automatically continuing once it receives the
26
+ request. Inferno never sends a Subscription notification during these interactions, even if
27
+ the configured response indicates the request was pended.
28
+
29
+ Once all submissions have been received, Inferno validates the conformance of each submitted
30
+ request Bundle and of the response Bundle it returned against the PAS Request and Response
31
+ Bundle profiles, and the verification tests check each Claim Update made during this group for
32
+ conformance with the
33
+ [updating authorization requests](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#updating-authorization-requests)
34
+ requirements of the PAS IG.
35
+ )
36
+ run_as_group
37
+
38
+ input :claim_update_initial_response, optional: true
39
+ input :claim_update_add_item_response, optional: true
40
+ input :claim_update_modify_cancel_response, optional: true
41
+ input :claim_update_cancel_all_response, optional: true
42
+
43
+ input_order :claim_update_initial_response,
44
+ :claim_update_add_item_response,
45
+ :claim_update_modify_cancel_response,
46
+ :claim_update_cancel_all_response,
47
+ :client_id,
48
+ :session_url_path
49
+
50
+ claim_update_submit_steps = [
51
+ { key: 'initial', title: 'Initial submission',
52
+ submit: :pas_client_v221_claim_update_initial_submit_test, tag: CLAIM_UPDATE_INITIAL_TAG },
53
+ { key: 'add_item', title: 'Update - add an item',
54
+ submit: :pas_client_v221_claim_update_add_item_submit_test, tag: CLAIM_UPDATE_ADD_ITEM_TAG },
55
+ { key: 'modify_cancel', title: 'Update - modify an item and cancel an item',
56
+ submit: :pas_client_v221_claim_update_modify_cancel_submit_test, tag: CLAIM_UPDATE_MODIFY_CANCEL_TAG },
57
+ { key: 'cancel_all', title: 'Update - cancel the entire request',
58
+ submit: :pas_client_v221_claim_update_cancel_all_submit_test, tag: CLAIM_UPDATE_CANCEL_ALL_TAG }
59
+ ]
60
+
61
+ group do
62
+ title 'Interaction'
63
+ description %(
64
+ Inferno waits for each prior authorization submission from the client in turn. Each wait test
65
+ auto-continues when its request is received; no Subscription notifications are triggered.
66
+ )
67
+
68
+ claim_update_submit_steps.each { |step| test from: step[:submit] }
69
+ end
70
+
71
+ group do
72
+ title 'Update Details'
73
+ description %(
74
+ These tests check that the sequence of requests made follow the
75
+ update approach required.
76
+ )
77
+
78
+ test from: :pas_client_v221_claim_update_referenced_claim_test
79
+ test from: :pas_client_v221_claim_update_grandparent_excluded_test
80
+ test from: :pas_client_v221_claim_update_referenced_resources_test
81
+ test from: :pas_client_v221_claim_update_entries_preserved_test
82
+ test from: :pas_client_v221_claim_update_cancelled_entries_test
83
+ test from: :pas_client_v221_claim_update_cancelled_items_certtype_test
84
+ test from: :pas_client_v221_claim_update_changed_entries_test
85
+ test from: :pas_client_v221_claim_update_cancel_request_test
86
+ end
87
+
88
+ group do
89
+ title '$submit Conformance'
90
+ description %(
91
+ For each submission received above, these tests validate the conformance of the request Bundle
92
+ the client submitted and of the response Bundle Inferno returned against the PAS Request and
93
+ Response Bundle profiles.
94
+ )
95
+
96
+ claim_update_submit_steps.each do |step|
97
+ test from: :pas_client_v221_request_bundle_validation_test do
98
+ id :"pas_client_v221_claim_update_request_validation_#{step[:key]}"
99
+ title "#{step[:title]}: submit request Bundle has the correct structure and content"
100
+ config options: { workflow_tag: step[:tag] }
101
+ end
102
+
103
+ test from: :pas_client_v221_response_bundle_validation_test do
104
+ id :"pas_client_v221_claim_update_response_validation_#{step[:key]}"
105
+ title "#{step[:title]}: submit response Bundle has the correct structure and content"
106
+ config options: { workflow_tag: step[:tag] }
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,47 @@
1
+ require_relative 'workflows/pas_client_denial_submit_test'
2
+ require_relative 'workflows/pas_client_response_attest'
3
+ require_relative 'workflows/pas_client_response_bundle_validation_test'
4
+ require_relative 'workflows/pas_client_request_bundle_validation_test'
5
+ require_relative '../user_input_response'
6
+ require_relative '../../cross_suite/tags'
7
+
8
+ module DaVinciPASTestKit
9
+ module DaVinciPASV221
10
+ class PASClientDenialGroup < Inferno::TestGroup
11
+ include UserInputResponse
12
+
13
+ id :pas_client_v221_denial_group
14
+ title 'Denial Workflow'
15
+ description %(
16
+ During these tests, the client will initiate a prior authorization
17
+ request and show it can respond appropriately to a 'denied' decision.
18
+ )
19
+ run_as_group
20
+
21
+ input :denial_json_response, optional: true
22
+
23
+ input_order :denial_json_response,
24
+ :client_id,
25
+ :session_url_path
26
+
27
+ test from: :pas_client_v221_denial_submit_test
28
+ test from: :pas_client_v221_request_bundle_validation_test,
29
+ config: { options: { workflow_tag: DENIAL_WORKFLOW_TAG } }
30
+ test from: :pas_client_v221_response_bundle_validation_test,
31
+ config: { options: { workflow_tag: DENIAL_WORKFLOW_TAG } }
32
+ test from: :pas_client_v221_response_attest,
33
+ title: 'PAS client displays the request as "denied"',
34
+ description: %(
35
+ This test provides the tester an opportunity to observe their client following
36
+ the receipt of the denied response and attest that users are able to determine
37
+ that the response has been denied.
38
+ ),
39
+ config: { options: {
40
+ workflow_tag: DENIAL_WORKFLOW_TAG,
41
+ attest_message: "I attest that the client system displays the submitted claim as 'denied', meaning " \
42
+ 'that the user cannot proceed with ordering or providing the requested service without ' \
43
+ 'making adjustments and submitting for further approval.'
44
+ } }
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'pas_client_operation_failure_group'
2
+ require_relative 'pas_client_processing_error_group'
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV221
6
+ class PASClientErrorHandlingGroup < Inferno::TestGroup
7
+ id :pas_client_v221_error_handling_group
8
+ title 'Error Handling'
9
+ description %(
10
+ The error handling tests verify that the client can appropriately handle
11
+ [prior authorization error responses](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#prior-authorization-transaction-error-handling)
12
+ from the server, including both HTTP-level operation failures and
13
+ business-level processing errors conveyed within a response bundle.
14
+ )
15
+
16
+ group from: :pas_client_v221_operation_failure_group
17
+ group from: :pas_client_v221_processing_error_group
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,52 @@
1
+ require_relative 'workflows/pas_client_modification_submit_test'
2
+ require_relative 'workflows/pas_client_modification_verification_test'
3
+ require_relative 'workflows/pas_client_response_attest'
4
+ require_relative 'workflows/pas_client_request_bundle_validation_test'
5
+ require_relative 'workflows/pas_client_response_bundle_validation_test'
6
+ require_relative '../../cross_suite/tags'
7
+
8
+ module DaVinciPASTestKit
9
+ module DaVinciPASV221
10
+ class PASClientModificationGroup < Inferno::TestGroup
11
+ id :pas_client_v221_modification_group
12
+ title 'Payer Modifications'
13
+ description %(
14
+ During these tests, the client will initiate a prior authorization request and show it can
15
+ respond appropriately to a response in which the payer authorizes items that differ from those
16
+ that were requested.
17
+
18
+ In PAS v2.2.1, payers are permitted to
19
+ [return items that are different from what was requested](https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#returning-authorized-items-that-are-different-from-what-was-requested).
20
+ When this happens, each requested item is returned in the `ClaimResponse.item` with an adjudication
21
+ status of A6 ('Modified') and the details of what was actually authorized are returned in a
22
+ corresponding `ClaimResponse.addItem`. Clients must be able to process these responses and make the
23
+ details of the authorized items available to their users.
24
+ )
25
+ run_as_group
26
+
27
+ input :modification_json_response, optional: true
28
+
29
+ test from: :pas_client_v221_modification_submit_test
30
+ test from: :pas_client_v221_request_bundle_validation_test,
31
+ config: { options: { workflow_tag: MODIFICATION_WORKFLOW_TAG } }
32
+
33
+ test from: :pas_client_v221_response_bundle_validation_test,
34
+ config: { options: { workflow_tag: MODIFICATION_WORKFLOW_TAG } }
35
+ test from: :pas_client_v221_modification_verification_test
36
+
37
+ test from: :pas_client_v221_response_attest,
38
+ title: 'PAS client makes the details of the payer-authorized items available',
39
+ description: %(
40
+ This test provides the tester an opportunity to observe their client following
41
+ the receipt of the payer modification response and attest that users are able to
42
+ determine the details of what was actually authorized by the payer.
43
+ ),
44
+ config: { options: {
45
+ workflow_tag: MODIFICATION_WORKFLOW_TAG,
46
+ attest_message: 'I attest that the details of what the payer actually authorized, including any ' \
47
+ 'modifications made to the requested items, were made available to users in the ' \
48
+ 'client system.'
49
+ } }
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,96 @@
1
+ require_relative '../generated/v2.2.1/pas_client_submit_must_support_group'
2
+ require_relative '../generated/v2.2.1/pas_client_inquire_must_support_group'
3
+ require_relative '../generated/v2.2.1/pas_client_submit_response_must_support_group'
4
+ require_relative '../generated/v2.2.1/pas_client_inquire_response_must_support_group'
5
+ require_relative 'must_support/pas_client_gather_must_support_test'
6
+ require_relative 'workflows/pas_client_request_bundle_validation_test'
7
+ require_relative 'workflows/pas_client_response_bundle_validation_test'
8
+ require_relative 'workflows/pas_client_inquire_request_bundle_validation_test'
9
+ require_relative 'workflows/pas_client_inquire_response_bundle_validation_test'
10
+
11
+ module DaVinciPASTestKit
12
+ module DaVinciPASV221
13
+ class PASClientMustSupportGroup < Inferno::TestGroup
14
+ id :pas_client_v221_must_support
15
+ 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
20
+
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.
25
+
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
+ )
36
+
37
+ # Combined receive group - single wait test for both submit and inquire
38
+ group do
39
+ 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
+ )
46
+ run_as_group
47
+
48
+ test from: :pas_client_v221_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
60
+
61
+ test from: :pas_client_v221_request_bundle_validation_test,
62
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
63
+ test from: :pas_client_v221_response_bundle_validation_test,
64
+ config: { options: { workflow_tag: MUST_SUPPORT_WORKFLOW_TAG } }
65
+ end
66
+
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
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_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
88
+
89
+ # $inquire Request Must Support (fail when errors detected)
90
+ group from: :pas_client_v221_inquire_must_support
91
+
92
+ # $inquire Response Must Support (skip when errors detected)
93
+ group from: :pas_client_v221_inquire_response_must_support
94
+ end
95
+ end
96
+ end