davinci_crd_test_kit 0.14.0 → 0.14.1

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/inferno_crd_client_suite_v221.json.erb +64 -0
  3. data/config/presets/inferno_crd_server_suite_v221.json.erb +2 -2
  4. data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +12 -6
  5. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
  6. data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
  7. data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +8 -1
  8. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +7 -1
  9. data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +7 -1
  10. data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +20 -0
  11. data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +1 -1
  12. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +7 -1
  13. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +7 -1
  14. data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +7 -1
  15. data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
  16. data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +5 -0
  17. data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +10 -5
  18. data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
  19. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +6 -0
  20. data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +2 -1
  21. data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +9 -0
  22. data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
  23. data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +2 -1
  24. data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +164 -3
  25. data/lib/davinci_crd_test_kit/cross_suite/tags.rb +4 -0
  26. data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +38 -38
  27. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
  28. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
  29. data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
  30. data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
  31. data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
  32. data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
  33. data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +166 -0
  34. data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
  35. data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
  36. data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +1 -0
  37. data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
  38. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
  39. data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
  40. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
  41. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
  42. data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
  43. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
  44. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
  45. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
  46. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
  47. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
  48. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
  49. data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
  50. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
  51. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
  52. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
  53. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
  54. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
  55. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
  56. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
  57. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
  58. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
  59. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
  60. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
  61. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
  62. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
  63. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
  64. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
  65. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
  66. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
  67. data/lib/davinci_crd_test_kit/version.rb +2 -2
  68. metadata +18 -8
  69. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
  70. data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb +0 -65
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: davinci_crd_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inferno Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-02 00:00:00.000000000 Z
11
+ date: 2026-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.4'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.3.1
22
+ version: 1.4.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.3'
29
+ version: '1.4'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.3.1
32
+ version: 1.4.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jwt
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -256,6 +256,8 @@ files:
256
256
  - lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json
257
257
  - lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb
258
258
  - lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb
259
+ - lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb
260
+ - lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb
259
261
  - lib/davinci_crd_test_kit/server/jwt_helper.rb
260
262
  - lib/davinci_crd_test_kit/server/resource_extractor.rb
261
263
  - lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb
@@ -332,6 +334,8 @@ files:
332
334
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb
333
335
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb
334
336
  - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb
337
+ - lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb
338
+ - lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb
335
339
  - lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb
336
340
  - lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb
337
341
  - lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb
@@ -347,15 +351,21 @@ files:
347
351
  - lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb
348
352
  - lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb
349
353
  - lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb
354
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb
355
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb
356
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb
357
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb
358
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb
359
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb
360
+ - lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb
350
361
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb
351
362
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_no_custom_extensions_test.rb
352
363
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb
353
364
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb
354
365
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb
355
366
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb
356
- - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb
357
367
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb
358
- - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb
368
+ - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb
359
369
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb
360
370
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb
361
371
  - lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb
