davinci_crd_test_kit 0.14.0 → 0.14.2

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 (166) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/{inferno_crd_server_suite.json.erb → client_against_inferno_crd_server_suite.json.erb} +0 -33
  3. data/config/presets/{ri_crd_request_generator.json.erb → client_against_ri_crd_request_generator.json.erb} +1 -14
  4. data/config/presets/client_v221_against_inferno_crd_server_suite.json.erb +84 -0
  5. data/config/presets/client_v221_against_ri_br_provider.json.erb +31 -0
  6. data/config/presets/{ri_crd_request_generator.json_v221.json.erb → client_v221_against_ri_crd_request_generator.json.erb} +1 -1
  7. data/config/presets/{inferno_crd_client_suite.json.erb → server_against_inferno_crd_client_suite.json.erb} +0 -43
  8. data/config/presets/{ri_crd_server.json.erb → server_against_ri_crd_server.json.erb} +1 -44
  9. data/config/presets/{inferno_crd_client_suite_v221.json.erb → server_v221_against_inferno_crd_client_suite.json.erb} +48 -45
  10. data/config/presets/{inferno_crd_client_suite_prefetch_subset_v221.json.erb → server_v221_against_inferno_crd_client_suite_prefetch_subset.json.erb} +0 -46
  11. data/config/presets/server_v221_against_inferno_g31_suite.json.erb +49 -0
  12. data/lib/davinci_crd_test_kit/client/cross_hook_helper.rb +26 -0
  13. data/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb +7 -7
  14. data/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb +4 -1
  15. data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +70 -39
  16. data/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb +26 -7
  17. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
  18. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
  19. data/lib/davinci_crd_test_kit/client/endpoints/scenario_service_response.rb +54 -0
  20. data/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb +8 -27
  21. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb +35 -23
  22. data/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb +34 -21
  23. data/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json +20 -20
  24. data/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb +12 -10
  25. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb +12 -10
  26. data/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb +12 -10
  27. data/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb +5 -5
  28. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb +12 -10
  29. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb +12 -10
  30. data/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb +12 -10
  31. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb +3 -36
  32. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb +3 -36
  33. data/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb +3 -36
  34. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb +4 -13
  35. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb +3 -13
  36. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb +3 -13
  37. data/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb +3 -13
  38. data/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb +1 -1
  39. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/attestation_instructions.rb +10 -0
  40. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_authorized_scope_attestation_test.rb +45 -0
  41. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_coverage_based_invocation_attestation_test.rb +44 -0
  42. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_data_element_expectations_attestation_test.rb +44 -0
  43. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_hook_invocation_logging_attestation_test.rb +43 -0
  44. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_exposure_attestation_test.rb +43 -0
  45. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_must_support_use_attestation_test.rb +41 -0
  46. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_order_sign_support_attestation_test.rb +42 -0
  47. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_prefetch_key_omission_attestation_test.rb +42 -0
  48. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_resource_identifiers_attestation_test.rb +43 -0
  49. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_response_case_distinction_attestation_test.rb +43 -0
  50. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_security_and_privacy_attestation_test.rb +43 -0
  51. data/lib/davinci_crd_test_kit/client/v2.2.1/attestations/client_workflow_integration_attestation_test.rb +44 -0
  52. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb +1 -1
  53. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb +29 -18
  54. data/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb +35 -22
  55. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json +47 -47
  56. data/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json +50 -50
  57. data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +24 -15
  58. data/lib/davinci_crd_test_kit/client/v2.2.1/client_attestations_group.rb +49 -0
  59. data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb +22 -6
  60. data/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_interaction_group.rb +98 -0
  61. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +19 -11
  62. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +19 -11
  63. data/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb +14 -12
  64. data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +25 -5
  65. data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +3 -2
  66. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +23 -15
  67. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +19 -11
  68. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +23 -15
  69. data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
  70. data/lib/davinci_crd_test_kit/client/v2.2.1/client_scenarios_group.rb +26 -0
  71. data/lib/davinci_crd_test_kit/client/v2.2.1/client_self_pay_hook_group.rb +36 -0
  72. data/lib/davinci_crd_test_kit/client/v2.2.1/client_unknown_content_hook_group.rb +34 -0
  73. data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +24 -3
  74. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb +1 -1
  75. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb +4 -11
  76. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb +1 -9
  77. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb +6 -2
  78. data/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb +3 -12
  79. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb +8 -89
  80. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/base_hook_invocation_receive_request_test.rb +163 -0
  81. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/cross_hooks_receive_request_test.rb +97 -0
  82. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb +8 -90
  83. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb +8 -90
  84. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb +8 -98
  85. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb +8 -98
  86. data/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb +8 -98
  87. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb +10 -2
  88. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +11 -6
  89. data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
  90. data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_no_request_test.rb +30 -0
  91. data/lib/davinci_crd_test_kit/client/v2.2.1/self_pay/client_self_pay_workflow_test.rb +55 -0
  92. data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_attestation_test.rb +99 -0
  93. data/lib/davinci_crd_test_kit/client/v2.2.1/unknown_content/client_unknown_content_receive_request_test.rb +62 -0
  94. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb +1 -1
  95. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb +10 -2
  96. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb +1 -1
  97. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb +1 -1
  98. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +7 -1
  99. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb +1 -1
  100. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb +1 -1
  101. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb +1 -1
  102. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +54 -21
  103. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb +1 -1
  104. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb +6 -3
  105. data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +18 -0
  106. data/lib/davinci_crd_test_kit/cross_suite/logical_models_override_helper.rb +30 -13
  107. data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
  108. data/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb +2 -0
  109. data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +28 -28
  110. data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +211 -43
  111. data/lib/davinci_crd_test_kit/cross_suite/tags.rb +7 -0
  112. data/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx +0 -0
  113. data/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +6 -2
  114. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +107 -107
  115. data/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv +101 -97
  116. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +18 -18
  117. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +43 -39
  118. data/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx +0 -0
  119. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
  120. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
  121. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
  122. data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
  123. data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
  124. data/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb +1 -1
  125. data/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb +5 -5
  126. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
  127. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +165 -0
  128. data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
  129. data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
  130. data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +3 -2
  131. data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
  132. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
  133. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
  134. data/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb +5 -5
  135. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
  136. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
  137. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
  138. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
  139. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
  140. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
  141. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
  142. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
  143. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
  144. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
  145. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
  146. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
  147. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
  148. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
  149. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
  150. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
  151. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
  152. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
  153. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
  154. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
  155. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
  156. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
  157. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
  158. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
  159. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
  160. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
  161. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
  162. data/lib/davinci_crd_test_kit/version.rb +2 -2
  163. metadata +54 -16
  164. data/config/presets/inferno_crd_server_suite_v221.json.erb +0 -94
  165. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
  166. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +0 -65
