davinci_pas_test_kit 0.15.2 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/g33_br_provider.json +13 -0
  3. data/lib/davinci_pas_test_kit/client/abstract_approval_submit_test.rb +28 -17
  4. data/lib/davinci_pas_test_kit/client/abstract_denial_submit_test.rb +26 -16
  5. data/lib/davinci_pas_test_kit/client/abstract_gather_must_support_test.rb +43 -26
  6. data/lib/davinci_pas_test_kit/client/abstract_modification_submit_test.rb +29 -19
  7. data/lib/davinci_pas_test_kit/client/abstract_response_attest.rb +75 -6
  8. data/lib/davinci_pas_test_kit/client/abstract_subscription_create_test.rb +26 -9
  9. data/lib/davinci_pas_test_kit/client/abstract_subscription_update_delete_test.rb +91 -0
  10. data/lib/davinci_pas_test_kit/client/client_bundle_validation_helper.rb +245 -0
  11. data/lib/davinci_pas_test_kit/client/client_input_descriptions.rb +91 -25
  12. data/lib/davinci_pas_test_kit/client/endpoints/claim_endpoint.rb +108 -68
  13. data/lib/davinci_pas_test_kit/client/endpoints/endpoint_session_identification.rb +24 -0
  14. data/lib/davinci_pas_test_kit/client/endpoints/expired_token.rb +40 -0
  15. data/lib/davinci_pas_test_kit/client/endpoints/subscription_create_endpoint.rb +7 -12
  16. data/lib/davinci_pas_test_kit/client/endpoints/subscription_delete_endpoint.rb +13 -0
  17. data/lib/davinci_pas_test_kit/client/endpoints/subscription_read_endpoint.rb +13 -0
  18. data/lib/davinci_pas_test_kit/client/endpoints/subscription_status_endpoint.rb +15 -20
  19. data/lib/davinci_pas_test_kit/client/endpoints/subscription_update_endpoint.rb +13 -0
  20. data/lib/davinci_pas_test_kit/client/endpoints/token_endpoint.rb +16 -0
  21. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_request_must_support_beneficiary_test.rb +3 -3
  22. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +3 -3
  23. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_request_must_support_beneficiary_test.rb +3 -3
  24. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +3 -3
  25. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  26. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  27. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +3 -3
  28. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +3 -3
  29. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/communication_request/client_submit_response_must_support_communication_request_test.rb +3 -3
  30. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_inquire_request_must_support_coverage_test.rb +3 -3
  31. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/coverage/client_submit_request_must_support_coverage_test.rb +3 -3
  32. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/encounter/client_submit_request_must_support_encounter_test.rb +3 -3
  33. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_request_must_support_insurer_test.rb +3 -3
  34. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_inquire_response_must_support_insurer_test.rb +3 -3
  35. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_request_must_support_insurer_test.rb +3 -3
  36. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/insurer/client_submit_response_must_support_insurer_test.rb +3 -3
  37. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_must_support_group.rb +1 -1
  38. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_inquire_response_must_support_group.rb +9 -31
  39. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_must_support_group.rb +1 -1
  40. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_client_submit_response_must_support_group.rb +10 -32
  41. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_request_bundle/client_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +3 -3
  42. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +3 -3
  43. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_request_bundle/client_submit_request_must_support_pas_request_bundle_test.rb +3 -3
  44. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +3 -3
  45. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_request_must_support_practitioner_test.rb +3 -3
  46. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +3 -3
  47. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_request_must_support_practitioner_test.rb +3 -3
  48. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner/client_submit_response_must_support_practitioner_test.rb +3 -3
  49. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_request_must_support_practitioner_role_test.rb +3 -3
  50. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +3 -3
  51. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_request_must_support_practitioner_role_test.rb +3 -3
  52. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +3 -3
  53. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_request_must_support_requestor_test.rb +3 -3
  54. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_inquire_response_must_support_requestor_test.rb +3 -3
  55. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_request_must_support_requestor_test.rb +3 -3
  56. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/requestor/client_submit_response_must_support_requestor_test.rb +3 -3
  57. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_inquire_request_must_support_subscriber_test.rb +3 -3
  58. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/subscriber/client_submit_request_must_support_subscriber_test.rb +3 -3
  59. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_inquire_response_must_support_beneficiary_test.rb +4 -3
  60. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/beneficiary/client_submit_response_must_support_beneficiary_test.rb +4 -3
  61. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_inquiry/client_inquire_request_must_support_claim_inquiry_test.rb +3 -3
  62. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claim_update/client_submit_request_must_support_claim_update_test.rb +3 -3
  63. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claiminquiryresponse/client_inquire_response_must_support_claiminquiryresponse_test.rb +4 -3
  64. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/claimresponse/client_submit_response_must_support_claimresponse_test.rb +4 -3
  65. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/communication_request/client_submit_response_must_support_communication_request_test.rb +4 -3
  66. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_inquire_response_must_support_insurer_test.rb +4 -3
  67. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/insurer/client_submit_response_must_support_insurer_test.rb +4 -3
  68. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_must_support_group.rb +8 -6
  69. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_inquire_response_must_support_group.rb +9 -31
  70. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_must_support_group.rb +13 -9
  71. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_client_submit_response_must_support_group.rb +10 -32
  72. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_inquiry_response_bundle/client_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +4 -3
  73. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/pas_response_bundle/client_submit_response_must_support_pas_response_bundle_test.rb +4 -3
  74. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_inquire_response_must_support_practitioner_test.rb +4 -3
  75. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner/client_submit_response_must_support_practitioner_test.rb +4 -3
  76. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_inquire_response_must_support_practitioner_role_test.rb +4 -3
  77. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/practitioner_role/client_submit_response_must_support_practitioner_role_test.rb +4 -3
  78. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_inquire_response_must_support_requestor_test.rb +4 -3
  79. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/requestor/client_submit_response_must_support_requestor_test.rb +4 -3
  80. data/lib/davinci_pas_test_kit/client/jobs/send_pas_subscription_notification.rb +64 -3
  81. data/lib/davinci_pas_test_kit/client/pas_client_subscription_pas_conformance_test.rb +4 -3
  82. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_other_display_test.rb +6 -4
  83. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_smart_display_test.rb +8 -4
  84. data/lib/davinci_pas_test_kit/client/registration/abstract_configuration_udap_display_test.rb +9 -4
  85. data/lib/davinci_pas_test_kit/client/registration/abstract_other_auth_attest_test.rb +5 -4
  86. data/lib/davinci_pas_test_kit/client/request_count_gating.rb +14 -0
  87. data/lib/davinci_pas_test_kit/client/response_generator.rb +50 -9
  88. data/lib/davinci_pas_test_kit/client/session_identification.rb +26 -7
  89. data/lib/davinci_pas_test_kit/client/subscription_notification_trigger.rb +80 -0
  90. data/lib/davinci_pas_test_kit/client/subscription_setup_requirement.rb +59 -0
  91. data/lib/davinci_pas_test_kit/client/user_input_response.rb +27 -6
  92. data/lib/davinci_pas_test_kit/client/v2.0.1/client_suite.rb +30 -15
  93. data/lib/davinci_pas_test_kit/client/v2.0.1/must_support/pas_client_must_support_request_profiles_test.rb +2 -2
  94. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_approval_group.rb +8 -7
  95. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_smart_group.rb +4 -4
  96. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_auth_udap_group.rb +4 -4
  97. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_denial_group.rb +8 -7
  98. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_must_support_group.rb +38 -52
  99. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_pended_group.rb +28 -22
  100. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_registration_group.rb +2 -2
  101. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_subscription_setup_group.rb +2 -2
  102. data/lib/davinci_pas_test_kit/client/v2.0.1/pas_client_workflows_group.rb +2 -2
  103. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +15 -21
  104. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +29 -29
  105. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_pended_submit_test.rb +49 -40
  106. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_request_bundle_validation_test.rb +15 -21
  107. data/lib/davinci_pas_test_kit/client/v2.0.1/workflows/pas_client_response_bundle_validation_test.rb +29 -29
  108. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  109. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  110. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_provider_review_attestation_test.rb +45 -0
  111. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_security_attestation_test.rb +42 -0
  112. data/lib/davinci_pas_test_kit/client/v2.2.1/attestations/client_subscription_error_recovery_attestation_test.rb +42 -0
  113. data/lib/davinci_pas_test_kit/client/v2.2.1/client_suite.rb +64 -12
  114. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_failure_submit_test.rb +20 -10
  115. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_operation_outcome_validation_test.rb +11 -5
  116. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_response_validation_test.rb +21 -12
  117. data/lib/davinci_pas_test_kit/client/v2.2.1/error_handling/pas_client_processing_error_submit_test.rb +19 -8
  118. data/lib/davinci_pas_test_kit/client/v2.2.1/must_support/must_support_with_attestation_option.rb +90 -40
  119. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_approval_group.rb +12 -11
  120. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_attestations_group.rb +32 -0
  121. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_smart_group.rb +4 -4
  122. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_auth_udap_group.rb +4 -4
  123. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_claim_updates_group.rb +24 -6
  124. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_denial_group.rb +12 -10
  125. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_modification_group.rb +13 -14
  126. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_must_support_group.rb +55 -59
  127. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_operation_failure_group.rb +8 -5
  128. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_pended_group.rb +53 -41
  129. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_processing_error_group.rb +9 -7
  130. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_registration_group.rb +2 -2
  131. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_setup_group.rb +9 -4
  132. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_subscription_update_delete_group.rb +57 -0
  133. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_workflows_group.rb +22 -2
  134. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_create_test.rb +2 -1
  135. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_put_update_pas_conformance_test.rb +49 -0
  136. data/lib/davinci_pas_test_kit/client/v2.2.1/subscription/pas_client_subscription_update_delete_test.rb +12 -0
  137. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_referenced_resources_test.rb +5 -6
  138. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_claim_update_submit_tests.rb +82 -56
  139. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_request_bundle_validation_test.rb +17 -20
  140. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_inquire_response_bundle_validation_test.rb +59 -27
  141. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_modification_verification_test.rb +0 -3
  142. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_send_notification_test.rb +138 -0
  143. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_pended_submit_test.rb +32 -85
  144. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_request_bundle_validation_test.rb +16 -21
  145. data/lib/davinci_pas_test_kit/client/v2.2.1/workflows/pas_client_response_bundle_validation_test.rb +27 -27
  146. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.0.1/task/metadata.yml +0 -4
  147. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/metadata.yml +0 -1
  148. data/lib/davinci_pas_test_kit/cross_suite/generated/v2.2.1/task/metadata.yml +0 -4
  149. data/lib/davinci_pas_test_kit/cross_suite/pas_bundle_validation.rb +489 -289
  150. data/lib/davinci_pas_test_kit/cross_suite/pas_constants.rb +7 -0
  151. data/lib/davinci_pas_test_kit/cross_suite/pas_subscription_verification.rb +8 -4
  152. data/lib/davinci_pas_test_kit/cross_suite/referenced_resource_presence_validation.rb +141 -0
  153. data/lib/davinci_pas_test_kit/cross_suite/response_selection_utils.rb +13 -11
  154. data/lib/davinci_pas_test_kit/cross_suite/tags.rb +11 -6
  155. data/lib/davinci_pas_test_kit/cross_suite/validator_configuration.rb +16 -0
  156. data/lib/davinci_pas_test_kit/cross_suite/validator_suppressions.rb +4 -0
  157. data/lib/davinci_pas_test_kit/docs/demo/PAS Client Suite Demonstration.postman_collection.json +3 -3
  158. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +1 -0
  159. data/lib/davinci_pas_test_kit/generator/client_must_support_group_generator.rb +47 -16
  160. data/lib/davinci_pas_test_kit/generator/must_support_target_profiles.rb +17 -0
  161. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +8 -2
  162. data/lib/davinci_pas_test_kit/generator/profile_metadata.rb +1 -1
  163. data/lib/davinci_pas_test_kit/generator/server_suite_generator.rb +4 -9
  164. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_group.rb.erb +22 -3
  165. data/lib/davinci_pas_test_kit/generator/templates/client_must_support_response_group.rb.erb +7 -16
  166. data/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +8 -8
  167. data/lib/davinci_pas_test_kit/generator/templates/server_suite.rb.erb +6 -7
  168. data/lib/davinci_pas_test_kit/generator/use_case_group_generator.rb +5 -5
  169. data/lib/davinci_pas_test_kit/parameters_helper.rb +13 -5
  170. data/lib/davinci_pas_test_kit/pas_notification_conformance_test.rb +2 -2
  171. data/lib/davinci_pas_test_kit/requirements/davinci_pas_test_kit_requirements.csv +14 -7
  172. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v201_requirements_coverage.csv +21 -21
  173. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_client_suite_v221_requirements_coverage.csv +30 -26
  174. data/lib/davinci_pas_test_kit/requirements/generated/davinci_pas_server_suite_v221_requirements_coverage.csv +12 -6
  175. data/lib/davinci_pas_test_kit/requirements/hl7.fhir.us.davinci-pas_2.2.1_requirements.xlsx +0 -0
  176. data/lib/davinci_pas_test_kit/server/claim_operation_logic.rb +1 -1
  177. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  178. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  179. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  180. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  181. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  182. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  183. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  184. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  185. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  186. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  187. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  188. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  189. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  190. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  191. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  192. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  193. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  194. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  195. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  196. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  197. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_approval_use_case_group.rb +3 -3
  198. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_denial_use_case_group.rb +3 -3
  199. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/pas_server_pended_use_case_group.rb +6 -6
  200. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  201. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  202. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  203. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  204. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  205. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  206. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  207. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  208. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  209. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  210. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  211. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  212. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/server_suite.rb +6 -7
  213. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  214. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  215. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  216. data/lib/davinci_pas_test_kit/server/generated/v2.0.1/task/server_submit_response_must_support_task_test.rb +1 -1
  217. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_request_must_support_beneficiary_test.rb +1 -1
  218. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_inquire_response_must_support_beneficiary_test.rb +1 -1
  219. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_request_must_support_beneficiary_test.rb +1 -1
  220. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/beneficiary/server_submit_response_must_support_beneficiary_test.rb +1 -1
  221. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_inquiry/server_inquire_request_must_support_claim_inquiry_test.rb +1 -1
  222. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claim_update/server_submit_request_must_support_claim_update_test.rb +1 -1
  223. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claiminquiryresponse/server_inquire_response_must_support_claiminquiryresponse_test.rb +1 -1
  224. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/claimresponse/server_submit_response_must_support_claimresponse_test.rb +1 -1
  225. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/communication_request/server_submit_response_must_support_communication_request_test.rb +1 -1
  226. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_inquire_request_must_support_coverage_test.rb +1 -1
  227. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/coverage/server_submit_request_must_support_coverage_test.rb +1 -1
  228. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/encounter/server_submit_request_must_support_encounter_test.rb +1 -1
  229. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_request_must_support_insurer_test.rb +1 -1
  230. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_inquire_response_must_support_insurer_test.rb +1 -1
  231. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_request_must_support_insurer_test.rb +1 -1
  232. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/insurer/server_submit_response_must_support_insurer_test.rb +1 -1
  233. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_request_bundle/server_inquire_request_must_support_pas_inquiry_request_bundle_test.rb +1 -1
  234. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_inquiry_response_bundle/server_inquire_response_must_support_pas_inquiry_response_bundle_test.rb +1 -1
  235. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_request_bundle/server_submit_request_must_support_pas_request_bundle_test.rb +1 -1
  236. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_response_bundle/server_submit_response_must_support_pas_response_bundle_test.rb +1 -1
  237. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_approval_use_case_group.rb +3 -3
  238. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_denial_use_case_group.rb +3 -3
  239. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/pas_server_pended_use_case_group.rb +4 -4
  240. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_request_must_support_practitioner_test.rb +1 -1
  241. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_inquire_response_must_support_practitioner_test.rb +1 -1
  242. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_request_must_support_practitioner_test.rb +1 -1
  243. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner/server_submit_response_must_support_practitioner_test.rb +1 -1
  244. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_request_must_support_practitioner_role_test.rb +1 -1
  245. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_inquire_response_must_support_practitioner_role_test.rb +1 -1
  246. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_request_must_support_practitioner_role_test.rb +1 -1
  247. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/practitioner_role/server_submit_response_must_support_practitioner_role_test.rb +1 -1
  248. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_request_must_support_requestor_test.rb +1 -1
  249. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_inquire_response_must_support_requestor_test.rb +1 -1
  250. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_request_must_support_requestor_test.rb +1 -1
  251. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/requestor/server_submit_response_must_support_requestor_test.rb +1 -1
  252. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/server_suite.rb +6 -7
  253. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_inquire_request_must_support_subscriber_test.rb +1 -1
  254. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/subscriber/server_submit_request_must_support_subscriber_test.rb +1 -1
  255. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_inquire_response_must_support_task_test.rb +1 -1
  256. data/lib/davinci_pas_test_kit/server/generated/v2.2.1/task/server_submit_response_must_support_task_test.rb +1 -1
  257. data/lib/davinci_pas_test_kit/server/pas_claim_response_decision_test.rb +2 -2
  258. data/lib/davinci_pas_test_kit/server/server_request_bundle_validation_test.rb +4 -6
  259. data/lib/davinci_pas_test_kit/server/server_response_bundle_validation_test.rb +4 -6
  260. data/lib/davinci_pas_test_kit/server/v2.0.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  261. data/lib/davinci_pas_test_kit/server/v2.0.1/pas_server_subscription_setup.rb +1 -1
  262. data/lib/davinci_pas_test_kit/server/v2.2.1/must_support/pas_server_must_support_request_profiles_test.rb +1 -1
  263. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_claim_updates_group.rb +1 -1
  264. data/lib/davinci_pas_test_kit/server/v2.2.1/pas_server_subscription_setup.rb +1 -1
  265. data/lib/davinci_pas_test_kit/version.rb +2 -2
  266. metadata +31 -13
  267. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_inquire_response_must_support_task_test.rb +0 -45
  268. data/lib/davinci_pas_test_kit/client/generated/v2.0.1/task/client_submit_response_must_support_task_test.rb +0 -45
  269. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_inquire_response_must_support_task_test.rb +0 -55
  270. data/lib/davinci_pas_test_kit/client/generated/v2.2.1/task/client_submit_response_must_support_task_test.rb +0 -55
  271. data/lib/davinci_pas_test_kit/client/v2.2.1/pas_client_error_handling_group.rb +0 -20
