davinci_pas_test_kit 0.15.1 → 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 (334) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/g33_br_provider.json +13 -0
  3. data/config/presets/pas_client_example.json +2 -2
  4. data/config/presets/pas_client_v201_run_against_pas_server.json +2 -2
  5. data/config/presets/pas_client_v221_run_against_pas_server.json +3 -3
  6. data/config/presets/pas_ri.json +6 -6
  7. data/config/presets/pas_server_v201_run_against_pas_client.json.erb +6 -6
  8. data/config/presets/pas_server_v221_run_against_pas_client.json.erb +10 -10
  9. data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +28 -17
  10. data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +26 -16
  11. data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +45 -74
  12. data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +29 -19
  13. data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +75 -6
  14. data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +26 -9
  15. data/lib/davinci_pas_test_kit/client/abstract_subscription_update_delete_test.rb +91 -0
  16. data/lib/davinci_pas_test_kit/client/client_bundle_validation_helper.rb +245 -0
  17. data/lib/davinci_pas_test_kit/client/client_input_descriptions.rb +96 -1
  18. data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +128 -72
  19. data/lib/davinci_pas_test_kit/client/endpoints/endpoint_session_identification.rb +24 -0
  20. data/lib/davinci_pas_test_kit/client/endpoints/expired_token.rb +40 -0
  21. data/lib/davinci_pas_test_kit/client/endpoints/subscription_create_endpoint.rb +7 -12
  22. data/lib/davinci_pas_test_kit/client/endpoints/subscription_delete_endpoint.rb +13 -0
  23. data/lib/davinci_pas_test_kit/client/endpoints/subscription_read_endpoint.rb +13 -0
  24. data/lib/davinci_pas_test_kit/client/endpoints/subscription_status_endpoint.rb +15 -20
  25. data/lib/davinci_pas_test_kit/client/endpoints/subscription_update_endpoint.rb +13 -0
  26. data/lib/davinci_pas_test_kit/client/endpoints/token_endpoint.rb +16 -0
  27. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb +3 -3
  28. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +3 -3
  29. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb +3 -3
  30. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +3 -3
  31. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  32. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  33. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +3 -3
  34. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +3 -3
  35. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +3 -3
  36. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +3 -3
  37. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +3 -3
  38. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb +3 -3
  39. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +3 -3
  40. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +3 -3
  41. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +3 -3
  42. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +3 -3
  43. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +1 -1
  44. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +9 -31
  45. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +1 -1
  46. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +10 -32
  47. 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
  48. 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
  49. 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
  50. 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
  51. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +3 -3
  52. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +3 -3
  53. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +3 -3
  54. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +3 -3
  55. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +3 -3
  56. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +3 -3
  57. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +3 -3
  58. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +3 -3
  59. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +3 -3
  60. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +3 -3
  61. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +3 -3
  62. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +3 -3
  63. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb +3 -3
  64. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb +3 -3
  65. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +4 -3
  66. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +4 -3
  67. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  68. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  69. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +4 -3
  70. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +4 -3
  71. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +4 -3
  72. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +4 -3
  73. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +4 -3
  74. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +8 -6
  75. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +9 -31
  76. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +13 -9
  77. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +10 -32
  78. 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
  79. 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
  80. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +4 -3
  81. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +4 -3
  82. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +4 -3
  83. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +4 -3
  84. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +4 -3
  85. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +4 -3
  86. data/lib/davinci_pas_test_kit/client/jobs/send_pas_subscription_notification.rb +64 -3
  87. data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +4 -3
  88. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +6 -4
  89. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +8 -4
  90. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +9 -4
  91. data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +5 -4
  92. data/lib/davinci_pas_test_kit/client/request_count_gating.rb +14 -0
  93. data/lib/davinci_pas_test_kit/client/response_generator.rb +50 -9
  94. data/lib/davinci_pas_test_kit/client/session_identification.rb +26 -7
  95. data/lib/davinci_pas_test_kit/client/subscription_notification_trigger.rb +80 -0
  96. data/lib/davinci_pas_test_kit/client/subscription_setup_requirement.rb +59 -0
  97. data/lib/davinci_pas_test_kit/client/user_input_response.rb +50 -10
  98. data/lib/davinci_pas_test_kit/client/v2.0.1/client_suite.rb +30 -15
  99. data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb +2 -2
  100. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_approval_group.rb +8 -7
  101. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_smart_group.rb +4 -4
  102. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_udap_group.rb +4 -4
  103. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_denial_group.rb +8 -7
  104. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +38 -52
  105. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_pended_group.rb +28 -22
  106. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_registration_group.rb +2 -2
  107. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_subscription_setup_group.rb +2 -2
  108. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_workflows_group.rb +2 -2
  109. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +15 -21
  110. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +29 -29
  111. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_pended_submit_test.rb +49 -40
  112. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_request_bundle_validation_test.rb +15 -21
  113. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_bundle_validation_test.rb +29 -29
  114. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  115. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  116. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_provider_review_attestation_test.rb +45 -0
  117. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_security_attestation_test.rb +42 -0
  118. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_subscription_error_recovery_attestation_test.rb +42 -0
  119. data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +64 -12
  120. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +20 -10
  121. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +11 -5
  122. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +21 -12
  123. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +19 -8
  124. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +90 -40
  125. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +12 -11
  126. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_attestations_group.rb +32 -0
  127. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +4 -4
  128. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +4 -4
  129. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +24 -6
  130. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +12 -10
  131. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +13 -14
  132. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +55 -59
  133. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +8 -5
  134. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +53 -41
  135. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +9 -7
  136. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +2 -2
  137. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +9 -4
  138. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_update_delete_group.rb +57 -0
  139. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +22 -2
  140. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +2 -1
  141. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_put_update_pas_conformance_test.rb +49 -0
  142. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_update_delete_test.rb +12 -0
  143. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +5 -6
  144. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +82 -56
  145. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +17 -20
  146. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +59 -27
  147. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +0 -3
  148. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_send_notification_test.rb +138 -0
  149. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +32 -85
  150. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +16 -21
  151. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +27 -27
  152. data/lib/davinci_pas_test_kit/cross_suite/fhirpath_utils.rb +13 -3
  153. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/beneficiary/metadata.yml +4 -0
  154. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_inquiry/metadata.yml +15 -0
  155. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claim_update/metadata.yml +17 -0
  156. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claiminquiryresponse/metadata.yml +15 -0
  157. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/claimresponse/metadata.yml +15 -0
  158. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/communication_request/metadata.yml +4 -0
  159. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/coverage/metadata.yml +1 -0
  160. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/device_request/metadata.yml +2 -0
  161. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/encounter/metadata.yml +3 -0
  162. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/insurer/metadata.yml +1 -0
  163. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/medication_request/metadata.yml +2 -0
  164. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/metadata.yml +143 -0
  165. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/nutrition_order/metadata.yml +2 -0
  166. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +2 -0
  167. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +2 -0
  168. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_request_bundle/metadata.yml +2 -0
  169. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/pas_response_bundle/metadata.yml +2 -0
  170. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner/metadata.yml +1 -0
  171. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/practitioner_role/metadata.yml +1 -0
  172. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/requestor/metadata.yml +1 -0
  173. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/service_request/metadata.yml +3 -0
  174. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/subscriber/metadata.yml +4 -0
  175. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/task/metadata.yml +1 -4
  176. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/beneficiary/metadata.yml +1 -0
  177. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_inquiry/metadata.yml +23 -0
  178. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claim_update/metadata.yml +31 -0
  179. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claiminquiryresponse/metadata.yml +42 -0
  180. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/claimresponse/metadata.yml +42 -0
  181. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/communication_request/metadata.yml +4 -0
  182. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/coverage/metadata.yml +1 -0
  183. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/device_request/metadata.yml +2 -0
  184. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/encounter/metadata.yml +3 -0
  185. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/insurer/metadata.yml +1 -0
  186. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/medication_request/metadata.yml +2 -0
  187. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +265 -1
  188. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/nutrition_order/metadata.yml +2 -0
  189. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_request_bundle/metadata.yml +2 -0
  190. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_inquiry_response_bundle/metadata.yml +2 -0
  191. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_request_bundle/metadata.yml +2 -0
  192. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/pas_response_bundle/metadata.yml +2 -0
  193. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner/metadata.yml +1 -0
  194. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/practitioner_role/metadata.yml +1 -0
  195. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/requestor/metadata.yml +1 -0
  196. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/service_request/metadata.yml +3 -0
  197. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/subscriber/metadata.yml +1 -0
  198. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +4 -4
  199. data/lib/davinci_pas_test_kit/cross_suite/pas_bundle_validation.rb +570 -312
  200. data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +13 -0
  201. data/lib/davinci_pas_test_kit/cross_suite/pas_datatype_constraints.rb +166 -0
  202. data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +8 -4
  203. data/lib/davinci_pas_test_kit/cross_suite/referenced_resource_presence_validation.rb +141 -0
  204. data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +39 -21
  205. data/lib/davinci_pas_test_kit/cross_suite/tags.rb +11 -6
  206. data/lib/davinci_pas_test_kit/cross_suite/validator_configuration.rb +16 -0
  207. data/lib/davinci_pas_test_kit/cross_suite/validator_suppressions.rb +210 -146
  208. data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +7 -7
  209. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +1 -0
  210. data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +47 -16
  211. data/lib/davinci_pas_test_kit/generator/must_support_target_profiles.rb +17 -0
  212. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +14 -2
  213. data/lib/davinci_pas_test_kit/generator/pas_must_support_metadata_extractor.rb +1 -2
  214. data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +1 -1
  215. data/lib/davinci_pas_test_kit/generator/server_must_support_group_generator.rb +23 -0
  216. data/lib/davinci_pas_test_kit/generator/server_suite_generator.rb +8 -7
  217. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +22 -3
  218. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +7 -16
  219. data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +11 -10
  220. data/lib/davinci_pas_test_kit/generator/templates/server_must_support_group.rb.erb +22 -0
  221. data/lib/davinci_pas_test_kit/generator/templates/server_suite.rb.erb +9 -11
  222. data/lib/davinci_pas_test_kit/generator/templates/use_case_group.rb.erb +3 -0
  223. data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +19 -13
  224. data/lib/davinci_pas_test_kit/parameters_helper.rb +13 -5
  225. data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +2 -2
  226. data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +14 -7
  227. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +21 -21
  228. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +30 -26
  229. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +39 -33
  230. data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
  231. data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +1 -1
  232. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  233. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  234. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  235. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  236. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  237. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  238. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  239. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  240. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  241. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  242. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  243. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  244. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  245. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  246. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  247. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  248. 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
  249. 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
  250. 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
  251. 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
  252. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +4 -3
  253. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +4 -3
  254. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +7 -6
  255. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  256. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  257. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  258. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  259. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  260. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  261. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  262. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  263. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  264. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  265. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  266. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  267. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/server_suite.rb +9 -11
  268. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  269. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  270. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  271. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +1 -1
  272. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  273. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  274. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  275. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  276. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  277. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  278. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +3 -1
  279. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +3 -1
  280. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  281. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  282. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  283. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  284. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  285. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  286. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  287. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  288. 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
  289. 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
  290. 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
  291. 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
  292. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +5 -3
  293. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +5 -3
  294. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_must_support_group.rb +12 -0
  295. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +9 -4
  296. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  297. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  298. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  299. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  300. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  301. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  302. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  303. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  304. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  305. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  306. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  307. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  308. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +9 -11
  309. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  310. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  311. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  312. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +1 -1
  313. data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +2 -2
  314. data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +4 -6
  315. data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +17 -10
  316. data/lib/davinci_pas_test_kit/server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  317. data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_setup.rb +1 -1
  318. data/lib/davinci_pas_test_kit/server/v2.2.1/claim_inquiry/server_claim_inquiry_response_tests.rb +89 -0
  319. data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  320. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_error_group.rb +2 -0
  321. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_inquiry_responses_group.rb +17 -0
  322. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +1 -1
  323. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_no_custom_extensions_test.rb +241 -0
  324. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_capability_statement_test.rb +40 -0
  325. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +15 -10
  326. data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_input_test.rb +63 -0
  327. data/lib/davinci_pas_test_kit/server/v2.2.1/server_replaced_pa_inquire_reference_test.rb +109 -0
  328. data/lib/davinci_pas_test_kit/version.rb +2 -2
  329. metadata +38 -13
  330. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +0 -45
  331. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +0 -45
  332. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +0 -55
  333. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +0 -55
  334. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +0 -20
