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
@@ -0,0 +1,129 @@
1
+ require_relative '../client_urls'
2
+
3
+ module DaVinciCRDTestKit
4
+ module V201
5
+ class AppointmentBookReceiveRequestTest < Inferno::Test
6
+ include ClientURLs
7
+
8
+ id :crd_v201_appointment_book_request
9
+ title 'Request received for appointment-book hook'
10
+ description %(
11
+ This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
12
+ hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
13
+ hook, meaning that CRD servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html)
14
+ system action for these hooks, even if the response indicates that further information is needed or that the
15
+ level of detail provided is insufficient to determine coverage.
16
+
17
+ For more details on how Inferno's simulated CDS Service behave during hook invocation see the
18
+ [simulated CRD server(https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
19
+ documentation.
20
+ )
21
+ config options: { accepts_multiple_requests: true }
22
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171',
23
+ 'hl7.fhir.us.davinci-crd_2.0.1@183', 'hl7.fhir.us.davinci-crd_2.0.1@243',
24
+ 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
25
+ 'cds-hooks_2.0@15'
26
+
27
+ input :cds_jwt_iss,
28
+ title: 'CRD JWT Issuer',
29
+ description: %(
30
+ Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
31
+ header of all requests. Run or re-run the **Client Registration** group to set or
32
+ change this value.
33
+ ),
34
+ locked: true
35
+ input :appointment_book_response_approach,
36
+ title: 'Response generation approach for appointment-book',
37
+ description: %(
38
+ Determines how Inferno will generate response for appointment-book
39
+ hook invocations.
40
+ ),
41
+ type: 'radio',
42
+ default: 'mocked',
43
+ options: {
44
+ list_options: [
45
+ {
46
+ label: 'Create simple mocks based on selected response types',
47
+ value: 'mocked'
48
+ },
49
+ {
50
+ label: 'Generate responses based on a tester-provided template',
51
+ value: 'custom'
52
+ }
53
+ ]
54
+ }
55
+ input :appointment_book_selected_response_types,
56
+ title: 'Response types to return from appointment-book hook requests',
57
+ description: %(
58
+ Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
59
+ when responding to hook invocations. If no types are selected, Inferno will mock and return
60
+ a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)
61
+ response for this primary hook.
62
+ ),
63
+ type: 'checkbox',
64
+ default: ['coverage_information', 'external_reference', 'instructions'],
65
+ optional: true,
66
+ options: {
67
+ list_options: [
68
+ {
69
+ label: 'External Reference',
70
+ value: 'external_reference'
71
+ },
72
+ {
73
+ label: 'Instructions',
74
+ value: 'instructions'
75
+ },
76
+ {
77
+ label: 'Coverage Information',
78
+ value: 'coverage_information'
79
+ },
80
+ {
81
+ label: 'Request Form Completion',
82
+ value: 'request_form_completion'
83
+ },
84
+ {
85
+ label: 'Create/Update Coverage Information',
86
+ value: 'create_update_coverage_info'
87
+ },
88
+ {
89
+ label: 'Launch SMART Application',
90
+ value: 'launch_smart_app'
91
+ }
92
+ ]
93
+ },
94
+ enable_when: { input_name: 'appointment_book_response_approach', value: 'mocked' }
95
+ input :appointment_book_custom_response_template,
96
+ title: 'Custom response template for appointment-book hook requests',
97
+ description: %(
98
+ Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
99
+ in JSON form for Inferno to use when responding to hook invocations.
100
+ ),
101
+ type: 'textarea',
102
+ optional: true,
103
+ enable_when: { input_name: 'appointment_book_response_approach', value: 'custom' }
104
+ output :continuation_url
105
+
106
+ run do
107
+ identifier = cds_jwt_iss
108
+ continuation_url = "#{resume_pass_url}?token=#{identifier}"
109
+ output(continuation_url:)
110
+
111
+ wait(
112
+ identifier:,
113
+ message: %(
114
+ **Appointment Book CDS Service Test**:
115
+
116
+ Invoke the appointment-book hook and send requests to:
117
+
118
+ `#{appointment_book_url}`
119
+
120
+ Inferno will process the requests and return CDS cards if successful.
121
+
122
+ [Click here](#{continuation_url}) when you have finished
123
+ submitting requests.
124
+ )
125
+ )
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,126 @@
1
+ require_relative '../client_urls'
2
+
3
+ module DaVinciCRDTestKit
4
+ module V201
5
+ class EncounterDischargeReceiveRequestTest < Inferno::Test
6
+ include ClientURLs
7
+
8
+ id :crd_v201_encounter_discharge_request
9
+ title 'Request received for encounter-discharge hook'
10
+ description %(
11
+ This test waits for multiple incoming [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
12
+ hook requests and responds to the client with the response types selected as an input.
13
+
14
+ For more details on how Inferno's simulated CDS Service behave during hook invocation see the
15
+ [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
16
+ documentation.
17
+ )
18
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@197', 'hl7.fhir.us.davinci-crd_2.0.1@243',
19
+ 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
20
+ 'cds-hooks_2.0@15'
21
+
22
+ config options: { accepts_multiple_requests: true }
23
+
24
+ input :cds_jwt_iss,
25
+ title: 'CRD JWT Issuer',
26
+ description: %(
27
+ Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
28
+ header of all requests. Run or re-run the **Client Registration** group to set or
29
+ change this value.
30
+ ),
31
+ locked: true
32
+ input :encounter_discharge_response_approach,
33
+ title: 'Response generation approach for encounter-discharge',
34
+ description: %(
35
+ Determines how Inferno will generate response for encounter-discharge
36
+ hook invocations.
37
+ ),
38
+ type: 'radio',
39
+ default: 'mocked',
40
+ options: {
41
+ list_options: [
42
+ {
43
+ label: 'Create simple mocks based on selected response types',
44
+ value: 'mocked'
45
+ },
46
+ {
47
+ label: 'Generate responses based on a tester-provided template',
48
+ value: 'custom'
49
+ }
50
+ ]
51
+ }
52
+ input :encounter_discharge_selected_response_types,
53
+ title: 'Response types to return from encounter-discharge hook requests',
54
+ description: %(
55
+ Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
56
+ when responding to hook invocations. If no types are selected, Inferno will mock and return
57
+ an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
58
+ response for this secondary hook.
59
+ ),
60
+ type: 'checkbox',
61
+ default: ['coverage_information', 'external_reference', 'instructions'],
62
+ optional: true,
63
+ options: {
64
+ list_options: [
65
+ {
66
+ label: 'External Reference',
67
+ value: 'external_reference'
68
+ },
69
+ {
70
+ label: 'Instructions',
71
+ value: 'instructions'
72
+ },
73
+ {
74
+ label: 'Coverage Information',
75
+ value: 'coverage_information'
76
+ },
77
+ {
78
+ label: 'Request Form Completion',
79
+ value: 'request_form_completion'
80
+ },
81
+ {
82
+ label: 'Create/Update Coverage Information',
83
+ value: 'create_update_coverage_info'
84
+ },
85
+ {
86
+ label: 'Launch SMART Application',
87
+ value: 'launch_smart_app'
88
+ }
89
+ ]
90
+ },
91
+ enable_when: { input_name: 'encounter_discharge_response_approach', value: 'mocked' }
92
+ input :encounter_discharge_custom_response_template,
93
+ title: 'Custom response template for encounter-discharge hook requests',
94
+ description: %(
95
+ Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
96
+ in JSON form for Inferno to use when responding to hook invocations.
97
+ ),
98
+ type: 'textarea',
99
+ optional: true,
100
+ enable_when: { input_name: 'encounter_discharge_response_approach', value: 'custom' }
101
+ output :continuation_url
102
+
103
+ run do
104
+ identifier = cds_jwt_iss
105
+ continuation_url = "#{resume_pass_url}?token=#{identifier}"
106
+ output(continuation_url:)
107
+
108
+ wait(
109
+ identifier:,
110
+ message: %(
111
+ **Encounter Discharge CDS Service Test**:
112
+
113
+ Invoke the encounter-discharge hook and send requests to:
114
+
115
+ `#{encounter_discharge_url}`
116
+
117
+ Inferno will process the requests and return CDS cards if successful.
118
+
119
+ [Click here](#{continuation_url}) when you have finished submitting
120
+ requests.
121
+ )
122
+ )
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,126 @@
1
+ require_relative '../client_urls'
2
+
3
+ module DaVinciCRDTestKit
4
+ module V201
5
+ class EncounterStartReceiveRequestTest < Inferno::Test
6
+ include ClientURLs
7
+
8
+ id :crd_v201_encounter_start_request
9
+ title 'Request received for encounter-start hook'
10
+ description %(
11
+ This test waits for multiple incoming [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
12
+ hook requests and responds to the client with the response types selected as an input.
13
+
14
+ For more details on how Inferno's simulated CDS Service behave during hook invocation see the
15
+ [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
16
+ documentation.
17
+ )
18
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@186', 'hl7.fhir.us.davinci-crd_2.0.1@243',
19
+ 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
20
+ 'cds-hooks_2.0@15'
21
+
22
+ config options: { accepts_multiple_requests: true }
23
+
24
+ input :cds_jwt_iss,
25
+ title: 'CRD JWT Issuer',
26
+ description: %(
27
+ Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
28
+ header of all requests. Run or re-run the **Client Registration** group to set or
29
+ change this value.
30
+ ),
31
+ locked: true
32
+ input :encounter_start_response_approach,
33
+ title: 'Response generation approach for encounter-start',
34
+ description: %(
35
+ Determines how Inferno will generate response for encounter-start
36
+ hook invocations.
37
+ ),
38
+ type: 'radio',
39
+ default: 'mocked',
40
+ options: {
41
+ list_options: [
42
+ {
43
+ label: 'Create simple mocks based on selected response types',
44
+ value: 'mocked'
45
+ },
46
+ {
47
+ label: 'Generate responses based on a tester-provided template',
48
+ value: 'custom'
49
+ }
50
+ ]
51
+ }
52
+ input :encounter_start_selected_response_types,
53
+ title: 'Response types to return from encounter-start hook requests',
54
+ description: %(
55
+ Select the cards/action response types that the Inferno hook request endpoints will return. The default
56
+ response type that will be returned for this hook is the `Instructions` card type.
57
+ ),
58
+ type: 'checkbox',
59
+ default: ['coverage_information', 'external_reference', 'instructions'],
60
+ optional: true,
61
+ options: {
62
+ list_options: [
63
+ {
64
+ label: 'External Reference',
65
+ value: 'external_reference'
66
+ },
67
+ {
68
+ label: 'Instructions',
69
+ value: 'instructions'
70
+ },
71
+ {
72
+ label: 'Coverage Information',
73
+ value: 'coverage_information'
74
+ },
75
+ {
76
+ label: 'Request Form Completion',
77
+ value: 'request_form_completion'
78
+ },
79
+ {
80
+ label: 'Create/Update Coverage Information',
81
+ value: 'create_update_coverage_info'
82
+ },
83
+ {
84
+ label: 'Launch SMART Application',
85
+ value: 'launch_smart_app'
86
+ }
87
+ ]
88
+ },
89
+ enable_when: { input_name: 'encounter_start_response_approach', value: 'mocked' }
90
+ input :encounter_start_custom_response_template,
91
+ title: 'Custom response template for encounter-start hook requests',
92
+ description: %(
93
+ Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
94
+ when responding to hook invocations. If no types are selected, Inferno will mock and return
95
+ an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
96
+ response for this secondary hook.
97
+ ),
98
+ type: 'textarea',
99
+ optional: true,
100
+ enable_when: { input_name: 'encounter_start_response_approach', value: 'custom' }
101
+ output :continuation_url
102
+
103
+ run do
104
+ identifier = cds_jwt_iss
105
+ continuation_url = "#{resume_pass_url}?token=#{identifier}"
106
+ output(continuation_url:)
107
+
108
+ wait(
109
+ identifier:,
110
+ message: %(
111
+ **Encounter Start CDS Service Test**:
112
+
113
+ Invoke the encounter-start hook and send requests to:
114
+
115
+ `#{encounter_start_url}`
116
+
117
+ Inferno will process the requests and return CDS cards if successful.
118
+
119
+ [Click here](#{continuation_url}) when you have finished submitting
120
+ requests.
121
+ )
122
+ )
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,138 @@
1
+ require_relative '../client_urls'
2
+
3
+ module DaVinciCRDTestKit
4
+ module V201
5
+ class OrderDispatchReceiveRequestTest < Inferno::Test
6
+ include ClientURLs
7
+
8
+ id :crd_v201_order_dispatch_request
9
+ title 'Request received for order-dispatch hook'
10
+ description %(
11
+ This test waits for multiple incoming [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
12
+ hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
13
+ hook, meaning that CRD servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html)
14
+ system action for these hooks, even if the response indicates that further information is needed or that the
15
+ level of detail provided is insufficient to determine coverage.
16
+
17
+ For more details on how Inferno's simulated CDS Service behave during hook invocation see the
18
+ [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
19
+ documentation.
20
+ )
21
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@205',
22
+ 'hl7.fhir.us.davinci-crd_2.0.1@207', 'hl7.fhir.us.davinci-crd_2.0.1@243',
23
+ 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
24
+ 'cds-hooks_2.0@15'
25
+
26
+ config options: { accepts_multiple_requests: true }
27
+
28
+ input :cds_jwt_iss,
29
+ title: 'CRD JWT Issuer',
30
+ description: %(
31
+ Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
32
+ header of all requests. Run or re-run the **Client Registration** group to set or
33
+ change this value.
34
+ ),
35
+ locked: true
36
+ input :order_dispatch_response_approach,
37
+ title: 'Response generation approach for order-dispatch',
38
+ description: %(
39
+ Determines how Inferno will generate response for order-dispatch
40
+ hook invocations.
41
+ ),
42
+ type: 'radio',
43
+ default: 'mocked',
44
+ options: {
45
+ list_options: [
46
+ {
47
+ label: 'Create simple mocks based on selected response types',
48
+ value: 'mocked'
49
+ },
50
+ {
51
+ label: 'Generate responses based on a tester-provided template',
52
+ value: 'custom'
53
+ }
54
+ ]
55
+ }
56
+ input :order_dispatch_selected_response_types,
57
+ title: 'Response types to return from order-dispatch hook requests',
58
+ description: %(
59
+ Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
60
+ when responding to hook invocations. If no types are selected, Inferno will mock and return
61
+ a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)
62
+ response for this primary hook.
63
+ ),
64
+ type: 'checkbox',
65
+ default: ['coverage_information', 'external_reference', 'instructions'],
66
+ optional: true,
67
+ options: {
68
+ list_options: [
69
+ {
70
+ label: 'External Reference',
71
+ value: 'external_reference'
72
+ },
73
+ {
74
+ label: 'Instructions',
75
+ value: 'instructions'
76
+ },
77
+ {
78
+ label: 'Coverage Information',
79
+ value: 'coverage_information'
80
+ },
81
+ {
82
+ label: 'Request Form Completion',
83
+ value: 'request_form_completion'
84
+ },
85
+ {
86
+ label: 'Create/Update Coverage Information',
87
+ value: 'create_update_coverage_info'
88
+ },
89
+ {
90
+ label: 'Launch SMART Application',
91
+ value: 'launch_smart_app'
92
+ },
93
+ {
94
+ label: 'Propose Alternate Request',
95
+ value: 'propose_alternate_request'
96
+ },
97
+ {
98
+ label: 'Additional Orders as Companions/Prerequisites',
99
+ value: 'companions_prerequisites'
100
+ }
101
+ ]
102
+ },
103
+ enable_when: { input_name: 'order_dispatch_response_approach', value: 'mocked' }
104
+ input :order_dispatch_custom_response_template,
105
+ title: 'Custom response template for order-dispatch hook requests',
106
+ description: %(
107
+ Provide a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses)
108
+ in JSON form for Inferno to use when responding to hook invocations.
109
+ ),
110
+ type: 'textarea',
111
+ optional: true,
112
+ enable_when: { input_name: 'order_dispatch_response_approach', value: 'custom' }
113
+ output :continuation_url
114
+
115
+ run do
116
+ identifier = cds_jwt_iss
117
+ continuation_url = "#{resume_pass_url}?token=#{identifier}"
118
+ output(continuation_url:)
119
+
120
+ wait(
121
+ identifier:,
122
+ message: %(
123
+ **Order Dispatch CDS Service Test**:
124
+
125
+ Invoke the order-dispatch hook and send requests to:
126
+
127
+ `#{order_dispatch_url}`
128
+
129
+ Inferno will process the requests and return CDS cards if successful.
130
+
131
+ [Click here](#{continuation_url}) when you have finished submitting
132
+ requests.
133
+ )
134
+ )
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,134 @@
1
+ require_relative '../client_urls'
2
+
3
+ module DaVinciCRDTestKit
4
+ module V201
5
+ class OrderSelectReceiveRequestTest < Inferno::Test
6
+ include ClientURLs
7
+
8
+ id :crd_v201_order_select_request
9
+ title 'Request received for order-select hook'
10
+ description %(
11
+ This test waits for multiple incoming [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
12
+ hook requests and responds to the client with the response types selected as an input.
13
+
14
+ For more details on how Inferno's simulated CDS Service behave during hook invocation see the
15
+ [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation)
16
+ documentation.
17
+ )
18
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@209', 'hl7.fhir.us.davinci-crd_2.0.1@243',
19
+ 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245',
20
+ 'cds-hooks_2.0@15'
21
+
22
+ config options: { accepts_multiple_requests: true }
23
+
24
+ input :cds_jwt_iss,
25
+ title: 'CRD JWT Issuer',
26
+ description: %(
27
+ Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
28
+ header of all requests. Run or re-run the **Client Registration** group to set or
29
+ change this value.
30
+ ),
31
+ locked: true
32
+ input :order_select_response_approach,
33
+ title: 'Response generation approach for order-select',
34
+ description: %(
35
+ Determines how Inferno will generate response for order-select
36
+ hook invocations.
37
+ ),
38
+ type: 'radio',
39
+ default: 'mocked',
40
+ options: {
41
+ list_options: [
42
+ {
43
+ label: 'Create simple mocks based on selected response types',
44
+ value: 'mocked'
45
+ },
46
+ {
47
+ label: 'Generate responses based on a tester-provided template',
48
+ value: 'custom'
49
+ }
50
+ ]
51
+ }
52
+ input :order_select_selected_response_types,
53
+ title: 'Response types to return from order-select hook requests',
54
+ description: %(
55
+ Select the cards/action response types that the Inferno hook request endpoints will return. The default
56
+ response type that will be returned for this hook is the `Instructions` card type.
57
+ ),
58
+ type: 'checkbox',
59
+ default: ['coverage_information', 'external_reference', 'instructions'],
60
+ optional: true,
61
+ options: {
62
+ list_options: [
63
+ {
64
+ label: 'External Reference',
65
+ value: 'external_reference'
66
+ },
67
+ {
68
+ label: 'Instructions',
69
+ value: 'instructions'
70
+ },
71
+ {
72
+ label: 'Coverage Information',
73
+ value: 'coverage_information'
74
+ },
75
+ {
76
+ label: 'Request Form Completion',
77
+ value: 'request_form_completion'
78
+ },
79
+ {
80
+ label: 'Create/Update Coverage Information',
81
+ value: 'create_update_coverage_info'
82
+ },
83
+ {
84
+ label: 'Launch SMART Application',
85
+ value: 'launch_smart_app'
86
+ },
87
+ {
88
+ label: 'Propose Alternate Request',
89
+ value: 'propose_alternate_request'
90
+ },
91
+ {
92
+ label: 'Additional Orders as Companions/Prerequisites',
93
+ value: 'companions_prerequisites'
94
+ }
95
+ ]
96
+ },
97
+ enable_when: { input_name: 'order_select_response_approach', value: 'mocked' }
98
+ input :order_select_custom_response_template,
99
+ title: 'Custom response template for order-select hook requests',
100
+ description: %(
101
+ Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)
102
+ when responding to hook invocations. If no types are selected, Inferno will mock and return
103
+ an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type)
104
+ response for this secondary hook.
105
+ ),
106
+ type: 'textarea',
107
+ optional: true,
108
+ enable_when: { input_name: 'order_select_response_approach', value: 'custom' }
109
+ output :continuation_url
110
+
111
+ run do
112
+ identifier = cds_jwt_iss
113
+ continuation_url = "#{resume_pass_url}?token=#{identifier}"
114
+ output(continuation_url:)
115
+
116
+ wait(
117
+ identifier:,
118
+ message: %(
119
+ **Order Select CDS Service Test**:
120
+
121
+ Invoke the order-select hook and send requests to:
122
+
123
+ `#{order_select_url}`
124
+
125
+ Inferno will process the requests and return CDS cards if successful.
126
+
127
+ [Click here](#{continuation_url}) when you have finished submitting
128
+ requests.
129
+ )
130
+ )
131
+ end
132
+ end
133
+ end
134
+ end