@@ -14,6 +14,7 @@ require_relative 'verify_request/hook_request_data_fetch_verification_test'
14
14
  require_relative 'verify_response/inferno_response_validation'
15
15
  require_relative 'verify_response/client_display_cards_attest'
16
16
  require_relative 'verify_response/hook_response_support_coverage_information_test'
17
+ require_relative 'client_urls'
17
18
 
18
19
  module DaVinciCRDTestKit
19
20
  module V221
@@ -25,12 +26,18 @@ module DaVinciCRDTestKit
25
26
  the user is scheduling one or more future encounters/visits for the patient.
26
27
  The CRD IG places [additional constraints on the use of the appintment-book hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book),
27
28
  including the profiles that resources in each request must conform to.
29
+
30
+ Inferno's simulated `appointment-book` hook endpoints are available at:
31
+ - Complete Prefetch: `#{ClientURLs.base_url}#{APPOINTMENT_BOOK_PATH}`
32
+ - Subset Prefetch: `#{ClientURLs.base_url}#{APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH}`
28
33
  DESCRIPTION
29
34
  run_as_group
30
35
 
31
36
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
32
37
 
33
- input_order :cds_jwt_iss, :cds_jwk_set
38
+ input_order :appointment_book_response_approach,
39
+ :appointment_book_selected_response_types,
40
+ :appointment_book_custom_response_template
34
41
 
35
42
  config(
36
43
  inputs: {
@@ -53,7 +60,9 @@ module DaVinciCRDTestKit
53
60
  crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }
54
61
  },
55
62
  options: {
56
- hook_name: 'appointment-book'
63
+ hook_name: 'appointment-book',
64
+ crd_interaction_group: 'hooks-appointment-book',
65
+ include_in_cross_hook_analysis: true
57
66
  }
58
67
  )
59
68
 
@@ -63,11 +72,14 @@ module DaVinciCRDTestKit
63
72
  end
64
73
 
65
74
  group do