@@ -5,8 +5,6 @@ require_relative 'requestor/client_inquire_response_must_support_requestor_test'
5
5
  require_relative 'beneficiary/client_inquire_response_must_support_beneficiary_test'
6
6
  require_relative 'practitioner/client_inquire_response_must_support_practitioner_test'
7
7
  require_relative 'practitioner_role/client_inquire_response_must_support_practitioner_role_test'
8
- require_relative 'task/client_inquire_response_must_support_task_test'
9
- require_relative '../../v2.2.1/workflows/pas_client_response_attest'
10
8
 
11
9
  module DaVinciPASTestKit
12
10
  module DaVinciPASV221
@@ -14,12 +12,9 @@ module DaVinciPASTestKit
14
12
  id :pas_client_v221_inquire_response_must_support
15
13
  title '$inquire Response Must Support Coverage'
16
14
  description %(
17
- Check that `$inquire` responses provided to the client contain
15
+ Check that `$inquire` responses provided to the PAS client contain
18
16
  all PAS-defined profiles and their must support elements.
19
17
 
20
- **USER INPUT VALIDATION**: These tests validate responses provided by the tester,
21
- not the system under test. Errors will be treated as skips instead of failures.
22
-
23
18
  For `$inquire` responses, this includes the following profiles:
24
19
 
25
20
  - [PAS Inquiry Response Bundle](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-pas-inquiry-response-bundle.html)
@@ -29,7 +24,6 @@ module DaVinciPASTestKit
29
24
  - [PAS Beneficiary Patient](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-beneficiary.html)
30
25
  - [PAS Practitioner](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-practitioner.html)
31
26
  - [PAS PractitionerRole](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-practitionerrole.html)
32
- - [PAS Task](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-task.html)
33
27
 
34
28
 
35
29
 
@@ -37,42 +31,26 @@ module DaVinciPASTestKit
37
31
  run_as_group
38
32
 
39
33
  test from: :pas_client_v221_inquire_response_must_support_pas_inquiry_response_bundle do
40
- optional
34
+ simulation_verification
41
35
  end
42
36
  test from: :pas_client_v221_inquire_response_must_support_claiminquiryresponse do
43
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-7'
37
+ verifies_requirements(*verifies_requirements, 'hl7.fhir.us.davinci-pas_2.2.1@conf-7')
38
+ simulation_verification
44
39
  end
45
40
  test from: :pas_client_v221_inquire_response_must_support_insurer do
46
- optional
41
+ simulation_verification
47
42
  end
48
43
  test from: :pas_client_v221_inquire_response_must_support_requestor do
49
- optional
44
+ simulation_verification
50
45
  end
51
46
  test from: :pas_client_v221_inquire_response_must_support_beneficiary do
52
- optional
47
+ simulation_verification
53
48
  end
54
49
  test from: :pas_client_v221_inquire_response_must_support_practitioner do
55
- optional
50
+ simulation_verification
56
51
  end
57
52
  test from: :pas_client_v221_inquire_response_must_support_practitioner_role do
58
- optional
59
- end
60
- test from: :pas_client_v221_inquire_response_must_support_task do
61
- optional
62
- end
63
- test from: :pas_client_v221_response_attest,
64
- title: 'PAS client handled the $inquire response must support elements',
65
- description: %(
66
- This test provides the tester an opportunity to verify that their client
67
- correctly processed and used the must support elements present in the
68
- $inquire responses received from Inferno during these tests.
69
- ),
70
- config: { options: {
71
- workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
72
- attest_message: "I attest that the client system correctly processed the must support elements " \
73
- "contained in the $inquire responses received from Inferno and did not error."
74
- } } do
75
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-8'
53
+ simulation_verification
76
54
  end
77
55
  end
78
56
  end
@@ -7,7 +7,7 @@ module DaVinciPASTestKit
7
7
  id :pas_client_v221_submit_must_support
8
8
  title '$submit Request Must Support Coverage'
9
9
  description %(
10
- Check that the client can demonstrate `$submit` requests that contain
10
+ Check that the PAS client demonstrated `$submit` requests that contain
11
11
  all PAS-defined profiles and their must support elements.
12
12
 
13
13
  For `$submit` requests, this includes the following profiles:
@@ -33,8 +33,8 @@ module DaVinciPASTestKit
33
33
  )
34
34
  run_as_group
35
35
 
36
- # At least one of the PAS request profiles must be present; unobserved must support
37
- # elements on the request profiles that are present may be attested as not collected.
36
+ # At least one of the PAS request profiles must be present, with all of its must support
37
+ # elements observed.
38
38
  test from: :pas_client_v221_must_support_with_attestation_option do
39
39
  id :pas_client_v221_submit_request_profiles_must_support_with_attestation_option
40
40
  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'
@@ -49,17 +49,19 @@ module DaVinciPASTestKit
49
49
  ],
