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,74 +0,0 @@
1
- require_relative 'client_tests/client_appointment_book_group'
2
- require_relative 'client_tests/client_encounter_discharge_group'
3
- require_relative 'client_tests/client_encounter_start_group'
4
- require_relative 'client_tests/client_order_dispatch_group'
5
- require_relative 'client_tests/client_order_select_group'
6
- require_relative 'client_tests/client_order_sign_group'
7
-
8
- require_relative 'jwt_helper'
9
- require_relative 'urls'
10
-
11
- module DaVinciCRDTestKit
12
- class ClientHooksGroup < Inferno::TestGroup
13
- title 'Hooks'
14
- description <<~DESCRIPTION
15
- This Group contains tests which verify that valid hook requests can be made for each of the following
16
- [six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html):
17
- * [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
18
- * [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
19
- * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
20
- * [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
21
- * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
22
- * [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
23
-
24
- Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which
25
- verify the incoming hook requests conform to the specific hook requirements specified the
26
- CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/).
27
-
28
- Each hook group tests the following:
29
- * If the CRD Client can invoke the specific hook service request
30
- * If the incoming hook request is properly authorized with a JWT Bearer token according to the [CDS Hooks authorization requirements](https://cds-hooks.hl7.org/2.0/#trusting-cds-clients)
31
- * If the incoming hook request contains the required fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
32
- * OPTIONAL: If the incoming hook request contains the optional fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1)
33
- * If the hook request's `context` field is valid according to the specific `context` requirements defined for
34
- each hook type
35
- * OPTIONAL: If the incoming hook contains the optional `prefetch` field with valid resources
36
- * If the client can properly display the cards returned as a result of the hook request
37
-
38
- Note: In order to successfully return a `Coverage Information` system action, a Coverage resource must either be
39
- provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for
40
- the patient provided in the service request.
41
- DESCRIPTION
42
- id :crd_client_hooks
43
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149'
44
-
45
- input :cds_jwt_iss,
46
- title: 'CRD JWT Issuer',
47
- description: %(
48
- Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
49
- header of all requests. Run or re-run the **Client Registration** group to set or
50
- change this value.
51
- ),
52
- locked: true
53
-
54
- input_order :cds_jwt_iss, :cds_jwk_set
55
-
56
- group from: :crd_client_appointment_book,
57
- optional: true
58
-
59
- group from: :crd_client_encounter_start,
60
- optional: true
61
-
62
- group from: :crd_client_encounter_discharge,
63
- optional: true
64
-
65
- group from: :crd_client_order_select,
66
- optional: true
67
-
68
- group from: :crd_client_order_dispatch,
69
- optional: true
70
-
71
- group from: :crd_client_order_sign,
72
- optional: true
73
- end
74
- end
@@ -1,93 +0,0 @@
1
- require_relative '../urls'
2
-
3
- module DaVinciCRDTestKit
4
- class AppointmentBookReceiveRequestTest < Inferno::Test
5
- include URLs
6
-
7
- id :crd_appointment_book_request
8
- title 'Request received for appointment-book hook'
9
- description %(
10
- This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
11
- hook requests and responds to the client with the response types selected as an input. This hook is a 'primary'
12
- 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)
13
- system action for these hooks, even if the response indicates that further information is needed or that the
14
- level of detail provided is insufficient to determine coverage.
15
- )
16
- config options: { accepts_multiple_requests: true }
17
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171',
18
- 'hl7.fhir.us.davinci-crd_2.0.1@183', '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
-
21
- input :cds_jwt_iss,
22
- title: 'CRD JWT Issuer',
23
- description: %(
24
- Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
25
- header of all requests. Run or re-run the **Client Registration** group to set or
26
- change this value.
27
- ),
28
- locked: true
29
- input :appointment_book_selected_response_types,
30
- title: 'Response types to return from appointment-book hook requests',
31
- description: %(
32
- Select the cards/action response types that the Inferno hook request endpoints will return. The default
33
- response type that will be returned for this hook is the `Coverage Information` card type.
34
- ),
35
- type: 'checkbox',
36
- default: ['coverage_information', 'external_reference', 'instructions'],
37
- optional: true,
38
- options: {
39
- list_options: [
40
- {
41
- label: 'External Reference',
42
- value: 'external_reference'
43
- },
44
- {
45
- label: 'Instructions',
46
- value: 'instructions'
47
- },
48
- {
49
- label: 'Coverage Information',
50
- value: 'coverage_information'
51
- },
52
- {
53
- label: 'Request Form Completion',
54
- value: 'request_form_completion'
55
- },
56
- {
57
- label: 'Create/Update Coverage Information',
58
- value: 'create_update_coverage_info'
59
- },
60
- {
61
- label: 'Launch SMART Application',
62
- value: 'launch_smart_app'
63
- }
64
- ]
65
- }
66
- input :appointment_book_custom_response,
67
- title: 'Custom response for appointment-book hook requests',
68
- description: %(
69
- A JSON string may be provided here to replace the normal response
70
- from the hook request endpoint
71
- ),
72
- type: 'textarea',
73
- optional: true
74
-
75
- run do
76
- wait(
77
- identifier: "appointment-book #{cds_jwt_iss}",
78
- message: %(
79
- **Appointment Book CDS Service Test**:
80
-
81
- Invoke the appointment-book hook and send requests to:
82
-
83
- `#{appointment_book_url}`
84
-
85
- Inferno will process the requests and return CDS cards if successful.
86
-
87
- [Click here](#{resume_pass_url}?token=appointment-book%20#{cds_jwt_iss}) when you have finished
88
- submitting requests.
89
- )
90
- )
91
- end
92
- end
93
- end
@@ -1,75 +0,0 @@
1
- require_relative 'appointment_book_receive_request_test'
2
- require_relative 'client_display_cards_attest'
3
- require_relative 'decode_auth_token_test'
4
- require_relative 'hook_request_optional_fields_test'
5
- require_relative 'hook_request_required_fields_test'
6
- require_relative 'hook_request_valid_context_test'
7
- require_relative 'hook_request_valid_prefetch_test'
8
- require_relative 'retrieve_jwks_test'
9
- require_relative 'submitted_response_validation'
10
- require_relative 'token_header_test'
11
- require_relative 'token_payload_test'
12
-
13
- module DaVinciCRDTestKit
14
- class ClientAppointmentBookGroup < Inferno::TestGroup
15
- title 'appointment-book'
16
- id :crd_client_appointment_book
17
- description <<~DESCRIPTION
18
- The appointment-book hook is invoked when the user is scheduling one or more future encounters/visits for the
19
- patient. These tests are based on the following criteria:
20
- * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book),
21
- which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID
22
- fields
23
- * Specific [appointment-book `context` requirements](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/)
24
- defined in the CDS Hooks specification
25
-
26
- This version of the CRD implementation guide refers to version 1.0 of the hook.
27
- DESCRIPTION
28
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@172'
29
-
30
- run_as_group
31
-
32
- input_order :cds_jwt_iss, :cds_jwk_set
33
-
34
- config(
35
- inputs: {
36
- auth_token_headers_json: { name: :appointment_book_auth_token_headers_json },
37
- auth_tokens: { name: :appointment_book_auth_tokens },
38
- auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json },
39
- client_access_token: { name: :appointment_book_client_access_token },
40
- client_fhir_server: { name: :appointment_book_client_fhir_server },
41
- crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json },
42
- custom_response: { name: :appointment_book_custom_response },
43
- selected_response_types: { name: :appointment_book_selected_response_types }
44
- },
45
- outputs: {
46
- auth_token_headers_json: { name: :appointment_book_auth_token_headers_json },
47
- auth_token_payloads_json: { name: :appointment_book_auth_token_payloads_json },
48
- auth_tokens: { name: :appointment_book_auth_tokens },
49
- auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json },
50
- client_access_token: { name: :appointment_book_client_access_token },
51
- client_fhir_server: { name: :appointment_book_client_fhir_server },
52
- crd_jwks_json: { name: :appointment_book_crd_jwks_json },
53
- crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }
54
- },
55
- options: {
56
- hook_name: 'appointment-book',
57
- hook_path: APPOINTMENT_BOOK_PATH
58
- }
59
- )
60
-
61
- test from: :crd_submitted_response_validation
62
- test from: :crd_appointment_book_request
63
- test from: :crd_decode_auth_token
64
- test from: :crd_retrieve_jwks
65
- test from: :crd_token_header
66
- test from: :crd_token_payload
67
- test from: :crd_hook_request_required_fields
68
- test from: :crd_hook_request_optional_fields
69
- test from: :crd_hook_request_valid_context do
70
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@286'
71
- end
72
- test from: :crd_hook_request_valid_prefetch
73
- test from: :crd_card_display_attest_test
74
- end
75
- end
@@ -1,48 +0,0 @@
1
- require_relative '../urls'
2
-
3
- module DaVinciCRDTestKit
4
- class ClientCardDisplayAttest < Inferno::Test
5
- include URLs
6
-
7
- id :crd_card_display_attest_test
8
- title 'Check that Cards returned are displayed to the user'
9
-
10
- input :selected_response_types,
11
- type: 'checkbox'
12
-
13
- def format_selected_response_types
14
- selected_response_types
15
- .map do |response_type|
16
- response_type_string =
17
- response_type.split('_')
18
- .map(&:capitalize)
19
- .join(' ')
20
- .prepend('- ')
21
- .sub('Smart', 'SMART')
22
- .sub('Create Update', 'Create/Update')
23
- .sub('Companions Prerequisites', 'Companions/Prerequisites')
24
- response_type_string
25
- end
26
- .join("\n")
27
- end
28
-
29
- run do
30
- identifier = SecureRandom.hex(32)
31
- wait(
32
- identifier:,
33
- message: <<~MESSAGE
34
- **Approval Workflow Test**:
35
-
36
- I attest that the following CDS response types were returned and that the client system displays
37
- each of the CDS Service Cards to the user:
38
-
39
- #{format_selected_response_types}
40
-
41
- [Click here](#{resume_pass_url}?token=#{identifier}) if the above statement is **true**.
42
-
43
- [Click here](#{resume_fail_url}?token=#{identifier}) if the above statement is **false**.
44
- MESSAGE
45
- )
46
- end
47
- end
48
- end
@@ -1,73 +0,0 @@
1
- require_relative 'encounter_discharge_receive_request_test'
2
- require_relative 'client_display_cards_attest'
3
- require_relative 'decode_auth_token_test'
4
- require_relative 'hook_request_optional_fields_test'
5
- require_relative 'hook_request_required_fields_test'
6
- require_relative 'hook_request_valid_context_test'
7
- require_relative 'hook_request_valid_prefetch_test'
8
- require_relative 'retrieve_jwks_test'
9
- require_relative 'submitted_response_validation'
10
- require_relative 'token_header_test'
11
- require_relative 'token_payload_test'
12
-
13
- module DaVinciCRDTestKit
14
- class ClientEncounterDischargeGroup < Inferno::TestGroup
15
- title 'encounter-discharge'
16
- id :crd_client_encounter_discharge
17
- description <<~DESCRIPTION
18
- The encounter-discharge hook is invoked when the user is performing the discharge process for an encounter where
19
- the notion of 'discharge' is relevant - typically an inpatient encounter. These tests are based on the
20
- following criteria:
21
- * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge),
22
- which includes the profiles that are expected to be used for the resources resolved to by `context`
23
- FHIR ID fields
24
- * Specific [encounter-discharge `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)
25
- defined in the CDS Hooks specification
26
-
27
- This version of the CRD implementation guide refers to version 1.0 of the hook.
28
- DESCRIPTION
29
-
30
- run_as_group
31
-
32
- input_order :cds_jwt_iss, :cds_jwk_set
33
-
34
- config(
35
- inputs: {
36
- auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json },
37
- auth_tokens: { name: :encounter_discharge_auth_tokens },
38
- auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json },
39
- client_access_token: { name: :encounter_discharge_client_access_token },
40
- client_fhir_server: { name: :encounter_discharge_client_fhir_server },
41
- crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json },
42
- custom_response: { name: :encounter_discharge_custom_response },
43
- selected_response_types: { name: :encounter_discharge_selected_response_types }
44
- },
45
- outputs: {
46
- auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json },
47
- auth_token_payloads_json: { name: :encounter_discharge_auth_token_payloads_json },
48
- auth_tokens: { name: :encounter_discharge_auth_tokens },
49
- auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json },
50
- client_access_token: { name: :encounter_discharge_client_access_token },
51
- client_fhir_server: { name: :encounter_discharge_client_fhir_server },
52
- crd_jwks_json: { name: :encounter_discharge_crd_jwks_json },
53
- crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }
54
- },
55
- options: {
56
- hook_name: 'encounter-discharge',
57
- hook_path: ENCOUNTER_DISCHARGE_PATH
58
- }
59
- )
60
-
61
- test from: :crd_submitted_response_validation
62
- test from: :crd_encounter_discharge_request
63
- test from: :crd_decode_auth_token
64
- test from: :crd_retrieve_jwks
65
- test from: :crd_token_header
66
- test from: :crd_token_payload
67
- test from: :crd_hook_request_required_fields
68
- test from: :crd_hook_request_optional_fields
69
- test from: :crd_hook_request_valid_context
70
- test from: :crd_hook_request_valid_prefetch
71
- test from: :crd_card_display_attest_test
72
- end
73
- end
@@ -1,73 +0,0 @@
1
- require_relative 'encounter_start_receive_request_test'
2
- require_relative 'client_display_cards_attest'
3
- require_relative 'decode_auth_token_test'
4
- require_relative 'hook_request_optional_fields_test'
5
- require_relative 'hook_request_required_fields_test'
6
- require_relative 'hook_request_valid_context_test'
7
- require_relative 'hook_request_valid_prefetch_test'
8
- require_relative 'retrieve_jwks_test'
9
- require_relative 'submitted_response_validation'
10
- require_relative 'token_header_test'
11
- require_relative 'token_payload_test'
12
-
13
- module DaVinciCRDTestKit
14
- class ClientEncounterStartGroup < Inferno::TestGroup
15
- title 'encounter-start'
16
- id :crd_client_encounter_start
17
- description <<~DESCRIPTION
18
- The encounter-start hook is invoked when the user is initiating a new encounter. These tests are based on the
19
- following criteria:
20
- * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start),
21
- which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID
22
- fields
23
- * Specific [encounter-start `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)
24
- defined in the CDS Hooks specification
25
-
26
- This version of the CRD implementation guide refers to version 1.0 of the hook.
27
- DESCRIPTION
28
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@187'
29
-
30
- run_as_group
31
-
32
- input_order :cds_jwt_iss, :cds_jwk_set
33
-
34
- config(
35
- inputs: {
36
- auth_token_headers_json: { name: :encounter_start_auth_token_headers_json },
37
- auth_tokens: { name: :encounter_start_auth_tokens },
38
- auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json },
39
- client_access_token: { name: :encounter_start_client_access_token },
40
- client_fhir_server: { name: :encounter_start_client_fhir_server },
41
- crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json },
42
- custom_response: { name: :encounter_start_custom_response },
43
- selected_response_types: { name: :encounter_start_selected_response_types }
44
- },
45
- outputs: {
46
- auth_token_headers_json: { name: :encounter_start_auth_token_headers_json },
47
- auth_token_payloads_json: { name: :encounter_start_auth_token_payloads_json },
48
- auth_tokens: { name: :encounter_start_auth_tokens },
49
- auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json },
50
- client_access_token: { name: :encounter_start_client_access_token },
51
- client_fhir_server: { name: :encounter_start_client_fhir_server },
52
- crd_jwks_json: { name: :encounter_start_crd_jwks_json },
53
- crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }
54
- },
55
- options: {
56
- hook_name: 'encounter-start',
57
- hook_path: ENCOUNTER_START_PATH
58
- }
59
- )
60
-
61
- test from: :crd_submitted_response_validation
62
- test from: :crd_encounter_start_request
63
- test from: :crd_decode_auth_token
64
- test from: :crd_retrieve_jwks
65
- test from: :crd_token_header
66
- test from: :crd_token_payload
67
- test from: :crd_hook_request_required_fields
68
- test from: :crd_hook_request_optional_fields
69
- test from: :crd_hook_request_valid_context
70
- test from: :crd_hook_request_valid_prefetch
71
- test from: :crd_card_display_attest_test
72
- end
73
- end
@@ -1,42 +0,0 @@
1
- module DaVinciCRDTestKit
2
- class ClientFHIRApiCreateTest < Inferno::Test
3
- id :crd_client_fhir_api_create_test
4
- title 'Create Interaction'
5
- description %(
6
- Verify that the CRD client supports the create interaction for the given resource. The capabilities required
7
- by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1
8
- )
9
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@74'
10
-
11
- input :create_resources,
12
- type: 'textarea',
13
- description: 'Provide a list of resources to create. e.g., [json_resource_1, json_resource_2]',
14
- optional: true
15
-
16
- def resource_type
17
- config.options[:resource_type]
18
- end
19
-
20
- run do
21
- skip_if create_resources.blank?, 'Provide a list of resources to create to run this test.'
22
- assert_valid_json(create_resources)
23
- create_resources_list = JSON.parse(create_resources)
24
- skip_if(!create_resources_list.is_a?(Array), 'Resources to create not inputted in list format, skipping test.')
25
-
26
- valid_create_resources =
27
- create_resources_list
28
- .compact_blank
29
- .map { |resource| FHIR.from_contents(resource.to_json) }
30
- .select { |resource| resource.resourceType == resource_type }
31
- .select { |resource| resource_is_valid?(resource:) }
32
-
33
- skip_if(valid_create_resources.blank?,
34
- %(No valid #{resource_type} resources were provided to send in Create requests, skipping test.))
35
-
36
- valid_create_resources.each do |create_resource|
37
- fhir_create(create_resource)
38
- assert_response_status(201)
39
- end
40
- end
41
- end
42
- end
@@ -1,40 +0,0 @@
1
- module DaVinciCRDTestKit
2
- class ClientFHIRApiReadTest < Inferno::Test
3
- id :crd_client_fhir_api_read_test
4
- title 'Read Interaction'
5
- description %(
6
- Verify that the CRD client supports the read interaction for the given resource. The capabilities required by
7
- each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1
8
- )
9
-
10
- input :resource_ids,
11
- optional: true
12
-
13
- def resource_type
14
- config.options[:resource_type]
15
- end
16
-
17
- def no_resources_skip_message
18
- "No #{resource_type} resource ids were provided, skipping test. "
19
- end
20
-
21
- def bad_resource_id_message(expected_id)
22
- "Expected resource to have id: `#{expected_id}`, but found `#{resource.id}`"
23
- end
24
-
25
- run do
26
- skip_if resource_ids.blank?, no_resources_skip_message
27
-
28
- resource_id_list = resource_ids.split(',').map(&:strip)
29
- assert resource_id_list.present?, "No #{resource_type} id provided."
30
-
31
- resource_id_list.each do |resource_id_to_read|
32
- fhir_read resource_type, resource_id_to_read, tags: [resource_type, 'read']
33
-
34
- assert_response_status(200)
35
- assert_resource_type(resource_type)
36
- assert resource.id.present? && resource.id == resource_id_to_read, bad_resource_id_message(resource_id_to_read)
37
- end
38
- end
39
- end
40
- end