davinci_pas_test_kit 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/lib/davinci_pas_test_kit/client_suite.rb +289 -0
  4. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_status/pas_claim_status_test.rb +109 -0
  5. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_response_attest.rb +39 -0
  6. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_approval_submit_test.rb +38 -0
  7. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_response_attest.rb +38 -0
  8. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_denial_submit_test.rb +43 -0
  9. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_inquire_must_support_test.rb +51 -0
  10. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_inquire_response_attest.rb +39 -0
  11. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_inquire_test.rb +35 -0
  12. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_submit_response_attest.rb +39 -0
  13. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_pended_submit_test.rb +43 -0
  14. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_submit_must_support_test.rb +57 -0
  15. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_request_test.rb +31 -0
  16. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/client_tests/pas_client_token_validation_test.rb +18 -0
  17. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/nonconformant_pas_bundle.json +16 -0
  18. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_inquiry_error_test.rb +38 -0
  19. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/error_tests/pas_submission_error_test.rb +56 -0
  20. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/device_request_metadata.yml +112 -0
  21. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/medication_request_metadata.yml +183 -0
  22. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/nutrition_order_metadata.yml +109 -0
  23. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb +117 -0
  24. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb +116 -0
  25. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/service_request_metadata.yml +148 -0
  26. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_approval_group.rb +26 -0
  27. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_authentication_group.rb +49 -0
  28. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_denial_group.rb +41 -0
  29. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_client_pended_group.rb +56 -0
  30. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/pas_error_group.rb +20 -0
  31. data/lib/davinci_pas_test_kit/ext/inferno_core/record_response_route.rb +98 -0
  32. data/lib/davinci_pas_test_kit/ext/inferno_core/request.rb +19 -0
  33. data/lib/davinci_pas_test_kit/ext/inferno_core/runnable.rb +18 -0
  34. data/lib/davinci_pas_test_kit/fhir_resource_navigation.rb +72 -0
  35. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb +75 -0
  36. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb +75 -0
  37. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/metadata.yml +162 -0
  38. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb +75 -0
  39. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb +75 -0
  40. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb +75 -0
  41. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb +75 -0
  42. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +67 -0
  43. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/metadata.yml +577 -0
  44. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +57 -0
  45. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb +95 -0
  46. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/metadata.yml +516 -0
  47. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb +95 -0
  48. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb +102 -0
  49. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/metadata.yml +591 -0
  50. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb +102 -0
  51. data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/metadata.yml +311 -0
  52. data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb +73 -0
  53. data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/metadata.yml +318 -0
  54. data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb +75 -0
  55. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb +53 -0
  56. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pas_request_bundle_validation_test.rb +55 -0
  57. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_inquiry_request_bundle_validation_test.rb +55 -0
  58. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb +53 -0
  59. data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/metadata.yml +130 -0
  60. data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +58 -0
  61. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb +55 -0
  62. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +55 -0
  63. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/metadata.yml +111 -0
  64. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb +55 -0
  65. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +55 -0
  66. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +51 -0
  67. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/metadata.yml +112 -0
  68. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +51 -0
  69. data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb +67 -0
  70. data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/metadata.yml +213 -0
  71. data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb +67 -0
  72. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb +60 -0
  73. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +60 -0
  74. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/metadata.yml +104 -0
  75. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb +60 -0
  76. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb +60 -0
  77. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +60 -0
  78. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +60 -0
  79. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +61 -0
  80. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/metadata.yml +183 -0
  81. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +61 -0
  82. data/lib/davinci_pas_test_kit/generated/v2.0.1/metadata.yml +5253 -0
  83. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +53 -0
  84. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/metadata.yml +109 -0
  85. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +53 -0
  86. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_inquiry_must_support_use_case_group.rb +51 -0
  87. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_client_submit_must_support_use_case_group.rb +61 -0
  88. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +53 -0
  89. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/metadata.yml +77 -0
  90. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +53 -0
  91. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +83 -0
  92. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/metadata.yml +67 -0
  93. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb +52 -0
  94. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +80 -0
  95. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +53 -0
  96. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/metadata.yml +77 -0
  97. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +83 -0
  98. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +53 -0
  99. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/metadata.yml +71 -0
  100. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +80 -0
  101. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +52 -0
  102. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +59 -0
  103. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +59 -0
  104. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +265 -0
  105. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +84 -0
  106. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb +53 -0
  107. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +53 -0
  108. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/metadata.yml +74 -0
  109. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb +53 -0
  110. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb +53 -0
  111. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +53 -0
  112. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +53 -0
  113. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb +49 -0
  114. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +49 -0
  115. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/metadata.yml +81 -0
  116. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb +49 -0
  117. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb +49 -0
  118. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +49 -0
  119. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +49 -0
  120. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb +63 -0
  121. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +63 -0
  122. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/metadata.yml +107 -0
  123. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb +63 -0
  124. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb +63 -0
  125. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb +63 -0
  126. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +63 -0
  127. data/lib/davinci_pas_test_kit/generated/v2.0.1/resource_list.rb +54 -0
  128. data/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb +236 -0
  129. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +53 -0
  130. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/metadata.yml +148 -0
  131. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +53 -0
  132. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb +74 -0
  133. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb +74 -0
  134. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/metadata.yml +159 -0
  135. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb +74 -0
  136. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb +74 -0
  137. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/metadata.yml +192 -0
  138. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb +61 -0
  139. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +61 -0
  140. data/lib/davinci_pas_test_kit/generator/group_generator.rb +440 -0
  141. data/lib/davinci_pas_test_kit/generator/group_metadata.rb +73 -0
  142. data/lib/davinci_pas_test_kit/generator/group_metadata_extractor.rb +244 -0
  143. data/lib/davinci_pas_test_kit/generator/ig_loader.rb +78 -0
  144. data/lib/davinci_pas_test_kit/generator/ig_metadata.rb +66 -0
  145. data/lib/davinci_pas_test_kit/generator/ig_metadata_extractor.rb +54 -0
  146. data/lib/davinci_pas_test_kit/generator/ig_resources.rb +74 -0
  147. data/lib/davinci_pas_test_kit/generator/must_support_check_profiles.rb +86 -0
  148. data/lib/davinci_pas_test_kit/generator/must_support_metadata_extractor.rb +327 -0
  149. data/lib/davinci_pas_test_kit/generator/must_support_test_generator.rb +155 -0
  150. data/lib/davinci_pas_test_kit/generator/naming.rb +50 -0
  151. data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +136 -0
  152. data/lib/davinci_pas_test_kit/generator/resource_list_generator.rb +59 -0
  153. data/lib/davinci_pas_test_kit/generator/suite_generator.rb +94 -0
  154. data/lib/davinci_pas_test_kit/generator/terminology_binding_metadata_extractor.rb +108 -0
  155. data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +181 -0
  156. data/lib/davinci_pas_test_kit/generator/value_extractor.rb +48 -0
  157. data/lib/davinci_pas_test_kit/generator.rb +80 -0
  158. data/lib/davinci_pas_test_kit/mock_server.rb +189 -0
  159. data/lib/davinci_pas_test_kit/must_support_test.rb +267 -0
  160. data/lib/davinci_pas_test_kit/pas_bundle_validation.rb +568 -0
  161. data/lib/davinci_pas_test_kit/tags.rb +7 -0
  162. data/lib/davinci_pas_test_kit/urls.rb +39 -0
  163. data/lib/davinci_pas_test_kit/user_input_response.rb +32 -0
  164. data/lib/davinci_pas_test_kit/validation_test.rb +58 -0
  165. data/lib/davinci_pas_test_kit/validator_suppressions.rb +143 -0
  166. data/lib/davinci_pas_test_kit/version.rb +5 -0
  167. data/lib/davinci_pas_test_kit.rb +2 -0
  168. metadata +281 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8afec0fe44554f72cce5bfd53e2ec230aac6b9cf7a1c9619a2e7264f3e09a2ba
