davinci_crd_test_kit 0.13.0 → 0.14.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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/inferno_crd_client_suite.json.erb +20 -14
  3. data/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb +125 -0
  4. data/config/presets/inferno_crd_client_suite_v221.json.erb +124 -0
  5. data/config/presets/inferno_crd_server_suite.json.erb +58 -1
  6. data/config/presets/inferno_crd_server_suite_v221.json.erb +94 -0
  7. data/config/presets/ri_crd_request_generator.json_v221.json.erb +13 -0
  8. data/config/presets/ri_crd_server.json.erb +19 -19
  9. data/lib/davinci_crd_test_kit/client/client_base_urls.rb +80 -0
  10. data/lib/davinci_crd_test_kit/{client_hook_request_validation.rb → client/client_hook_request_validation.rb} +1 -1
  11. data/lib/davinci_crd_test_kit/client/crd_client_options.rb +30 -0
  12. data/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb +34 -0
  13. data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +342 -0
  14. data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +410 -0
  15. data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +233 -0
  16. data/lib/davinci_crd_test_kit/{mock_service_response.rb → client/endpoints/mock_service_response.rb} +165 -59
  17. data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/companions_prerequisites.json +1 -0
  18. data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/create_update_coverage_information.json +3 -2
  19. data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/launch_smart_app.json +8 -1
  20. data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/propose_alternate_request.json +1 -0
  21. data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/request_form_completion.json +17 -16
  22. data/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb +35 -0
  23. data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +38 -0
  24. data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb +43 -0
  25. data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb +43 -0
  26. data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb +234 -0
  27. data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb +43 -0
  28. data/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb +63 -0
  29. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb +65 -0
  30. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +109 -0
  31. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb +70 -0
  32. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +85 -0
  33. data/lib/davinci_crd_test_kit/{routes/cds-services.json → client/v2.0.1/cds-services-v201.json} +1 -1
  34. data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +108 -0
  35. data/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb +31 -0
  36. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +105 -0
  37. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +105 -0
  38. data/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb +790 -0
  39. data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +74 -0
  40. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +111 -0
  41. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +116 -0
  42. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +113 -0
  43. data/lib/davinci_crd_test_kit/{client_registration_group.rb → client/v2.0.1/client_registration_group.rb} +12 -8
  44. data/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb +13 -0
  45. data/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb +134 -0
  46. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb +129 -0
  47. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb +126 -0
  48. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb +126 -0
  49. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb +138 -0
  50. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb +134 -0
  51. data/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb +136 -0
  52. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +93 -0
  53. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +62 -0
  54. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +62 -0
  55. data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb +94 -0
  56. data/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb +40 -0
  57. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +86 -0
  58. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb +63 -0
  59. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +96 -0
  60. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb +55 -0
  61. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb +70 -0
  62. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb +62 -0
  63. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +83 -0
  64. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +79 -0
  65. data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +212 -0
  66. data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb +18 -0
  67. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +69 -0
  68. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +120 -0
  69. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb +92 -0
  70. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +93 -0
  71. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +198 -0
  72. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +202 -0
  73. data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +102 -0
  74. data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +28 -0
  75. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +96 -0
  76. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +95 -0
  77. data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +88 -0
  78. data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +64 -0
  79. data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +32 -0
  80. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +101 -0
  81. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +102 -0
  82. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +107 -0
  83. data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +27 -0
  84. data/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb +27 -0
  85. data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +229 -0
  86. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +63 -0
  87. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +60 -0
  88. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +45 -0
  89. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +135 -0
  90. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +103 -0
  91. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +156 -0
  92. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +157 -0
  93. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +157 -0
  94. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +165 -0
  95. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +165 -0
  96. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +165 -0
  97. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +64 -0
  98. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +49 -0
  99. data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb +161 -0
  100. data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +107 -0
  101. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +47 -0
  102. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +152 -0
  103. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +55 -0
  104. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +123 -0
  105. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +127 -0
  106. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +55 -0
  107. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +54 -0
  108. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +48 -0
  109. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +74 -0
  110. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +30 -0
  111. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +77 -0
  112. data/lib/davinci_crd_test_kit/cross_suite/base_urls.rb +20 -0
  113. data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +312 -0
  114. data/lib/davinci_crd_test_kit/{cards_validation.rb → cross_suite/cards_validation.rb} +104 -47
  115. data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml +27 -0
  116. data/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml +60 -0
  117. data/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb +177 -0
  118. data/lib/davinci_crd_test_kit/{hook_request_field_validation.rb → cross_suite/hook_request_field_validation.rb} +282 -203
  119. data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +220 -0
  120. data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +462 -0
  121. data/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb +81 -0
  122. data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +48 -0
  123. data/lib/davinci_crd_test_kit/cross_suite/profiles_and_resource_types.rb +63 -0
  124. data/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb +38 -0
  125. data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +202 -0
  126. data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +274 -0
  127. data/lib/davinci_crd_test_kit/{suggestion_actions_validation.rb → cross_suite/suggestion_actions_validation.rb} +70 -50
  128. data/lib/davinci_crd_test_kit/cross_suite/tags.rb +42 -0
  129. data/lib/davinci_crd_test_kit/metadata.rb +10 -44
  130. data/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx +0 -0
  131. data/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx +0 -0
  132. data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
  133. data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +742 -65
  134. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +279 -54
  135. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +1430 -0
  136. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +36 -45
  137. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +143 -0
  138. data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx +0 -0
  139. data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
  140. data/lib/davinci_crd_test_kit/server/endpoints/jwk_set_endpoint_handler.rb +13 -0
  141. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb +23 -0
  142. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb +30 -0
  143. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb +112 -0
  144. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb +21 -0
  145. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb +261 -0
  146. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb +561 -0
  147. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb +24 -0
  148. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json +54687 -0
  149. data/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb +95 -0
  150. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +225 -0
  151. data/lib/davinci_crd_test_kit/{jwt_helper.rb → server/jwt_helper.rb} +1 -12
  152. data/lib/davinci_crd_test_kit/server/resource_extractor.rb +68 -0
  153. data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +165 -0
  154. data/lib/davinci_crd_test_kit/server/server_base_urls.rb +30 -0
  155. data/lib/davinci_crd_test_kit/{server_hook_helper.rb → server/server_hook_helper.rb} +1 -1
  156. data/lib/davinci_crd_test_kit/{server_hook_request_validation.rb → server/server_hook_request_validation.rb} +1 -1
  157. data/lib/davinci_crd_test_kit/{test_helper.rb → server/server_test_helper.rb} +7 -3
  158. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml +5 -0
  159. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml +5 -0
  160. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml +5 -0
  161. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml +21 -0
  162. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml +5 -0
  163. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml +5 -0
  164. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml +7 -0
  165. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml +5 -0
  166. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml +5 -0
  167. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml +5 -0
  168. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml +5 -0
  169. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml +5 -0
  170. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml +5 -0
  171. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml +40 -0
  172. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml +5 -0
  173. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml +5 -0
  174. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml +5 -0
  175. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +99 -0
  176. data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb +90 -0
  177. data/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb +67 -0
  178. data/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb +12 -0
  179. data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +34 -0
  180. data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb +30 -0
  181. data/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb +27 -0
  182. data/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb +191 -0
  183. data/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb +93 -0
  184. data/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb +62 -0
  185. data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb +186 -0
  186. data/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb +186 -0
  187. data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +73 -0
  188. data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb +191 -0
  189. data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb +211 -0
  190. data/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb +216 -0
  191. data/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb +28 -0
  192. data/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb +13 -0
  193. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb +30 -0
  194. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
  195. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
  196. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb +59 -0
  197. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb +51 -0
  198. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
  199. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb +120 -0
  200. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +70 -0
  201. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb +37 -0
  202. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb +67 -0
  203. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb +30 -0
  204. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb +39 -0
  205. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb +46 -0
  206. data/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb +83 -0
  207. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml +5 -0
  208. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml +5 -0
  209. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml +5 -0
  210. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml +5 -0
  211. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml +5 -0
  212. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml +5 -0
  213. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml +5 -0
  214. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml +5 -0
  215. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml +5 -0
  216. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml +5 -0
  217. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml +5 -0
  218. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml +5 -0
  219. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml +5 -0
  220. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml +5 -0
  221. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml +5 -0
  222. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +115 -0
  223. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb +159 -0
  224. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb +90 -0
  225. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb +43 -0
  226. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb +121 -0
  227. data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb +17 -0
  228. data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb +71 -0
  229. data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb +36 -0
  230. data/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb +118 -0
  231. data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +213 -0
  232. data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +93 -0
  233. data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +69 -0
  234. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +194 -0
  235. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +194 -0
  236. data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +73 -0
  237. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +214 -0
  238. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +219 -0
  239. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +241 -0
  240. data/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb +30 -0
  241. data/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb +13 -0
  242. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +30 -0
  243. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb +120 -0
  244. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +39 -0
  245. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +40 -0
  246. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +66 -0
  247. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb +123 -0
  248. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +57 -0
  249. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb +83 -0
  250. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +65 -0
  251. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +184 -0
  252. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +75 -0
  253. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +47 -0
  254. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +91 -0
  255. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +137 -0
  256. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +32 -0
  257. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +49 -0
  258. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb +38 -0
  259. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +54 -0
  260. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +97 -0
  261. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +78 -0
  262. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +78 -0
  263. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +78 -0
  264. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb +43 -0
  265. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_configuration_test.rb +44 -0
  266. data/lib/davinci_crd_test_kit/version.rb +2 -2
  267. data/lib/davinci_crd_test_kit.rb +4 -2
  268. metadata +297 -93
  269. data/lib/davinci_crd_test_kit/client_fhir_api_group.rb +0 -785
  270. data/lib/davinci_crd_test_kit/client_hooks_group.rb +0 -74
  271. data/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb +0 -93
  272. data/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb +0 -75
  273. data/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb +0 -48
  274. data/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb +0 -73
  275. data/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb +0 -73
  276. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb +0 -42
  277. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -40
  278. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb +0 -232
  279. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb +0 -42
  280. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -61
  281. data/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb +0 -79
  282. data/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb +0 -82
  283. data/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb +0 -81
  284. data/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb +0 -88
  285. data/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb +0 -60
  286. data/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb +0 -90
  287. data/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb +0 -90
  288. data/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb +0 -57
  289. data/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb +0 -49
  290. data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb +0 -68
  291. data/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb +0 -69
  292. data/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb +0 -102
  293. data/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb +0 -98
  294. data/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb +0 -101
  295. data/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb +0 -105
  296. data/lib/davinci_crd_test_kit/client_tests/submitted_response_validation.rb +0 -48
  297. data/lib/davinci_crd_test_kit/client_tests/token_header_test.rb +0 -65
  298. data/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb +0 -78
  299. data/lib/davinci_crd_test_kit/crd_client_suite.rb +0 -193
  300. data/lib/davinci_crd_test_kit/crd_options.rb +0 -9
  301. data/lib/davinci_crd_test_kit/crd_server_suite.rb +0 -125
  302. data/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz +0 -0
  303. data/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb +0 -18
  304. data/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb +0 -77
  305. data/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb +0 -15
  306. data/lib/davinci_crd_test_kit/server_appointment_book_group.rb +0 -176
  307. data/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb +0 -77
  308. data/lib/davinci_crd_test_kit/server_discovery_group.rb +0 -60
  309. data/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb +0 -170
  310. data/lib/davinci_crd_test_kit/server_encounter_start_group.rb +0 -170
  311. data/lib/davinci_crd_test_kit/server_hooks_group.rb +0 -71
  312. data/lib/davinci_crd_test_kit/server_order_dispatch_group.rb +0 -176
  313. data/lib/davinci_crd_test_kit/server_order_select_group.rb +0 -195
  314. data/lib/davinci_crd_test_kit/server_order_sign_group.rb +0 -201
  315. data/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb +0 -26
  316. data/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb +0 -68
  317. data/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb +0 -47
  318. data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb +0 -32
  319. data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb +0 -63
  320. data/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb +0 -118
  321. data/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb +0 -71
  322. data/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb +0 -88
  323. data/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb +0 -65
  324. data/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb +0 -28
  325. data/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb +0 -36
  326. data/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb +0 -78
  327. data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb +0 -25
  328. data/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb +0 -26
  329. data/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb +0 -38
  330. data/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb +0 -63
  331. data/lib/davinci_crd_test_kit/server_tests/service_call_test.rb +0 -101
  332. data/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb +0 -28
  333. data/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb +0 -37
  334. data/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb +0 -38
  335. data/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb +0 -81
  336. data/lib/davinci_crd_test_kit/tags.rb +0 -10
  337. data/lib/davinci_crd_test_kit/urls.rb +0 -52
  338. /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/external_reference.json +0 -0
  339. /data/lib/davinci_crd_test_kit/{card_responses → client/endpoints/mocked_card_responses}/instructions.json +0 -0
  340. /data/lib/davinci_crd_test_kit/{crd_jwks.json → server/endpoints/crd_jwks.json} +0 -0
  341. /data/lib/davinci_crd_test_kit/{jwks.rb → server/endpoints/jwks.rb} +0 -0