@@ -39,7 +39,7 @@ module DaVinciPASTestKit
39
39
  target_element
40
40
  end
41
41
 
42
- # rubocop:disable Metrics/CyclomaticComplexity
42
+ # rubocop:disable-next Metrics/CyclomaticComplexity
43
43
  def take_discriminator_step(current_element, path)
44
44
  if path.start_with?('extension(')
45
45
  ext_url, remaining_path = path.delete_prefix("extension('").split("')", 2)
@@ -74,7 +74,6 @@ module DaVinciPASTestKit
74
74
 
75
75
  [next_element, remaining_path&.delete_prefix('.')]
76
76
  end
77
- # rubocop:enable Metrics/CyclomaticComplexity
78
77
 
79
78
  def value_slices
80
79
  must_support_value_slice_elements.map do |current_element|
@@ -42,7 +42,7 @@ module DaVinciPASTestKit
42
42
 
43
43
  # A sorted, bulleted markdown list of this profile's must support elements (slices, elements,
44
44
  # extensions, and choices), each line prefixed with `indent` spaces. Shared by the per-profile
45
- # must support tests and the collapsed attestation tests so both stay in sync with the metadata.
45
+ # must support tests and the collapsed tests so both stay in sync with the metadata.
46
46
  def must_support_list_string(indent: 8)