4
+ data.tar.gz: 02c6532a6c3e541a704df48a875e20bf73282e4d8fbf7cd590c6541d7d1183f9
5
+ SHA512:
6
+ metadata.gz: 2a198d440407b88f2c9fef9002f36ece049baec615418d8a538a14d3314551366546331d44cea15b12e433cfbb25c5e8f087b71d45fa2a66c404618a2f1a4f58
7
+ data.tar.gz: c21b95655561c420a0a28efaf222d0ad0a480b17aa1dc53c4d2faeee0322bc6de5395c82162197dfd9e748dbf21c58438b1a9a978190f75af10a277accc0af3a
data/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,289 @@
1
+ require_relative 'ext/inferno_core/record_response_route'
2
+ require_relative 'ext/inferno_core/runnable'
3
+ require_relative 'ext/inferno_core/request'
4
+ require_relative 'validator_suppressions'
5
+ require_relative 'tags'
6
+ require_relative 'urls'
7
+ require_relative 'mock_server'
8
+ require_relative 'custom_groups/v2.0.1/pas_client_authentication_group'
9
+ require_relative 'custom_groups/v2.0.1/pas_client_approval_group'
10
+ require_relative 'custom_groups/v2.0.1/pas_client_denial_group'
11
+ require_relative 'custom_groups/v2.0.1/pas_client_pended_group'
12
+ require_relative 'generated/v2.0.1/pas_client_submit_must_support_use_case_group'
13
+ require_relative 'generated/v2.0.1/pas_client_inquiry_must_support_use_case_group'
14
+ require_relative 'version'
15
+
16
+ module DaVinciPASTestKit
17
+ class ClientSuite < Inferno::TestSuite
18
+ extend MockServer
19
+
20
+ id :davinci_pas_client_suite_v201
21
+ title 'Da Vinci PAS Client Suite v2.0.1'
22
+ version VERSION
23
+ description %(
24
+ The Da Vinci PAS Test Kit Client Suite validates the conformance of client
25
+ systems to the STU 2 version of the HL7® FHIR®
26
+ [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
27
+
28
+ ## Scope
29
+
30
+ These tests are a **DRAFT** intended to allow PAS client implementers to perform
31
+ preliminary checks of their clients against PAS IG requirements and [provide
32
+ feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
33
+ on the tests. Future versions of these tests may validate other
34
+ requirements and may change the test validation logic.
35
+
36
+ ## Test Methodology
37
+
38
+ Inferno will simulate a PAS server for the client under test to interact with. The client
39
+ will be expected to initiate requests to the server and demonstrate its ability to react
40
+ to the returned responses. Over the course of these interactions,
41
+ Inferno will seek to observe conformant handling of PAS requirements, including
42
+ - The ability of the client to initiate and react to
43
+ - The approval of a prior authorization request
44
+ - The denial of a prior authorization request
45
+ - The pending of a prior authorization request and a subsequent final decision
46
+ - The ability of the client to provide data covering the full scope of required by PAS, including
47
+ - The ability to send prior auth requests and inquiries with all PAS profiles and all must support elements on
48
+ those profiles
49
+ - The ability to handle responses that contain all PAS profiles and all must support elements on those
50
+ profiles (not included in the current version of these tests)
51
+
52
+ Because X12 details, including coded values indicating details like “denied” and “pended”,
53
+ are not public, Inferno is not currently able to generate a full set of responses to requests
54
+ or otherwise provide details on specific codes used to represent those concepts
55
+ and is limited to responses that look similar to the examples in the IG (e.g., [here](https://hl7.org/fhir/us/davinci-pas/STU2/Bundle-ReferralAuthorizationResponseBundleExample.html)).
56
+ Thus,
57
+
58
+ - In order to demonstrate specific workflows, namely pend and denial, users will need to provide the expected
59
+ response for Inferno to send back
60
+ - The current tests do not return to the client all PAS profiles and must support elements to confirm support.
61
+
62
+ For further details on limitations of these tests, see the *Testing Limitations* section below.
63
+
64
+ All requests and responses will be checked for conformance to the PAS
65
+ IG requirements individually and used in aggregate to determine whether
66
+ required features and functionality are present. HL7® FHIR® resources are
67
+ validated with the Java validator using `tx.fhir.org` as the terminology server.
68
+
69
+ ## Running the Tests
70
+
71
+ ### Quick Start
72
+
73
+ For Inferno to simulate a server that always returns approved responses, it needs
74
+ only to know the bearer token that the client will send on requests, for which there are two options.
75
+
76
+ 1. If you want to choose your own bearer token, then
77
+ 1. Select the "2. PAS Client Validation" test from the list on the left.
78
+ 2. Click the '*Run All Tests*' button on the right.
79
+ 3. In the "access_token" field, enter the bearer token that will be sent by the client under test (as part
80
+ of the Authorization header - Bearer: <provided value>).
81
+ 4. Click the '*Submit*' button at the bottom of the dialog.
82
+ 2. If you want to use a client_id to obtain an access token, then
83
+ 1. Click the '*Run All Tests*' button on the right.
84
+ 2. Provide the client's registered id "client_id" field of the input (NOTE, Inferno doesn't support the
85
+ registration API, so this must be obtained from another system or configured manually).
86
+ 3. Click the '*Submit*' button at the bottom of the dialog.
87
+ 4. Make a token request that includes the specified client id to the
88
+ `<inferno host>/custom/davinci_pas_client_suite_v201/mock_auth/token` endpoint to get
89
+ an access token to use on the request of the requests.
90
+
91
+ In either case, the tests will continue from that point, requesting the user to
92
+ direct the client to make certain requests to demonstrate PAS client capabilities.
93
+
94
+ Note: authentication options for these tests have not been finalized and are subject to change.
95
+
96
+ ### Complete Setup
97
+
98
+ The *Quick Start* approach does not test pended or deny workflows. To test these, provide a
99
+ json-encoded FHIR bundle in the "Claim pended response JSON" and "Claim deny response JSON" input field after
100
+ clicking the '*Run All Tests*' button. These responses will be echoed back when a request
101
+ is made during the corresponding test.
102
+
103
+ ### Postman-based Demo
104
+
105
+ If you do not have a PAS client but would like to try the tests out, you can use
106
+ [this postman collection](https://raw.githubusercontent.com/inferno-framework/davinci-pas-test-kit/blob/main/config/PAS%20Test%20Kit%20Client%20Test%20Demo.postman_collection.json)
107
+ to make requests against Inferno. The following requests and example responses from that collection can be used.
108
+
109
+ - Configuration
110
+ - *Deny Response* example under the *Homecare Prior Authorization Request*: use as the value of the
111
+ "Claim denied response JSON" input field. NOTE: this contains a placeholder code `DENIEDCODE` for the
112
+ X12 code representing the denied status. Replace with the X12-specified code before providing to Inferno
113
+ to accurately replicate a denial workflow for the client under test.
114
+ - *Pend Response* example under the *Medical Services Prior Authorization Request*: use as the value of the
115
+ "Claim pended response JSON" input field. NOTE: this contains a placeholder code `PENDEDCODE` for the
116
+ X12 code representing the pended status. Replace with the X12-specified code before providing to Inferno
117
+ to accurately replicate a pend workflow for the client under test.
118
+ - Submissions
119
+ - *mock token*: for submitting a client id to get back an access token to use on the rest of the tests. Set the
120
+ collection's access_token variable to the result.
121
+ - *Referral Prior Authorization Request*: use for the "Approval" workflow test submission.
122
+ - *Medical Services Prior Authorization Request*: use for the "Pended" workflow test submission.
123
+ - *Medical Services Inquiry Request*: use for the "Pended" workflow test inquiry.
124
+
125
+ No additional requests are present to submit as a part of the must support tests, so
126
+ testers can simply click the link to indicate they are done submitting requests. Note
127
+ that the requests within the Postman client are not expected to fully pass the tests as they
128
+ do not contain all must support items.
129
+
130
+ ## Testing Limitations
131
+
132
+ ### Private X12 details
133
+
134
+ HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization
135
+ processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement
136
+ will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f),
137
+ the current PAS IG relies heavily on X12. As the IG authors note at the
138
+ top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/index.html):
139
+
140
+ > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect
141
+ > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12
142
+ > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this
143
+ > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies)
144
+ > for details on how to get this mapping.
145
+ >
146
+ > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance
147
+ > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these
148
+ > fields.
149
+ >
150
+ > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made
151
+ > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as
152
+ > external terminologies.
153
+
154
+ The implications of this reliance on proprietary information that is not publicly available means that this test
155
+ kit:
156
+
157
+ - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12
158
+ value sets will not be validated.
159
+ - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval
160
+ or pending, is not performed.
161
+ - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an
162
+ inquiry, e.g., that it matches the input or the original request.
163
+
164
+ These limitations may be removed in future versions of these tests. In the meantime, testers should consider these
165
+ requirements to be verified through attestation and should not represent their systems to have passed these tests
166
+ if these requirements are not met.
167
+
168
+ ### Underspecified Subscription Details
169
+
170
+ The current PAS specification around subscriptions and notifications
171
+ is not detailed enough to support testing. Notably,
172
+ - There are no examples of what a notification payload looks like
173
+ - There is no instruction on how to turn the notification payload into an inquiry
174
+
175
+ Once these details have been clarified, validation of the notification workflows
176
+ will be added to these tests.
177
+
178
+ ### Future Details
179
+
180
+ The PAS IG places additional requirements on clients that are not currently tested by this test kit, including
181
+
182
+ - Prior Authorization update workflows
183
+ - Requests for additional information handled through the CDex framework
184
+ - PDF, CDA, and JPG attachments
185
+ - US Core profile support for supporting information
186
+ - The ability to handle responses containing all PAS-defined profiles and must support elements
187
+ - Most details requiring manual review of the client system, e.g., the requirement that clinicians can update
188
+ details of the prior authorization request before submitting them
189
+
190
+ These and any other requirements found in the PAS IG may be tested in future versions of these tests.
191
+ )
192
+
193
+ links [
194
+ {
195
+ label: 'Report Issue',
196
+ url: 'https://github.com/inferno-framework/davinci-pas-test-kit/issues/'
197
+ },
198
+ {
199
+ label: 'Open Source',
200
+ url: 'https://github.com/inferno-framework/davinci-pas-test-kit/'
201
+ },
202
+ {
203
+ label: 'Implementation Guide',
204
+ url: 'https://hl7.org/fhir/us/davinci-pas/STU2/'
205
+ }
206
+ ]
207
+
208
+ def self.test_resumes?(test)
209
+ !test.config.options[:accepts_multiple_requests]
210
+ end
211
+
212
+ validator do
213
+ url ENV.fetch('VALIDATOR_URL')
214
+
215
+ exclude_message do |message|
216
+ # Messages expected of the form `<ResourceType>: <FHIRPath>: <message>`
217
+ # We strip `<ResourceType>: <FHIRPath>: ` for the sake of matching
218
+ SUPPRESSED_MESSAGES.match?(message.message.sub(/\A\S+: \S+: /, ''))
219
+ end
220
+ end
221
+
222
+ record_response_route :post, TOKEN_PATH, AUTH_TAG, method(:token_response) do |request|
223
+ ClientSuite.extract_client_id(request)
224
+ end
225
+
226
+ record_response_route :post, SUBMIT_PATH, SUBMIT_TAG, method(:claim_response),
227
+ resumes: method(:test_resumes?) do |request|
228
+ ClientSuite.extract_bearer_token(request)
229
+ end
230
+
231
+ record_response_route :post, INQUIRE_PATH, INQUIRE_TAG, method(:claim_response),
232
+ resumes: method(:test_resumes?) do |request|
233
+ ClientSuite.extract_bearer_token(request)
234
+ end
235
+
236
+ resume_test_route :get, RESUME_PASS_PATH do |request|
237
+ ClientSuite.extract_token_from_query_params(request)
238
+ end
239
+
240
+ resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
241
+ ClientSuite.extract_token_from_query_params(request)
242
+ end
243
+
244
+ group from: :pas_client_v201_authentication_group
245
+ group do
246
+ title 'PAS Client Validation'
247
+ description %(
248
+ These tests perform the functional validation of the client under test.
249
+ For requests to be recognized by Inferno to be part of this test session
250
+ they must include the configured bearer token
251
+ (user provided or generated during the authorization tests)
252
+ in the Authorization HTTP header with prefix "Bearer: ".
253
+ )
254
+
255
+ group do
256
+ title 'Demonstrate Workflow Support'
257
+ description %(
258
+ The workflow tests validate that the client can participate in complete end-to-end prior
259
+ authorization interactions, initiating requests and reacting appropriately to the
260
+ responses returned.
261
+ )
262
+ group from: :pas_client_v201_approval_group
263
+ group from: :pas_client_v201_denial_group
264
+ group from: :pas_client_v201_pended_group
265
+ end
266
+
267
+ group do
268
+ title 'Demonstrate Element Support'
269
+ description %(
270
+ Demonstrate the ability of the client to support all PAS-defined profiles and the must support elements
271
+ defined in them. This includes
272
+
273
+ - the ability to make prior authorization submission and inquiry requests that contain all
274
+ PAS-defined profiles and their must support elements.
275
+ - the ability to receive in responses to those requests all PAS-defined profiles and their
276
+ must support elements and continue the prior authorization workflow as appropriate (not currently
277
+ implemented in these tests).
278
+
279
+ Clients under test will be asked to make additional requests to Inferno demonstrating coverage
280
+ of all must support items in the requests. Note that Inferno will consider requests made during
281
+ the workflow group of tests, so only profiles and must support elements not demonstrated during
282
+ those tests need to be submitted as a part of these.
283
+ )
284
+ group from: :pas_client_v201_submit_must_support_use_case
285
+ group from: :pas_client_v201_inquiry_must_support_use_case
286
+ end
287
+ end
288
+ end
289
+ end
@@ -0,0 +1,109 @@
1
+ # require 'securerandom' //used for attestation experiment - see below
2
+ # require_relative '../../../urls' // used for attestation experiment - see below
3
+
4
+ module DaVinciPASTestKit
5
+ module DaVinciPASV201
6
+ class PasClaimStatusTest < Inferno::Test
7
+ # include URLs // used for attestation experiment - see below
8
+
9
+ id :prior_auth_claim_status
10
+ title 'Server returns the expected authorization response'
11
+ description %(
12
+ This test aims to confirm that the status of the prior authorization matches
13
+ the anticipated status for the workflow under examination.
14
+ (NOT YET IMPLEMENTED)
15
+ )
16
+ uses_request :pa_submit
17
+
18
+ def status
19
+ if use_case == 'approval'
20
+ 'approved'
21
+ else
22
+ use_case == 'denial' ? 'denied' : 'pended'
23
+ end
24
+ end
25
+
26
+ run do
27
+ # Experiment with extraction of statuses and use in an attestation
28
+ # Not used due to the following problems:
29
+ # - no real clients to test with
30
+ # - how to express the location we're looking for? The spec never mentions it explicitly.
31
+ #
32
+ # # Extract the response status
33
+ # status_values = []
34
+ # if resource.resourceType == 'Bundle'
35
+ # resource.entry.each do |one_entry|
36
+ # next unless one_entry.resource.resourceType == 'ClaimResponse'
37
+ #
38
+ # one_entry.resource.item.each do |one_item|
39
+ # one_item.adjudication.each do |one_adjudication|
40
+ # one_adjudication.extension
41
+ # .select { |ext| ext.url == 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewAction' }
42
+ # .each do |review_action_ext|
43
+ # review_action_ext.extension.select { |ext| ext.url == 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-reviewActionCode' }
44
+ # .each do |review_action_code_ext|
45
+ # review_action_code_ext.valueCodeableConcept.coding.select { |coding| coding.system == 'https://codesystem.x12.org/005010/306' }
46
+ # .each do |one_code|
47
+ # if one_code.code
48
+ # status_values << "#{one_code.code}#{one_code.display ? " (#{one_code.display})" : ''}"
49
+ # end
50
+ # end
51
+ # end
52
+ # end
53
+ # end
54
+ # end
55
+ # end
56
+ # end
57
+ #
58
+ # assert !status_values.empty?, 'No status values found **where??**'
59
+ #
60
+ # # Attestation
61
+ # attestation_key = SecureRandom.uuid
62
+ # status_display = status_values.reduce('') { |result, status| result + "- #{status}\n" }
63
+ # wait(
64
+ # identifier: attestation_key,
65
+ # message: %(
66
+ # **Status Validation for `#{status}`**:
67
+ #
68
+ # The following adjudication status
69
+ # #{status_values.length > 1 ? 'values were' : 'value was'}
70
+ # found in the response **where??**:
71
+ #
72
+ # #{status_display}
73
+ #
74
+ # I attest that
75
+ # #{status_values.length > 1 ? 'one of the status values' : 'the status value'}
76
+ # returned by the server indicates that the request was #{status}
77
+ #
78
+ # [Click here](#{resume_pass_url}?token=#{attestation_key}) if the above statement is **true**.
79
+ #
80
+ # [Click here](#{resume_fail_url}?token=#{attestation_key}) if the above statement is **false**.
81
+ # )
82
+ # )
83
+ #
84
+ # end of experiment with attestation code
85
+
86
+ # TODO: Implement subscription for pended: Inferno will subscribe to the server to receive notification
87
+ # when the submitted claim status will be updated.
88
+ if use_case == 'pended'
89
+ # rubocop:disable Layout/LineLength
90
+ wait(
91
+ identifier: use_case,
92
+ message: %(
93
+ Inferno has received a 'Pended' claim response as expected.
94
+
95
+ Please
96
+ **[click
97
+ here](#{Inferno::Application['base_url']}/custom/davinci_pas_server_suite_v201/resume_after_notification?use_case=#{use_case})**
98
+ when the status of this claim has been finalized to inform Inferno to resume testing.
99
+
100
+ Future versions of this test may implement automated monitoring
101
+ capabilities described in the implementation guide.
102
+ )
103
+ )
104
+ # rubocop:enable Layout/LineLength
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../../../urls'
2
+
3
+ module DaVinciPASTestKit
4
+ module DaVinciPASV201
5
+ class PASClientApprovalSubmitResponseAttest < Inferno::Test
6
+ include URLs
7
+
8
+ id :pas_client_v201_approval_submit_response_attest
9
+ title 'Check that the client registers the request as approved (Attestation)'
10
+ description %(
11
+ This test provides the tester an opportunity to observe their client following
12
+ the receipt of the approved response and attest that users are able to determine
13
+ that the response has been approved.
14
+ )
15
+ input :access_token,
16
+ title: 'Access Token',
17
+ description: %(
18
+ Access token that the client will provide in the Authorization header of each request
19
+ made during this test.
20
+ )
21
+
22
+ run do
23
+ wait(
24
+ identifier: access_token,
25
+ message: %(
26
+ **Approval Workflow Test**:
27
+
28
+ I attest that the client system displays the submitted claim as 'approved' meaning that
29
+ the user can proceed with ordering or providing the requested service.
30
+
31
+ [Click here](#{resume_pass_url}?token=#{access_token}) if the above statement is **true**.
32
+
33
+ [Click here](#{resume_fail_url}?token=#{access_token}) if the above statement is **false**.
34
+ )
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end