66
- title 'Authorization'
67
- test from: :crd_v221_decode_auth_token
68
- test from: :crd_v221_retrieve_jwks
69
- test from: :crd_v221_token_header
70
- test from: :crd_v221_token_payload
75
+ title 'Response Handling'
76
+
77
+ test from: :crd_v221_card_display_attest_test
78
+ test from: :crd_v221_inferno_response_validation
79
+ test from: :crd_v221_client_hook_response_support_coverage_information do
80
+ title 'Client supports the Coverage Information response type on the appointment-book hook'
81
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-26'
82
+ end
71
83
  end
72
84
 
73
85
  group do
@@ -88,14 +100,11 @@ module DaVinciCRDTestKit
88
100
  end
89
101
 
90
102
  group do
91
- title 'Response Handling'
92
-
93
- test from: :crd_v221_inferno_response_validation
94
- test from: :crd_v221_card_display_attest_test
95
- test from: :crd_v221_client_hook_response_support_coverage_information do
96
- title 'Client supports the Coverage Information response type on the appointment-book hook'
97
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-26'
98
- end
103
+ title 'Authorization'
104
+ test from: :crd_v221_decode_auth_token
105
+ test from: :crd_v221_retrieve_jwks
106
+ test from: :crd_v221_token_header
107
+ test from: :crd_v221_token_payload
99
108
  end
100
109
  end
101
110
  end