@@ -1,785 +0,0 @@
1
- require 'tls_test_kit'
2
- require_relative 'crd_options'
3
- require_relative 'client_tests/client_fhir_api_read_test'
4
- require_relative 'client_tests/client_fhir_api_search_test'
5
- require_relative 'client_tests/client_fhir_api_create_test'
6
- require_relative 'client_tests/client_fhir_api_update_test'
7
- require_relative 'client_tests/client_fhir_api_validation_test'
8
- require 'smart_app_launch/smart_stu1_suite'
9
- require 'smart_app_launch/smart_stu2_suite'
10
-
11
- module DaVinciCRDTestKit
12
- class ClientFHIRAPIGroup < Inferno::TestGroup
13
- title 'FHIR API'
14
- description <<~DESCRIPTION
15
- Systems wishing to conform to the [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html)
16
- role are responsible for returning data requested by the CRD Server needed to provide decision support. The Da
17
- Vinci CRD Client FHIR API Test Group contains tests that test the ['server' capabilities](https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1)
18
- of the CRD Client and ensures that the CRD Client can respond to CRD Server queriers. These 'server' capabilities
19
- are based on [US Core](https://hl7.org/fhir/us/core/STU3.1.1/). This test kit does not test the base US Core
20
- capabilities. In addition to the U.S. Core expectations, the CRD Client SHALL support all 'SHOULD' `read` and
21
- `search` capabilities listed for resources referenced in supported hooks and order types if it does not support
22
- returning the associated resources as part of CDS Hooks pre-fetch. The CRD Client SHALL also support `update`
23
- functionality for all resources listed where the client allows invoking hooks based on the resource.
24
-
25
- This test group contains two main groups of tests:
26
- * SMART App Launch Authorization: A group of tests that perform FHIR API authorization using [SMART on FHIR](https://hl7.org/fhir/smart-app-launch/index.html)
27
- EHR Launch Sequence
28
- * CRD FHIR RESTful Capabilities: A group of tests that test each CRD resource profile and ensure the CRD client
29
- supports the appropriate FHIR operations required on each resource
30
- DESCRIPTION
31
- id :crd_client_fhir_api
32
-
33
- input :url,
34
- title: 'FHIR Endpoint',
35
- description: 'URL of the CRD FHIR server'
36
-
37
- group do
38
- title 'Authorization'
39
- description %(
40
- Perform an EHR [SMART App Launch](https://www.hl7.org/fhir/smart-app-launch/) to Authorize the client FHIR
41
- server with Inferno so that Inferno may access resources on the FHIR server in order to perform the FHIR RESTful
42
- Capabilities tests.
43
- )
44
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@64', 'hl7.fhir.us.davinci-crd_2.0.1@65',
45
- 'hl7.fhir.us.davinci-crd_2.0.1@66', 'hl7.fhir.us.davinci-crd_2.0.1@89',
46
- 'hl7.fhir.us.davinci-crd_2.0.1@92'
47
-
48
- config(
49
- inputs: {
50
- smart_auth_info: {
51
- name: :smart_auth_info,
52
- title: 'EHR Launch Credentials',
53
- options: {
54
- mode: 'auth',
55
- components: [
56
- Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services
57
- ]
58
- }
59
- }
60
- },
61
- outputs: {
62
- smart_auth_info: { name: :smart_auth_info }
63
- }
64
- )
65
-
66
- group from: :smart_discovery do
67
- required_suite_options CRDOptions::SMART_1_REQUIREMENT
68
- run_as_group
69
-
70
- test from: :tls_version_test do
71
- title 'CRD FHIR Server is secured by transport layer security'
72
- description <<~DESCRIPTION
73
- Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html),
74
- the CRD Implementation Guide imposes the following rule about TLS:
75
-
76
- As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety),
77
- communications between CRD Clients and CRD Servers SHALL
78
- use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and
79
- CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based
80
- on HRex rules for PHI exchange.
81
-
82
- This test verifies that the FHIR server is using TLS 1.2 or higher.
83
- DESCRIPTION
84
- id :crd_server_tls_version_stu1
85
-
86
- config(
87
- options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }
88
- )
89
- end
90
- end
91
-
92
- group from: :smart_ehr_launch,
93
- required_suite_options: CRDOptions::SMART_1_REQUIREMENT,
94
- run_as_group: true
95
-
96
- group from: :smart_discovery_stu2 do
97
- required_suite_options CRDOptions::SMART_2_REQUIREMENT
98
- run_as_group
99
-
100
- test from: :tls_version_test do
101
- title 'CRD FHIR Server is secured by transport layer security'
102
- description <<~DESCRIPTION
103
- Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html),
104
- the CRD Implementation Guide imposes the following rule about TLS:
105
-
106
- As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety),
107
- communications between CRD Clients and CRD Servers SHALL
108
- use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and
109
- CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based
110
- on HRex rules for PHI exchange.
111
-
112
- This test verifies that the FHIR server is using TLS 1.2 or higher.
113
- DESCRIPTION
114
- id :crd_server_tls_version_stu2
115
-
116
- config(
117
- options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }
118
- )
119
- end
120
- end
121
-
122
- group from: :smart_ehr_launch_stu2,
123
- required_suite_options: CRDOptions::SMART_2_REQUIREMENT,
124
- run_as_group: true
125
-
126
- group from: :smart_openid_connect do
127
- run_as_group
128
- optional
129
- config(
130
- inputs: {
131
- id_token: { name: :ehr_id_token }
132
- }
133
- )
134
- end
135
-
136
- group from: :smart_token_refresh do
137
- run_as_group
138
- optional
139
- config(
140
- inputs: {
141
- received_scopes: { name: :ehr_received_scopes }
142
- }
143
- )
144
- end
145
- end
146
-
147
- group do
148
- title 'FHIR RESTful Capabilities'
149
- description %(
150
- This test group contains groups of tests for each CRD resource profile and ensures the [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html)
151
- supports the appropriate FHIR operations required on each resource. For each resource, Inferno will perform the
152
- required FHIR operations, and then it will validate any resources that are returned as a result of
153
- these FHIR operations.
154
-
155
- The resources that are a part of the CRD IG configuration include:
156
- * [Appointment](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Appointment1-1)
157
- * [CommunicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#CommunicationRequest1-2)
158
- * [Coverage](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Coverage1-3)
159
- * [Device](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Device1-4)
160
- * [DeviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#DeviceRequest1-5)
161
- * [Encounter](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Encounter1-6)
162
- * [Patient](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Patient1-7)
163
- * [Practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Practitioner1-8)
164
- * [PractitionerRole](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#PractitionerRole1-9)
165
- * [Location](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Location1-10)
166
- * [MedicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#MedicationRequest1-11)
167
- * [NutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#NutritionOrder1-12)
168
- * [Organization](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Organization1-13)
169
- * [ServiceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ServiceRequest1-14)
170
- * [ClaimResponse](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ClaimResponse1-15)
171
- * [Task](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Task1-16)
172
- * [VisionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#VisionPrescription1-17)
173
- )
174
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@43'
175
-
176
- input :url
177
- input :smart_auth_info,
178
- type: :auth_info,
179
- title: 'OAuth Credentials',
180
- options: { mode: 'access' },
181
- optional: true
182
-
183
- fhir_client do
184
- url :url
185
- auth_info :smart_auth_info
186
- end
187
-
188
- group do
189
- title 'Appointment'
190
- description %(
191
- Verify the CRD client can perform the required FHIR interactions on the Appointment resource, and
192
- validate any returned resources against the [CRD Appointment profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html)
193
-
194
- Required Appointment resource FHIR interactions:
195
- * SHOULD support `update`
196
-
197
- Resource Conformance: SHOULD
198
- )
199
- optional
200
-
201
- test from: :crd_client_fhir_api_update_test,
202
- optional: true,
203
- config: {
204
- options: { resource_type: 'Appointment' },
205
- inputs: {
206
- update_resources: {
207
- name: :appointment_update_resources,
208
- title: 'Appointment Resources'
209
- }
210
- }
211
- }
212
- end
213
-
214
- group do
215
- title 'CommunicationRequest'
216
- description %(
217
- Verify the CRD client can perform the required FHIR interactions on the CommunicationRequest resource, and
218
- validate any returned resources against the [CRD CommunicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html)
219
-
220
- Required CommunicationRequest resource FHIR interactions:
221
- * SHOULD support `update`
222
-
223
- Resource Conformance: SHOULD
224
- )
225
- optional
226
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
227
-
228
- test from: :crd_client_fhir_api_update_test,
229
- optional: true,
230
- config: {
231
- options: { resource_type: 'CommunicationRequest' },
232
- inputs: {
233
- update_resources: {
234
- name: :communication_request_update_resources,
235
- title: 'CommunicationRequest Resources'
236
- }
237
- }
238
- }
239
- end
240
-
241
- group do
242
- title 'Coverage'
243
- description %(
244
- Verify the CRD client can perform the required FHIR interactions on the Coverage resource, and
245
- validate any returned resources against the [CRD Coverage profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-coverage.html)
246
-
247
- Required Coverage resource FHIR interactions:
248
- * SHALL support search by [`patient`](http://hl7.org/fhir/R4/coverage.html#search)
249
- * SHALL support search by [`status`](http://hl7.org/fhir/R4/coverage.html#search)
250
-
251
- Resource Conformance: SHALL
252
- )
253
-
254
- test from: :crd_client_fhir_api_search_test,
255
- id: :crd_client_coverage_patient_search_test,
256
- title: 'Search by patient',
257
- config: {
258
- options: { resource_type: 'Coverage', search_type: 'patient' },
259
- inputs: { search_param_values: {
260
- name: :patient_ids,
261
- title: 'Patient IDs',
262
- description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements'
263
- } }
264
- }
265
-
266
- test from: :crd_client_fhir_api_search_test,
267
- id: :crd_client_coverage_status_search_test,
268
- title: 'Search by status',
269
- config: {
270
- options: { resource_type: 'Coverage', search_type: 'status' },
271
- inputs: { search_param_values: {
272
- name: :patient_ids
273
- } }
274
- }
275
-
276
- test from: :crd_client_fhir_api_validation_test,
277
- config: {
278
- options: { resource_type: 'Coverage' }
279
- }
280
- end
281
-
282
- group do
283
- title 'Device'
284
- description %(
285
- Verify the CRD client can perform the required FHIR interactions on the Device resource, and
286
- validate any returned resources against the [CRD Device profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html)
287
-
288
- Required Device resource FHIR interactions:
289
- * SHOULD support `read`
290
-
291
- Resource Conformance: SHOULD
292
- )
293
- optional
294
-
295
- test from: :crd_client_fhir_api_read_test,
296
- optional: true,
297
- config: {
298
- options: { resource_type: 'Device' },
299
- inputs: {
300
- resource_ids: {
301
- name: :device_ids,
302
- title: 'Device IDs',
303
- description: 'Comma separated list of Device IDs that in sum contain all MUST SUPPORT elements'
304
- }
305
- }
306
- }
307
-
308
- test from: :crd_client_fhir_api_validation_test,
309
- config: {
310
- options: { resource_type: 'Device' }
311
- }
312
- end
313
-
314
- group do
315
- title 'DeviceRequest'
316
- description %(
317
- Verify the CRD client can perform the required FHIR interactions on the DeviceRequest resource, and
318
- validate any returned resources against the [CRD DeviceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html)
319
-
320
- Required DeviceRequest resource FHIR interactions:
321
- * SHOULD support `update`
322
-
323
- Resource Conformance: SHOULD
324
- )
325
- optional
326
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
327
-
328
- test from: :crd_client_fhir_api_update_test,
329
- optional: true,
330
- config: {
331
- options: { resource_type: 'DeviceRequest' },
332
- inputs: {
333
- update_resources: {
334
- name: :device_request_update_resources,
335
- title: 'DeviceRequest Resources'
336
- }
337
- }
338
- }
339
- end
340
-
341
- group do
342
- title 'Encounter'
343
- description %(
344
- Verify the CRD client can perform the required FHIR interactions on the Encounter resource, and
345
- validate any returned resources against the [CRD Encounter profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html)
346
-
347
- Required Encounter resource FHIR interactions:
348
- * SHOULD support `update`
349
- * SHALL support search by [`_id`](http://hl7.org/fhir/R4/encounter.html#search)
350
- * SHALL support search by [`organization`](http://hl7.org/fhir/R4/encounter.html#search) and
351
- performing an `_include` on Location
352
-
353
- Resource Conformance: SHALL
354
- )
355
-
356
- test from: :crd_client_fhir_api_update_test,
357
- optional: true,
358
- config: {
359
- options: { resource_type: 'Encounter' },
360
- inputs: {
361
- update_resources: {
362
- name: :encounter_update_resources,
363
- title: 'Encounter Resources'
364
- }
365
- }
366
- }
367
-
368
- test from: :crd_client_fhir_api_search_test,
369
- id: :crd_client_encounter_id_search_test,
370
- title: 'Search by _id',
371
- config: {
372
- options: { resource_type: 'Encounter', search_type: '_id' },
373
- inputs: { search_param_values: {
374
- name: :encounter_ids,
375
- title: 'Encounter IDs',
376
- description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements'
377
- } }
378
- }
379
-
380
- test from: :crd_client_fhir_api_search_test,
381
- id: :crd_client_encounter_organization_search_test,
382
- title: 'Search by organization',
383
- config: {
384
- options: { resource_type: 'Encounter', search_type: 'organization' },
385
- inputs: { search_param_values: {
386
- name: :organization_ids,
387
- title: 'Organization IDs',
388
- description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements'
389
- } }
390
- }
391
-
392
- test from: :crd_client_fhir_api_search_test,
393
- id: :crd_client_encounter_location_include_test,
394
- title: 'Search by _id and _include location',
395
- config: {
396
- options: { resource_type: 'Encounter', search_type: 'location_include' },
397
- inputs: { search_param_values: {
398
- name: :encounter_ids,
399
- title: 'Encounter IDs',
400
- description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements'
401
- } }
402
- }
403
-
404
- test from: :crd_client_fhir_api_validation_test,
405
- config: {
406
- options: { resource_type: 'Encounter' }
407
- }
408
- end
409
-
410
- group do
411
- title 'Patient'
412
- description %(
413
- Verify the CRD client can perform the required FHIR interactions on the Patient resource, and
414
- validate any returned resources against the [CRD Patient profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html)
415
-
416
- Required Patient resource FHIR interactions:
417
- * SHOULD support `read`
418
-
419
- Resource Conformance: SHOULD
420
- )
421
- optional
422
-
423
- test from: :crd_client_fhir_api_read_test,
424
- optional: true,
425
- config: {
426
- options: { resource_type: 'Patient' },
427
- inputs: {
428
- resource_ids: {
429
- name: :patient_ids,
430
- title: 'Patient IDs',
431
- description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements'
432
- }
433
- }
434
- }
435
-
436
- test from: :crd_client_fhir_api_validation_test,
437
- config: {
438
- options: { resource_type: 'Patient' }
439
- }
440
- end
441
-
442
- group do
443
- title 'Practitioner'
444
- description %(
445
- Verify the CRD client can perform the required FHIR interactions on the Practitioner resource, and
446
- validate any returned resources against the [CRD Practitioner profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html)
447
-
448
- Required Practitioner resource FHIR interactions:
449
- * SHOULD support `read`
450
-
451
- Resource Conformance: SHOULD
452
- )
453
- optional
454
-
455
- test from: :crd_client_fhir_api_read_test,
456
- optional: true,
457
- config: {
458
- options: { resource_type: 'Practitioner' },
459
- inputs: {
460
- resource_ids: {
461
- name: :practitioner_ids,
462
- title: 'Practitioner IDs',
463
- description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements'
464
- }
465
- }
466
- }
467
-
468
- test from: :crd_client_fhir_api_validation_test,
469
- config: {
470
- options: { resource_type: 'Practitioner' }
471
- }
472
- end
473
-
474
- group do
475
- title 'PractitionerRole'
476
- description %(
477
- Verify the CRD client can perform the required FHIR interactions on the PractitionerRole resource, and
478
- validate any returned resources against the [US Core PractitionerRole profile](https://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html)
479
-
480
- Required PractitionerRole resource FHIR interactions:
481
- * SHALL support search by [`_id`](http://hl7.org/fhir/R4/practitionerrole.html#search)
482
- * SHALL support search by [`organization`](http://hl7.org/fhir/R4/practitionerrole.html#search) and
483
- performing an `_include` on Organization
484
- * SHALL support search by [`practitioner`](http://hl7.org/fhir/R4/practitionerrole.html#search) and
485
- performing an `_include` on Practitioner
486
-
487
- Resource Conformance: SHALL
488
- )
489
-
490
- test from: :crd_client_fhir_api_search_test,
491
- id: :crd_client_practitioner_role_id_search_test,
492
- title: 'Search by _id',
493
- config: {
494
- options: { resource_type: 'PractitionerRole', search_type: '_id' },
495
- inputs: { search_param_values: {
496
- name: :practitioner_role_ids,
497
- title: 'PractitionerRole IDs',
498
- description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements'
499
- } }
500
- }
501
-
502
- test from: :crd_client_fhir_api_search_test,
503
- id: :crd_client_practitioner_role_organization_search_test,
504
- title: 'Search by organization',
505
- config: {
506
- options: { resource_type: 'PractitionerRole', search_type: 'organization' },
507
- inputs: { search_param_values: {
508
- name: :organization_ids,
509
- title: 'Organization IDs',
510
- description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements'
511
- } }
512
- }
513
-
514
- test from: :crd_client_fhir_api_search_test,
515
- id: :crd_client_practitioner_role_practitioner_search_test,
516
- title: 'Search by practitioner',
517
- config: {
518
- options: { resource_type: 'PractitionerRole', search_type: 'practitioner' },
519
- inputs: { search_param_values: {
520
- name: :practitioner_ids,
521
- title: 'Practitioner IDs',
522
- description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements'
523
- } }
524
- }
525
-
526
- test from: :crd_client_fhir_api_search_test,
527
- id: :crd_client_practitioner_role_organization_include_test,
528
- title: 'Search by _id and _include organization',
529
- config: {
530
- options: { resource_type: 'PractitionerRole', search_type: 'organization_include' },
531
- inputs: { search_param_values: {
532
- name: :practitioner_role_ids,
533
- title: 'PractitionerRole IDs',
534
- description: %(
535
- Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements
536
- )
537
- } }
538
- }
539
-
540
- test from: :crd_client_fhir_api_search_test,
541
- id: :crd_client_practitioner_role_practitioner_include_test,
542
- title: 'Search by _id and _include practitioner',
543
- config: {
544
- options: { resource_type: 'PractitionerRole', search_type: 'practitioner_include' },
545
- inputs: { search_param_values: {
546
- name: :practitioner_role_ids,
547
- title: 'PractitionerRole IDs',
548
- description: %(
549
- Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements
550
- )
551
- } }
552
- }
553
-
554
- test from: :crd_client_fhir_api_validation_test,
555
- config: {
556
- options: { resource_type: 'PractitionerRole' }
557
- }
558
- end
559
-
560
- group do
561
- title 'Location'
562
- description %(
563
- Verify the CRD client can perform the required FHIR interactions on the Location resource, and
564
- validate any returned resources against the [CRD Location profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-location.html)
565
-
566
- Required Location resource FHIR interactions:
567
- * SHOULD support `read`
568
-
569
- Resource Conformance: SHOULD
570
- )
571
- optional
572
-
573
- test from: :crd_client_fhir_api_read_test,
574
- optional: true,
575
- config: {
576
- options: { resource_type: 'Location' },
577
- inputs: {
578
- resource_ids: {
579
- name: :location_ids,
580
- title: 'Location IDs',
581
- description: 'Comma separated list of Location IDs that in sum contain all MUST SUPPORT elements'
582
- }
583
- }
584
- }
585
-
586
- test from: :crd_client_fhir_api_validation_test,
587
- config: {
588
- options: { resource_type: 'Location' }
589
- }
590
- end
591
-
592
- group do
593
- title 'MedicationRequest'
594
- description %(
595
- Verify the CRD client can perform the required FHIR interactions on the MedicationRequest resource, and
596
- validate any returned resources against the [CRD MedicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html)
597
-
598
- Required MedicationRequest resource FHIR interactions:
599
- * SHOULD support `update`
600
-
601
- Resource Conformance: SHOULD
602
- )
603
- optional
604
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
605
-
606
- test from: :crd_client_fhir_api_update_test,
607
- optional: true,
608
- config: {
609
- options: { resource_type: 'MedicationRequest' },
610
- inputs: {
611
- update_resources: {
612
- name: :medication_request_update_resources,
613
- title: 'MedicationRequest Resources'
614
- }
615
- }
616
- }
617
- end
618
-
619
- group do
620
- title 'NutritionOrder'
621
- description %(
622
- Verify the CRD client can perform the required FHIR interactions on the NutritionOrder resource, and
623
- validate any returned resources against the [CRD NutritionOrder profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html)
624
-
625
- Required NutritionOrder resource FHIR interactions:
626
- * SHOULD support `update`
627
-
628
- Resource Conformance: SHOULD
629
- )
630
- optional
631
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
632
-
633
- test from: :crd_client_fhir_api_update_test,
634
- optional: true,
635
- config: {
636
- options: { resource_type: 'NutritionOrder' },
637
- inputs: {
638
- update_resources: {
639
- name: :nutrition_order_update_resources,
640
- title: 'NutritionOrder Resources'
641
- }
642
- }
643
- }
644
- end
645
-
646
- group do
647
- title 'Organization'
648
- description %(
649
- Verify the CRD client can perform the required FHIR interactions on the Organization resource, and
650
- validate any returned resources against the [CRD Organization profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-organization.html)
651
-
652
- Required Organization resource FHIR interactions:
653
- * SHOULD support `read`
654
-
655
- Resource Conformance: SHOULD
656
- )
657
- optional
658
-
659
- test from: :crd_client_fhir_api_read_test,
660
- optional: true,
661
- config: {
662
- options: { resource_type: 'Organization' },
663
- inputs: {
664
- resource_ids: {
665
- name: :organization_ids,
666
- title: 'Organization IDs',
667
- description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements'
668
- }
669
- }
670
- }
671
-
672
- test from: :crd_client_fhir_api_validation_test,
673
- config: {
674
- options: { resource_type: 'Organization' }
675
- }
676
- end
677
-
678
- group do
679
- title 'ServiceRequest'
680
- description %(
681
- Verify the CRD client can perform the required FHIR interactions on the ServiceRequest resource, and
682
- validate any returned resources against the [CRD ServiceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)
683
-
684
- Required ServiceRequest resource FHIR interactions:
685
- * SHOULD support `update`
686
-
687
- Resource Conformance: SHOULD
688
- )
689
- optional
690
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
691
-
692
- test from: :crd_client_fhir_api_update_test,
693
- optional: true,
694
- config: {
695
- options: { resource_type: 'ServiceRequest' },
696
- inputs: {
697
- update_resources: {
698
- name: :service_request_update_resources,
699
- title: 'ServiceRequest Resources'
700
- }
701
- }
702
- }
703
- end
704
-
705
- group do
706
- title 'ClaimResponse'
707
- description %(
708
- Verify the CRD client can perform the required FHIR interactions on the ClaimResponse resource, and
709
- validate any returned resources against the [CRD ClaimResponse profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-claimresponse.html)
710
-
711
- Required ClaimResponse resource FHIR interactions:
712
- * SHOULD support `create`
713
-
714
- Resource Conformance: SHOULD
715
- )
716
- optional
717
-
718
- test from: :crd_client_fhir_api_create_test,
719
- optional: true,
720
- config: {
721
- options: { resource_type: 'ClaimResponse' },
722
- inputs: {
723
- create_resources: {
724
- name: :claim_response_create_resources,
725
- title: 'ClaimResponse Resources'
726
- }
727
- }
728
- }
729
- end
730
-
731
- group do
732
- title 'Task'
733
- description %(
734
- Verify the CRD client can perform the required FHIR interactions on the Task resource, and
735
- validate any returned resources against the [CRD Task profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-taskquestionnaire.html)
736
-
737
- Required Task resource FHIR interactions:
738
- * SHOULD support `create`
739
-
740
- Resource Conformance: SHOULD
741
- )
742
- optional
743
-
744
- test from: :crd_client_fhir_api_create_test,
745
- optional: true,
746
- config: {
747
- options: { resource_type: 'Task' },
748
- inputs: {
749
- create_resources: {
750
- name: :task_create_resources,
751
- title: 'Task Resources'
752
- }
753
- }
754
- }
755
- end
756
-
757
- group do
758
- title 'VisionPrescription'
759
- description %(
760
- Verify the CRD client can perform the required FHIR interactions on the VisionPrescription resource, and
761
- validate any returned resources against the [CRD VisionPrescription profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html)
762
-
763
- Required VisionPrescription resource FHIR interactions:
764
- * SHOULD support `update`
765
-
766
- Resource Conformance: SHOULD
767
- )
768
- optional
769
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150'
770
-
771
- test from: :crd_client_fhir_api_update_test,
772
- optional: true,
773
- config: {
774
- options: { resource_type: 'VisionPrescription' },
775
- inputs: {
776
- update_resources: {
777
- name: :vision_prescription_update_resources,
778
- title: 'VisionPrescription Resources'
779
- }
780
- }
781
- }
782
- end
783
- end
784
- end
785
- end