50
50
  ig_version: 'v2.2.1',
51
51
  type: 'request',
52
- operation: 'submit'
52
+ operation: 'submit',
53
+ disable_attestation: true
53
54
  }
54
55
  )
55
56
  description MustSupportWithAttestationOption.build_description(config.options)
57
+ verifies_requirements(*verifies_requirements, 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-1')
56
58
  end
57
59
 
58
60
  # Mandatory - the PAS Claim Update profile must always be demonstrated.
59
- test from: :pas_client_v221_submit_request_must_support_claim_update
60
-
61
- # All other submit request profiles - unobserved must support elements may be
62
- # attested as not collected by the client system.
61
+ test from: :pas_client_v221_submit_request_must_support_claim_update do
62
+ verifies_requirements(*verifies_requirements, 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-1')
63
+ end
64
+ # All other submit request profiles - all must support elements must be observed.
63
65
  test from: :pas_client_v221_must_support_with_attestation_option do
64
66
  id :pas_client_v221_submit_request_other_must_support_with_attestation_option
65
67
  title 'All must support elements for other profiles referenced by Claim submissions are observed on $submit requests'
@@ -79,10 +81,12 @@ module DaVinciPASTestKit
79
81
  ],
80
82
  ig_version: 'v2.2.1',
81
83
  type: 'request',
82
- operation: 'submit'
84
+ operation: 'submit',
85
+ disable_attestation: true
83
86
  }
