davinci_crd_test_kit 0.12.2 → 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 +59 -2
  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 +308 -101
  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 -75
  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 -41
  277. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +0 -39
  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 -41
  280. data/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +0 -60
  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 -44
  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 -185
  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,75 +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
17
- implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html):
18
- * [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book)
19
- * [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)
20
- * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)
21
- * [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)
22
- * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)
23
- * [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign)
24
-
25
- Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which
26
- verify the incoming hook requests conform to the specific hook requirements specified the
27
- CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/).
28
-
29
- Each hook group tests the following:
30
- * If the CRD Client can invoke the specific hook service request
31
- * 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)
32
- * 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)
33
- * 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)
34
- * If the hook request's `context` field is valid according to the specific `context` requirements defined for
35
- each hook type
36
- * OPTIONAL: If the incoming hook contains the optional `prefetch` field with valid resources
37
- * If the client can properly display the cards returned as a result of the hook request
38
-
39
- Note: In order to successfully return a `Coverage Information` system action, a Coverage resource must either be
40
- provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for
41
- the patient provided in the service request.
42
- DESCRIPTION
43
- id :crd_client_hooks
44
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149'
45
-
46
- input :cds_jwt_iss,
47
- title: 'CRD JWT Issuer',
48
- description: %(
49
- Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`
50
- header of all requests. Run or re-run the **Client Registration** group to set or
51
- change this value.
52
- ),
53
- locked: true
54
-
55
- input_order :cds_jwt_iss, :cds_jwk_set
56
-
57
- group from: :crd_client_appointment_book,
58
- optional: true
59
-
60
- group from: :crd_client_encounter_start,
61
- optional: true
62
-
63
- group from: :crd_client_encounter_discharge,
64
- optional: true
65
-
66
- group from: :crd_client_order_select,
67
- optional: true
68
-
69
- group from: :crd_client_order_dispatch,
70
- optional: true
71
-
72
- group from: :crd_client_order_sign,
73
- optional: true
74
- end
75
- 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,41 +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:
14
- 'Provide a list of resources to create. e.g., [json_resource_1, json_resource_2]'
15
-
16
- def resource_type
17
- config.options[:resource_type]
18
- end
19
-
20
- run do
21
- assert_valid_json(create_resources)
22
- create_resources_list = JSON.parse(create_resources)
23
- skip_if(!create_resources_list.is_a?(Array), 'Resources to create not inputted in list format, skipping test.')
24
-
25
- valid_create_resources =
26
- create_resources_list
27
- .compact_blank
28
- .map { |resource| FHIR.from_contents(resource.to_json) }
29
- .select { |resource| resource.resourceType == resource_type }
30
- .select { |resource| resource_is_valid?(resource:) }
31
-
32
- skip_if(valid_create_resources.blank?,
33
- %(No valid #{resource_type} resources were provided to send in Create requests, skipping test.))
34
-
35
- valid_create_resources.each do |create_resource|
36
- fhir_create(create_resource)
37
- assert_response_status(201)
38
- end
39
- end
40
- end
41
- end
@@ -1,39 +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
-
12
- def resource_type
13
- config.options[:resource_type]
14
- end
15
-
16
- def no_resources_skip_message
17
- "No #{resource_type} resource ids were provided, skipping test. "
18
- end
19
-
20
- def bad_resource_id_message(expected_id)
21
- "Expected resource to have id: `#{expected_id}`, but found `#{resource.id}`"
22
- end
23
-
24
- run do
25
- skip_if resource_ids.blank?, no_resources_skip_message
26
-
27
- resource_id_list = resource_ids.split(',').map(&:strip)
28
- assert resource_id_list.present?, "No #{resource_type} id provided."
29
-
30
- resource_id_list.each do |resource_id_to_read|
31
- fhir_read resource_type, resource_id_to_read, tags: [resource_type, 'read']
32
-
33
- assert_response_status(200)
34
- assert_resource_type(resource_type)
35
- assert resource.id.present? && resource.id == resource_id_to_read, bad_resource_id_message(resource_id_to_read)
36
- end
37
- end
38
- end
39
- end