@@ -0,0 +1,49 @@
1
+ require_relative 'attestations/attestation_instructions'
2
+ require_relative 'attestations/client_authorized_scope_attestation_test'
3
+ require_relative 'attestations/client_coverage_based_invocation_attestation_test'
4
+ require_relative 'attestations/client_data_element_expectations_attestation_test'
5
+ require_relative 'attestations/client_hook_invocation_logging_attestation_test'
6
+ require_relative 'attestations/client_must_support_exposure_attestation_test'
7
+ require_relative 'attestations/client_must_support_use_attestation_test'
8
+ require_relative 'attestations/client_order_sign_support_attestation_test'
9
+ require_relative 'attestations/client_prefetch_key_omission_attestation_test'
10
+ require_relative 'attestations/client_resource_identifiers_attestation_test'
11
+ require_relative 'attestations/client_response_case_distinction_attestation_test'
12
+ require_relative 'attestations/client_security_and_privacy_attestation_test'
13
+ require_relative 'attestations/client_workflow_integration_attestation_test'
14
+
15
+ module DaVinciCRDTestKit
16
+ module V221
17
+ class CRDClientAttestationsGroup < Inferno::TestGroup
18
+ id :crd_v221_client_attestations
19
+ title 'Visual Inspection and Attestation'
20
+ description %(
21
+ Each test in this group asks the tester to confirm system conformance to one or more
22
+ **SHALL** requirements from the [CRD v2.2.1 Implementation Guide](https://hl7.org/fhir/us/davinci-crd/2.2.1)
23
+ or the [CDS Hooks specification](https://cds-hooks.hl7.org/2026Jan/en/).
24
+ The tester attests that the client system under test meets the statement by selecting "Yes",
25
+ and may record supporting details in the accompanying notes field. Selecting "No" fails the
26
+ test. Notes provided are recorded in the test result.
27
+
28
+ Testers are responsible for confirming that their system meets all requirements associated with a test
29
+ before selecting "Yes" on the attestation input with the same name as the test. The text of the
30
+ attested requirement(s) for each input can be reviewed by clicking the "View Specification Requirements" link
31
+ in the "About" tab of the test with the same name.
32
+ )
33
+ input_instructions ATTESTATION_INPUT_INSTRUCTIONS
34
+
35
+ test from: :crd_v221_security_and_privacy_attestation
36
+ test from: :crd_v221_response_case_distinction_attestation
37
+ test from: :crd_v221_data_element_expectations_attestation
38
+ test from: :crd_v221_resource_identifiers_attestation
39
+ test from: :crd_v221_must_support_exposure_attestation
40
+ test from: :crd_v221_workflow_integration_attestation
41
+ test from: :crd_v221_coverage_based_invocation_attestation
42
+ test from: :crd_v221_prefetch_key_omission_attestation
43
+ test from: :crd_v221_hook_invocation_logging_attestation
44
+ test from: :crd_v221_order_sign_support_attestation
45
+ test from: :crd_v221_authorized_scope_attestation
46
+ test from: :crd_v221_must_support_use_attestation
47
+ end
48
+ end
49
+ end
@@ -3,6 +3,7 @@ require_relative 'cross_hook/client_location_address_propagation_test'
3
3
  require_relative 'cross_hook/client_fhirpath_collection_as_comma_delimited_string_test'
4
4
  require_relative 'cross_hook/client_hook_instances_unique_test'
5
5
  require_relative 'cross_hook/client_prefetch_complete_and_subset_test'
6
+ require_relative 'client_cross_hook_interaction_group'
6
7
 
7
8
  module DaVinciCRDTestKit
8
9
  module V221
@@ -11,18 +12,33 @@ module DaVinciCRDTestKit
11
12
  id :crd_v221_client_cross_hook
12
13
  description <<~DESCRIPTION
13
14
  This group checks CRD requirements that pertain across all hooks
14
- rather than a specific one.
15
+ and hook requests rather than specific ones.
15
16
 
16
17
  These tests must be run after the tests in the "Hooks" group are run.
18
+ Clients may, but are not required to, make additional hook requests
19
+ during these tests to show additional features not demonstrated during
20
+ previous hook requests. Note that only the requests made during the
21
+ most recent execution of a given group will be included in the analysis.
17
22
  DESCRIPTION
18
23
 
19
24
  run_as_group
20
25
 
21
- test from: :crd_v221_client_card_must_support_coverage_information
22
- test from: :crd_v221_client_location_address_propagation
23
- test from: :crd_v221_client_fhir_path_collection_as_comma_delimited_string
24
- test from: :crd_v221_client_hook_instances_unique
25
- test from: :crd_v221_client_prefetch_complete_and_subset
26
+ group from: :crd_v221_client_cross_hook_interaction
27
+ group do
28
+ id :crd_v221_client_cross_hook_must_support
29
+ title 'Must Support'
30
+
31
+ test from: :crd_v221_client_card_must_support_coverage_information
32
+ end
33
+ group do
34
+ id :crd_v221_client_cross_hook_additional_capabilities
35
+ title 'Additional Capabilities'
36
+
37
+ test from: :crd_v221_client_location_address_propagation
38
+ test from: :crd_v221_client_fhir_path_collection_as_comma_delimited_string
39
+ test from: :crd_v221_client_hook_instances_unique
40
+ test from: :crd_v221_client_prefetch_complete_and_subset
41
+ end
26
42
  end
27
43
  end
28
44
  end
@@ -0,0 +1,98 @@
1
+ require_relative 'invocation/cross_hooks_receive_request_test'
2
+ require_relative 'auth/decode_auth_token_test'
3
+ require_relative 'auth/retrieve_jwks_test'
4
+ require_relative 'auth/token_header_test'
5
+ require_relative 'auth/token_payload_test'
6
+ require_relative 'verify_request/hook_request_conformance_test'
7
+ require_relative 'verify_request/hook_request_requested_version_test'
8
+ require_relative 'verify_request/hook_request_prefetch_profiles_test'
9
+ require_relative 'verify_request/hook_request_prefetch_complete_test'
10
+ require_relative 'verify_request/hook_request_granted_scopes_test'
11
+ require_relative 'verify_request/hook_request_secured_transport_test'
12
+ require_relative 'verify_request/hook_request_coverage_verification_test'
13
+ require_relative 'verify_request/hook_request_data_fetch_verification_test'
14
+ require_relative 'verify_response/inferno_response_validation'
15
+ require_relative 'verify_response/client_display_cards_attest'
16
+ require_relative 'verify_response/hook_response_support_coverage_information_test'
17
+ require_relative 'client_urls'
18
+
19
+ module DaVinciCRDTestKit
20
+ module V221
21
+ class ClientCrossHookInteractionGroup < Inferno::TestGroup
22
+ title 'Additional Hook Invocations for Cross Hook Support Demonstration'
23
+ id :crd_v221_client_cross_hook_interaction
24
+ description <<~DESCRIPTION
25
+ Optionally send more hook requests demonstrating additional cross-hook
26
+ features.
27
+
28
+ Inferno's simulated hook endpoints can be discovered at:
29
+ - Complete Prefetch: `#{ClientURLs.base_url}#{DISCOVERY_PATH}`
30
+ - Subset Prefetch: `#{ClientURLs.base_url}#{PREFETCH_DISCOVERY_PATH}`
31
+ DESCRIPTION
32
+ run_as_group
33
+
34
+ input_order :cross_hooks_response_approach,
35
+ :cross_hooks_selected_response_types,
36
+ :cross_hooks_custom_response_template
37
+
38
+ config(
39
+ inputs: {
40
+ auth_token_headers_json: { name: :cross_hooks_auth_token_headers_json },
41
+ auth_tokens: { name: :cross_hooks_auth_tokens },
42
+ auth_tokens_jwk_json: { name: :cross_hooks_auth_tokens_jwk_json },
43
+ client_access_token: { name: :cross_hooks_client_access_token },
44
+ client_fhir_server: { name: :cross_hooks_client_fhir_server },
45
+ crd_jwks_keys_json: { name: :cross_hooks_crd_jwks_keys_json },
46
+ custom_response_template: { name: :cross_hooks_custom_response_template },
47
+ selected_response_types: { name: :cross_hooks_selected_response_types }
48
+ },
49
+ outputs: {
50
+ auth_token_headers_json: { name: :cross_hooks_auth_token_headers_json },
51
+ auth_token_payloads_json: { name: :cross_hooks_auth_token_payloads_json },
52
+ auth_tokens: { name: :cross_hooks_auth_tokens },
53
+ auth_tokens_jwk_json: { name: :cross_hooks_auth_tokens_jwk_json },
54
+ client_access_token: { name: :cross_hooks_client_access_token },
55
+ client_fhir_server: { name: :cross_hooks_client_fhir_server },
56
+ crd_jwks_keys_json: { name: :cross_hooks_crd_jwks_keys_json }
57
+ },
58
+ options: {
59
+ hook_name: ANY_HOOK_TAG,
60
+ crd_interaction_group: 'additional-cross-hooks',
61
+ include_in_cross_hook_analysis: true
62
+ }
63
+ )
64
+
65
+ group do
66
+ title 'Interaction'
67
+ test from: :crd_v221_cross_hooks_request
68
+ end
69
+
70
+ group do
71
+ title 'Response Handling'
72
+
73
+ test from: :crd_v221_card_display_attest_test
74
+ test from: :crd_v221_inferno_response_validation
75
+ end
76
+
77
+ group do
78
+ title 'Requests'
79
+ test from: :crd_v221_hook_request_conformance
80
+ test from: :crd_v221_hook_request_requested_version
81
+ test from: :crd_v221_hook_request_prefetch_profiles
82
+ test from: :crd_v221_hook_request_prefetch_complete
83
+ test from: :crd_v221_hook_request_coverage_verification
84
+ test from: :crd_v221_hook_data_fetch_verification
85
+ test from: :crd_v221_hook_request_granted_scopes
86
+ test from: :crd_v221_hook_request_secured_transport
87
+ end
88
+
89
+ group do
90
+ title 'Authorization'
91
+ test from: :crd_v221_decode_auth_token
92
+ test from: :crd_v221_retrieve_jwks
93
+ test from: :crd_v221_token_header
94
+ test from: :crd_v221_token_payload
95
+ end
96
+ end
97
+ end
98
+ end
@@ -25,12 +25,18 @@ module DaVinciCRDTestKit
25
25
  the notion of 'discharge' is relevant - typically an inpatient encounter.
26
26
  The CRD IG places [additional constraints on the use of the encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge),
27
27
  including the profiles that resources in each request must conform to.
28
+
29
+ Inferno's simulated `encounter-discharge` hook endpoints are available at:
30
+ - Complete Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_DISCHARGE_PATH}`
31
+ - Subset Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH}`
28
32
  DESCRIPTION
29
33
  run_as_group
30
34
 
31
35
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
32
36
 
33
- input_order :cds_jwt_iss, :cds_jwk_set
37
+ input_order :encounter_discharge_response_approach,
38
+ :encounter_discharge_selected_response_types,
39
+ :encounter_discharge_custom_response_template
34
40
 
35
41
  config(
36
42
  inputs: {
@@ -53,7 +59,9 @@ module DaVinciCRDTestKit
53
59
  crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }
54
60
  },
55
61
  options: {
56
- hook_name: 'encounter-discharge'
62
+ hook_name: 'encounter-discharge',
63
+ crd_interaction_group: 'hooks-encounter-discharge',
64
+ include_in_cross_hook_analysis: true
57
65
  }
58
66
  )