84
87
  )
85
88
  description MustSupportWithAttestationOption.build_description(config.options)
89
+ verifies_requirements(*verifies_requirements, 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-1')
86
90
  end
87
91
  end
88
92
  end
@@ -6,8 +6,6 @@ require_relative 'requestor/client_submit_response_must_support_requestor_test'
6
6
  require_relative 'beneficiary/client_submit_response_must_support_beneficiary_test'
7
7
  require_relative 'practitioner/client_submit_response_must_support_practitioner_test'
8
8
  require_relative 'practitioner_role/client_submit_response_must_support_practitioner_role_test'
9
- require_relative 'task/client_submit_response_must_support_task_test'
10
- require_relative '../../v2.2.1/workflows/pas_client_response_attest'
11
9
 
12
10
  module DaVinciPASTestKit
13
11
  module DaVinciPASV221
@@ -15,12 +13,9 @@ module DaVinciPASTestKit
15
13
  id :pas_client_v221_submit_response_must_support
16
14
  title '$submit Response Must Support Coverage'
17
15
  description %(
18
- Check that `$submit` responses provided to the client contain
16
+ Check that `$submit` responses provided to the PAS client contain
19
17
  all PAS-defined profiles and their must support elements.
20
18
 
21
- **USER INPUT VALIDATION**: These tests validate responses provided by the tester,
22
- not the system under test. Errors will be treated as skips instead of failures.
23
-
24
19
  For `$submit` responses, this includes the following profiles:
25
20
 
26
21
  - [PAS Response Bundle](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-pas-response-bundle.html)
@@ -31,7 +26,6 @@ module DaVinciPASTestKit
31
26
  - [PAS Beneficiary Patient](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-beneficiary.html)
32
27
  - [PAS Practitioner](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-practitioner.html)
33
28
  - [PAS PractitionerRole](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-practitionerrole.html)
34
- - [PAS Task](https://hl7.org/fhir/us/davinci-pas/2.2.1/StructureDefinition-profile-task.html)
35
29
 
36
30
 
37
31
 
@@ -39,45 +33,29 @@ module DaVinciPASTestKit
39
33
  run_as_group
40
34
 
41
35
  test from: :pas_client_v221_submit_response_must_support_pas_response_bundle do
42
- optional
36
+ simulation_verification
43
37
  end
44
38
  test from: :pas_client_v221_submit_response_must_support_claimresponse do
45
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-7'
39
+ verifies_requirements(*verifies_requirements, 'hl7.fhir.us.davinci-pas_2.2.1@conf-7')
40
+ simulation_verification
46
41
  end
47
42
  test from: :pas_client_v221_submit_response_must_support_communication_request do
48
- optional
43
+ simulation_verification
49
44
  end
50
45
  test from: :pas_client_v221_submit_response_must_support_insurer do
51
- optional
46
+ simulation_verification
52
47
  end
53
48
  test from: :pas_client_v221_submit_response_must_support_requestor do
54
- optional
49
+ simulation_verification
55
50
  end
56
51
  test from: :pas_client_v221_submit_response_must_support_beneficiary do
57
- optional
52
+ simulation_verification
58
53
  end
59
54
  test from: :pas_client_v221_submit_response_must_support_practitioner do
60
- optional
55
+ simulation_verification
61
56
  end
62
57
  test from: :pas_client_v221_submit_response_must_support_practitioner_role do
63
- optional
64
- end
65
- test from: :pas_client_v221_submit_response_must_support_task do
66
- optional
67
- end
68
- test from: :pas_client_v221_response_attest,
69
- title: 'PAS client handled the $submit response must support elements',
70
- description: %(
71
- This test provides the tester an opportunity to verify that their client
72
- correctly processed and used the must support elements present in the
73
- $submit responses received from Inferno during these tests.
74
- ),
75
- config: { options: {
76
- workflow_tag: MUST_SUPPORT_WORKFLOW_TAG,
77
- attest_message: "I attest that the client system correctly processed the must support elements " \
78
- "contained in the $submit responses received from Inferno and did not error."
79
- } } do
80
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@conf-8'
58
+ simulation_verification
81
59
  end
82
60
  end
83
61
  end
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Inquiry Response Bundle are observed on $inquire responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$inquire`
12
12
  responses, including instances of the PAS Inquiry Response Bundle Profile.
13
13
  This test checks all identified instances of the PAS Inquiry Response Bundle
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Bundle.entry
@@ -22,6 +22,7 @@ module DaVinciPASTestKit
22
22
  * Bundle.entry:ClaimResponse.resource
23
23
  * Bundle.timestamp
24
24
  )
25
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
25
26
 
26
27
  config(
27
28
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Response Bundle are observed on $submit responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$submit`
12
12
  responses, including instances of the PAS Response Bundle Profile.
13
13
  This test checks all identified instances of the PAS Response Bundle
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Bundle.entry
@@ -23,6 +23,7 @@ module DaVinciPASTestKit
23
23
  * Bundle.identifier
24
24
  * Bundle.timestamp
25
25
  )
26
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
26
27
 
27
28
  config(
28
29
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Practitioner are observed on $inquire responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$inquire`
12
12
  responses, including instances of the PAS Practitioner Profile.
13
13
  This test checks all identified instances of the PAS Practitioner
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Practitioner.address
@@ -28,6 +28,7 @@ module DaVinciPASTestKit
28
28
  * Practitioner.telecom.system
29
29
  * Practitioner.telecom.value
30
30
  )
31
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
31
32
 
32
33
  config(
33
34
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Practitioner are observed on $submit responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$submit`
12
12
  responses, including instances of the PAS Practitioner Profile.
13
13
  This test checks all identified instances of the PAS Practitioner
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Practitioner.address
@@ -28,6 +28,7 @@ module DaVinciPASTestKit
28
28
  * Practitioner.telecom.system
29
29
  * Practitioner.telecom.value
30
30
  )
31
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
31
32
 
32
33
  config(
33
34
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS PractitionerRole are observed on $inquire responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$inquire`
12
12
  responses, including instances of the PAS PractitionerRole Profile.
13
13
  This test checks all identified instances of the PAS PractitionerRole
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * PractitionerRole.code
@@ -24,6 +24,7 @@ module DaVinciPASTestKit
24
24
  * PractitionerRole.telecom.system
25
25
  * PractitionerRole.telecom.value
26
26
  )
27
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
27
28
 
28
29
  config(
29
30
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS PractitionerRole are observed on $submit responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$submit`
12
12
  responses, including instances of the PAS PractitionerRole Profile.
13
13
  This test checks all identified instances of the PAS PractitionerRole
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * PractitionerRole.code
@@ -24,6 +24,7 @@ module DaVinciPASTestKit
24
24
  * PractitionerRole.telecom.system
25
25
  * PractitionerRole.telecom.value
26
26
  )
27
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
27
28
 
28
29
  config(
29
30
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Requestor Organization are observed on $inquire responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$inquire`
12
12
  responses, including instances of the PAS Requestor Organization Profile.
13
13
  This test checks all identified instances of the PAS Requestor Organization
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Organization.active
@@ -34,6 +34,7 @@ module DaVinciPASTestKit
34
34
  * Organization.telecom.value
35
35
  * Organization.type
36
36
  )
37
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
37
38
 
38
39
  config(
39
40
  options: {
@@ -7,11 +7,11 @@ module DaVinciPASTestKit
7
7
  title 'All must support elements for profile PAS Requestor Organization are observed on $submit responses'
8
8
  description %(
9
9
 
10
- PAS client systems are required to be able to receive all
11
- must support elements on instances of all profiles included in
10
+ PAS clients are required to be able to receive all
11
+ must support elements on instances of all profiles included in `$submit`
12
12
  responses, including instances of the PAS Requestor Organization Profile.
13
13
  This test checks all identified instances of the PAS Requestor Organization
14
- Profile on responses sent to the client to ensure that the following
14
+ Profile on responses sent to the PAS client to ensure that the following
15
15
  must support elements are observed:
16
16
 
17
17
  * Organization.active
@@ -34,6 +34,7 @@ module DaVinciPASTestKit
34
34
  * Organization.telecom.value
35
35
  * Organization.type
36
36
  )
37
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@hrex-conf-2'
37
38
 
38
39
  config(
39
40
  options: {
@@ -20,8 +20,18 @@ module DaVinciPASTestKit
20
20
 
21
21
  sidekiq_options retry: false
22
22
 
23
+ # How long an Inferno test that starts this job waits for it to send the notification. The job polls for
24
+ # the test to start waiting for up to this long, since there is no point sending once the wait has timed out.
25
+ TEST_WAIT_TIMEOUT_SECONDS = 300
26
+ TEST_WAITING_POLL_INTERVAL_SECONDS = 0.5
27
+
28
+ # test_run_id and result_id may be nil when the job is started by an Inferno test, which does not know
29
+ # them until it is waiting. They are then looked up from the test session once the test waits.
30
+ # When resume_test_after_notification is true, the job ends the wait with the resume_token after
31
+ # sending the notification (or fails it if the job errors).
32
+ # Sidekiq job arguments are positional, so the boolean cannot be a keyword argument
23
33
  def perform(test_run_id, test_session_id, result_id, notification_bearer_token, notification_json, resume_token,
24
- notification_suite_id, ig_version = 'v2.0.1')
34
+ notification_suite_id, ig_version = 'v2.0.1', resume_test_after_notification = false) # rubocop:disable Style/OptionalBooleanParameter
25
35
  @test_run_id = test_run_id
26
36
  @test_session_id = test_session_id
27
37
  @result_id = result_id
@@ -30,8 +40,17 @@ module DaVinciPASTestKit
30
40
  @resume_token = resume_token
31
41
  @notification_suite_id = notification_suite_id
32
42
  @ig_version = ig_version
43
+ @resume_test_after_notification = resume_test_after_notification
33
44
 
34
45
  await_subscription_creation # NOTE: currently must exist - see PASClientPendedSubmitTest
46
+ if @result_id.nil? && !test_starts_waiting?
47
+ # the test can't be resumed because it isn't waiting, so just explain why no notification was sent
48
+ Inferno::Application['logger'].error(
49
+ "Subscription notification not sent: no test started waiting on '#{@resume_token}' " \
50
+ "within #{TEST_WAIT_TIMEOUT_SECONDS} seconds."
51
+ )
52
+ return
53
+ end
35
54
  sleep 1
36
55
  return unless test_still_waiting?
37
56
 
@@ -39,6 +58,12 @@ module DaVinciPASTestKit
39
58
  return unless test_still_waiting?
40
59
 
41
60
  send_event_notification
61
+ resume_test(RESUME_PASS_PATH) if @resume_test_after_notification
62
+ rescue StandardError => e
63
+ raise unless @resume_test_after_notification
64
+
65
+ Inferno::Application['logger'].error("Sending the subscription notification failed: #{e.message}")
66
+ resume_test(RESUME_FAIL_PATH)
42
67
  end
43
68
 
44
69
  def requests_repo
@@ -94,8 +119,44 @@ module DaVinciPASTestKit
94
119
  @subscription_full_url ||= "#{fhir_subscription_url}/#{subscription.id}"
95
120
  end
96
121
 
122
+ def test_runs_repo
123
+ @test_runs_repo ||= Inferno::Repositories::TestRuns.new
124
+ end
125
+
126
+ # @resume_token is the same identifier the test's own wait() call registers (and that
127
+ # resume_test later ends the wait with), so this is an exact match on the waiting test
128
+ # run - not a guess at "the most recent run for this session", which could pick up an
129
+ # unrelated run if the tester has more than one for the same session.
130
+ def test_run_id
131
+ @test_run_id ||= test_runs_repo.find_latest_waiting_by_identifier(@resume_token)&.id
132
+ end
133
+
134
+ def waiting_result
135
+ results_repo.find_waiting_result(test_run_id:)
136
+ end
137
+
138
+ def result_id
139
+ @result_id ||= waiting_result&.id
140
+ end
141
+
97
142
  def test_still_waiting?
98
- results_repo.find_waiting_result(test_run_id: @test_run_id)
143
+ waiting_result.present?
144
+ end
145
+
146
+ # Inferno tests start the job before they begin waiting, so poll until the test is waiting, giving up
147
+ # once the test's own wait would have timed out.
148
+ # @return [Boolean] whether the test is waiting
149
+ def test_starts_waiting?
150
+ (TEST_WAIT_TIMEOUT_SECONDS / TEST_WAITING_POLL_INTERVAL_SECONDS).to_i.times do
151
+ return true if test_still_waiting?
152
+
153
+ sleep TEST_WAITING_POLL_INTERVAL_SECONDS
154
+ end
155
+ test_still_waiting?
156
+ end
157
+
158
+ def resume_test(path)
159
+ test_suite_connection.get(path.delete_prefix('/'), { token: @resume_token })
99
160
  end
100
161
 
101
162
  def await_subscription_creation
@@ -130,7 +191,7 @@ module DaVinciPASTestKit
130
191
  request_body: response.env.request_body,
131
192
  response_body: response.env.response_body,
132
193
  test_session_id: @test_session_id,
133
- result_id: @result_id,
194
+ result_id:,
134
195
  request_headers: inferno_request_headers,
135
196
  response_headers: inferno_response_headers,
136
197
  tags:
@@ -9,14 +9,15 @@ module DaVinciPASTestKit
9
9
  id :pas_client_subscription_pas_conformance_test
10
10
  title 'Subscription creation request has the correct structure and content'
11
11
  description %(
12
- This test verifies that the Subscription created by the client under test
12
+ This test verifies that the Subscription created by the PAS client
13
13
  is conformant to PAS requirements on the Subscription, including
14
14
  - The use of the [PAS-defined Subscription
15
15
  Topic](https://hl7.org/fhir/us/davinci-pas/STU2/SubscriptionTopic-PASSubscriptionTopic.html), and
16
- - Inclusion of filter criteria for the client's organization.
16
+ - Inclusion of filter criteria for the PAS client's organization.
17
17
  )
18
18
 
19
- verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-62'
19
+ verifies_requirements 'hl7.fhir.us.davinci-pas_2.2.1@spec-62', 'hl7.fhir.uv.subscriptions_1.1.0@64',
20
+ 'hl7.fhir.uv.subscriptions_1.1.0@96', 'hl7.fhir.uv.subscriptions_1.1.0@116'
20
21
 
21
22
  def ig_version
22
23
  config.options[:ig_version]
@@ -3,9 +3,11 @@ module DaVinciPASTestKit
3
3
  id :pas_client_reg_config_other_display
4
4
  title 'PAS client registers Inferno as a PAS server'
5
5
  description %(
6
- This test provides all the information needed for testers to configure
7
- the client under test to communicate with Inferno's simulated PAS server
8
- using dedicated endpoints.
6
+ During this test, Inferno will wait while the tester configures the PAS client
7
+ to communicate with Inferno's simulated PAS server using dedicated
8
+ endpoints. The "User Action Required" dialog that appears during the test
9
+ will provide all the information needed for testers to configure the PAS client,
10
+ including the FHIR base URL.
9
11
  )
10
12
  attestation
11
13
 
@@ -37,7 +39,7 @@ module DaVinciPASTestKit
37
39
  FHIR Base URL: `#{session_fhir_base_url(wait_identifier)}`
38
40
 
39
41
  [Click here](#{confirmation_url}) once you have configured
40
- the client to connect to Inferno at the above endpoints.
42
+ the PAS client to send PAS requests to Inferno at the above endpoint.
41
43
  )
42
44
  )
43
45
  end
@@ -3,9 +3,12 @@ module DaVinciPASTestKit
3
3
  id :pas_client_reg_config_smart_display
4
4
  title 'PAS client registers Inferno as a PAS server'
5
5
  description %(
6
- This test provides all the information needed for testers to configure
7
- the client under test to communicate with Inferno's simulated PAS server
8
- including SMART endpoints to obtain access tokens.
6
+ During this test, Inferno will wait while the tester configures the PAS client
7
+ to communicate with Inferno's simulated PAS server using
8
+ endpoints authenticated using SMART Backend Services. The "User Action Required"
9
+ dialog that appears during the test will provide all the information needed
10
+ for testers to configure the PAS client, including the FHIR base URL, the
11
+ token endpoint, and the PAS client's assigned client id.
9
12
  )
10
13
  attestation
11
14
 
@@ -29,7 +32,8 @@ module DaVinciPASTestKit
29
32
  - Token endpoint: `#{token_url}`
30
33
 
31
34
  [Click here](#{confirmation_url}) once you have configured
32
- the client to connect to Inferno at the above endpoints.
35
+ the PAS client to authenticate with Inferno and send PAS requests
36
+ to Inferno at the above endpoint.
33
37
  )
34
38
  )
35
39
  end
@@ -3,9 +3,13 @@ module DaVinciPASTestKit
3
3
  id :pas_client_reg_config_udap_display
4
4
  title 'PAS client registers Inferno as a PAS server'
5
5
  description %(
6
- This test provides all the information needed for testers to configure
7
- the client under test to communicate with Inferno's simulated PAS server
8
- including UDAP endpoints to obtain access tokens.
6
+ During this test, Inferno will wait while the tester configures the PAS client
7
+ to communicate with Inferno's simulated PAS server using
8
+ endpoints authenticated using the UDAP Client Credentials flow.
9
+ The "User Action Required" dialog that appears during the test will provide
10
+ all the information needed for testers to configure the PAS client,
11
+ including the FHIR base URL, the token endpoint, and the
12
+ assigned client id.
9
13
  )
10
14
  attestation
11
15
 
@@ -29,7 +33,8 @@ module DaVinciPASTestKit
29
33
  - Token endpoint: `#{token_url}`
30
34
 
31
35
  [Click here](#{confirmation_url}) once you have configured
32
- the client to connect to Inferno at the above endpoints.
36
+ the PAS client to authenticate with Inferno and send PAS requests
37
+ to Inferno at the above endpoint.
33
38
  )
34
39
  )
