davinci_pas_test_kit 0.9.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 (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
@@ -0,0 +1,52 @@
1
+ require_relative '../../../must_support_test'
2
+ require_relative '../../../generator/group_metadata'
3
+ require_relative '../../../tags'
4
+
5
+ module DaVinciPASTestKit
6
+ module DaVinciPASV201
7
+ class ServerInquiryResponsePasInquiryResponseBundleMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Inquiry Response Bundle are observed across all instances returned'
11
+ description %(
12
+
13
+ PAS server systems are required to be able to populate all
14
+ must support elements on instances of all profiles included in
15
+ responses, including instances of the PAS Inquiry Response Bundle Profile.
16
+ This test checks all identified instances of the PAS Inquiry Response Bundle
17
+ Profile on responses returned by the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Bundle.entry
21
+ * Bundle.entry.fullUrl
22
+ * Bundle.entry.resource
23
+ * Bundle.entry:ClaimResponse
24
+ * Bundle.timestamp
25
+ )
26
+
27
+ id :pas_server_inquiry_response_v201_pas_inquiry_response_bundle_must_support_test
28
+
29
+ def resource_type
30
+ 'Bundle'
31
+ end
32
+
33
+ def self.metadata
34
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
35
+ end
36
+
37
+ def scratch_resources
38
+ scratch[:inquiry_response_resources] ||= {}
39
+ end
40
+
41
+ def resources_of_interest
42
+ collection = tagged_resources(INQUIRE_TAG).presence || all_scratch_resources
43
+ collection.select { |res| res.resourceType == resource_type }
44
+ end
45
+
46
+ run do
47
+ perform_must_support_test(resources_of_interest)
48
+ validate_must_support
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,80 @@
1
+ require_relative '../../../pas_bundle_validation'
2
+
3
+ module DaVinciPASTestKit
4
+ module DaVinciPASV201
5
+ class ServerPasInquiryResponseBundleValidationTest < Inferno::Test
6
+ include DaVinciPASTestKit::PasBundleValidation
7
+
8
+ id :pas_server_v201_pas_inquiry_response_bundle_validation_test
9
+ title 'Inquiry Response Bundle is valid'
10
+ description %(
11
+ This test validates the conformity of the
12
+ server's response to the
13
+ [PAS Inquiry Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle) structure.
14
+ It also checks that other conformance requirements defined in the [PAS Formal
15
+ Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html),
16
+ such as the presence of all referenced instances within the bundle and the
17
+ conformance of those instances to the appropriate profiles, are met.
18
+
19
+ It verifies the presence of mandatory elements and that elements with
20
+ required bindings contain appropriate values. CodeableConcept element
21
+ bindings will fail if none of their codings have a code/system belonging
22
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
23
+ fail if their code/system are not found in the valueset.
24
+
25
+ Note that because X12 value sets are not public, elements bound to value
26
+ sets containing X12 codes are not validated.
27
+ )
28
+
29
+ output :dar_code_found, :dar_extension_found
30
+
31
+ def resource_type
32
+ 'Bundle'
33
+ end
34
+
35
+ def scratch_resources
36
+ scratch[:inquire_response_resources] ||= {}
37
+ end
38
+
39
+ def request_type
40
+ 'inquire'
41
+ end
42
+
43
+ def target_request_response_pairs
44
+ scratch[:inquire_request_response_pair] ||= {}
45
+ scratch[:inquire_request_response_pair][:all] ||= []
46
+ end
47
+
48
+
49
+
50
+ run do
51
+ skip_if target_request_response_pairs.blank?, 'No inquire response to validate. Either no inquire request was made in a previous test or it resulted in a server error.'
52
+ target_pairs = target_request_response_pairs
53
+ # Clean request/response pair after validatation
54
+ scratch[:inquire_request_response_pair][:all] = []
55
+
56
+ response_bundles = target_pairs.map { |pair| pair[:response_bundle] }
57
+ save_bundles_and_entries_to_scratch(response_bundles)
58
+
59
+ target_pairs.each do |pair|
60
+ pair => {request_bundle:, response_bundle:}
61
+ assert_resource_type(:bundle, resource: response_bundle)
62
+
63
+ perform_response_validation(
64
+ response_bundle,
65
+ 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle',
66
+ '2.0.1',
67
+ request_type,
68
+ request_bundle
69
+ )
70
+ end
71
+
72
+ validation_error_messages.each do |msg|
73
+ messages << { type: 'error', message: msg }
74
+ end
75
+ msg = 'Bundle response returned and/or entry resources are not conformant. Check messages for issues found.'
76
+ assert validation_error_messages.blank?, msg
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../../../must_support_test'
2
+ require_relative '../../../generator/group_metadata'
3
+ require_relative '../../../tags'
4
+
5
+ module DaVinciPASTestKit
6
+ module DaVinciPASV201
7
+ class ClientSubmitRequestPasRequestBundleMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Request Bundle are observed across all instances submitted'
11
+ description %(
12
+
13
+ PAS client systems are required to be able to populate all
14
+ must support elements on instances of all profiles included in
15
+ requests, including instances of the PAS Request Bundle Profile.
16
+ This test checks all identified instances of the PAS Request Bundle
17
+ Profile on requests sent by the client to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Bundle.entry
21
+ * Bundle.entry.fullUrl
22
+ * Bundle.entry.resource
23
+ * Bundle.entry:Claim
24
+ * Bundle.identifier
25
+ * Bundle.timestamp
26
+ )
27
+
28
+ id :pas_client_submit_request_v201_pas_request_bundle_must_support_test
29
+
30
+ def resource_type
31
+ 'Bundle'
32
+ end
33
+
34
+ def self.metadata
35
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
36
+ end
37
+
38
+ def scratch_resources
39
+ scratch[:submit_request_resources] ||= {}
40
+ end
41
+
42
+ def resources_of_interest
43
+ collection = tagged_resources(SUBMIT_TAG).presence || all_scratch_resources
44
+ collection.select { |res| res.resourceType == resource_type }
45
+ end
46
+
47
+ run do
48
+ perform_must_support_test(resources_of_interest)
49
+ validate_must_support
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,77 @@
1
+ ---
2
+ :name: profile_pas_request_bundle
3
+ :class_name: ProfilePasRequestBundleSequence
4
+ :version: v2.0.1
5
+ :reformatted_version: v201
6
+ :resource: Bundle
7
+ :profile_url: http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle
8
+ :profile_name: PAS Request Bundle
9
+ :profile_version: 2.0.1
10
+ :title: Request Bundle
11
+ :short_description: Verify support for the server capabilities required by the PAS
12
+ Request Bundle.
13
+ :interactions: []
14
+ :operations: []
15
+ :required_concepts: []
16
+ :must_supports:
17
+ :extensions: []
18
+ :slices:
19
+ - :name: Bundle.entry:Claim
20
+ :path: entry
21
+ :discriminator:
22
+ :type: type
23
+ :code: Claim
24
+ :elements:
25
+ - :path: identifier
26
+ - :path: timestamp
27
+ - :path: entry
28
+ - :path: entry.fullUrl
29
+ - :path: entry.resource
30
+ :mandatory_elements:
31
+ - Bundle.identifier
32
+ - Bundle.type
33
+ - Bundle.timestamp
34
+ - Bundle.link.relation
35
+ - Bundle.link.url
36
+ - Bundle.entry
37
+ - Bundle.entry.fullUrl
38
+ - Bundle.entry.resource
39
+ - Bundle.entry.request.method
40
+ - Bundle.entry.request.url
41
+ - Bundle.entry.response.status
42
+ :bindings:
43
+ - :type: code
44
+ :strength: preferred
45
+ :system: http://hl7.org/fhir/ValueSet/languages
46
+ :path: language
47
+ - :type: code
48
+ :strength: required
49
+ :system: http://hl7.org/fhir/ValueSet/bundle-type
50
+ :path: type
51
+ - :type: code
52
+ :strength: required
53
+ :system: http://hl7.org/fhir/ValueSet/search-entry-mode
54
+ :path: entry.search.mode
55
+ - :type: code
56
+ :strength: required
57
+ :system: http://hl7.org/fhir/ValueSet/http-verb
58
+ :path: entry.request.method
59
+ - :type: code
60
+ :strength: required
61
+ :system: http://hl7.org/fhir/ValueSet/search-entry-mode
62
+ :path: entry.search.mode
63
+ - :type: code
64
+ :strength: required
65
+ :system: http://hl7.org/fhir/ValueSet/http-verb
66
+ :path: entry.request.method
67
+ :references: []
68
+ :tests:
69
+ - :id: pas_server_v201_pas_request_bundle_validation_test
70
+ :file_name: server_pas_request_bundle_validation_test.rb
71
+ - :id: pas_client_v201_pas_request_bundle_validation_test
72
+ :file_name: client_pas_request_bundle_validation_test.rb
73
+ - :id: pas_server_submit_request_v201_pas_request_bundle_must_support_test
74
+ :file_name: server_submit_request_pas_request_bundle_must_support_test.rb
75
+ - :id: pas_client_submit_request_v201_pas_request_bundle_must_support_test
76
+ :file_name: client_submit_request_pas_request_bundle_must_support_test.rb
77
+ :delayed_references: []
@@ -0,0 +1,83 @@
1
+ require_relative '../../../pas_bundle_validation'
2
+
3
+ module DaVinciPASTestKit
4
+ module DaVinciPASV201
5
+ class ServerPasRequestBundleValidationTest < Inferno::Test
6
+ include DaVinciPASTestKit::PasBundleValidation
7
+
8
+ id :pas_server_v201_pas_request_bundle_validation_test
9
+ title '[USER INPUT VALIDATION] Request Bundle is valid'
10
+ description %(
11
+ This test validates the conformity of the
12
+ user input to the
13
+ [PAS Request Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle) structure, ensuring subsequent tests can accurately simulate content.
14
+ It also checks that other conformance requirements defined in the [PAS Formal
15
+ Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html),
16
+ such as the presence of all referenced instances within the bundle and the
17
+ conformance of those instances to the appropriate profiles, are met.
18
+
19
+ It verifies the presence of mandatory elements and that elements with
20
+ required bindings contain appropriate values. CodeableConcept element
21
+ bindings will fail if none of their codings have a code/system belonging
22
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
23
+ fail if their code/system are not found in the valueset.
24
+
25
+ Note that because X12 value sets are not public, elements bound to value
26
+ sets containing X12 codes are not validated.
27
+ )
28
+
29
+ input :pa_submit_request_payload,
30
+ title: 'PAS Submit Request Payload',
31
+ description: 'Insert Bundle to be sent for PAS Submit Request',
32
+ type: 'textarea',
33
+ optional: true
34
+
35
+ input_order :server_endpoint, :smart_credentials
36
+ output :dar_code_found, :dar_extension_found
37
+
38
+ def resource_type
39
+ 'Bundle'
40
+ end
41
+
42
+ def scratch_resources
43
+ scratch[:submit_request_resources] ||= {}
44
+ end
45
+
46
+ def request_type
47
+ 'submit'
48
+ end
49
+
50
+
51
+
52
+ def request_bundles
53
+ parsed_payload = JSON.parse(pa_submit_request_payload)
54
+ fhir_resources = [parsed_payload].flatten.compact.uniq.map { |payload| FHIR.from_contents(payload.to_json)}.compact
55
+ fhir_resources.select { |res| res.resourceType == 'Bundle'}
56
+ end
57
+
58
+ run do
59
+ skip_if pa_submit_request_payload.blank?, 'No bundle request input provided.'
60
+ assert_valid_json(pa_submit_request_payload)
61
+ assert request_bundles.present?, 'Provided input is not a bundle or list of bundles'
62
+
63
+ save_bundles_and_entries_to_scratch(request_bundles)
64
+
65
+ request_bundles.each do |bundle|
66
+ perform_request_validation(
67
+ bundle,
68
+ 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle',
69
+ '2.0.1',
70
+ request_type
71
+ )
72
+ end
73
+
74
+ validation_error_messages.each do |msg|
75
+ messages << { type: 'error', message: msg }
76
+ end
77
+ msg = 'Bundle(s) provided and/or entry resources are not conformant. Check messages for issues found.'
78
+ skip_if validation_error_messages.present?, msg
79
+
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../../../must_support_test'
2
+ require_relative '../../../generator/group_metadata'
3
+ require_relative '../../../tags'
4
+
5
+ module DaVinciPASTestKit
6
+ module DaVinciPASV201
7
+ class ServerSubmitRequestPasRequestBundleMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Request Bundle are observed across all instances submitted'
11
+ description %(
12
+
13
+ PAS server systems are required to be able to receive all
14
+ must support elements on instances of all profiles included in
15
+ requests, including instances of the PAS Request Bundle Profile.
16
+ This test checks all identified instances of the PAS Request Bundle
17
+ Profile on requests sent to the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Bundle.entry
21
+ * Bundle.entry.fullUrl
22
+ * Bundle.entry.resource
23
+ * Bundle.entry:Claim
24
+ * Bundle.identifier
25
+ * Bundle.timestamp
26
+ )
27
+
28
+ id :pas_server_submit_request_v201_pas_request_bundle_must_support_test
29
+
30
+ def resource_type
31
+ 'Bundle'
32
+ end
33
+
34
+ def self.metadata
35
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
36
+ end
37
+
38
+ def scratch_resources
39
+ scratch[:submit_request_resources] ||= {}
40
+ end
41
+
42
+ def resources_of_interest
43
+ collection = tagged_resources(SUBMIT_TAG).presence || all_scratch_resources
44
+ collection.select { |res| res.resourceType == resource_type }
45
+ end
46
+
47
+ run do
48
+ perform_must_support_test(resources_of_interest)
49
+ validate_must_support
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,71 @@
1
+ ---
2
+ :name: profile_pas_response_bundle
3
+ :class_name: ProfilePasResponseBundleSequence
4
+ :version: v2.0.1
5
+ :reformatted_version: v201
6
+ :resource: Bundle
7
+ :profile_url: http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle
8
+ :profile_name: PAS Response Bundle
9
+ :profile_version: 2.0.1
10
+ :title: Response Bundle
11
+ :short_description: Verify support for the server capabilities required by the PAS
12
+ Response Bundle.
13
+ :interactions: []
14
+ :operations: []
15
+ :required_concepts: []
16
+ :must_supports:
17
+ :extensions: []
18
+ :slices:
19
+ - :name: Bundle.entry:ClaimResponse
20
+ :path: entry
21
+ :discriminator:
22
+ :type: type
23
+ :code: ClaimResponse
24
+ :elements:
25
+ - :path: timestamp
26
+ - :path: entry
27
+ - :path: entry.fullUrl
28
+ - :path: entry.resource
29
+ :mandatory_elements:
30
+ - Bundle.type
31
+ - Bundle.timestamp
32
+ - Bundle.link.relation
33
+ - Bundle.link.url
34
+ - Bundle.entry
35
+ - Bundle.entry.fullUrl
36
+ - Bundle.entry.resource
37
+ - Bundle.entry.request.method
38
+ - Bundle.entry.request.url
39
+ - Bundle.entry.response.status
40
+ :bindings:
41
+ - :type: code
42
+ :strength: preferred
43
+ :system: http://hl7.org/fhir/ValueSet/languages
44
+ :path: language
45
+ - :type: code
46
+ :strength: required
47
+ :system: http://hl7.org/fhir/ValueSet/search-entry-mode
48
+ :path: entry.search.mode
49
+ - :type: code
50
+ :strength: required
51
+ :system: http://hl7.org/fhir/ValueSet/http-verb
52
+ :path: entry.request.method
53
+ - :type: code
54
+ :strength: required
55
+ :system: http://hl7.org/fhir/ValueSet/search-entry-mode
56
+ :path: entry.search.mode
57
+ - :type: code
58
+ :strength: required
59
+ :system: http://hl7.org/fhir/ValueSet/http-verb
60
+ :path: entry.request.method
61
+ :references: []
62
+ :tests:
63
+ - :id: pas_server_v201_pas_response_bundle_validation_test
64
+ :file_name: server_pas_response_bundle_validation_test.rb
65
+ - :id: pas_client_v201_denial_pas_response_bundle_validation_test
66
+ :file_name: client_denial_pas_response_bundle_validation_test.rb
67
+ - :id: pas_client_v201_pended_pas_response_bundle_validation_test
68
+ :file_name: client_pended_pas_response_bundle_validation_test.rb
69
+ - :id: pas_server_submit_response_v201_pas_response_bundle_must_support_test
70
+ :file_name: server_submit_response_pas_response_bundle_must_support_test.rb
71
+ :delayed_references: []
@@ -0,0 +1,80 @@
1
+ require_relative '../../../pas_bundle_validation'
2
+
3
+ module DaVinciPASTestKit
4
+ module DaVinciPASV201
5
+ class ServerPasResponseBundleValidationTest < Inferno::Test
6
+ include DaVinciPASTestKit::PasBundleValidation
7
+
8
+ id :pas_server_v201_pas_response_bundle_validation_test
9
+ title 'Response Bundle is valid'
10
+ description %(
11
+ This test validates the conformity of the
12
+ server's response to the
13
+ [PAS Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle) structure.
14
+ It also checks that other conformance requirements defined in the [PAS Formal
15
+ Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html),
16
+ such as the presence of all referenced instances within the bundle and the
17
+ conformance of those instances to the appropriate profiles, are met.
18
+
19
+ It verifies the presence of mandatory elements and that elements with
20
+ required bindings contain appropriate values. CodeableConcept element
21
+ bindings will fail if none of their codings have a code/system belonging
22
+ to the bound ValueSet. Quantity, Coding, and code element bindings will
23
+ fail if their code/system are not found in the valueset.
24
+
25
+ Note that because X12 value sets are not public, elements bound to value
26
+ sets containing X12 codes are not validated.
27
+ )
28
+
29
+ output :dar_code_found, :dar_extension_found
30
+
31
+ def resource_type
32
+ 'Bundle'
33
+ end
34
+
35
+ def scratch_resources
36
+ scratch[:submit_response_resources] ||= {}
37
+ end
38
+
39
+ def request_type
40
+ 'submit'
41
+ end
42
+
43
+ def target_request_response_pairs
44
+ scratch[:submit_request_response_pair] ||= {}
45
+ scratch[:submit_request_response_pair][:all] ||= []
46
+ end
47
+
48
+
49
+
50
+ run do
51
+ skip_if target_request_response_pairs.blank?, 'No submit response to validate. Either no submit request was made in a previous test or it resulted in a server error.'
52
+ target_pairs = target_request_response_pairs
53
+ # Clean request/response pair after validatation
54
+ scratch[:submit_request_response_pair][:all] = []
55
+
56
+ response_bundles = target_pairs.map { |pair| pair[:response_bundle] }
57
+ save_bundles_and_entries_to_scratch(response_bundles)
58
+
59
+ target_pairs.each do |pair|
60
+ pair => {request_bundle:, response_bundle:}
61
+ assert_resource_type(:bundle, resource: response_bundle)
62
+
63
+ perform_response_validation(
64
+ response_bundle,
65
+ 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle',
66
+ '2.0.1',
67
+ request_type,
68
+ request_bundle
69
+ )
70
+ end
71
+
72
+ validation_error_messages.each do |msg|
73
+ messages << { type: 'error', message: msg }
74
+ end
75
+ msg = 'Bundle response returned and/or entry resources are not conformant. Check messages for issues found.'
76
+ assert validation_error_messages.blank?, msg
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,52 @@
1
+ require_relative '../../../must_support_test'
2
+ require_relative '../../../generator/group_metadata'
3
+ require_relative '../../../tags'
4
+
5
+ module DaVinciPASTestKit
6
+ module DaVinciPASV201
7
+ class ServerSubmitResponsePasResponseBundleMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Response Bundle are observed across all instances returned'
11
+ description %(
12
+
13
+ PAS server systems are required to be able to populate all
14
+ must support elements on instances of all profiles included in
15
+ responses, including instances of the PAS Response Bundle Profile.
16
+ This test checks all identified instances of the PAS Response Bundle
17
+ Profile on responses returned by the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Bundle.entry
21
+ * Bundle.entry.fullUrl
22
+ * Bundle.entry.resource
23
+ * Bundle.entry:ClaimResponse
24
+ * Bundle.timestamp
25
+ )
26
+
27
+ id :pas_server_submit_response_v201_pas_response_bundle_must_support_test
28
+
29
+ def resource_type
30
+ 'Bundle'
31
+ end
32
+
33
+ def self.metadata
34
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
35
+ end
36
+
37
+ def scratch_resources
38
+ scratch[:submit_response_resources] ||= {}
39
+ end
40
+
41
+ def resources_of_interest
42
+ collection = tagged_resources(SUBMIT_TAG).presence || all_scratch_resources
43
+ collection.select { |res| res.resourceType == resource_type }
44
+ end
45
+
46
+ run do
47
+ perform_must_support_test(resources_of_interest)
48
+ validate_must_support
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,59 @@
1
+ require_relative 'pas_request_bundle/server_pas_request_bundle_validation_test'
2
+ require_relative 'claim/claim_operation_test'
3
+ require_relative 'pas_response_bundle/server_pas_response_bundle_validation_test'
4
+ require_relative '../../custom_groups/v2.0.1/claim_status/pas_claim_status_test'
5
+
6
+ module DaVinciPASTestKit
7
+ module DaVinciPASV201
8
+ class PASServerApprovalUseCaseGroup < Inferno::TestGroup
9
+ title 'Successful Approval Workflow'
10
+ description %(
11
+ Demonstrate the ability of the server to respond to a prior
12
+ authorization request with an `approved` decision.
13
+
14
+ )
15
+
16
+ id :pas_server_v201_approval_use_case
17
+ run_as_group
18
+
19
+ def use_case
20
+ 'approval'
21
+ end
22
+
23
+
24
+ group do
25
+ title 'PAS Submit Operation'
26
+
27
+ test from: :pas_server_v201_pas_request_bundle_validation_test do
28
+ id :pas_server_v201_pas_request_bundle_validation_test_approval
29
+ config(
30
+ inputs: {
31
+ pa_submit_request_payload: {
32
+ name: :approval_pa_submit_request_payload ,
33
+ title: 'PAS Submit Request Payload for Approval Response'
34
+ }
35
+ }
36
+ )
37
+ end
38
+ test from: :pas_v201_claim_operation_test do
39
+ id :pas_v201_claim_operation_test_approval
40
+ config(
41
+ inputs: {
42
+ pa_submit_request_payload: {
43
+ name: :approval_pa_submit_request_payload ,
44
+ title: 'PAS Submit Request Payload for Approval Response'
45
+ }
46
+ }
47
+ )
48
+ end
49
+ test from: :pas_server_v201_pas_response_bundle_validation_test
50
+ end
51
+ group do
52
+ title 'PAS Status Check'
53
+
54
+ test from: :prior_auth_claim_status
55
+ end
56
+
57
+ end
58
+ end
59
+ end