59
67
 
@@ -63,11 +71,10 @@ module DaVinciCRDTestKit
63
71
  end
64
72
 
65
73
  group do
66
- title 'Authorization'
67
- test from: :crd_v221_decode_auth_token
68
- test from: :crd_v221_retrieve_jwks
69
- test from: :crd_v221_token_header
70
- test from: :crd_v221_token_payload
74
+ title 'Response Handling'
75
+
76
+ test from: :crd_v221_card_display_attest_test
77
+ test from: :crd_v221_inferno_response_validation
71
78
  end
72
79
 
73
80
  group do
@@ -86,10 +93,11 @@ module DaVinciCRDTestKit
86
93
  end
87
94
 
88
95
  group do
89
- title 'Response Handling'
90
-
91
- test from: :crd_v221_inferno_response_validation
92
- test from: :crd_v221_card_display_attest_test
96
+ title 'Authorization'
97
+ test from: :crd_v221_decode_auth_token
98
+ test from: :crd_v221_retrieve_jwks
99
+ test from: :crd_v221_token_header
100
+ test from: :crd_v221_token_payload
93
101
  end
94
102
  end
95
103
  end
@@ -24,12 +24,18 @@ module DaVinciCRDTestKit
24
24
  when the user is initiating a new encounter. The CRD IG places [additional constraints on the use
25
25
  of the encounter-start hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start),