35
40
  end
@@ -3,8 +3,8 @@ module DaVinciPASTestKit
3
3
  id :pas_client_reg_other_auth_attest
4
4
  title 'PAS client supports a non-standard approach for authenticating with the PAS server'
5
5
  description %(
6
- Since a standard auth approach was not chosen for this session, this test provides testers with an
7
- opportunity to attest to their client's ability to authenticate itself to a server
6
+ Since a standard auth approach was not chosen for this session, this test asks testers
7
+ to attest to the PAS client's ability to authenticate itself to a server
8
8
  using a method that this Inferno test suite does not support, such as mutual authentication
9
9
  TLS.
10
10
  )
@@ -14,7 +14,8 @@ module DaVinciPASTestKit
14
14
  output :attest_false_url
15
15
 
16
16
  run do
17
- identifier = test_session_id
17
+ # only the tester continues this wait, so use a fresh random identifier - see SessionIdentification
18
+ identifier = SecureRandom.uuid
18
19
  attest_true_url = "#{resume_pass_url}?token=#{identifier}"
19
20
  output(attest_true_url:)
20
21
  attest_false_url = "#{resume_fail_url}?token=#{identifier}"
@@ -25,7 +26,7 @@ module DaVinciPASTestKit
25
26
  message: %(
26
27
  **Other Authentication Attestation**:
27
28
 
28
- I attest that the client system can authenticate itself with a PAS server using
29
+ I attest that the PAS client can authenticate itself with a PAS server using
29
30
  a mechanism other than the SMART Backend Services or UDAP B2B client credentials
30
31
  flows.
31
32