davinci_dtr_test_kit 0.14.2 → 0.15.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/full_ehr_postman_dinner_order_example_postman.json +19 -0
- data/config/presets/full_ehr_postman_respiratory_device_example.json +15 -0
- data/config/presets/light_ehr_ref_server_local.json +105 -0
- data/config/presets/light_ehr_ref_server_prod.json +85 -0
- data/config/presets/payer_server_adaptive_client_flow.json +37 -0
- data/config/presets/payer_server_adaptive_manual_flow.json +44 -0
- data/config/presets/payer_server_run_against_smart_app_tests.json +35 -0
- data/config/presets/smart_app_postman_dinner_order_example.json +44 -0
- data/config/presets/smart_app_postman_respiratory_device_example.json +43 -0
- data/lib/davinci_dtr_test_kit/auth_groups/token_validation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_expressions_test.rb +22 -0
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_extensions_test.rb +19 -0
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_libraries_test.rb +21 -0
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_package_validation_test.rb +39 -0
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_full_ehr_custom_static_workflow_group.rb +122 -0
- data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_smart_app_custom_static_workflow_group.rb +91 -0
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_completion_group.rb → dtr_adaptive_completion_group.rb} +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_followup_questions_group.rb → dtr_adaptive_followup_questions_group.rb} +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_request_test.rb → dtr_adaptive_next_question_request_test.rb} +3 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_request_validation_test.rb → dtr_adaptive_next_question_request_validation_test.rb} +3 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_retrieval_group.rb → dtr_adaptive_next_question_retrieval_group.rb} +8 -8
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_response_validation_test.rb → dtr_adaptive_response_validation_test.rb} +6 -4
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_dinner_questionnaire_workflow_group.rb → dtr_full_ehr_adaptive_dinner_workflow_group.rb} +14 -12
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_questionnaire_initial_retrieval_group.rb → dtr_full_ehr_adaptive_initial_retrieval_group.rb} +10 -10
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_questionnaire_request_test.rb → dtr_full_ehr_adaptive_request_test.rb} +4 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_smart_app_questionnaire_workflow_group.rb → dtr_smart_app_adaptive_dinner_workflow_group.rb} +25 -19
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_initial_retrieval_group.rb +24 -0
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_smart_app_adaptive_questionnaire_request_test.rb → dtr_smart_app_adaptive_request_test.rb} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_full_ehr_questionnaire_workflow_group.rb → dtr_full_ehr_static_dinner_workflow_group.rb} +15 -14
- data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_smart_app_questionnaire_workflow_group.rb → dtr_smart_app_static_dinner_workflow_group.rb} +18 -13
- data/lib/davinci_dtr_test_kit/client_groups/{full_ehr/dtr_full_ehr_rendering_enabled_questions_attestation_test.rb → dinner_static/dtr_static_dinner_enabled_questions_attestation_test.rb} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_launch_attestation_test.rb +8 -3
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_attestation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_override_attestation_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_package_request_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_response_conformance_test.rb +6 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_response_correctness_test.rb +11 -22
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_saving_questionnaire_response_group.rb +4 -4
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_store_attestation_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_endpoints_group.rb +22 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_accept_header_test.rb +26 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_config_test.rb +34 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_endpoint_test.rb +44 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_use_test.rb +32 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_user_response_test.rb +70 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_smart_ehr_launch.rb +18 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_coverage_test.rb +42 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_references_test.rb +59 -0
- data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_launch_context_test.rb +23 -0
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_package_group.rb → respiratory/dtr_respiratory_questionnaire_package_group.rb} +5 -5
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_resp_questionnaire_package_request_test.rb → respiratory/dtr_respiratory_questionnaire_package_request_test.rb} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_response_group.rb → respiratory/dtr_respiratory_questionnaire_response_group.rb} +7 -7
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_response_save_test.rb → respiratory/dtr_respiratory_questionnaire_response_save_test.rb} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_rendering_attestation_test.rb → respiratory/dtr_respiratory_rendering_attestation_test.rb} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/respiratory/dtr_respiratory_rendering_group.rb +14 -0
- data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_smart_app_questionnaire_workflow_group.rb → respiratory/dtr_smart_app_respiratory_workflow_group.rb} +8 -8
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_attestation_test.rb +33 -0
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_override_attestation_test.rb +36 -0
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_basic_conformance_test.rb +8 -4
- data/lib/davinci_dtr_test_kit/client_groups/shared/{dtr_questionnaire_response_pre_population_test.rb → dtr_questionnaire_response_prepopulation_test.rb} +5 -2
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_rendering_attestation_test.rb +32 -0
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_attestation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_override_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/client_groups/{dinner_static/dtr_smart_app_dinner_questionnaire_package_request_test.rb → smart_app/dtr_smart_app_questionnaire_package_request_test.rb} +6 -6
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_correctness_test.rb +30 -0
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_save_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_saving_questionnaire_response_group.rb +3 -7
- data/lib/davinci_dtr_test_kit/cql_test.rb +58 -0
- data/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md +9 -6
- data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +19 -6
- data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +60 -40
- data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +0 -2
- data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +50 -4
- data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +9 -9
- data/lib/davinci_dtr_test_kit/endpoints/mock_authorization.rb +10 -2
- data/lib/davinci_dtr_test_kit/endpoints/mock_ehr.rb +17 -1
- data/lib/davinci_dtr_test_kit/endpoints/mock_payer/light_ehr_supported_payer_endpoint.rb +44 -0
- data/lib/davinci_dtr_test_kit/endpoints/mock_payer/questionnaire_package_endpoint.rb +7 -1
- data/lib/davinci_dtr_test_kit/fixtures.rb +6 -6
- data/lib/davinci_dtr_test_kit/igs/davinci_dtr_2.0.1.tgz +0 -0
- data/lib/davinci_dtr_test_kit/metadata.rb +104 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_libraries_test.rb +4 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_expressions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_extensions_test.rb +4 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_next_questionnaire_expressions_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_next_questionnaire_extensions_test.rb +4 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_request_test.rb +2 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_bundles_validation_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_search_validation_test.rb +8 -3
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb +6 -15
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_next_response_complete_test.rb +1 -0
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_static_group.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_libraries_test.rb +4 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +4 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +6 -15
- data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_must_support_test.rb +46 -0
- data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/communication_request/metadata.yml +135 -0
- data/lib/davinci_dtr_test_kit/profiles/communication_request_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_must_support_test.rb +54 -0
- data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_read.rb +5 -3
- data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/coverage/metadata.yml +133 -0
- data/lib/davinci_dtr_test_kit/profiles/coverage_group.rb +8 -0
- data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_must_support_test.rb +45 -0
- data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/device_request/metadata.yml +130 -0
- data/lib/davinci_dtr_test_kit/profiles/device_request_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_must_support_test.rb +58 -0
- data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/encounter/metadata.yml +169 -0
- data/lib/davinci_dtr_test_kit/profiles/encounter_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_must_support_test.rb +50 -0
- data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/medication_request/metadata.yml +159 -0
- data/lib/davinci_dtr_test_kit/profiles/medication_request_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/nutrition_order/metadata.yml +94 -0
- data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_must_support_test.rb +45 -0
- data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/nutrition_order_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_context_search.rb +3 -1
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_create.rb +1 -0
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_must_support_test.rb +54 -0
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_patient_search.rb +3 -1
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_read.rb +2 -1
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_update.rb +1 -0
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_validation.rb +1 -1
- data/lib/davinci_dtr_test_kit/profiles/questionnaire_response_group.rb +11 -1
- data/lib/davinci_dtr_test_kit/profiles/service_request/metadata.yml +140 -0
- data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_must_support_test.rb +47 -0
- data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/service_request_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/profiles/task/metadata.yml +165 -0
- data/lib/davinci_dtr_test_kit/profiles/task/task_create.rb +1 -0
- data/lib/davinci_dtr_test_kit/profiles/task/task_must_support_test.rb +46 -0
- data/lib/davinci_dtr_test_kit/profiles/task/task_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/task/task_update.rb +1 -0
- data/lib/davinci_dtr_test_kit/profiles/task/task_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/task_group.rb +11 -1
- data/lib/davinci_dtr_test_kit/profiles/vision_prescription/metadata.yml +107 -0
- data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_must_support_test.rb +54 -0
- data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_read.rb +6 -3
- data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_validation.rb +9 -8
- data/lib/davinci_dtr_test_kit/profiles/vision_prescription_group.rb +9 -0
- data/lib/davinci_dtr_test_kit/read_test.rb +5 -0
- data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_out_of_scope_requirements.csv +13 -0
- data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_requirements.csv +374 -0
- data/lib/davinci_dtr_test_kit/requirements/generated/davinci-dtr-test-kit_requirements_coverage.csv +372 -0
- data/lib/davinci_dtr_test_kit/tags.rb +1 -0
- data/lib/davinci_dtr_test_kit/urls.rb +6 -0
- data/lib/davinci_dtr_test_kit/version.rb +2 -1
- data/lib/davinci_dtr_test_kit.rb +2 -0
- data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
- data/lib/inferno_requirements_tools/rake/rakefile_template +31 -0
- data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
- data/lib/requirements_config.yaml +25 -0
- metadata +95 -37
- data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_questionnaire_initial_retrieval_group.rb +0 -24
- data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_group.rb +0 -14
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_rendering_enabled_questions_attestation_test.rb +0 -30
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative '../../urls'
|
2
|
+
require_relative '../../tags'
|
3
|
+
|
4
|
+
module DaVinciDTRTestKit
|
5
|
+
class DTRLightEHRSupportedPayersUserResponseTest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
id :dtr_light_ehr_sp_user_response
|
8
|
+
title %(
|
9
|
+
[USER INPUT VERIFICATION] Tester-provided supported payers response is conformant
|
10
|
+
)
|
11
|
+
description %(
|
12
|
+
This test verifies that the user-provided response conforms
|
13
|
+
to the requirements for a supported payers response. The test will
|
14
|
+
be omitted if the tester does not provide a custom response in the
|
15
|
+
**Custom Supported Payers Response** input.
|
16
|
+
)
|
17
|
+
|
18
|
+
input :user_response, type: :textarea, optional: true
|
19
|
+
|
20
|
+
def validate_response(parsed_response)
|
21
|
+
assert parsed_response.present?, 'User provided response is nil.'
|
22
|
+
|
23
|
+
unless parsed_response.is_a?(Hash)
|
24
|
+
add_message('error', 'Response is not a valid JSON object (Hash expected).')
|
25
|
+
return
|
26
|
+
end
|
27
|
+
|
28
|
+
unless parsed_response['payers'].is_a?(Array)
|
29
|
+
add_message('error', 'The "payers" field is not an array.')
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
add_message('error', 'Response does not contain the required "payers" key.') unless parsed_response.key?('payers')
|
34
|
+
add_message('error', 'The "payers" field is an empty array.') if parsed_response['payers'].empty?
|
35
|
+
|
36
|
+
parsed_response['payers'].each_with_index do |payer, index|
|
37
|
+
validate_payer(payer, index)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def validate_payer(payer, index)
|
42
|
+
unless payer.is_a?(Hash)
|
43
|
+
add_message('error', "Payer at index #{index} is not a valid JSON object (Hash expected).")
|
44
|
+
return
|
45
|
+
end
|
46
|
+
|
47
|
+
add_message('error', "Payer at index #{index} does not contain the required 'id' key.") unless payer.key?('id')
|
48
|
+
add_message('error', "Payer at index #{index} does not contain the required 'name' key.") unless payer['name']
|
49
|
+
end
|
50
|
+
|
51
|
+
run do
|
52
|
+
omit_if user_response.nil?, 'No user response provided, default response returned.'
|
53
|
+
|
54
|
+
load_tagged_requests(SUPPORTED_PAYER_TAG)
|
55
|
+
request_record = requests.first
|
56
|
+
|
57
|
+
assert request_record.present?, 'No requests made to the supported payers endpoint.'
|
58
|
+
|
59
|
+
begin
|
60
|
+
parsed_response = JSON.parse(request_record.response_body)
|
61
|
+
rescue JSON::ParserError
|
62
|
+
assert false, 'User response is not valid JSON.'
|
63
|
+
end
|
64
|
+
|
65
|
+
validate_response(parsed_response)
|
66
|
+
assert messages.none? { |msg| msg[:type] == 'error' }, 'User response is invalid.'
|
67
|
+
pass 'User response is present and valid.'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'fhir_launch_context_test'
|
2
|
+
require_relative 'fhir_context_coverage_test'
|
3
|
+
require_relative 'fhir_context_references_test'
|
4
|
+
require 'smart_app_launch/ehr_launch_group_stu2'
|
5
|
+
|
6
|
+
module DaVinciDTRTestKit
|
7
|
+
class DTRSMARTEHRLaunch < SMARTAppLaunch::EHRLaunchGroupSTU2
|
8
|
+
title 'DTR SMART EHR Launch'
|
9
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@117'
|
10
|
+
|
11
|
+
id :dtr_smart_ehr_launch
|
12
|
+
run_as_group
|
13
|
+
|
14
|
+
test from: :fhir_launch_context
|
15
|
+
test from: :fhir_context_coverage
|
16
|
+
test from: :fhir_context_references
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module DaVinciDTRTestKit
|
2
|
+
class FhirContextCoverageTest < Inferno::Test
|
3
|
+
include DaVinciDTRTestKit::ReadTest
|
4
|
+
|
5
|
+
id :fhir_context_coverage
|
6
|
+
title 'fhirContext Coverage Reference Test'
|
7
|
+
description %(
|
8
|
+
This test validates that when the light EHR launches a DTR SMART App, the launch context includes
|
9
|
+
a `fhirContext` with one active Coverage resource and that the referenced Coverage can be read from
|
10
|
+
the light DTR EHR. See the [Launching DTR](https://hl7.org/fhir/us/davinci-dtr/STU2/specification.html#launching-dtr)
|
11
|
+
section of the DTR IG for details.
|
12
|
+
)
|
13
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@126'
|
14
|
+
optional
|
15
|
+
|
16
|
+
uses_request :token
|
17
|
+
|
18
|
+
fhir_client do
|
19
|
+
url :url
|
20
|
+
bearer_token JSON.parse(request.response_body)['access_token']
|
21
|
+
end
|
22
|
+
|
23
|
+
def scratch_resources
|
24
|
+
scratch[:coverage_references] ||= {}
|
25
|
+
end
|
26
|
+
|
27
|
+
run do
|
28
|
+
token_response_params = JSON.parse(request.response_body)
|
29
|
+
|
30
|
+
skip_if(!token_response_params['fhirContext'].present?,
|
31
|
+
%(fhirContext not present on the passed launch context, skipping test.'))
|
32
|
+
|
33
|
+
coverage = token_response_params['fhirContext'].find { |c| c.split('/')[0] == 'Coverage' }
|
34
|
+
assert coverage.present?, 'Coverage resource not present on fhirContext'
|
35
|
+
|
36
|
+
coverage_array = [coverage.split('/')[1]]
|
37
|
+
assert coverage_array.present?, 'Coverage resource not present on fhirContext in proper format'
|
38
|
+
|
39
|
+
perform_read_test(coverage_array, 'Coverage')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module DaVinciDTRTestKit
|
2
|
+
class FhirContextReferencesTest < Inferno::Test
|
3
|
+
include DaVinciDTRTestKit::ReadTest
|
4
|
+
|
5
|
+
id :fhir_context_references
|
6
|
+
title 'fhirContext Request, QuestionnaireResponse, or Task References Test'
|
7
|
+
description %(
|
8
|
+
This test validates that when the light EHR launches a DTR SMART App, the launch context includes
|
9
|
+
a `fhirContext` with exactly one of the following references and that the referenced resource can be read from
|
10
|
+
the light DTR EHR:
|
11
|
+
- A CRD-type Request or Encounter resource
|
12
|
+
- An existing incomplete QuestionnaireResponse previously created with DTR
|
13
|
+
- A Questionnaire Task
|
14
|
+
|
15
|
+
See the [Launching DTR](https://hl7.org/fhir/us/davinci-dtr/STU2/specification.html#launching-dtr)
|
16
|
+
section of the DTR IG for details.
|
17
|
+
)
|
18
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@127', 'hl7.fhir.us.davinci-dtr_2.0.1@128',
|
19
|
+
'hl7.fhir.us.davinci-dtr_2.0.1@129'
|
20
|
+
optional
|
21
|
+
|
22
|
+
uses_request :token
|
23
|
+
|
24
|
+
fhir_client do
|
25
|
+
url :url
|
26
|
+
bearer_token JSON.parse(request.response_body)['access_token']
|
27
|
+
end
|
28
|
+
|
29
|
+
def scratch_resources
|
30
|
+
scratch[:crd_request_resources] ||= {}
|
31
|
+
end
|
32
|
+
|
33
|
+
run do
|
34
|
+
token_response_params = JSON.parse(request.response_body)
|
35
|
+
|
36
|
+
skip_if(!token_response_params['fhirContext'].present?,
|
37
|
+
%(fhirContext not present on the passed launch context, skipping test.))
|
38
|
+
|
39
|
+
context_reference = token_response_params['fhirContext'].filter do |c|
|
40
|
+
c.split('/')[0] == 'DeviceRequest' || c.split('/')[0] == 'ServiceRequest' ||
|
41
|
+
c.split('/')[0] == 'CommunicationRequest' || c.split('/')[0] == 'MedicationRequest' ||
|
42
|
+
c.split('/')[0] == 'Encounter' || c.split('/')[0] == 'Task' || c.split('/')[0] == 'QuestionnaireResponse'
|
43
|
+
end
|
44
|
+
|
45
|
+
assert context_reference.present?,
|
46
|
+
'fhirContext does not contain a CRD-type request, QuestionnaireResponse, or Task resource'
|
47
|
+
|
48
|
+
context_reference_amount = context_reference.length
|
49
|
+
assert context_reference_amount == 1,
|
50
|
+
'fhirContext should only contain one CRD-type request, QuestionnaireResponse, or Task'
|
51
|
+
|
52
|
+
crd_request_array = [(context_reference[0]).split('/')[1]]
|
53
|
+
assert crd_request_array.present?,
|
54
|
+
'fhirContext does not contain a CRD-type request, QuestionnaireResponse, or Task resource in proper format'
|
55
|
+
|
56
|
+
perform_read_test(crd_request_array, (context_reference[0]).split('/')[0])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module DaVinciDTRTestKit
|
2
|
+
class FhirLaunchContextTest < Inferno::Test
|
3
|
+
include SMARTAppLaunch::TokenPayloadValidation
|
4
|
+
|
5
|
+
id :fhir_launch_context
|
6
|
+
title 'Token exchange response body contains fhirContext'
|
7
|
+
description %(
|
8
|
+
This test validates that when the light EHR launches a DTR SMART App, the launch context
|
9
|
+
includes a `fhirContext`. See the [Launching DTR](https://hl7.org/fhir/us/davinci-dtr/STU2/specification.html#launching-dtr)
|
10
|
+
section of the DTR IG for details.
|
11
|
+
)
|
12
|
+
optional
|
13
|
+
|
14
|
+
uses_request :token
|
15
|
+
|
16
|
+
run do
|
17
|
+
token_response_params = JSON.parse(request.response_body)
|
18
|
+
assert token_response_params['fhirContext'].present?, 'fhirContext not present on the passed launch context'
|
19
|
+
|
20
|
+
validate_fhir_context(token_response_params['fhirContext'])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'dtr_respiratory_questionnaire_package_request_test'
|
2
2
|
require_relative '../shared/dtr_questionnaire_package_request_validation_test'
|
3
3
|
|
4
4
|
module DaVinciDTRTestKit
|
5
|
-
class
|
6
|
-
id :
|
5
|
+
class DTRRespiratoryQuestionnairePackageGroup < Inferno::TestGroup
|
6
|
+
id :dtr_resp_qp
|
7
7
|
title 'Questionnaire Package Retrieval'
|
8
8
|
description %(
|
9
9
|
Demonstrate the ability to request the Respiratory Assist Device Questionnaire Package from the payer.
|
10
10
|
)
|
11
11
|
run_as_group
|
12
12
|
|
13
|
-
test from: :
|
14
|
-
test from: :
|
13
|
+
test from: :dtr_resp_qp_request
|
14
|
+
test from: :dtr_qp_request_validation
|
15
15
|
end
|
16
16
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require_relative '../../urls'
|
2
2
|
|
3
3
|
module DaVinciDTRTestKit
|
4
|
-
class
|
4
|
+
class DTRRespiratoryQuestionnairePackageRequestTest < Inferno::Test
|
5
5
|
include URLs
|
6
6
|
|
7
|
-
id :
|
7
|
+
id :dtr_resp_qp_request
|
8
8
|
title 'Invoke the DTR Questionnaire Package operation'
|
9
9
|
description %(
|
10
10
|
Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
|
@@ -1,23 +1,23 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'dtr_respiratory_questionnaire_response_save_test'
|
2
2
|
require_relative '../shared/dtr_questionnaire_response_basic_conformance_test'
|
3
|
-
require_relative '../shared/
|
3
|
+
require_relative '../shared/dtr_questionnaire_response_prepopulation_test'
|
4
4
|
|
5
5
|
module DaVinciDTRTestKit
|
6
|
-
class
|
7
|
-
id :
|
6
|
+
class DTRRespiratoryQuestionnaireResponseGroup < Inferno::TestGroup
|
7
|
+
id :dtr_resp_qr
|
8
8
|
title 'Questionnaire Response'
|
9
9
|
description %(
|
10
10
|
Demonstrate the ability to pre-populate and respond to the Respiratory Assist Device Questionnaire.
|
11
11
|
)
|
12
12
|
run_as_group
|
13
13
|
|
14
|
-
test from: :
|
14
|
+
test from: :dtr_resp_qr_save,
|
15
15
|
receives_request: :questionnaire_response_save
|
16
16
|
|
17
|
-
test from: :
|
17
|
+
test from: :dtr_qr_basic_conformance,
|
18
18
|
uses_request: :questionnaire_response_save
|
19
19
|
|
20
|
-
test from: :
|
20
|
+
test from: :dtr_qr_prepopulation,
|
21
21
|
uses_request: :questionnaire_response_save
|
22
22
|
end
|
23
23
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require_relative '../../urls'
|
2
2
|
|
3
3
|
module DaVinciDTRTestKit
|
4
|
-
class
|
4
|
+
class DTRRespiratoryQuestionnaireResponseSaveTest < Inferno::Test
|
5
5
|
include URLs
|
6
6
|
|
7
|
-
id :
|
7
|
+
id :dtr_resp_qr_save
|
8
8
|
title 'Save the QuestionnaireResponse after completing it'
|
9
9
|
description %(
|
10
10
|
Inferno, acting as the EHR, will wait for a request to save the QuestionnaireResponse from the client.
|
@@ -2,10 +2,10 @@ require 'securerandom'
|
|
2
2
|
require_relative '../../urls'
|
3
3
|
|
4
4
|
module DaVinciDTRTestKit
|
5
|
-
class
|
5
|
+
class DTRRespiratoryRenderingAttestationTest < Inferno::Test
|
6
6
|
include URLs
|
7
7
|
|
8
|
-
id :
|
8
|
+
id :dtr_resp_rendering_attest
|
9
9
|
title 'Check that the client renders the questionnaire (Attestation)'
|
10
10
|
description %(
|
11
11
|
This test provides the tester an opportunity to observe their client application following the receipt of the
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'dtr_respiratory_rendering_attestation_test'
|
2
|
+
|
3
|
+
module DaVinciDTRTestKit
|
4
|
+
class DTRRespiratoryRenderingGroup < Inferno::TestGroup
|
5
|
+
id :dtr_resp_rendering
|
6
|
+
title 'Questionnaire Rendering'
|
7
|
+
description %(
|
8
|
+
Demonstrate the ability to render the Respiratory Assist Device Questionnaire.
|
9
|
+
)
|
10
|
+
run_as_group
|
11
|
+
|
12
|
+
test from: :dtr_resp_rendering_attest
|
13
|
+
end
|
14
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative '
|
3
|
-
require_relative '
|
1
|
+
require_relative 'dtr_respiratory_questionnaire_package_group'
|
2
|
+
require_relative 'dtr_respiratory_rendering_group'
|
3
|
+
require_relative 'dtr_respiratory_questionnaire_response_group'
|
4
4
|
|
5
5
|
module DaVinciDTRTestKit
|
6
|
-
class
|
7
|
-
id :
|
6
|
+
class DTRSmartAppRespiratoryWorkflowGroup < Inferno::TestGroup
|
7
|
+
id :dtr_smart_app_resp_workflow
|
8
8
|
title 'Respiratory Assist Device Questionnaire Workflow'
|
9
9
|
description %(
|
10
10
|
This workflow validates that a DTR SMART App can perform a full DTR
|
@@ -16,8 +16,8 @@ module DaVinciDTRTestKit
|
|
16
16
|
3. Pre-populate the questionnaire response
|
17
17
|
)
|
18
18
|
|
19
|
-
group from: :
|
20
|
-
group from: :
|
21
|
-
group from: :
|
19
|
+
group from: :dtr_resp_qp
|
20
|
+
group from: :dtr_resp_rendering
|
21
|
+
group from: :dtr_resp_qr
|
22
22
|
end
|
23
23
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require_relative '../../urls'
|
3
|
+
|
4
|
+
module DaVinciDTRTestKit
|
5
|
+
class DTRPrepopulationAttestationTest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :dtr_prepopulation_attest
|
9
|
+
title 'Check that the client pre-populates the Questionnaire (Attestation)'
|
10
|
+
description %(
|
11
|
+
Validate that pre-population of patient's information occurs as expected.
|
12
|
+
|
13
|
+
Note that the test requires that two questions be pre-populated so that both a pre-populated
|
14
|
+
and an overridden answer can be demonstrated when the QuestionnaireResponse is generated.
|
15
|
+
)
|
16
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@207'
|
17
|
+
|
18
|
+
run do
|
19
|
+
random_id = SecureRandom.uuid
|
20
|
+
wait(
|
21
|
+
identifier: random_id,
|
22
|
+
message: %(
|
23
|
+
I attest that the DTR application has automatically filled in at least two questions with
|
24
|
+
values determined by the questionnaire's pre-population logic executed on data in the EHR.
|
25
|
+
|
26
|
+
[Click here](#{resume_pass_url}?token=#{random_id}) if the above statement is **true**.
|
27
|
+
|
28
|
+
[Click here](#{resume_fail_url}?token=#{random_id}) if the above statement is **false**.
|
29
|
+
)
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_override_attestation_test.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require_relative '../../urls'
|
3
|
+
|
4
|
+
module DaVinciDTRTestKit
|
5
|
+
class DTRPrepopulationOverrideAttestationTest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :dtr_prepopulation_override_attest
|
9
|
+
title 'Check that the user can manually populate answers in the Questionnaire (Attestation)'
|
10
|
+
description %(
|
11
|
+
Validate that the user can edit the rendered form to provide answers, including
|
12
|
+
- Providing an answer for an unanswered question.
|
13
|
+
- Overriding a pre-populated answer with a manual answer.
|
14
|
+
|
15
|
+
Note that at least one pre-populated answer must remain un-altered to demonstrate
|
16
|
+
its representation in the resulting QuestionnaireResponse.
|
17
|
+
)
|
18
|
+
|
19
|
+
run do
|
20
|
+
random_id = SecureRandom.uuid
|
21
|
+
wait(
|
22
|
+
identifier: random_id,
|
23
|
+
message: %(
|
24
|
+
I attest that the user has done the following while filling out the form:
|
25
|
+
- Changed a pre-populated answer to a new value.
|
26
|
+
- Provided an answer to a question that was not pre-populated.
|
27
|
+
- Left a pre-populated answer unchanged.
|
28
|
+
|
29
|
+
[Click here](#{resume_pass_url}?token=#{random_id}) if the above statement is **true**.
|
30
|
+
|
31
|
+
[Click here](#{resume_fail_url}?token=#{random_id}) if the above statement is **false**.
|
32
|
+
)
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -4,7 +4,7 @@ module DaVinciDTRTestKit
|
|
4
4
|
class DTRQuestionnairePackageValidationTest < Inferno::Test
|
5
5
|
include URLs
|
6
6
|
|
7
|
-
id :
|
7
|
+
id :dtr_qp_request_validation
|
8
8
|
title 'Questionnaire Package request is valid'
|
9
9
|
description %(
|
10
10
|
This test validates the conformance of the client's request to the
|
@@ -16,6 +16,8 @@ module DaVinciDTRTestKit
|
|
16
16
|
to the bound ValueSet. Quantity, Coding, and code element bindings will fail if their code/system are not found in
|
17
17
|
the valueset.
|
18
18
|
)
|
19
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@168', 'hl7.fhir.us.davinci-dtr_2.0.1@293',
|
20
|
+
'hl7.fhir.us.davinci-dtr_2.0.1@295'
|
19
21
|
|
20
22
|
run do
|
21
23
|
load_tagged_requests QUESTIONNAIRE_PACKAGE_TAG
|
@@ -6,12 +6,16 @@ module DaVinciDTRTestKit
|
|
6
6
|
include URLs
|
7
7
|
include DTRQuestionnaireResponseValidation
|
8
8
|
|
9
|
-
id :
|
9
|
+
id :dtr_qr_basic_conformance
|
10
10
|
title 'QuestionnaireResponse is conformant'
|
11
11
|
description %(
|
12
|
-
This test validates the conformance of QuestionnaireResponse representing
|
13
|
-
|
14
|
-
|
12
|
+
This test validates the conformance of a `QuestionnaireResponse` representing a completed questionnaire.
|
13
|
+
It ensures that the `QuestionnaireResponse` adheres to the appropriate profile based on its type:
|
14
|
+
|
15
|
+
- **Static QuestionnaireResponse:** Must conform to the [DTR Questionnaire Response](https://hl7.org/fhir/us/davinci-dtr/STU2/StructureDefinition-dtr-questionnaireresponse.html)
|
16
|
+
profile.
|
17
|
+
- **Adaptive QuestionnaireResponse:** Must conform to the [Adaptive Questionnaire Response](http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse-adapt)
|
18
|
+
profile.
|
15
19
|
)
|
16
20
|
|
17
21
|
def profile_url
|
@@ -2,10 +2,10 @@ require_relative '../../dtr_questionnaire_response_validation'
|
|
2
2
|
require_relative '../../fixtures'
|
3
3
|
|
4
4
|
module DaVinciDTRTestKit
|
5
|
-
class
|
5
|
+
class DTRQuestionnaireResponsePrepopulationTest < Inferno::Test
|
6
6
|
include DTRQuestionnaireResponseValidation
|
7
7
|
|
8
|
-
id :
|
8
|
+
id :dtr_qr_prepopulation
|
9
9
|
title 'QuestionnaireResponse pre-population and user overrides are conformant'
|
10
10
|
description %(
|
11
11
|
This test validates the conformance of the client's pre-population of the QuestionnaireResponse.
|
@@ -20,6 +20,9 @@ module DaVinciDTRTestKit
|
|
20
20
|
the origin.source extension set to 'override' and an answer different
|
21
21
|
from the expected result from execution of the CQL on Inferno's data.
|
22
22
|
)
|
23
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@173', 'hl7.fhir.us.davinci-dtr_2.0.1@174',
|
24
|
+
'hl7.fhir.us.davinci-dtr_2.0.1@176', 'hl7.fhir.us.davinci-dtr_2.0.1@178',
|
25
|
+
'hl7.fhir.us.davinci-dtr_2.0.1@207'
|
23
26
|
|
24
27
|
run do
|
25
28
|
questionnaire_response_json = request.request_body
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require_relative '../../urls'
|
3
|
+
|
4
|
+
module DaVinciDTRTestKit
|
5
|
+
class DTRRenderingAttestationTest < Inferno::Test
|
6
|
+
include URLs
|
7
|
+
|
8
|
+
id :dtr_rendering_attest
|
9
|
+
title 'Check that the client renders the Questionnaire (Attestation)'
|
10
|
+
description %(
|
11
|
+
The tester will attest to the ability of the client to appropriately render the
|
12
|
+
Questionnaire and allow user interaction.
|
13
|
+
)
|
14
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@4'
|
15
|
+
|
16
|
+
run do
|
17
|
+
random_id = SecureRandom.uuid
|
18
|
+
wait(
|
19
|
+
identifier: random_id,
|
20
|
+
message: %(
|
21
|
+
I attest that the DTR client application has displayed the tester-provided Questionnaire
|
22
|
+
appropriately, following all rendering and formatting directives within the Questionnaire
|
23
|
+
and allowing the user to interact with the questions in the form.
|
24
|
+
|
25
|
+
[Click here](#{resume_pass_url}?token=#{random_id}) if the above statement is **true**.
|
26
|
+
|
27
|
+
[Click here](#{resume_fail_url}?token=#{random_id}) if the above statement is **false**.
|
28
|
+
)
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -5,11 +5,13 @@ module DaVinciDTRTestKit
|
|
5
5
|
class DTRSmartAppPrepopulationAttestationTest < Inferno::Test
|
6
6
|
include URLs
|
7
7
|
|
8
|
-
id :
|
8
|
+
id :dtr_smart_app_prepopulation_attest
|
9
9
|
title 'Check that the client pre-populates the questionnaire (Attestation)'
|
10
10
|
description %(
|
11
11
|
Validate that pre-population of patient name information occurs as expected.
|
12
12
|
)
|
13
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@207'
|
14
|
+
|
13
15
|
run do
|
14
16
|
random_id = SecureRandom.uuid
|
15
17
|
wait(
|
@@ -5,7 +5,7 @@ module DaVinciDTRTestKit
|
|
5
5
|
class DTRSmartAppPrepopulationOverrideAttestationTest < Inferno::Test
|
6
6
|
include URLs
|
7
7
|
|
8
|
-
id :
|
8
|
+
id :dtr_smart_app_prepopulation_override_attest
|
9
9
|
title 'Validate the user can override pre-populated data (Attestation)'
|
10
10
|
description %(
|
11
11
|
Validate that the user can edit a pre-populated item and replace it with another value.
|
@@ -2,10 +2,10 @@ require 'base64'
|
|
2
2
|
require_relative '../../urls'
|
3
3
|
|
4
4
|
module DaVinciDTRTestKit
|
5
|
-
class
|
5
|
+
class DTRSmartAppQuestionnairePackageRequestTest < Inferno::Test
|
6
6
|
include URLs
|
7
7
|
|
8
|
-
id :
|
8
|
+
id :dtr_smart_app_qp_request
|
9
9
|
title 'Invoke the DTR Questionnaire Package operation'
|
10
10
|
description %(
|
11
11
|
Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
|
@@ -24,7 +24,7 @@ module DaVinciDTRTestKit
|
|
24
24
|
description: 'Required if "Launch from Inferno" is selected'
|
25
25
|
input :static_smart_patient_id,
|
26
26
|
optional: true,
|
27
|
-
title: 'SMART App Launch Patient ID
|
27
|
+
title: 'SMART App Launch Patient ID',
|
28
28
|
type: 'text',
|
29
29
|
description: %(
|
30
30
|
Patient instance ID to be provided by Inferno as the patient as a part of the SMART App Launch.
|
@@ -32,7 +32,7 @@ module DaVinciDTRTestKit
|
|
32
32
|
default: 'pat015'
|
33
33
|
input :static_smart_fhir_context,
|
34
34
|
optional: true,
|
35
|
-
title: 'SMART App Launch fhirContext
|
35
|
+
title: 'SMART App Launch fhirContext',
|
36
36
|
type: 'textarea',
|
37
37
|
description: %(
|
38
38
|
References to be provided by Inferno as the fhirContext as a part of the SMART App
|
@@ -43,10 +43,10 @@ module DaVinciDTRTestKit
|
|
43
43
|
{ reference: 'DeviceRequest/devreqe0470' }])
|
44
44
|
input :static_ehr_bundle,
|
45
45
|
optional: true,
|
46
|
-
title: 'EHR-available resources
|
46
|
+
title: 'EHR-available resources',
|
47
47
|
type: 'textarea',
|
48
48
|
description: %(
|
49
|
-
Resources available from the EHR needed to drive
|
49
|
+
Resources available from the EHR needed to drive this workflow.
|
50
50
|
Formatted as a FHIR bundle that contains resources, each with an ID property populated. Each
|
51
51
|
instance present will be available for retrieval from Inferno at the endpoint:
|
52
52
|
<fhir-base>/<resource type>/<instance id>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../../dtr_questionnaire_response_validation'
|
2
|
+
|
3
|
+
module DaVinciDTRTestKit
|
4
|
+
class DTRSmartAppQuestionnaireResponseCorrectnessTest < Inferno::Test
|
5
|
+
include DTRQuestionnaireResponseValidation
|
6
|
+
|
7
|
+
id :dtr_smart_app_qr_correctness
|
8
|
+
title 'QuestionnaireResponse is correct for the workflow'
|
9
|
+
description %(
|
10
|
+
Verify that the QuestionnaireResponse
|
11
|
+
- Is for the Questionnaire provided by the tester.
|
12
|
+
- Has source extensions demonstrating answers that are manually entered,
|
13
|
+
automatically pre-populated, and manually overridden.
|
14
|
+
- Contains answers for all required items.
|
15
|
+
)
|
16
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@209', 'hl7.fhir.us.davinci-dtr_2.0.1@210'
|
17
|
+
|
18
|
+
input :custom_questionnaire_package_response,
|
19
|
+
title: 'Custom Questionnaire Package Response JSON',
|
20
|
+
description: %(
|
21
|
+
A JSON PackageBundle may be provided here to replace Inferno's response to the
|
22
|
+
$questionnaire-package request.
|
23
|
+
),
|
24
|
+
type: 'textarea'
|
25
|
+
|
26
|
+
run do
|
27
|
+
validate_questionnaire_response_correctness(request.request_body, custom_questionnaire_package_response)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -4,7 +4,7 @@ module DaVinciDTRTestKit
|
|
4
4
|
class DTRSmartAppQuestionnaireResponseSaveTest < Inferno::Test
|
5
5
|
include URLs
|
6
6
|
|
7
|
-
id :
|
7
|
+
id :dtr_smart_app_qr_save
|
8
8
|
title 'Save the QuestionnaireResponse after completing it'
|
9
9
|
description %(
|
10
10
|
Inferno, acting as the EHR, will wait for a request to save the QuestionnaireResponse from the client.
|
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
input :client_id
|
13
13
|
|
14
14
|
def prompt
|
15
|
-
if config.options[:adaptive]
|
15
|
+
if config.options[:adaptive] || config.options[:custom]
|
16
16
|
'Store the completed questionnaire back into the EHR.'
|
17
17
|
else
|
18
18
|
<<~DESCRIPTION
|