26
26
  including the profiles that resources in each request must conform to.
27
+
28
+ Inferno's simulated `encounter-start` hook endpoints are available at:
29
+ - Complete Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_START_PATH}`
30
+ - Subset Prefetch: `#{ClientURLs.base_url}#{ENCOUNTER_START_PREFETCH_SUBSET_PATH}`
27
31
  DESCRIPTION
28
32
  run_as_group
29
33
 
30
34
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A'
31
35
 
32
- input_order :cds_jwt_iss, :cds_jwk_set
36
+ input_order :encounter_start_response_approach,
37
+ :encounter_start_selected_response_types,
38
+ :encounter_start_custom_response_template
33
39
 
34
40
  config(
35
41
  inputs: {
@@ -52,7 +58,9 @@ module DaVinciCRDTestKit
52
58
  crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }
53
59
  },
54
60
  options: {
55
- hook_name: 'encounter-start'
61
+ hook_name: 'encounter-start',
62
+ crd_interaction_group: 'hooks-encounter-start',
63
+ include_in_cross_hook_analysis: true
56
64
  }
57
65
  )
58
66
 
@@ -62,11 +70,10 @@ module DaVinciCRDTestKit
62
70
  end
63
71
 
64
72
  group do
65
- title 'Authorization'
66
- test from: :crd_v221_decode_auth_token
67
- test from: :crd_v221_retrieve_jwks
68
- test from: :crd_v221_token_header
69
- test from: :crd_v221_token_payload
73
+ title 'Response Handling'
74
+
75
+ test from: :crd_v221_card_display_attest_test
76
+ test from: :crd_v221_inferno_response_validation
70
77
  end
71
78
 
72
79
  group do
@@ -85,10 +92,11 @@ module DaVinciCRDTestKit
85
92
  end
86
93
 
87
94
  group do
88
- title 'Response Handling'
89
-
90
- test from: :crd_v221_inferno_response_validation
91
- test from: :crd_v221_card_display_attest_test
95
+ title 'Authorization'
96
+ test from: :crd_v221_decode_auth_token
97
+ test from: :crd_v221_retrieve_jwks
98
+ test from: :crd_v221_token_header
99
+ test from: :crd_v221_token_payload
92
100
  end
93
101
  end
94
102
  end
@@ -10,16 +10,13 @@ module DaVinciCRDTestKit
10
10
  CRD client systems are responsible for returning data requested by the CRD server needed to provide decision support.
11
11
  This group contains tests that verify the required 'server' FHIR API capabilities.
12
12
  These 'server' capabilities are based on the US Core Server Capability Statement for the US Core version chosen
13
- when initiating the test session:
14
- - [US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html)
15
- - [US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html)
16
- - [US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html)
13
+ when the test session was initiated.
17
14
  DESCRIPTION
18
15
  id :crd_v221_client_fhir_api
19
16
 
20
17
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@conf-1'
21
18
 
22
- input_instructions %(
19
+ INPUT_INSTRUCTIONS = %(
23
20
  The location of and an access token for the client's FHIR server are expected to come in
24
21
  the CDS Hooks request. The following information will be auto-populated from
25
22
  the body of the latest hook invocation made during this session:
@@ -29,7 +26,9 @@ module DaVinciCRDTestKit
29
26
  If that access token will not be long-lived enough to perform
30
27
  a full test of the US Core FHIR API, provide an updated token and/or refresh
31
28
  token with Client ID and token endpoint so that Inferno can perform these tests.
32
- )
29
+ ).freeze
30
+
31
+ input_instructions INPUT_INSTRUCTIONS
33
32
 
34
33
  input :url,
35
34
  title: 'FHIR Endpoint',
@@ -46,10 +45,11 @@ module DaVinciCRDTestKit
46
45
  This test group verifies that the CRD client can respond to queries as required by the
