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,107 @@
1
+ ---
2
+ :name: profile_requestor
3
+ :class_name: ProfileRequestorSequence
4
+ :version: v2.0.1
5
+ :reformatted_version: v201
6
+ :resource: Organization
7
+ :profile_url: http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor
8
+ :profile_name: PAS Requestor Organization
9
+ :profile_version: 2.0.1
10
+ :title: Requestor Organization
11
+ :short_description: Verify support for the server capabilities required by the PAS
12
+ Requestor Organization.
13
+ :interactions: []
14
+ :operations: []
15
+ :required_concepts:
16
+ - type
17
+ :must_supports:
18
+ :extensions: []
19
+ :slices:
20
+ - :name: Organization.identifier:NPI
21
+ :path: identifier
22
+ :discriminator:
23
+ :type: patternIdentifier
24
+ :path: ''
25
+ :system: http://hl7.org/fhir/sid/us-npi
26
+ - :name: Organization.identifier:TIN
27
+ :path: identifier
28
+ :discriminator:
29
+ :type: patternIdentifier
30
+ :path: ''
31
+ :system: http://terminology.hl7.org/NamingSystem/USEIN
32
+ :elements:
33
+ - :path: identifier
34
+ - :path: active
35
+ - :path: type
36
+ - :path: name
37
+ - :path: telecom
38
+ - :path: address
39
+ - :path: address.line
40
+ - :path: address.city
41
+ - :path: address.state
42
+ - :path: address.postalCode
43
+ - :path: address.country
44
+ - :path: contact
45
+ - :path: contact.name
46
+ - :path: contact.telecom
47
+ :mandatory_elements:
48
+ - Organization.identifier.system
49
+ - Organization.active
50
+ - Organization.name
51
+ :bindings:
52
+ - :type: code
53
+ :strength: preferred
54
+ :system: http://hl7.org/fhir/ValueSet/languages
55
+ :path: language
56
+ - :type: code
57
+ :strength: required
58
+ :system: http://hl7.org/fhir/ValueSet/identifier-use
59
+ :path: identifier.use
60
+ - :type: CodeableConcept
61
+ :strength: extensible
62
+ :system: http://hl7.org/fhir/ValueSet/identifier-type
63
+ :path: identifier.type
64
+ - :type: CodeableConcept
65
+ :strength: required
66
+ :system: https://valueset.x12.org/x217/005010/response/2010B/NM1/1/01/00/98
67
+ :path: type
68
+ - :type: code
69
+ :strength: required
70
+ :system: http://hl7.org/fhir/ValueSet/address-use
71
+ :path: address.use
72
+ - :type: code
73
+ :strength: required
74
+ :system: http://hl7.org/fhir/ValueSet/address-type
75
+ :path: address.type
76
+ - :type: string
77
+ :strength: extensible
78
+ :system: http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state
79
+ :path: address.state
80
+ - :type: CodeableConcept
81
+ :strength: extensible
82
+ :system: http://hl7.org/fhir/ValueSet/contactentity-type
83
+ :path: contact.purpose
84
+ :references:
85
+ - :path: Organization.identifier.assigner
86
+ :profiles:
87
+ - http://hl7.org/fhir/StructureDefinition/Organization
88
+ - :path: Organization.partOf
89
+ :profiles:
90
+ - http://hl7.org/fhir/StructureDefinition/Organization
91
+ - :path: Organization.endpoint
92
+ :profiles:
93
+ - http://hl7.org/fhir/StructureDefinition/Endpoint
94
+ :tests:
95
+ - :id: pas_server_submit_request_v201_requestor_must_support_test
96
+ :file_name: server_submit_request_requestor_must_support_test.rb
97
+ - :id: pas_client_submit_request_v201_requestor_must_support_test
98
+ :file_name: client_submit_request_requestor_must_support_test.rb
99
+ - :id: pas_server_submit_response_v201_requestor_must_support_test
100
+ :file_name: server_submit_response_requestor_must_support_test.rb
101
+ - :id: pas_server_inquiry_request_v201_requestor_must_support_test
102
+ :file_name: server_inquiry_request_requestor_must_support_test.rb
103
+ - :id: pas_client_inquiry_request_v201_requestor_must_support_test
104
+ :file_name: client_inquiry_request_requestor_must_support_test.rb
105
+ - :id: pas_server_inquiry_response_v201_requestor_must_support_test
106
+ :file_name: server_inquiry_response_requestor_must_support_test.rb
107
+ :delayed_references: []
@@ -0,0 +1,63 @@
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 ServerInquiryRequestRequestorMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Requestor Organization 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 Requestor Organization Profile.
16
+ This test checks all identified instances of the PAS Requestor Organization
17
+ Profile on requests sent to the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Organization.active
21
+ * Organization.address
22
+ * Organization.address.city
23
+ * Organization.address.country
24
+ * Organization.address.line
25
+ * Organization.address.postalCode
26
+ * Organization.address.state
27
+ * Organization.contact
28
+ * Organization.contact.name
29
+ * Organization.contact.telecom
30
+ * Organization.identifier
31
+ * Organization.identifier:NPI
32
+ * Organization.identifier:TIN
33
+ * Organization.name
34
+ * Organization.telecom
35
+ * Organization.type
36
+ )
37
+
38
+ id :pas_server_inquiry_request_v201_requestor_must_support_test
39
+
40
+ def resource_type
41
+ 'Organization'
42
+ end
43
+
44
+ def self.metadata
45
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
46
+ end
47
+
48
+ def scratch_resources
49
+ scratch[:inquire_request_resources] ||= {}
50
+ end
51
+
52
+ def resources_of_interest
53
+ collection = tagged_resources(INQUIRE_TAG).presence || all_scratch_resources
54
+ collection.select { |res| res.resourceType == resource_type }
55
+ end
56
+
57
+ run do
58
+ perform_must_support_test(resources_of_interest)
59
+ validate_must_support
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
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 ServerInquiryResponseRequestorMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Requestor Organization 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 Requestor Organization Profile.
16
+ This test checks all identified instances of the PAS Requestor Organization
17
+ Profile on responses returned by the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Organization.active
21
+ * Organization.address
22
+ * Organization.address.city
23
+ * Organization.address.country
24
+ * Organization.address.line
25
+ * Organization.address.postalCode
26
+ * Organization.address.state
27
+ * Organization.contact
28
+ * Organization.contact.name
29
+ * Organization.contact.telecom
30
+ * Organization.identifier
31
+ * Organization.identifier:NPI
32
+ * Organization.identifier:TIN
33
+ * Organization.name
34
+ * Organization.telecom
35
+ * Organization.type
36
+ )
37
+
38
+ id :pas_server_inquiry_response_v201_requestor_must_support_test
39
+
40
+ def resource_type
41
+ 'Organization'
42
+ end
43
+
44
+ def self.metadata
45
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
46
+ end
47
+
48
+ def scratch_resources
49
+ scratch[:inquiry_response_resources] ||= {}
50
+ end
51
+
52
+ def resources_of_interest
53
+ collection = tagged_resources(INQUIRE_TAG).presence || all_scratch_resources
54
+ collection.select { |res| res.resourceType == resource_type }
55
+ end
56
+
57
+ run do
58
+ perform_must_support_test(resources_of_interest)
59
+ validate_must_support
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
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 ServerSubmitRequestRequestorMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Requestor Organization 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 Requestor Organization Profile.
16
+ This test checks all identified instances of the PAS Requestor Organization
17
+ Profile on requests sent to the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Organization.active
21
+ * Organization.address
22
+ * Organization.address.city
23
+ * Organization.address.country
24
+ * Organization.address.line
25
+ * Organization.address.postalCode
26
+ * Organization.address.state
27
+ * Organization.contact
28
+ * Organization.contact.name
29
+ * Organization.contact.telecom
30
+ * Organization.identifier
31
+ * Organization.identifier:NPI
32
+ * Organization.identifier:TIN
33
+ * Organization.name
34
+ * Organization.telecom
35
+ * Organization.type
36
+ )
37
+
38
+ id :pas_server_submit_request_v201_requestor_must_support_test
39
+
40
+ def resource_type
41
+ 'Organization'
42
+ end
43
+
44
+ def self.metadata
45
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
46
+ end
47
+
48
+ def scratch_resources
49
+ scratch[:submit_request_resources] ||= {}
50
+ end
51
+
52
+ def resources_of_interest
53
+ collection = tagged_resources(SUBMIT_TAG).presence || all_scratch_resources
54
+ collection.select { |res| res.resourceType == resource_type }
55
+ end
56
+
57
+ run do
58
+ perform_must_support_test(resources_of_interest)
59
+ validate_must_support
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
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 ServerSubmitResponseRequestorMustSupportTest < Inferno::Test
8
+ include DaVinciPASTestKit::MustSupportTest
9
+
10
+ title 'All must support elements for Profile PAS Requestor Organization 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 Requestor Organization Profile.
16
+ This test checks all identified instances of the PAS Requestor Organization
17
+ Profile on responses returned by the server to ensure that the following
18
+ must support elements are observed:
19
+
20
+ * Organization.active
21
+ * Organization.address
22
+ * Organization.address.city
23
+ * Organization.address.country
24
+ * Organization.address.line
25
+ * Organization.address.postalCode
26
+ * Organization.address.state
27
+ * Organization.contact
28
+ * Organization.contact.name
29
+ * Organization.contact.telecom
30
+ * Organization.identifier
31
+ * Organization.identifier:NPI
32
+ * Organization.identifier:TIN
33
+ * Organization.name
34
+ * Organization.telecom
35
+ * Organization.type
36
+ )
37
+
38
+ id :pas_server_submit_response_v201_requestor_must_support_test
39
+
40
+ def resource_type
41
+ 'Organization'
42
+ end
43
+
44
+ def self.metadata
45
+ @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
46
+ end
47
+
48
+ def scratch_resources
49
+ scratch[:submit_response_resources] ||= {}
50
+ end
51
+
52
+ def resources_of_interest
53
+ collection = tagged_resources(SUBMIT_TAG).presence || all_scratch_resources
54
+ collection.select { |res| res.resourceType == resource_type }
55
+ end
56
+
57
+ run do
58
+ perform_must_support_test(resources_of_interest)
59
+ validate_must_support
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,54 @@
1
+ module DaVinciPASTestKit
2
+ module PASV201
3
+ module ResourceList
4
+ RESOURCE_LIST = [
5
+ 'Inquiry Request Bundle',
6
+ 'Inquiry Response Bundle',
7
+ 'Request Bundle',
8
+ 'Response Bundle',
9
+ 'Claim Base',
10
+ 'Claim Inquiry',
11
+ 'Claim Update',
12
+ 'Claim',
13
+ 'Claim Inquiry Response',
14
+ 'Claim Response Base',
15
+ 'Claim Response',
16
+ 'CommunicationRequest',
17
+ 'Coverage',
18
+ 'Device Request',
19
+ 'Encounter',
20
+ 'Location',
21
+ 'Medication Request',
22
+ 'Nutrition Order',
23
+ 'Insurer Organization',
24
+ 'Organization Base',
25
+ 'Requestor Organization',
26
+ 'Beneficiary Patient',
27
+ 'Subscriber Patient',
28
+ 'Practitioner',
29
+ 'PractitionerRole',
30
+ 'Service Request',
31
+ 'Task'
32
+ ].freeze
33
+
34
+ RESOURCE_SUPPORTED_PROFILES = {
35
+ Bundle: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle"],
36
+ Claim: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-base", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-inquiry", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim-update", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim"],
37
+ ClaimResponse: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claiminquiryresponse", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse-base", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claimresponse"],
38
+ CommunicationRequest: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-communicationrequest"],
39
+ Coverage: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-coverage"],
40
+ DeviceRequest: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-devicerequest"],
41
+ Encounter: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-encounter"],
42
+ Location: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-location"],
43
+ MedicationRequest: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-medicationrequest"],
44
+ NutritionOrder: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-nutritionorder"],
45
+ Organization: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-insurer", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-organization", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-requestor"],
46
+ Patient: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary", "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-subscriber"],
47
+ Practitioner: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-practitioner"],
48
+ PractitionerRole: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-practitionerrole"],
49
+ ServiceRequest: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-servicerequest"],
50
+ Task: ["http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-task"],
51
+ }.freeze
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,236 @@
1
+ require_relative '../../validator_suppressions'
2
+ require_relative '../../custom_groups/v2.0.1/pas_error_group'
3
+ require_relative '../../version.rb'
4
+ require_relative 'pas_server_approval_use_case_group'
5
+ require_relative 'pas_server_denial_use_case_group'
6
+ require_relative 'pas_server_pended_use_case_group'
7
+ require_relative 'pas_server_must_support_use_case_group'
8
+
9
+ module DaVinciPASTestKit
10
+ module DaVinciPASV201
11
+ class ServerSuite < Inferno::TestSuite
12
+ id :davinci_pas_server_suite_v201
13
+ title 'Da Vinci PAS Server Suite v2.0.1'
14
+ version DaVinciPASTestKit::VERSION
15
+ description %(
16
+ The Da Vinci PAS Server Suite validates the conformance of server systems
17
+ to the STU 2 version of the HL7® FHIR®
18
+ [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
19
+
20
+ ## Scope
21
+
22
+ These tests are a **DRAFT** intended to allow PAS server implementers to perform
23
+ preliminary checks of their servers against PAS IG requirements and [provide
24
+ feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
25
+ on the tests. Future versions of these tests may validate other
26
+ requirements and may change the test validation logic.
27
+
28
+ ## Test Methodology
29
+
30
+ Inferno will simulate a client and make a series of prior authorization requests to the
31
+ server under test. Over the course of these requests, Inferno will seek to observe
32
+ conformant handling of PAS requirements, including
33
+ - The ability of the server to use PAS API interactions to communicate
34
+ - Approval of a prior authorization request
35
+ - Denial of a prior authorization request
36
+ - Pending of a prior authorization request and a subsequent final decision
37
+ - Inability to process a prior authorization request
38
+ - The ability of the server to handle the full scope of data required by PAS, including
39
+ - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles
40
+ - Ability to return responses that demonstrate the use of all PAS profiles and all must support elements on those profiles
41
+
42
+ Because the business logic that determines decisions and the elements populated in responses
43
+ Is outside of the PAS specification and will vary between implementers, testers
44
+ are required to provide the requests that Inferno will make to the server.
45
+
46
+ All requests and responses will be checked for conformance to the PAS
47
+ IG requirements individually and used in aggregate to determine whether
48
+ required features and functionality are present. HL7® FHIR® resources are
49
+ validated with the Java validator using `tx.fhir.org` as the terminology server.
50
+
51
+ These tests do not currently test the full scope of the IG. See the *Testing Limitations* section below
52
+ for more details about the current scope of the tests and the reasons that some details have been left out.
53
+
54
+ ## Running the Tests
55
+
56
+ ### Quick Start
57
+
58
+ Execution of these tests require a significant amount of tester input in the
59
+ form of requests that Inferno will make against the server under test.
60
+
61
+ If you would like to try out the tests using examples from the IG against the
62
+ [public reference server endpoint](https://prior-auth.davinci.hl7.org/fhir) ([code on github](https://github.com/HL7-DaVinci/prior-auth)), you can do so by
63
+ 1. Selecting the *Prior Authorization Support Reference Implementation* option from the Preset dropdown in the upper left
64
+ 2. Clicking the *Run All Tests* button in the upper right
65
+ 3. Clicking the *Submit* button at the bottom of the input dialog
66
+
67
+ You can run these tests using your own server by updating the "FHIR Server Endpoint URL" and "OAuth Credentials" inputs.
68
+
69
+ Note that:
70
+ - the inputs for these tests are not complete and systems are not expected to pass the tests based on them.
71
+ - the public reference server has not been updated to reflect the STU2 version that these tests target,
72
+ so expect some additional failures when testing against it.
73
+
74
+ ## Test Configuration Details
75
+
76
+ The details provided here supplement the documentation of individual fields in the input dialog
77
+ that appears when initiating a test run.
78
+
79
+ ### Server identification
80
+
81
+ Requests will be made to the `/Claim/$submit` and `/Claim/$inquire` endpoints under the url provided in the "FHIR Server Endpoint URL" field.
82
+
83
+ ### Authentication
84
+
85
+ The PAS IG states that
86
+
87
+ > "PAS Servers **SHOULD** support server-server OAuth… In a future release of this guide, direction will limit the option to [require] server-server OAuth."
88
+
89
+ The PAS test kit currently assumes that the handshake has already occurred and requires
90
+ that a bearer token be provided in the “OAuth Credentials / Access Token” configuration
91
+ field. Inferno will submit this token on all requests it makes to the server as a part of
92
+ executing the tests. A complete backend server authentication handshake may be supported
93
+ in future versions of the test kit.
94
+
95
+ ### Payload
96
+
97
+ All other inputs are for providing bundles for Inferno to submit as a part of the tests. To avoid placing
98
+ requirements on the business logic, Inferno does not have standard requests to send as a part of the tests
99
+ and instead relies on the tester to provide the requests that Inferno will make.
100
+
101
+ For single-request fields (e.g., “PAS Submit Request Payload for Approval Response”), the input must be a json-encoded FHIR bundle.
102
+
103
+ For multiple-request fields (e.g., “Additional PAS Submit Request Payloads”), the input must be a json array of json-encoded FHIR bundles (e.g., [fhir-bundle-1, fhir-bundle-2, …] where each fhir-bundle-n is a full bundle).
104
+
105
+ ## Testing Limitations
106
+
107
+ ### Private X12 details
108
+
109
+ HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization
110
+ processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement
111
+ will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f),
112
+ the current PAS IG relies heavily on X12. As the IG authors note at the
113
+ top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/):
114
+
115
+ > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect
116
+ > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12
117
+ > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this
118
+ > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies)
119
+ > for details on how to get this mapping.
120
+ >
121
+ > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance
122
+ > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these
123
+ > fields.
124
+ >
125
+ > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made
126
+ > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as
127
+ > external terminologies.
128
+
129
+ The implications of this reliance on proprietary information that is not publicly available means that this test
130
+ kit:
131
+
132
+ - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12
133
+ value sets will not be validated.
134
+ - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval
135
+ or pending, is not performed.
136
+ - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an
137
+ inquiry, e.g., that it matches the input or the original request.
138
+
139
+ These limitations may be removed in future versions of these tests. In the meantime, testers should consider these
140
+ requirements to be verified through attestation and should not represent their systems to have passed these tests
141
+ if these requirements are not met.
142
+
143
+ ### Underspecified Subscription Details
144
+
145
+ The current PAS specification around subscriptions and notifications
146
+ is not detailed enough to support testing. Notably,
147
+ - There are no examples of what a notification payload looks like
148
+ - There is no instruction on how to turn the notification payload into an inquiry
149
+
150
+ Once these details have been clarified, validation of the notification workflows
151
+ will be added to these tests.
152
+
153
+ ### Future Details
154
+
155
+ The PAS IG places additional requirements on servers that are not currently tested by this test kit, including
156
+
157
+ - Prior Authorization update workflows
158
+ - Requests for additional information handled through the CDex framework
159
+ - PDF, CDA, and JPG attachments
160
+ - US Core profile support for supporting information
161
+ - Inquiry matching and subsetting logic
162
+ - Inquiry requests from non-submitting systems
163
+ - Collection of metrics
164
+
165
+ These and any other requirements found in the PAS IG may be tested in future versions of these tests.
166
+ )
167
+
168
+ links [
169
+ {
170
+ label: 'Report Issue',
171
+ url: 'https://github.com/inferno-framework/davinci-pas-test-kit/issues/'
172
+ },
173
+ {
174
+ label: 'Open Source',
175
+ url: 'https://github.com/inferno-framework/davinci-pas-test-kit/'
176
+ },
177
+ {
178
+ label: 'Implementation Guide',
179
+ url: 'https://hl7.org/fhir/us/davinci-pas/STU2/'
180
+ }
181
+ ]
182
+
183
+ resume_test_route :get, '/resume_after_notification' do |request|
184
+ request.query_parameters['use_case']
185
+ end
186
+
187
+ validator do
188
+ url ENV.fetch('VALIDATOR_URL')
189
+
190
+ exclude_message do |message|
191
+ # Messages expected of the form `<ResourceType>: <FHIRPath>: <message>`
192
+ # We strip `<ResourceType>: <FHIRPath>: ` for the sake of matching
193
+ SUPPRESSED_MESSAGES.match?(message.message.sub(/\A\S+: \S+: /, '')) ||
194
+ message.message.downcase.include?('x12')
195
+ end
196
+ end
197
+
198
+ input :server_endpoint,
199
+ title: 'FHIR Server Endpoint URL',
200
+ description: 'Insert the FHIR server endpoint URL for PAS'
201
+
202
+ input :smart_credentials,
203
+ title: 'OAuth Credentials',
204
+ type: :oauth_credentials,
205
+ optional: true
206
+
207
+ fhir_client do
208
+ url :server_endpoint
209
+ oauth_credentials :smart_credentials
210
+ end
211
+
212
+ # Used for attestation experiment - see pas_claim_status_test.rb
213
+ # resume_test_route :get, RESUME_PASS_PATH do |request|
214
+ # request.query_parameters['token']
215
+ # end
216
+ #
217
+ # resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request|
218
+ # request.query_parameters['token']
219
+ # end
220
+
221
+ group 'Demonstrate Workflow Support' do
222
+ description %(
223
+ The workflow tests validate that the server can participate in complete
224
+ end-to-end prior authorization interactions, returning responses that are
225
+ conformant and also contain the correct codes.
226
+ )
227
+
228
+ group from: :pas_server_v201_approval_use_case
229
+ group from: :pas_server_v201_denial_use_case
230
+ group from: :pas_server_v201_pended_use_case
231
+ end
232
+ group from: :pas_server_v201_must_support_use_case
233
+ group from: :pas_v201_error_group
234
+ end
235
+ end
236
+ end