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,195 +0,0 @@
1
- require_relative 'server_tests/service_call_test'
2
- require_relative 'server_tests/service_request_required_fields_validation_test'
3
- require_relative 'server_tests/service_request_context_validation_test'
4
- require_relative 'server_tests/service_request_optional_fields_validation_test'
5
- require_relative 'server_tests/service_response_validation_test'
6
- require_relative 'server_tests/card_optional_fields_validation_test'
7
- require_relative 'server_tests/external_reference_card_validation_test'
8
- require_relative 'server_tests/launch_smart_app_card_validation_test'
9
- require_relative 'server_tests/instructions_card_received_test'
10
- require_relative 'server_tests/propose_alternate_request_card_validation_test'
11
- require_relative 'server_tests/additional_orders_validation_test'
12
- require_relative 'server_tests/form_completion_response_validation_test'
13
- require_relative 'server_tests/create_or_update_coverage_info_response_validation_test'
14
- require_relative 'tags'
15
-
16
- module DaVinciCRDTestKit
17
- class ServerOrderSelectGroup < Inferno::TestGroup
18
- title 'order-select'
19
- id :crd_server_order_select
20
- description %(
21
- This group of tests invokes the order-select hook and ensures that
22
- the user-provided requests are valid as per the requirements described
23
- in the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
24
- and the [CDS Hooks specification section on order-select context](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/).
25
- It also ensures that the contents of the server's response are valid as per the requirements described in
26
- the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
27
- and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response).
28
-
29
- This group includes tests to validate the following CRD response types:
30
- - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\
31
- - optional
32
- - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional
33
- - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\
34
- - optional
35
- - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional
36
- - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional
37
- - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) -
38
- optional
39
- - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) -
40
- optional
41
- - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) -
42
- optional
43
- )
44
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@208'
45
-
46
- config options: { hook_name: ORDER_SELECT_TAG }
47
- run_as_group
48
-
49
- test from: :crd_service_call_test,
50
- config: {
51
- inputs: {
52
- service_ids: {
53
- name: :order_select_service_ids,
54
- title: 'Service id for the service that implements the `order-select` hook'
55
- },
56
- service_request_bodies: {
57
- name: :order_select_request_bodies,
58
- title: 'Request body or bodies for invoking the `order-select` hook'
59
- }
60
- }
61
- }
62
- test from: :crd_service_request_required_fields_validation,
63
- config: {
64
- outputs: {
65
- contexts: {
66
- name: :order_select_contexts
67
- }
68
- }
69
- }
70
- test from: :crd_service_request_context_validation,
71
- config: {
72
- inputs: {
73
- contexts: {
74
- name: :order_select_contexts
75
- }
76
- }
77
- }
78
- test from: :crd_service_request_optional_fields_validation
79
- test from: :crd_service_response_validation,
80
- config: {
81
- outputs: {
82
- valid_cards: {
83
- name: :order_select_valid_cards
84
- },
85
- valid_system_actions: {
86
- name: :order_select_valid_system_actions
87
- }
88
- }
89
- }
90
- test from: :crd_card_optional_fields_validation,
91
- config: {
92
- inputs: {
93
- valid_cards: {
94
- name: :order_select_valid_cards
95
- }
96
- },
97
- outputs: {
98
- valid_cards_with_links: {
99
- name: :order_select_valid_cards_with_links
100
- },
101
- valid_cards_with_suggestions: {
102
- name: :order_select_valid_cards_with_suggestions
103
- }
104
- }
105
- }
106
- test from: :crd_external_reference_card_validation,
107
- config: {
108
- inputs: {
109
- valid_cards_with_links: {
110
- name: :order_select_valid_cards_with_links
111
- }
112
- }
113
- }
114
- test from: :crd_launch_smart_app_card_validation,
115
- config: {
116
- inputs: {
117
- valid_cards_with_links: {
118
- name: :order_select_valid_cards_with_links
119
- }
120
- }
121
- }
122
- test from: :crd_valid_instructions_card_received,
123
- config: {
124
- inputs: {
125
- valid_cards: {
126
- name: :order_select_valid_cards
127
- }
128
- }
129
- }
130
- test from: :crd_coverage_info_system_action_received,
131
- optional: true,
132
- config: {
133
- inputs: {
134
- valid_system_actions: {
135
- name: :order_select_valid_system_actions
136
- }
137
- },
138
- outputs: {
139
- coverage_info: {
140
- name: :order_select_coverage_info
141
- }
142
- }
143
- }
144
- test from: :crd_coverage_info_system_action_validation,
145
- optional: true,
146
- config: {
147
- inputs: {
148
- coverage_info: {
149
- name: :order_select_coverage_info
150
- }
151
- }
152
- }
153
- test from: :crd_propose_alternate_request_card_validation,
154
- config: {
155
- inputs: {
156
- valid_cards_with_suggestions: {
157
- name: :order_select_valid_cards_with_suggestions
158
- },
159
- contexts: {
160
- name: :order_select_contexts
161
- }
162
- }
163
- }
164
- test from: :crd_additional_orders_card_validation,
165
- config: {
166
- inputs: {
167
- valid_cards_with_suggestions: {
168
- name: :order_select_valid_cards_with_suggestions
169
- }
170
- }
171
- }
172
- test from: :crd_request_form_completion_response_validation,
173
- config: {
174
- inputs: {
175
- valid_system_actions: {
176
- name: :order_select_valid_system_actions
177
- },
178
- valid_cards_with_suggestions: {
179
- name: :order_select_valid_cards_with_suggestions
180
- }
181
- }
182
- }
183
- test from: :crd_create_or_update_coverage_info_response_validation,
184
- config: {
185
- inputs: {
186
- valid_system_actions: {
187
- name: :order_select_valid_system_actions
188
- },
189
- valid_cards_with_suggestions: {
190
- name: :order_select_valid_cards_with_suggestions
191
- }
192
- }
193
- }
194
- end
195
- end
@@ -1,201 +0,0 @@
1
- require_relative 'server_tests/service_call_test'
2
- require_relative 'server_tests/service_request_required_fields_validation_test'
3
- require_relative 'server_tests/service_request_context_validation_test'
4
- require_relative 'server_tests/service_request_optional_fields_validation_test'
5
- require_relative 'server_tests/service_response_validation_test'
6
- require_relative 'server_tests/card_optional_fields_validation_test'
7
- require_relative 'server_tests/external_reference_card_validation_test'
8
- require_relative 'server_tests/launch_smart_app_card_validation_test'
9
- require_relative 'server_tests/instructions_card_received_test'
10
- require_relative 'server_tests/coverage_information_system_action_received_test'
11
- require_relative 'server_tests/coverage_information_system_action_validation_test'
12
- require_relative 'server_tests/propose_alternate_request_card_validation_test'
13
- require_relative 'server_tests/additional_orders_validation_test'
14
- require_relative 'server_tests/form_completion_response_validation_test'
15
- require_relative 'server_tests/create_or_update_coverage_info_response_validation_test'
16
- require_relative 'tags'
17
-
18
- module DaVinciCRDTestKit
19
- class ServerOrderSignGroup < Inferno::TestGroup
20
- title 'order-sign'
21
- id :crd_server_order_sign
22
- description %(
23
- This group of tests invokes the order-sign hook and ensures that
24
- the user-provided requests are valid as per the requirements described
25
- in the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
26
- and the [CDS Hooks specification section on order-sign context](https://cds-hooks.hl7.org/hooks/order-sign/2023SepSTU1Ballot/order-sign/).
27
- It also ensures that the contents of the server's response are valid as per the requirements described in
28
- the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
29
- and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response).
30
-
31
- The [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
32
- states that "servers SHALL, at minimum, support returning and processing the Coverage Information
33
- system action for all invocations of this hook."
34
-
35
- This group includes tests to validate the following CRD response types:
36
- - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\
37
- - optional
38
- - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
39
- - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\
40
- - optional
41
- - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional
42
- - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional
43
- - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) -
44
- optional
45
- - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) -
46
- optional
47
- - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) -
48
- optional
49
- )
50
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168',
51
- 'hl7.fhir.us.davinci-crd_2.0.1@217', 'hl7.fhir.us.davinci-crd_2.0.1@226'
52
-
53
- config options: { hook_name: ORDER_SIGN_TAG }
54
- run_as_group
55
-
56
- test from: :crd_service_call_test,
57
- config: {
58
- inputs: {
59
- service_ids: {
60
- name: :order_sign_service_ids,
61
- title: 'Service id for the service that implements the `order-sign` hook'
62
- },
63
- service_request_bodies: {
64
- name: :order_sign_request_bodies,
65
- title: 'Request body or bodies for invoking the `order-sign` hook'
66
- }
67
- }
68
- }
69
-
70
- test from: :crd_service_request_required_fields_validation,
71
- config: {
72
- outputs: {
73
- contexts: {
74
- name: :order_sign_contexts
75
- }
76
- }
77
- }
78
- test from: :crd_service_request_context_validation,
79
- config: {
80
- inputs: {
81
- contexts: {
82
- name: :order_sign_contexts
83
- }
84
- }
85
- }
86
- test from: :crd_service_request_optional_fields_validation
87
- test from: :crd_service_response_validation,
88
- config: {
89
- outputs: {
90
- valid_cards: {
91
- name: :order_sign_valid_cards
92
- },
93
- valid_system_actions: {
94
- name: :order_sign_valid_system_actions
95
- }
96
- }
97
- }
98
- test from: :crd_card_optional_fields_validation,
99
- config: {
100
- inputs: {
101
- valid_cards: {
102
- name: :order_sign_valid_cards
103
- }
104
- },
105
- outputs: {
106
- valid_cards_with_links: {
107
- name: :order_sign_valid_cards_with_links
108
- },
109
- valid_cards_with_suggestions: {
110
- name: :order_sign_valid_cards_with_suggestions
111
- }
112
- }
113
- }
114
- test from: :crd_external_reference_card_validation,
115
- config: {
116
- inputs: {
117
- valid_cards_with_links: {
118
- name: :order_sign_valid_cards_with_links
119
- }
120
- }
121
- }
122
- test from: :crd_launch_smart_app_card_validation,
123
- config: {
124
- inputs: {
125
- valid_cards_with_links: {
126
- name: :order_sign_valid_cards_with_links
127
- }
128
- }
129
- }
130
- test from: :crd_valid_instructions_card_received,
131
- config: {
132
- inputs: {
133
- valid_cards: {
134
- name: :order_sign_valid_cards
135
- }
136
- }
137
- }
138
- test from: :crd_coverage_info_system_action_received,
139
- config: {
140
- inputs: {
141
- valid_system_actions: {
142
- name: :order_sign_valid_system_actions
143
- }
144
- },
145
- outputs: {
146
- coverage_info: {
147
- name: :order_sign_coverage_info
148
- }
149
- }
150
- }
151
- test from: :crd_coverage_info_system_action_validation,
152
- config: {
153
- inputs: {
154
- coverage_info: {
155
- name: :order_sign_coverage_info
156
- }
157
- }
158
- }
159
- test from: :crd_propose_alternate_request_card_validation,
160
- config: {
161
- inputs: {
162
- valid_cards_with_suggestions: {
163
- name: :order_sign_valid_cards_with_suggestions
164
- },
165
- contexts: {
166
- name: :order_sign_contexts
167
- }
168
- }
169
- }
170
- test from: :crd_additional_orders_card_validation,
171
- config: {
172
- inputs: {
173
- valid_cards_with_suggestions: {
174
- name: :order_sign_valid_cards_with_suggestions
175
- }
176
- }
177
- }
178
- test from: :crd_request_form_completion_response_validation,
179
- config: {
180
- inputs: {
181
- valid_system_actions: {
182
- name: :order_sign_valid_system_actions
183
- },
184
- valid_cards_with_suggestions: {
185
- name: :order_sign_valid_cards_with_suggestions
186
- }
187
- }
188
- }
189
- test from: :crd_create_or_update_coverage_info_response_validation,
190
- config: {
191
- inputs: {
192
- valid_system_actions: {
193
- name: :order_sign_valid_system_actions
194
- },
195
- valid_cards_with_suggestions: {
196
- name: :order_sign_valid_cards_with_suggestions
197
- }
198
- }
199
- }
200
- end
201
- end
@@ -1,26 +0,0 @@
1
- require_relative 'server_tests/external_reference_card_across_hooks_validation_test'
2
- require_relative 'server_tests/instructions_card_received_across_hooks_test'
3
- require_relative 'server_tests/coverage_information_system_action_across_hooks_validation_test'
4
-
5
- module DaVinciCRDTestKit
6
- class ServerRequiredCardResponseValidationGroup < Inferno::TestGroup
7
- title 'Required Card Response Validation'
8
- description %(
9
- This group contains tests to verify the presence and validity of required response types
10
- across all hooks invoked. As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types),
11
- CRD Servers SHALL, at minimum, demonstrate an ability to return the following response types:
12
- - Coverage Information System Action
13
- - External Reference Card
14
- - Instructions Card
15
- )
16
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@247', 'hl7.fhir.us.davinci-crd_2.0.1@248',
17
- 'hl7.fhir.us.davinci-crd_2.0.1@249'
18
-
19
- id :crd_server_required_card_response_validation
20
- run_as_group
21
-
22
- test from: :crd_external_reference_card_across_hooks_validation
23
- test from: :crd_valid_instructions_card_received_across_hooks
24
- test from: :crd_coverage_info_system_action_across_hooks_validation
25
- end
26
- end
@@ -1,68 +0,0 @@
1
- require_relative '../test_helper'
2
- require_relative '../server_hook_helper'
3
- require_relative '../suggestion_actions_validation'
4
-
5
- module DaVinciCRDTestKit
6
- class AdditionalOrdersValidationTest < Inferno::Test
7
- include DaVinciCRDTestKit::TestHelper
8
- include DaVinciCRDTestKit::SuggestionActionsValidation
9
- include DaVinciCRDTestKit::ServerHookHelper
10
-
11
- title 'Valid Additional Orders as companions/prerequisites cards received'
12
- id :crd_additional_orders_card_validation
13
- description %(
14
- This test validates that an [Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)
15
- card was received. It does so by:
16
- - Filtering cards with the following criteria:
17
- - For each suggestion in the card's suggestions array, all actions have a type of 'create'
18
- and the action's resource type is one of the expected types: CommunicationRequest, Device,
19
- DeviceRequest, Medication, MedicationRequest, NutritionOrder, ServiceRequest, or VisionPrescription.
20
- - Then, for each valid Additional Orders card retrieved, verifying that each action within the
21
- card's suggestions complies with their respective profiles as specified in the
22
- [CRD IG section on Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order):
23
- - [crd-profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html)
24
- - [crd-profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html)
25
- - [crd-profile-deviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html)
26
- - [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html)
27
- - [crd-profile-medicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html)
28
- - [crd-profile-nutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html)
29
- - [crd-profile-serviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)
30
- - [crd-profile-visionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html).
31
-
32
- The test will skip if no Additional Orders cards are found.
33
- )
34
-
35
- optional
36
- input :valid_cards_with_suggestions
37
-
38
- EXPECTED_RESOURCE_TYPES = %w[
39
- CommunicationRequest Device DeviceRequest Medication
40
- MedicationRequest NutritionOrder ServiceRequest
41
- VisionPrescription
42
- ].freeze
43
-
44
- def additional_orders_card?(card)
45
- card['suggestions'].all? do |suggestion|
46
- actions = suggestion['actions']
47
- actions&.all? do |action|
48
- action['type'] == 'create' && action_resource_type_check(action, EXPECTED_RESOURCE_TYPES)
49
- end
50
- end
51
- end
52
-
53
- run do
54
- parsed_cards = parse_json(valid_cards_with_suggestions)
55
- additional_orders_cards = parsed_cards.filter { |card| additional_orders_card?(card) }
56
- skip_if additional_orders_cards.blank?,
57
- "#{tested_hook_name} hook response does not include Additional Orders as companion/prerequisite cards."
58
-
59
- additional_orders_cards.each do |card|
60
- card['suggestions'].each do |suggestion|
61
- actions_check(suggestion['actions'])
62
- end
63
- end
64
-
65
- no_error_validation('Some companions/prerequisites Additional Order cards are not valid.')
66
- end
67
- end
68
- end
@@ -1,47 +0,0 @@
1
- require_relative '../test_helper'
2
- require_relative '../cards_validation'
3
-
4
- module DaVinciCRDTestKit
5
- class CardOptionalFieldsValidationTest < Inferno::Test
6
- include DaVinciCRDTestKit::TestHelper
7
- include DaVinciCRDTestKit::CardsValidation
8
-
9
- title 'Cards contain valid optional fields'
10
- id :crd_card_optional_fields_validation
11
- description %(
12
- This test checks for the presence and validity of optional fields in a card,
13
- but only if the card's required fields are valid. As specified in the
14
- [CDS Hooks specification section on Card Attributes](https://cds-hooks.hl7.org/2.0/#card-attributes),
15
- the optional fields include `uuid`, `detail`, `suggestions`, `overrideReasons`, and `links`.
16
-
17
- Additionally, the test validates the presence of the conditional field `selectionBehavior`
18
- only if the `suggestions` field is present.
19
- )
20
- optional
21
- input :valid_cards
22
- output :valid_cards_with_links, :valid_cards_with_suggestions
23
-
24
- def cards_with_suggestions
25
- @cards_with_suggestions ||= []
26
- end
27
-
28
- def cards_with_links
29
- @cards_with_links ||= []
30
- end
31
-
32
- run do
33
- parsed_cards = parse_json(valid_cards)
34
- parsed_cards.each do |card|
35
- if valid_card_with_optionals?(card)
36
- cards_with_links << card if card['links']
37
- cards_with_suggestions << card if card['suggestions']
38
- end
39
- end
40
-
41
- output valid_cards_with_links: cards_with_links.to_json
42
- output valid_cards_with_suggestions: cards_with_suggestions.to_json
43
-
44
- no_error_validation('Some cards with valid required fields have invalid optional fields.')
45
- end
46
- end
47
- end
@@ -1,32 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- module DaVinciCRDTestKit
4
- class CoverageInformationSystemActionAcrossHooksValidationTest < Inferno::Test
5
- include DaVinciCRDTestKit::TestHelper
6
-
7
- title 'Valid Coverage Information system actions received across all hooks'
8
- id :crd_coverage_info_system_action_across_hooks_validation
9
- description %(
10
- This test verifies the presence of valid [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
11
- system action returned by CRD services across all hooks invoked. It verifies the following for each action:
12
- - The action type is `update`.
13
- - The resource within the action conforms its respective FHIR profile.
14
-
15
- Additionally, the test examines the `coverage-info` extensions within the resource to ensure that:
16
- - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids`
17
- (if present).
18
- - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids`
19
- (if present).
20
-
21
- The test will be skipped if no valid Coverage Information system actions are returned across all hooks.
22
- )
23
-
24
- run do
25
- verify_at_least_one_test_passes(
26
- self.class.parent.parent.groups,
27
- 'crd_coverage_info_system_action_validation',
28
- 'None of the hooks invoked returned valid Coverage Info system actions.'
29
- )
30
- end
31
- end
32
- end
@@ -1,63 +0,0 @@
1
- require_relative '../test_helper'
2
- require_relative '../server_hook_helper'
3
-
4
- module DaVinciCRDTestKit
5
- class CoverageInformationSystemActionReceivedTest < Inferno::Test
6
- include DaVinciCRDTestKit::TestHelper
7
- include DaVinciCRDTestKit::ServerHookHelper
8
-
9
- title 'Coverage Information system action was received'
10
- id :crd_coverage_info_system_action_received
11
- description %(
12
- This test validates that a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
13
- system action was returned. It does so by:
14
- - First checking for the presence of actions with a `resource` element of the following types:
15
- - For `appointment-book`: Appointment
16
- - For `order-sign` or `order-dispatch`: DeviceRequest, MedicationRequest, NutritionOrder,
17
- ServiceRequest, or VisionPrescription
18
- - Then, among the target actions, checking if their resource has the [coverage-information extension](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information).
19
- )
20
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@272', 'hl7.fhir.us.davinci-crd_2.0.1@273',
21
- 'hl7.fhir.us.davinci-crd_2.0.1@274', 'hl7.fhir.us.davinci-crd_2.0.1@275',
22
- 'hl7.fhir.us.davinci-crd_2.0.1@276', 'hl7.fhir.us.davinci-crd_2.0.1@277'
23
-
24
- input :valid_system_actions, :invoked_hook
25
- output :coverage_info
26
-
27
- def resources_by_hook
28
- shared_resources = [
29
- 'DeviceRequest', 'MedicationRequest', 'NutritionOrder',
30
- 'ServiceRequest', 'VisionPrescription'
31
- ]
32
- {
33
- 'appointment-book' => ['Appointment'],
34
- 'order-sign' => shared_resources,
35
- 'order-dispatch' => shared_resources,
36
- 'order-select' => shared_resources,
37
- 'encounter-start' => ['Encounter'],
38
- 'encounter-discharge' => ['Encounter']
39
- }
40
- end
41
-
42
- run do
43
- parsed_actions = parse_json(valid_system_actions)
44
- target_resources = resources_by_hook[invoked_hook]
45
-
46
- target_actions = parsed_actions.select do |action|
47
- resource = FHIR.from_contents(action['resource'].to_json)
48
- target_resources.include?(resource&.resourceType)
49
- end
50
-
51
- coverage_info_system_actions = target_actions.select do |action|
52
- resource = FHIR.from_contents(action['resource'].to_json)
53
- coverage_info_ext_url = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information'
54
- resource.extension.any? { |extension| extension.url == coverage_info_ext_url }
55
- end
56
-
57
- assert coverage_info_system_actions.present?,
58
- "Coverage Information system action was not returned in the #{tested_hook_name} hook response."
59
-
60
- output coverage_info: coverage_info_system_actions.to_json
61
- end
62
- end
63
- end