47
47
  slice_names = must_supports[:slices].map { |slice| slice[:slice_id] }
48
48
  element_names = must_supports[:elements].map { |element| "#{resource}.#{element[:path]}" }
@@ -110,6 +110,20 @@ module DaVinciPASTestKit
110
110
  ig_metadata.profiles.select { |profile_metadata| MustSupportTargetProfiles.request_profile?(profile_metadata) }
111
111
  end
112
112
 
113
+ # Additional Claim Inquiry Response checks are v2.2.x-specific, so they are only included
114
+ # in the v2.2+ server element support group.
115
+ def additional_claim_inquiry_response_requirements_supported?
116
+ ig_metadata.ig_version.start_with?('v2.2')
117
+ end
118
+
119
+ def additional_submit_request_requirements_supported?
120
+ ig_metadata.ig_version == 'v2.2.1'
121
+ end
122
+
123
+ def additional_claim_inquiry_response_requirements_group_id
124
+ "pas_server_#{ig_version_for_id}_claim_inquiry_responses"
125
+ end
126
+
113
127
  def verifies_requirements
114
128
  case ig_metadata.ig_version
115
129
  when 'v2.0.1'
@@ -123,9 +137,18 @@ module DaVinciPASTestKit
123
137
  ['hl7.fhir.us.davinci-pas_2.0.1@35']
124
138
  when 'inquire_request_v2.0.1'
125
139
  ['hl7.fhir.us.davinci-pas_2.0.1@36']
140
+ when 'submit_request_v2.2.1', 'inquire_request_v2.2.1'
141
+ [
142
+ 'hl7.fhir.us.davinci-pas_2.2.1@conf-4',
143
+ 'hl7.fhir.us.davinci-pas_2.2.1@conf-5'
144
+ ]
126
145
  end
127
146
  end
128
147
 
148
+ def replaced_pa_inquire_reference_test?
149
+ ig_version == 'v2.2.1'
150
+ end
151
+
129
152
  def description
130
153
  <<~DESCRIPTION
131
154
  Demonstrate the ability of the server to support all PAS-defined profiles
@@ -46,15 +46,16 @@ module DaVinciPASTestKit
46
46
  "Da Vinci PAS Server Suite #{ig_metadata.ig_version}"
47
47
  end
48
48
 
49
- def ig_identifier
50
- version = ig_metadata.ig_version[1..] # Remove leading 'v'
51
- "hl7.fhir.us.davinci-pas##{version}"
49
+ # The validator_configuration.rb constant listing the IGs for this version, e.g. V221_VALIDATOR_IGS.
50
+ # A version without one fails when the generated suite loads.
51
+ def validator_igs_constant
52
+ "V#{ig_metadata.ig_version.delete('v.')}_VALIDATOR_IGS"
52
53
  end
53
54
 
54
- def validator_igs_expression
55
- identifiers = [ig_identifier]
56
- identifiers << 'hl7.fhir.us.core#6.1.0' if ig_metadata.ig_version.start_with?('v2.2')
57
- identifiers.map(&:inspect).join(', ')
55
+ # v2.2+ suites use the targeted suppression list; v2.0.1 keeps the legacy list plus the
56
+ # targeted entries.
57
+ def suppressed_messages_constant
58
+ ig_metadata.ig_version.start_with?('v2.2') ? 'V221_SUPPRESSED_MESSAGES' : 'V201_SUPPRESSED_MESSAGES'
58
59
  end
59
60
 
60
61
  def ig_link
@@ -24,8 +24,13 @@ module DaVinciPASTestKit
24
24
 
25
25
  <%- if optional_must_support_enabled? -%>
26
26
  <%- if operation == 'submit' -%>
27
+ <%- if enable_lax_checks? -%>
27
28
  # At least one of the PAS request profiles must be present; unobserved must support
28
29
  # elements on the request profiles that are present may be attested as not collected.
30
+ <%- else -%>
31
+ # At least one of the PAS request profiles must be present, with all of its must support
32
+ # elements observed.
33
+ <%- end -%>
29
34
  test from: :pas_client_<%= ig_version_for_id %>_must_support_with_attestation_option do
30
35
  id :pas_client_<%= ig_version_for_id %>_submit_request_profiles_must_support_with_attestation_option
31
36
  title 'At least one instance of a request profile (PAS Medication Request, PAS Service Request, PAS Device Request, or PAS Nutrition Order) is observed with all of its must support elements'
@@ -37,20 +42,30 @@ module DaVinciPASTestKit
37
42
  ],
38
43
  ig_version: '<%= ig_version %>',
39
44
  type: 'request',
40
- operation: '<%= operation %>'
45
+ operation: '<%= operation %>',
46
+ disable_attestation: <%= !enable_lax_checks? %>
41
47
  }
42
48
  )
43
49
  description MustSupportWithAttestationOption.build_description(config.options)
50
+ <%- if verifies_requirements -%>
51
+ verifies_requirements(*verifies_requirements, <%= verifies_requirements.map { |r| "'#{r}'" }.join(', ') %>)
52
+ <%- end -%>
44
53
  end
45
54
 
46
55
  <%- end -%>
47
56
  <%- claim_profiles.each do |profile_metadata| -%>
48
57
  # Mandatory - the <%= profile_metadata.profile_name %> profile must always be demonstrated.
49
- test from: :<%= test_id_for_profile(profile_metadata) %>
58
+ test from: :<%= test_id_for_profile(profile_metadata) %> <%- if verifies_requirements -%> do
59
+ verifies_requirements(*verifies_requirements, <%= verifies_requirements.map { |r| "'#{r}'" }.join(', ') %>)
60
+ end<%- end -%>
50
61
 
51
62
  <%- end -%>
63
+ <%- if enable_lax_checks? -%>
52
64
  # All other <%= operation %> request profiles - unobserved must support elements may be