47
46
  [US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html).
48
47
 
49
- Note: these tests do not look for crd-specific data and so only verify conformance against
50
- US Core profiles. The hook tests take the CRD-specific profiles into account.
48
+ Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
49
+ instead verify conformance against US Core profiles rather than the CRD-defined profiles.
51
50
  )
52
51
  required_suite_options CRDClientOptions::US_CORE_3_REQUIREMENT
52
+ input_instructions INPUT_INSTRUCTIONS
53
53
 
54
54
  group from: :crd_v221_client_update_verification,
55
55
  id: :crd_v221_us_core_311_client_update_verification
@@ -60,10 +60,11 @@ module DaVinciCRDTestKit
60
60
  This test group verifies that the CRD client can respond to queries as required by the
61
61
  [US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html).
62
62
 
63
- Note: these tests do not look for crd-specific data and so only verify conformance against
64
- US Core profiles. The hook tests take the CRD-specific profiles into account.
63
+ Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
64
+ instead verify conformance against US Core profiles rather than the CRD-defined profiles.
65
65
  )
66
66
  required_suite_options CRDClientOptions::US_CORE_6_REQUIREMENT
67
+ input_instructions INPUT_INSTRUCTIONS
67
68
 
68
69
  group from: :crd_v221_client_update_verification,
69
70
  id: :crd_v221_us_core_610_client_update_verification
@@ -74,10 +75,11 @@ module DaVinciCRDTestKit
74
75
  This test group verifies that the CRD client can respond to queries as required by the
75
76
  [US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html).
76
77
 
77
- Note: these tests do not look for crd-specific data and so only verify conformance against
78
- US Core profiles. The hook tests take the CRD-specific profiles into account.
78
+ Note: unlike the hook tests, these US Core tests do not require CRD-specific data but
79
+ instead verify conformance against US Core profiles rather than the CRD-defined profiles.
79
80
  )
80
81
  required_suite_options CRDClientOptions::US_CORE_7_REQUIREMENT
82
+ input_instructions INPUT_INSTRUCTIONS
81
83
 
82
84
  group from: :crd_v221_client_update_verification,
83
85
  id: :crd_v221_us_core_700_client_update_verification
@@ -4,6 +4,7 @@ require_relative 'client_encounter_start_group'
4
4
  require_relative 'client_order_dispatch_group'
5
5
  require_relative 'client_order_select_group'
6
6
  require_relative 'client_order_sign_group'
7
+ require_relative 'client_urls'
7
8
 
8
9
  module DaVinciCRDTestKit
9
10
  module V221
@@ -14,10 +15,10 @@ module DaVinciCRDTestKit
14
15
  one of the [six hooks described in the CRD IG](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html):
15
16
  * [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book)
16
17
  * [encounter-start](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start)
17
- * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge)
18
18
  * [order-select](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select)
19
- * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch)
20
19
  * [order-sign](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign)
20
+ * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch)
21
+ * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge)
21
22
 
22
23
  Each hook-specific group follows the same pattern:
23
24
  1. Allow the client to make hook invocations for the tested hook, waiting until the tester indicates
@@ -28,6 +29,25 @@ module DaVinciCRDTestKit
28
29
  The CRD IG does not require support for any specific hook, so all the hook-specific sub-groups are
29
30
  optional. A conformant CRD client will have implemented at least one hook and will run and pass
30
31
  the hook-specific groups corresponding to each hook that it implements.