@@ -1,57 +0,0 @@
1
- require_relative '../../server_test_helper'
2
- require_relative '../../server_hook_request_validation'
3
- require_relative '../../../cross_suite/cards_validation'
4
-
5
- module DaVinciCRDTestKit
6
- module V221
7
- class CardOptionalFieldsValidationTest < Inferno::Test
8
- include DaVinciCRDTestKit::ServerTestHelper
9
- include DaVinciCRDTestKit::ServerHookRequestValidation
10
- include DaVinciCRDTestKit::CardsValidation
11
-
12
- title 'Cards contain valid optional fields'
13
- id :crd_v221_card_optional_fields_validation
14
- description %(
15
- This test checks for the presence and validity of optional fields in a card,
16
- but only if the card's required fields are valid. As specified in the
17
- [CDS Hooks specification section on Card Attributes](https://cds-hooks.hl7.org/2.0/#card-attributes),
18
- the optional fields include `uuid`, `detail`, `suggestions`, `overrideReasons`, and `links`.
19
-
20
- Additionally, the test validates the presence of the conditional field `selectionBehavior`
21
- only if the `suggestions` field is present.
22
- )
23
- optional
24
- input :valid_cards
25
- output :valid_cards_with_links, :valid_cards_with_suggestions
26
-
27
- verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-3',
28
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-13',
29
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-18',
30
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-19',
31
- 'hl7.fhir.us.davinci-crd_2.2.1@resp-22'
32
-
33
- def cards_with_suggestions
34
- @cards_with_suggestions ||= []
35
- end
36
-
37
- def cards_with_links
38
- @cards_with_links ||= []
39
- end
40
-
41
- run do
42
- parsed_cards = parse_json(valid_cards)
43
- parsed_cards.each do |card|
44
- if valid_card_with_optionals?(card, 'v221')
45
- cards_with_links << card if card['links']
46
- cards_with_suggestions << card if card['suggestions']
47
- end
48
- end
49
-
50
- output valid_cards_with_links: cards_with_links.to_json
51
- output valid_cards_with_suggestions: cards_with_suggestions.to_json
52
-
53
- no_error_validation('Some cards with valid required fields have invalid optional fields.')
54
- end
55
- end
56
- end
57
- end
@@ -1,65 +0,0 @@
1
- require_relative '../../server_test_helper'
2
- require_relative '../../server_hook_helper'
3
- require_relative '../../../cross_suite/cards_identification'
4
-
5
- module DaVinciCRDTestKit
6
- module V221
7
- class CoverageInformationSystemActionReceivedTest < Inferno::Test
8
- include DaVinciCRDTestKit::ServerTestHelper
9
- include DaVinciCRDTestKit::ServerHookHelper
10
- include DaVinciCRDTestKit::CardsIdentification
11
-
12
- title 'Server returns a Coverage Information system action'
13
- id :crd_v221_coverage_info_system_action_received
14
- description %(
15
- This test validates that a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)
16
- system action was returned. It does so by:
17
- - First checking for the presence of actions with a `resource` element of the following types:
18
- - For `appointment-book`: Appointment
19
- - For `order-sign` or `order-dispatch`: DeviceRequest, MedicationRequest, NutritionOrder,
20
- ServiceRequest, or VisionPrescription
21
- - Then, among the target actions, checking if their resource has the [coverage-information extension](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information).
22
- )
23
- # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@272', 'hl7.fhir.us.davinci-crd_2.0.1@273',
24
- # 'hl7.fhir.us.davinci-crd_2.0.1@274', 'hl7.fhir.us.davinci-crd_2.0.1@275',
25
- # 'hl7.fhir.us.davinci-crd_2.0.1@276', 'hl7.fhir.us.davinci-crd_2.0.1@277'
26
-
27
- input :valid_system_actions, :invoked_hook
28
- output :coverage_info
29
-
30
- def resources_by_hook
31
- shared_resources = [
32
- 'DeviceRequest', 'MedicationRequest', 'NutritionOrder',
33
- 'ServiceRequest', 'VisionPrescription'
34
- ]
35
- {
36
- 'appointment-book' => ['Appointment'],
37
- 'order-sign' => shared_resources,
38
- 'order-dispatch' => shared_resources,
39
- 'order-select' => shared_resources,
40
- 'encounter-start' => ['Encounter'],
41
- 'encounter-discharge' => ['Encounter']
42
- }
43
- end
44
-
45
- run do
46
- parsed_actions = parse_json(valid_system_actions)
47
- target_resources = resources_by_hook[invoked_hook]
48
-
49
- target_actions = parsed_actions.select do |action|
50
- resource = FHIR.from_contents(action['resource'].to_json)
51
- target_resources.include?(resource&.resourceType)
52
- end
53
-
54
- coverage_info_system_actions = target_actions.select do |action|
55
- coverage_information_response_type?(action)
56
- end
57
-
58
- assert coverage_info_system_actions.present?,
59
- "Coverage Information system action was not returned in the #{tested_hook_name} hook response."
60
-
61
- output coverage_info: coverage_info_system_actions.to_json
62
- end
63
- end
64
- end
65
- end