53
65
  # attested as not collected by the client system.
66
+ <%- else -%>
67
+ # All other <%= operation %> request profiles - all must support elements must be observed.
68
+ <%- end -%>
54
69
  test from: :pas_client_<%= ig_version_for_id %>_must_support_with_attestation_option do
55
70
  id :pas_client_<%= ig_version_for_id %>_<%= operation %>_request_other_must_support_with_attestation_option
56
71
  title '<%= other_profiles_title %>'
@@ -62,10 +77,14 @@ module DaVinciPASTestKit
62
77
  ],
63
78
  ig_version: '<%= ig_version %>',
64
79
  type: 'request',
65
- operation: '<%= operation %>'
80
+ operation: '<%= operation %>',
81
+ disable_attestation: <%= !enable_lax_checks? %>
66
82
  }
67
83
  )
68
84
  description MustSupportWithAttestationOption.build_description(config.options)
85
+ <%- if verifies_requirements -%>
86
+ verifies_requirements(*verifies_requirements, <%= verifies_requirements.map { |r| "'#{r}'" }.join(', ') %>)
87
+ <%- end -%>
69
88
  end
70
89
  <%- else -%>
71
90
  <%- if operation == 'submit' -%>
@@ -1,7 +1,6 @@
1
1
  <%- profile_test_files.each do |file_name| -%>
2
2
  require_relative '<%= file_name %>'
3
3
  <%- end -%>
4
- require_relative '../../<%= ig_version %>/workflows/pas_client_response_attest'
5
4
 
6
5
  module DaVinciPASTestKit
7
6
  module <%= module_name %>
@@ -17,27 +16,19 @@ module DaVinciPASTestKit
17
16
  <%- if profile_test[:optional] -%>
18
17
  test from: :<%= profile_test[:id] %> do
19
18
  optional
19
+ simulation_verification
20
+ end
21
+ <%- elsif profile_test[:verifies_response_requirement] -%>
22
+ test from: :<%= profile_test[:id] %> do
23
+ verifies_requirements(*verifies_requirements, '<%= response_verifies_requirement %>')
24
+ simulation_verification
20
25
  end
21
26
  <%- else -%>
22
27
  test from: :<%= profile_test[:id] %> do
23
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-7'
28
+ simulation_verification
24
29
  end
25
30
  <%- end -%>
26
31
  <%- end -%>
27
- test from: :pas_client_<%= ig_version_for_id %>_response_attest,
28
- title: 'PAS client handled the $<%= operation %> response must support elements',
29
- description: %(
30
- This test provides the tester an opportunity to verify that their client
31
- correctly processed and used the must support elements present in the
32
- $<%= operation %> responses received from Inferno during these tests.
33
- ),
34
- config: { options: {
35
- workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
36
- attest_message: "I attest that the client system correctly processed the must support elements " \
37
- "contained in the $<%= operation %> responses received from Inferno and did not error."
38
- } } do
39
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-8'
40
- end
41
32
  end
42
33
  end
43
34
  end
@@ -7,28 +7,28 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile <%= profile_name %> are observed on $<%= operation %> <%= request_type.include?('request') ? 'requests' : 'responses' %>'
8
8
  description %(
9
9
  <% if system == 'client' && request_type.include?('request') %>
10
- PAS client systems are required to be able to populate all
11
- must support elements on instances of all profiles included in <% request_type.include?('submit') ? 'Submit' : 'Inquiry' %>
10
+ PAS clients are required to be able to populate all
11
+ must support elements on instances of all profiles included in <%= request_type.include?('submit') ? '`$submit`' : '`$inquire`' %>
12
12
  requests, including instances of the <%= profile_name %> Profile.
13
13
  This test checks all identified instances of the <%= profile_name %>
14
- Profile on requests sent by the client to ensure that the following
14
+ Profile on requests sent by the PAS client to ensure that the following
15
15
  must support elements are observed: <% end %><% if system == 'client' && request_type.include?('response') %>
16
- PAS client systems are required to be able to receive all
17
- must support elements on instances of all profiles included in <% request_type.include?('submit') ? 'Submit' : 'Inquiry' %>
16
+ PAS clients are required to be able to receive all
17
+ must support elements on instances of all profiles included in <%= request_type.include?('submit') ? '`$submit`' : '`$inquire`' %>
18
18
  responses, including instances of the <%= profile_name %> Profile.
19
19
  This test checks all identified instances of the <%= profile_name %>
20
- Profile on responses sent to the client to ensure that the following
20
+ Profile on responses sent to the PAS client to ensure that the following
21
21
  must support elements are observed:<% end %><% if system == 'server' && request_type.include?('request') %>
22
22
  **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure.
23
23
 
24
24
  PAS server systems are required to be able to receive all
25
- must support elements on instances of all profiles included in <% request_type.include?('submit') ? 'Submit' : 'Inquiry' %>
25
+ must support elements on instances of all profiles included in <%= request_type.include?('submit') ? '`$submit`' : '`$inquire`' %>
26
26
  requests, including instances of the <%= profile_name %> Profile.
27
27
  This test checks all identified instances of the <%= profile_name %>
28
28
  Profile on requests sent to the server to ensure that the following
29
29
  must support elements are observed:<% end %><% if system == 'server' && request_type.include?('response') %>
30
30
  PAS server systems are required to be able to populate all
31
- must support elements on instances of all profiles included in <% request_type.include?('submit') ? 'Submit' : 'Inquiry' %>
31
+ must support elements on instances of all profiles included in <%= request_type.include?('submit') ? '`$submit`' : '`$inquire`' %>
32
32
  responses, including instances of the <%= profile_name %> Profile.
33
33
  This test checks all identified instances of the <%= profile_name %>
34
34
  Profile on responses returned by the server to ensure that the following
@@ -38,8 +38,9 @@ module DaVinciPASTestKit
38
38
  )
39
39
  <%- if verifies_requirements -%>
40
40
  verifies_requirements <%= verifies_requirements.map { |r| "'#{r}'" }.join(', ') %>