32
+
33
+ Inferno simulates two CRD discovery endpoints, each with service endpoints for all six CRD hooks
34
+ but with different service ids:
35
+ - Discovery endpoint for services requesting the complete [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
36
+ `#{ClientURLs.discovery_url}`
37
+ * `appointment-book` service id: `appointment-book-service`
38
+ * `encounter-start` service id: `encounter-start-service`
39
+ * `order-select` service id: `order-select-service`
40
+ * `order-sign` service id: `order-sign-service`
41
+ * `order-dispatch` service id: `order-dispatch-service`
42
+ * `encounter-discharge` service id: `encounter-discharge-service`
43
+ - Discovery endpoint for services requesting the a subset of the [standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch):
44
+ `#{ClientURLs.prefetch_subset_discovery_url}`
45
+ * `appointment-book` service id: `appointment-book-subset`
46
+ * `encounter-start` service id: `encounter-start-subset`
47
+ * `order-select` service id: `order-select-subset`
48
+ * `order-sign` service id: `order-sign-subset`
49
+ * `order-dispatch` service id: `order-dispatch-subset`
50
+ * `encounter-discharge` service id: `encounter-discharge-subset`
31
51
  DESCRIPTION
32
52
  id :crd_v221_client_hooks
33
53
 
@@ -48,16 +68,16 @@ module DaVinciCRDTestKit
48
68
  group from: :crd_v221_client_encounter_start,
49
69
  optional: true
50
70
 
51
- group from: :crd_v221_client_encounter_discharge,
71
+ group from: :crd_v221_client_order_select,
52
72
  optional: true
53
73
 
54
- group from: :crd_v221_client_order_select,
74
+ group from: :crd_v221_client_order_sign,
55
75
  optional: true
56
76
 
57
77
  group from: :crd_v221_client_order_dispatch,
58
78
  optional: true
59
79
 
60
- group from: :crd_v221_client_order_sign,
80
+ group from: :crd_v221_client_encounter_discharge,
61
81
  optional: true
62
82
  end
63
83
  end
@@ -16,12 +16,13 @@ module DaVinciCRDTestKit
16
16
 
17
17
  run_as_group
18
18
 
19
- input_order :cds_jwt_iss
19
+ input_order :long_running_pause_time
20
20
 
21
21
  config(
22
22
  options: {
23
23
  hook_name: ANY_HOOK_TAG,
24
- crd_test_group: LONG_RUNNING_GROUP_TAG
24
+ crd_interaction_group: LONG_RUNNING_GROUP_TAG,
25
+ include_in_cross_hook_analysis: false
25
26
  }
26
27
  )
27
28
 
@@ -26,12 +26,18 @@ module DaVinciCRDTestKit
26
26
  that was not tied to a specific performer. The CRD IG places [additional constraints on the use
27
27
  of the order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch),
28
28
  including the profiles that resources in each request must conform to.
29
+
30
+ Inferno's simulated `order-dispatch` hook endpoints are available at:
31
+ - Complete Prefetch: `#{ClientURLs.base_url}#{ORDER_DISPATCH_PATH}`
32
+ - Subset Prefetch: `#{ClientURLs.base_url}#{ORDER_DISPATCH_PREFETCH_SUBSET_PATH}`
29
33
  DESCRIPTION
30
34
  run_as_group
31
35
 
32
36
  verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B'
33
37
 
34
- input_order :cds_jwt_iss, :cds_jwk_set
38
+ input_order :order_dispatch_response_approach,
39
+ :order_dispatch_selected_response_types,
40
+ :order_dispatch_custom_response_template
35
41
 
36
42
  config(
37
43
  inputs: {
@@ -54,7 +60,9 @@ module DaVinciCRDTestKit
54
60
  crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }
55
61
  },
56
62
  options: {
57
- hook_name: 'order-dispatch'
63
+ hook_name: 'order-dispatch',
64
+ crd_interaction_group: 'hooks-order-dispatch',
65
+ include_in_cross_hook_analysis: true
58
66
  }
59
67
  )
60
68
 
@@ -64,11 +72,14 @@ module DaVinciCRDTestKit
64
72
  end
65
73
 
66
74
  group do
67
- title 'Authorization'
68
- test from: :crd_v221_decode_auth_token
69
- test from: :crd_v221_retrieve_jwks
70
- test from: :crd_v221_token_header
71
- test from: :crd_v221_token_payload
75
+ title 'Response Handling'
76
+
77
+ test from: :crd_v221_card_display_attest_test
78
+ test from: :crd_v221_inferno_response_validation
79
+ test from: :crd_v221_client_hook_response_support_coverage_information do
80
+ title 'Client supports the Coverage Information response type on the order-dispatch hook'
81
+ verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-33'
82
+ end
72
83
  end
73
84
 
74
85
  group do
@@ -87,14 +98,11 @@ module DaVinciCRDTestKit
87
98
  end
88
99
 
89
100
  group do
90
- title 'Response Handling'
91
-
92
- test from: :crd_v221_inferno_response_validation
93
- test from: :crd_v221_card_display_attest_test
94
- test from: :crd_v221_client_hook_response_support_coverage_information do
95
- title 'Client supports the Coverage Information response type on the order-dispatch hook'
96
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-33'
97
- end
101
+ title 'Authorization'
102
+ test from: :crd_v221_decode_auth_token
103
+ test from: :crd_v221_retrieve_jwks
104
+ test from: :crd_v221_token_header
105
+ test from: :crd_v221_token_payload
98
106
  end
99
107
  end
100
108
  end