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.
- checksums.yaml +4 -4
- data/config/presets/inferno_crd_client_suite_v221.json.erb +64 -0
- data/config/presets/inferno_crd_server_suite_v221.json.erb +2 -2
- data/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb +12 -6
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json +1 -1
- data/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json +0 -7
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb +8 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb +20 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb +1 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb +7 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb +6 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb +5 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb +10 -5
- data/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb +2 -1
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb +6 -0
- data/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb +2 -1
- data/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb +9 -0
- data/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb +25 -11
- data/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb +2 -1
- data/lib/davinci_crd_test_kit/cross_suite/response_logical_model_validation.rb +164 -3
- data/lib/davinci_crd_test_kit/cross_suite/tags.rb +4 -0
- data/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv +38 -38
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb +3 -3
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_no_special_requests.rb +17 -0
- data/lib/davinci_crd_test_kit/server/jobs/invoke_hook_with_bad_auth.rb +14 -0
- data/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb +24 -6
- data/lib/davinci_crd_test_kit/server/server_hook_helper.rb +2 -2
- data/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb +3 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_standard_prefetch_expressions_test.rb +166 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_single_request_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb +10 -102
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb +2 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb +10 -97
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb +10 -103
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb +12 -116
- data/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb +12 -121
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_response_group.rb +23 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_info_reason_test.rb +108 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/coverage_not_found_group.rb +116 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_active_coverage_group.rb +115 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/no_member_found_group.rb +117 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_group.rb +121 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/specific_coverage_responses/technical_issues_invoke_test.rb +22 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb +1 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb +78 -35
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_card_absence_test.rb +76 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb +70 -124
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb +83 -39
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb +59 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb +80 -45
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb +37 -0
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb +57 -6
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb +56 -17
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb +52 -25
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb +17 -51
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb +1 -1
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb +1 -1
- data/lib/davinci_crd_test_kit/version.rb +2 -2
- metadata +18 -8
- data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb +0 -57
- 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.
|
|
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-
|
|
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.
|
|
19
|
+
version: '1.4'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 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.
|
|
29
|
+
version: '1.4'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 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/
|
|
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
|
data/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb
DELETED
|
@@ -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
|