41
- <%- end -%>
42
-
41
+ <%- end -%><%- if tests_conf_6? %>
42
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-6'
43
+ <%- end %>
43
44
  config(
44
45
  options: {
45
46
  resource_type: '<%= resource_type %>',
@@ -3,6 +3,16 @@ require_relative '../../claim_submit_operation_test'
3
3
  require_relative '../../server_response_bundle_validation_test'
4
4
  require_relative '../../claim_inquire_operation_test'
5
5
  require_relative '../../<%= ig_version %>/must_support/pas_server_must_support_request_profiles_test'
6
+ <%- if additional_submit_request_requirements_supported? -%>
7
+ require_relative '../../<%= ig_version %>/pas_server_no_custom_extensions_test'
8
+ <%- end -%>
9
+ <%- if additional_claim_inquiry_response_requirements_supported? -%>
10
+ require_relative '../../<%= ig_version %>/pas_server_claim_inquiry_responses_group'
11
+ <%- end -%>
12
+ <% if replaced_pa_inquire_reference_test? -%>
13
+ require_relative '../../<%= ig_version %>/server_replaced_pa_inquire_reference_input_test'
14
+ require_relative '../../<%= ig_version %>/server_replaced_pa_inquire_reference_test'
15
+ <% end -%>
6
16
  <%- profile_test_files('submit', 'request').each do |file_name| -%>
7
17
  require_relative '<%= file_name %>'
8
18
  <%- end -%>
@@ -92,6 +102,14 @@ module DaVinciPASTestKit
92
102
  }
93
103
  )
94
104
  end
105
+ <%- if operation == 'submit' && additional_submit_request_requirements_supported? -%>
106
+
107
+ test from: :pas_server_<%= ig_version_for_id %>_no_custom_extensions_test
108
+ <%- end -%>
109
+ <%- if operation == 'inquire' && replaced_pa_inquire_reference_test? -%>
110
+ test from: :pas_server_<%= ig_version_for_id %>_replaced_pa_inquire_reference_input_test
111
+ test from: :pas_server_<%= ig_version_for_id %>_replaced_pa_inquire_reference_test
112
+ <%- end -%>
95
113
  end
96
114
 
97
115
  group do
@@ -115,6 +133,10 @@ module DaVinciPASTestKit
115
133
  test from: :<%= id %>
116
134
  <%- end -%>
117
135
  end
136
+ <%- if operation == 'inquire' && additional_claim_inquiry_response_requirements_supported? -%>
137
+
138
+ group from: :<%= additional_claim_inquiry_response_requirements_group_id %>
139
+ <%- end -%>
118
140
  end<%end%>
119
141
  end
120
142
  end
@@ -1,3 +1,4 @@
1
+ require_relative '../../../cross_suite/validator_configuration'
1
2
  require_relative '../../../cross_suite/validator_suppressions'
2
3
  require_relative '<%= error_group_file_name %>'
3
4
  require_relative '../../<%= ig_metadata.ig_version %>/pas_server_subscription_setup'
@@ -22,8 +23,7 @@ module DaVinciPASTestKit
22
23
 
23
24
  The best place to get started is the [Server Testing
24
25
  Instructions](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Server-Instructions-<%= ig_metadata.ig_version %>),
25
- which provides a step-by-step guide for running the tests against a client and provides
26
- an example client implemented in Postman. Visit the [Server Testing
26
+ which provides a step-by-step guide for running the tests. Visit the [Server Testing
27
27
  Details](https://github.com/inferno-framework/davinci-pas-test-kit/wiki/Server-Details)
28
28
  documentation for information about technical implementation and known limitations of these tests.
29
29
 
@@ -34,6 +34,7 @@ module DaVinciPASTestKit
34
34
  - Approval of a prior authorization request
35
35
  - Denial of a prior authorization request
36
36
  - Pending of a prior authorization request and a subsequent final decision
37
+ - Claim updates (except in v2.0.1)
37
38
  - Inability to process a prior authorization request
38
39
  - The ability of the server to handle the full scope of data required by PAS, including
39
40
  - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles
@@ -48,7 +49,7 @@ module DaVinciPASTestKit
48
49
  required features and functionality are present. HL7® FHIR® resources are
49
50
  validated with the Java validator using `tx.fhir.org` as the terminology server.
50
51
 
51
- %)
52
+ )
52
53
 
53
54
  links [
54
55
  {
@@ -83,17 +84,14 @@ module DaVinciPASTestKit
83
84
  )
84
85
 
85
86
  fhir_resource_validator do
86
- igs <%= validator_igs_expression %>
87
+ igs(*<%= validator_igs_constant %>)
87
88
 
88
89
  exclude_message do |message|
89
- # Messages expected of the form `<ResourceType>: <FHIRPath>: <message>`
90
- # We strip `<ResourceType>: <FHIRPath>: ` for the sake of matching
91
- SUPPRESSED_MESSAGES.match?(message.message.sub(/\A\S+: \S+: /, '')) ||
92
- message.message.downcase.include?('x12')
90
+ <%= suppressed_messages_constant %>.match?(message.message.sub(VALIDATOR_MESSAGE_LOCATION_PREFIX, ''))
93
91
  end
94
92
 
95
93
  validation_context do
96
- snomedCT '731000124108'
94
+ snomedCT SNOMED_CT_US_EDITION
97
95
  end
98
96
  end
99
97
 
@@ -126,9 +124,9 @@ module DaVinciPASTestKit
126
124
 
127
125
  group from: :pas_server_<%= ig_metadata.reformatted_version %>_subscription_setup
128
126
 
129
- group 'Demonstrate Workflow Support' do
127
+ group 'Demonstrate Scenario Support' do
130
128
  description %(
131
- The workflow tests validate that the server can participate in complete
129
+ The scenario tests validate that the server can participate in complete
132
130
  end-to-end prior authorization interactions, returning responses that are
133
131
  conformant and also contain the correct codes.
134
132
  )
@@ -72,6 +72,7 @@ module DaVinciPASTestKit
72
72
  description %(
73
73
  <%= bundle_validation_test_description('submit', 'response').gsub("\n", "\n" + " "*12) %>
74
74
  )
75
+
75
76
  config(
76
77
  options: {
77
78
  use_case: '<%= use_case %>',
@@ -114,6 +115,8 @@ module DaVinciPASTestKit
114
115
  end
115
116
  test from: :pas_notification_pas_conformance_test do
116
117
  id :pas_server_<%= ig_version_for_id %>_notification_pas_conformance_<%= use_case %>
118
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-61',
119
+ 'hl7.fhir.us.davinci-pas_2.2.1@spec-62'
117
120
  end
118
121
  <% else -%>
119
122
  test from: :subscriptions_r4_server_id_only_conformance do
@@ -1,4 +1,5 @@
1
1
  require_relative '../cross_suite/pas_constants'
2
+ require_relative 'descriptions'
2
3
 
3
4
  module DaVinciPASTestKit
4
5
  class Generator
@@ -46,7 +47,7 @@ module DaVinciPASTestKit
46
47
  end
47
48
 
48
49
  def title
49
- "Successful #{use_case.capitalize} Workflow"
50
+ "Successful #{use_case.capitalize} Scenario"
50
51
  end
51
52
 
52
53
  def output_file_name
@@ -100,6 +101,8 @@ module DaVinciPASTestKit
100
101
  case ig_version
101
102
  when 'v2.0.1'
102
103
  ['hl7.fhir.us.davinci-pas_2.0.1@141']
104
+ when 'v2.2.1'
105
+ ['hl7.fhir.us.davinci-pas_2.2.1@spec-51', 'hl7.fhir.us.davinci-pas_2.2.1@spec-60']
103
106
  end
104
107
  end
105
108
 
@@ -111,14 +114,18 @@ module DaVinciPASTestKit
111
114
  end
112
115
 
113
116
  def bundle_response_conformance_requirements_verified(operation)
114
- case "#{operation}_#{ig_version}"
115
- when 'submit_v2.0.1'
116
- ['hl7.fhir.us.davinci-pas_2.0.1@64', 'hl7.fhir.us.davinci-pas_2.0.1@100',
117
- 'hl7.fhir.us.davinci-pas_2.0.1@101', 'hl7.fhir.us.davinci-pas_2.0.1@102',
118
- 'hl7.fhir.us.davinci-pas_2.0.1@103', 'hl7.fhir.us.davinci-pas_2.0.1@107']
119
- when 'inquire_v2.0.1'
120
- ['hl7.fhir.us.davinci-pas_2.0.1@131']
121
- end
117
+ {
118
+ ['submit', 'v2.0.1'] => [
119
+ 'hl7.fhir.us.davinci-pas_2.0.1@64', 'hl7.fhir.us.davinci-pas_2.0.1@100',
120
+ 'hl7.fhir.us.davinci-pas_2.0.1@101', 'hl7.fhir.us.davinci-pas_2.0.1@102',
121
+ 'hl7.fhir.us.davinci-pas_2.0.1@103', 'hl7.fhir.us.davinci-pas_2.0.1@107'
122
+ ],
123
+ ['submit', 'v2.2.1'] => [
124
+ 'hl7.fhir.us.davinci-pas_2.2.1@spec-30', 'hl7.fhir.us.davinci-pas_2.2.1@spec-31',
125
+ 'hl7.fhir.us.davinci-pas_2.2.1@spec-33'
126
+ ],
127
+ ['inquire', 'v2.0.1'] => ['hl7.fhir.us.davinci-pas_2.0.1@131']
128
+ }[[operation, ig_version]]
122
129
  end
123
130
 
124
131
  def description
@@ -138,7 +145,7 @@ module DaVinciPASTestKit
138
145
  when 'pended'
139
146
  if ig_version == 'v2.2.1'
140
147
  <<~DESCRIPTION
141
- Demonstrate a complete prior authorization workflow including a period
148
+ Demonstrate a complete prior authorization scenario including a period
142
149
  during which the final decision is pending. This includes demonstrating
143
150
  the ability of the server to
144
151
 
@@ -148,7 +155,7 @@ module DaVinciPASTestKit
148
155
  DESCRIPTION
149
156
  else
150
157
  <<~DESCRIPTION
151
- Demonstrate a complete prior authorization workflow including a period
158
+ Demonstrate a complete prior authorization scenario including a period
152
159
  during which the final decision is pending. This includes demonstrating
153
160
  the ability of the server to
154
161
 
@@ -175,8 +182,7 @@ module DaVinciPASTestKit
175
182
  end
176
183
 
177
184
  def profile_link(operation, type)
178
- "[#{PASConstants.bundle_profile_name_for_operation_and_type(operation, type)}]" \
179
- "(#{PASConstants.bundle_profile_url_for_operation_and_type(operation, type)}|#{ig_version})"
185
+ Descriptions.bundle_profile_link(operation, type, ig_version)
180
186
  end
181
187
 
182
188
  def bundle_validation_test_description(operation, type)
@@ -2,15 +2,23 @@ module DaVinciPASTestKit
2
2
  # Helper module for working with FHIR Parameters resources in v2.2.1
3
3
  # Provides utilities to extract Bundles from Parameters.parameter entries
4
4
  module ParametersHelper
5
- # Extracts Bundles from a PAS Inquiry Response Parameters resource
5
+ # Extracts the resources from a Parameters resource's entries matching a given parameter name.
6
6
  # @param parameters [FHIR::Parameters] The Parameters resource
7
- # @return [Array<FHIR::Bundle>] Array of Bundles from return parameters
8
- def extract_bundles_from_pas_inquiry_response_parameters(parameters)
7
+ # @param parameter_name [String] The Parameters.parameter.name to match, e.g. 'return' or 'resource'
8
+ # @return [Array] Resources (one per matching entry, in order; nil for an entry with no resource)
9
+ def extract_resources_from_parameters(parameters, parameter_name)
9
10
  return [] unless parameters.is_a?(FHIR::Parameters)
10
11
 
11
- parameters.parameter # rubocop:disable Style/SelectByKind
12
- .select { |param| param.name == 'return' }
12
+ parameters.parameter
13
+ .select { |param| param.name == parameter_name }
13
14
  .map(&:resource)
15
+ end
16
+
17
+ # Extracts Bundles from a PAS Inquiry Response Parameters resource
18
+ # @param parameters [FHIR::Parameters] The Parameters resource
19
+ # @return [Array<FHIR::Bundle>] Array of Bundles from return parameters
20
+ def extract_bundles_from_pas_inquiry_response_parameters(parameters)
21
+ extract_resources_from_parameters(parameters, 'return') # rubocop:disable Style/SelectByKind
14
22
  .compact
15
23
  .select { |resource| resource.is_a?(FHIR::Bundle) }
16
24
  end
@@ -8,8 +8,8 @@ module DaVinciPASTestKit
8
8
  id :pas_notification_pas_conformance_test
9
9
  title 'Notification conforms to PAS-specific requirements'
10
10
  description %(
11
- This test verifies that the notification sent to the client under test
12
- for a pended claim update (or sent by the server under test) conforms
11
+ This test verifies that the notification sent to the client system
12
+ for a pended claim update conforms
13
13
  to PAS-specific requirements beyond the base Subscription Backport IG
14
14
  notification requirements. In particular, the focus resource in the
15
15
  notification should be the updated ClaimResponse conformant to the
@@ -250,12 +250,15 @@ hl7.fhir.us.davinci-pas_2.2.1,conf-12,https://hl7.org/fhir/us/davinci-pas/2.2.1/
250
250
  hl7.fhir.us.davinci-pas_2.2.1,conf-13,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-13,"If the proposed change is adopted and published in the PAS continuous integration build or the CI build of one of its dependencies (e.g. US Core), implementations **MAY**, by mutual agreement, pre-adopt the use of those additional profiles and/or mustSupport data elements and not be considered in violation of #1 above.",MAY,"PAS Client, PAS Payer",,false,,
251
251
  hl7.fhir.us.davinci-pas_2.2.1,conf-14,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-14,"Where cardinality and other constraints present in profiles allow data elements to be omitted, PAS compliant systems **SHALL NOT** treat the omission of those elements as a conformance error.",SHALL NOT,"PAS Client, PAS Payer",,false,,
252
252
  hl7.fhir.us.davinci-pas_2.2.1,conf-15,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-15,PAS clients and services **SHALL** use standard PAS data elements (i.e. elements found within PAS-defined or inherited profiles and marked as mandatory or mustSupport) to communicate needed data if such elements are intended to convey such information.,SHALL,"PAS Client, PAS Payer",,false,,
253
- hl7.fhir.us.davinci-pas_2.2.1,conf-16,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-16,"PAS implementing organizations **SHALL NOT** publish guidance setting expectations for where certain data elements are conveyed within PAS and inherited data structures, but **MAY** submit change requests to PAS, HRex, or US Core requesting that additional guidance be provided to implementers on data structure usage to increase consistency across implementations.",SHALL NOT / MAY,"PAS Client, PAS Payer",,false,,
254
- hl7.fhir.us.davinci-pas_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD / MAY,"PAS Client, PAS Payer",,false,,
253
+ hl7.fhir.us.davinci-pas_2.2.1,conf-16-A,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-16,PAS implementing organizations **SHALL NOT** publish guidance setting expectations for where certain data elements are conveyed within PAS and inherited data structures,SHALL NOT,"PAS Client, PAS Payer",,false,,
254
+ hl7.fhir.us.davinci-pas_2.2.1,conf-16-B,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/conformance.html#ci-c-conf-16,"PAS implementing organizations ... **MAY** submit change requests to PAS, HRex, or US Core requesting that additional guidance be provided to implementers on data structure usage to increase consistency across implementations.",MAY,"PAS Client, PAS Payer",,false,,
255
+ hl7.fhir.us.davinci-pas_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD,"PAS Client, PAS Payer",,false,,
255
256
  hl7.fhir.us.davinci-pas_2.2.1,metric-2,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/metrics.html#ci-c-metric-2,PAS implementers **SHOULD** store information for each PAS call in a manner that would allow them to respond to measures based on this logical model.,SHOULD,"PAS Client, PAS Payer",,false,,
256
- hl7.fhir.us.davinci-pas_2.2.1,priv-1,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-1,"Implementations **SHALL** permit provider review of data prior to transmission, but **SHALL NOT** require such review.",SHALL NOT / SHALL,PAS Client,,false,,
257
+ hl7.fhir.us.davinci-pas_2.2.1,priv-1-A,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-1,Implementations **SHALL** permit provider review of data prior to transmission,SHALL,PAS Client,,false,,
258
+ hl7.fhir.us.davinci-pas_2.2.1,priv-1-B,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-1,Implementations ... **SHALL NOT** require [provider review of data prior to transmission],SHALL NOT,PAS Client,,false,,
257
259
  hl7.fhir.us.davinci-pas_2.2.1,priv-2,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-2,Payers who do not view the FHIR version of the transmitted information **SHOULD** be aware of the possibility of these limitations and ensure they have policies that enforce appropriate sharing constraints on data.,SHOULD,PAS Payer,,false,,
258
- hl7.fhir.us.davinci-pas_2.2.1,priv-3,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-3,PAS Servers **SHOULD** support server-server OAuth and **MAY** support mutually authenticated TLS.,SHOULD / MAY,PAS Payer,,false,,
260
+ hl7.fhir.us.davinci-pas_2.2.1,priv-3-A,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-3,PAS Servers **SHOULD** support server-server Oauth,SHOULD,PAS Payer,,false,,
261
+ hl7.fhir.us.davinci-pas_2.2.1,priv-3-B,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/privacy.html#ci-c-priv-3,PAS Servers ... **MAY** support mutually authenticated TLS.,MAY,PAS Payer,,false,,
259
262
  hl7.fhir.us.davinci-pas_2.2.1,prof-1,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/StructureDefinition-profile-datatype-timing.html#ci-c-prof-1,"Timings **SHALL** have at least one of: a count, a frequency and period and periodUnit (with optional frequencyMax and periodMax), a calendarPattern, or a deliveryPattern.",SHALL,PAS Client,,false,,
260
263
  hl7.fhir.us.davinci-pas_2.2.1,prof-2,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/StructureDefinition-profile-quantity.html#ci-c-prof-2,Quantities **SHALL** have a value and either a unit or a code,SHALL,"PAS Client, PAS Payer",,false,,
261
264
  hl7.fhir.us.davinci-pas_2.2.1,prof-3,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/StructureDefinition-profile-quantity.html#ci-c-prof-3,"If a quantity code is present, it **SHALL** use the X12 quantity units.",SHALL,"PAS Client, PAS Payer",,false,,
@@ -293,8 +296,10 @@ hl7.fhir.us.davinci-pas_2.2.1,spec-20,https://hl7.org/fhir/us/davinci-pas/2.2.1/
293
296
  hl7.fhir.us.davinci-pas_2.2.1,spec-21,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-21,"To attach non-FHIR instance data such as PDFs, CDAs, JPGs, a DocumentReference instance **SHOULD** be used.",SHOULD,PAS Payer,,false,,
294
297
  hl7.fhir.us.davinci-pas_2.2.1,spec-22,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-22,The Claim.supportingInfo.sequence for each entry **SHALL** be unique within the Claim.,SHALL,PAS Payer,,false,,
295
298
  hl7.fhir.us.davinci-pas_2.2.1,spec-23,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-23,All resources **SHALL** comply with their respective profiles.,SHALL,PAS Payer,,false,,
296
- hl7.fhir.us.davinci-pas_2.2.1,spec-24,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-24,"FHIR elements not marked as 'must support' **MAY** be included in resources within the Bundle, but client systems **SHOULD** have no expectation of such elements being processed by the payer unless prior arrangements have been made.",SHOULD / MAY,"PAS Client, PAS Payer",,false,,
297
- hl7.fhir.us.davinci-pas_2.2.1,spec-25,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-25,"Systems that do not process such elements **SHALL** ignore unsupported elements unless they are 'modifier' elements, in which case the system **MAY** treat the presence of the element as an error.",SHALL / MAY,PAS Payer,,false,,
299
+ hl7.fhir.us.davinci-pas_2.2.1,spec-24-A,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-24,FHIR elements not marked as 'must support' **MAY** be included in resources within the Bundle,MAY,"PAS Client, PAS Payer",,false,,
300
+ hl7.fhir.us.davinci-pas_2.2.1,spec-24-B,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-24,[C]lient systems **SHOULD** have no expectation of such [non 'must support'] elements being processed by the payer unless prior arrangements have been made.,SHOULD,"PAS Client, PAS Payer",,false,,
301
+ hl7.fhir.us.davinci-pas_2.2.1,spec-25-A,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-25,Systems that do not process such elements **SHALL** ignore unsupported elements unless they are 'modifier' elements,SHALL,PAS Payer,,false,,
302
+ hl7.fhir.us.davinci-pas_2.2.1,spec-25-B,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-25,[T]the system **MAY** treat the presence of the [unsupported 'modifier'] element as an error.,MAY,PAS Payer,,false,,
298
303
  hl7.fhir.us.davinci-pas_2.2.1,spec-26,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-26,"In addition, the system **SHALL** make the entire PAS FHIR Bundle available to the intended payer.",SHALL,PAS Payer,,false,,
299
304
  hl7.fhir.us.davinci-pas_2.2.1,spec-27,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-27,The method **MAY** be based on the X12 275 or another method that trading partners have agreed to use.,MAY,PAS Payer,,false,,
300
305
  hl7.fhir.us.davinci-pas_2.2.1,spec-28,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-28,"If the X12 275 is used for this purpose, the 275 BDS01 Filter ID Code element **SHALL** be set to ""B64"" and the CAT02 Attachment Information Format Code element **SHALL** be sent to ""HL"".",SHALL,PAS Payer,,false,,
@@ -316,7 +321,7 @@ hl7.fhir.us.davinci-pas_2.2.1,spec-43,https://hl7.org/fhir/us/davinci-pas/2.2.1/
316
321
  hl7.fhir.us.davinci-pas_2.2.1,spec-44,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-44,This Claim Inquiry Response **SHALL** either reference a Claim or have a Data Absent Reason indicating why the Claim can not be referenced (eg. original claim received by fax).,SHALL,PAS Payer,,false,,
317
322
  hl7.fhir.us.davinci-pas_2.2.1,spec-45,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-45,The referenced Claim instance **SHOULD** be returned if there is information in the Response that needs to be present can not be returned in the Claim Response instance.,SHOULD,PAS Payer,,false,,
318
323
  hl7.fhir.us.davinci-pas_2.2.1,spec-46,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-46,"the returned ClaimResponse **SHALL** include the current results for all submitted items, including any items changed or canceled since the original authoriation request.",SHALL,PAS Payer,,false,,
319
- hl7.fhir.us.davinci-pas_2.2.1,spec-47,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-47,"if a specific reference number (either the REF-NT or REF-BB) is submitted and is not the 'current' number (because subsequent additions/changes/cancellations have been made to the prior authorization request), the returned record **SHALL** be the current authorization response - even though it no longer has the same identifier.",SHALL,"PAS Client, PAS Payer",,false,,
324
+ hl7.fhir.us.davinci-pas_2.2.1,spec-47,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-47,"if a specific reference number (either the REF-NT or REF-BB) is submitted and is not the 'current' number (because subsequent additions/changes/cancellations have been made to the prior authorization request), the returned record **SHALL** be the current authorization response - even though it no longer has the same identifier.",SHALL,PAS Payer,,false,,
320
325
  hl7.fhir.us.davinci-pas_2.2.1,spec-48,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-48,"I.e. If a search is for a 'replaced' prior authorization, the search result **SHALL** include the 'current' prior authorization response for the most recent replacing prior authorization request.",SHALL,PAS Payer,,false,,
321
326
  hl7.fhir.us.davinci-pas_2.2.1,spec-49,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-49,systems **MAY** withhold information about prior authorizations that are 'open' but are deemed to be not relevant to the provider (eg. prior authorization requests for sensitive care where the requesting provider is neither the ordering nor rendering provider) who is checking for the prior authorization status if not searching by a specific Claim identifier.,MAY,PAS Payer,,false,,
322
327
  hl7.fhir.us.davinci-pas_2.2.1,spec-50,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/specification.html#ci-c-spec-50,In such situations the response **SHOULD** include an OperationOutcome warning that some prior authorizations have been suppressed and provide an alternative mechanism (e.g. telephone number) to provide further information if needed.,SHOULD,PAS Payer,,false,,
@@ -349,3 +354,5 @@ hl7.fhir.us.davinci-pas_2.2.1,use-3,https://hl7.org/fhir/us/davinci-pas/2.2.1/en
349
354
  hl7.fhir.us.davinci-pas_2.2.1,use-4,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/usecases.html#ci-c-use-4,"As well, EHRs **SHOULD** annotate their orders with the decisions contained in the PAS Response.",SHOULD,PAS Client,,false,,
350
355
  hl7.fhir.us.davinci-pas_2.2.1,use-5,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/usecases.html#ci-c-use-5,"Prior to sending clinical data as part of the PAS exchange, the provider (or their designated agent) **SHALL** have the ability, but not an obligation, to review patient information and where appropriate amend or withhold the submission to comply with current regulations and relevant provider policies. The provider can choose to turn off the ability to review documentation. The vendor must allow them this option.",SHALL,PAS Client,,false,,
351
356
  hl7.fhir.us.davinci-pas_2.2.1,use-6,https://hl7.org/fhir/us/davinci-pas/2.2.1/en/usecases.html#ci-c-use-6,"All exchanges **SHOULD** meet Federal and state regulations, including any HIPAA restrictions and restrictions on sensitive data.",SHOULD,"PAS Client, PAS Payer",,false,,
357
+ hl7.fhir.us.davinci-pas_2.2.1,hrex-conf-1,https://hl7.org/fhir/us/davinci-hrex/1.2.0/en/conformance.html#ci-c-conf-1,Data Sources **SHALL** be capable of populating the data element when sharing resources compliant with the profile.,SHALL,"PAS Client, PAS Payer",,false,,
358
+ hl7.fhir.us.davinci-pas_2.2.1,hrex-conf-2,https://hl7.org/fhir/us/davinci-hrex/1.2.0/en/conformance.html#ci-c-conf-2,Data Consumers **SHALL** be capable of processing resource instances containing the data elements without generating an error or causing the application to fail.,SHALL,"PAS Client, PAS Payer",,false,,