davinci_dtr_test_kit 0.14.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +121 -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} +2 -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} +2 -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} +3 -3
- 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} +12 -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} +2 -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} +24 -18
- 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} +13 -13
- 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 +1 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_override_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_package_request_test.rb +1 -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 +10 -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 +1 -1
- 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 +60 -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 +31 -0
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_override_attestation_test.rb +35 -0
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb +1 -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} +2 -2
- data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_rendering_attestation_test.rb +30 -0
- data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_attestation_test.rb +1 -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 +28 -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 +42 -36
- 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/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 +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_expressions_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_extensions_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_bundles_validation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_search_validation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb +4 -15
- 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 +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +4 -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/urls.rb +1 -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 +88 -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
@@ -1,7 +1,8 @@
|
|
1
1
|
require_relative 'auth_groups/oauth2_authentication_group'
|
2
|
-
require_relative 'client_groups/
|
3
|
-
require_relative 'client_groups/dinner_static/
|
4
|
-
require_relative 'client_groups/dinner_adaptive/
|
2
|
+
require_relative 'client_groups/respiratory/dtr_smart_app_respiratory_workflow_group'
|
3
|
+
require_relative 'client_groups/dinner_static/dtr_smart_app_static_dinner_workflow_group'
|
4
|
+
require_relative 'client_groups/dinner_adaptive/dtr_smart_app_adaptive_dinner_workflow_group'
|
5
|
+
require_relative 'client_groups/custom_static/dtr_smart_app_custom_static_workflow_group'
|
5
6
|
require_relative 'endpoints/cors'
|
6
7
|
require_relative 'endpoints/mock_authorization'
|
7
8
|
require_relative 'endpoints/mock_authorization/authorize_endpoint'
|
@@ -21,8 +22,6 @@ module DaVinciDTRTestKit
|
|
21
22
|
title 'Da Vinci DTR SMART App Test Suite'
|
22
23
|
description File.read(File.join(__dir__, 'docs', 'dtr_smart_app_suite_description_v201.md'))
|
23
24
|
|
24
|
-
version VERSION
|
25
|
-
|
26
25
|
links [
|
27
26
|
{
|
28
27
|
label: 'Report Issue',
|
@@ -67,7 +66,7 @@ module DaVinciDTRTestKit
|
|
67
66
|
suite_endpoint :post, NEXT_PATH, MockPayer::NextQuestionEndpoint
|
68
67
|
|
69
68
|
# EHR
|
70
|
-
route(:get,
|
69
|
+
route(:get, METADATA_PATH, MockEHR.method(:metadata))
|
71
70
|
suite_endpoint :post, QUESTIONNAIRE_RESPONSE_PATH, MockEHR::QuestionnaireResponseEndpoint
|
72
71
|
suite_endpoint :get, FHIR_RESOURCE_PATH, MockEHR::FHIRGetEndpoint
|
73
72
|
suite_endpoint :get, FHIR_SEARCH_PATH, MockEHR::FHIRGetEndpoint
|
@@ -90,8 +89,8 @@ module DaVinciDTRTestKit
|
|
90
89
|
Tests in this group validate that the client can complete basic DTR workflows
|
91
90
|
)
|
92
91
|
|
93
|
-
group from: :
|
94
|
-
group from: :
|
92
|
+
group from: :dtr_smart_app_custom_static_workflow
|
93
|
+
group from: :dtr_smart_app_adaptive_dinner_workflow
|
95
94
|
end
|
96
95
|
group do
|
97
96
|
id :dtr_smart_app_questionnaire_functionality
|
@@ -100,7 +99,8 @@ module DaVinciDTRTestKit
|
|
100
99
|
Tests in this group validate that the client can complete additional DTR workflows
|
101
100
|
covering additional must support features of questionnaires.
|
102
101
|
)
|
103
|
-
group from: :
|
102
|
+
group from: :dtr_smart_app_resp_workflow
|
103
|
+
group from: :dtr_smart_app_static_dinner_workflow
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|
@@ -62,8 +62,8 @@ module DaVinciDTRTestKit
|
|
62
62
|
base_url = env_base_url(env, OPENID_CONFIG_PATH)
|
63
63
|
response_body = {
|
64
64
|
issuer: base_url + FHIR_BASE_PATH,
|
65
|
-
authorization_endpoint: base_url
|
66
|
-
token_endpoint: base_url
|
65
|
+
authorization_endpoint: authorization_endpoint(base_url),
|
66
|
+
token_endpoint: token_endpoint(base_url),
|
67
67
|
jwks_uri: base_url + JKWS_PATH,
|
68
68
|
response_types_supported: ['id_token'],
|
69
69
|
subject_types_supported: ['public'],
|
@@ -79,5 +79,13 @@ module DaVinciDTRTestKit
|
|
79
79
|
path.gsub!(%r{#{endpoint_path}(/)?}, '')
|
80
80
|
"#{protocol}://#{host + path}"
|
81
81
|
end
|
82
|
+
|
83
|
+
def authorization_endpoint(base_url)
|
84
|
+
base_url + EHR_AUTHORIZE_PATH
|
85
|
+
end
|
86
|
+
|
87
|
+
def token_endpoint(base_url)
|
88
|
+
base_url + EHR_TOKEN_PATH
|
89
|
+
end
|
82
90
|
end
|
83
91
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../endpoints/mock_authorization'
|
4
|
+
|
3
5
|
module DaVinciDTRTestKit
|
4
6
|
module MockEHR
|
5
7
|
RESOURCE_SERVER_BASE = ENV.fetch('FHIR_REFERENCE_SERVER')
|
@@ -13,9 +15,23 @@ module DaVinciDTRTestKit
|
|
13
15
|
client
|
14
16
|
end
|
15
17
|
|
16
|
-
def metadata(
|
18
|
+
def metadata(env)
|
17
19
|
cs = resource_server_client.capability_statement
|
18
20
|
if cs.present?
|
21
|
+
# Overwrite the OAuth URIs returned by the reference server to point to the suite endpoints instead
|
22
|
+
oauth_uris_url = 'http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris'
|
23
|
+
base_url = MockAuthorization.env_base_url(env, METADATA_PATH)
|
24
|
+
sec_ext = cs.rest.first&.security&.extension&.delete_if { |e| e.url == oauth_uris_url }
|
25
|
+
sec_ext&.push(
|
26
|
+
FHIR::Extension.new(
|
27
|
+
url: oauth_uris_url,
|
28
|
+
extension: [
|
29
|
+
FHIR::Extension.new(url: 'authorize', valueUri: MockAuthorization.authorization_endpoint(base_url)),
|
30
|
+
FHIR::Extension.new(url: 'token', valueUri: MockAuthorization.token_endpoint(base_url))
|
31
|
+
]
|
32
|
+
)
|
33
|
+
)
|
34
|
+
|
19
35
|
[200, { 'Content-Type' => 'application/fhir+json', 'Access-Control-Allow-Origin' => '*' }, [cs.to_json]]
|
20
36
|
else
|
21
37
|
[500, { 'Access-Control-Allow-Origin' => '*' }, ['Unexpected error occurred while fetching metadata']]
|
@@ -19,7 +19,13 @@ module DaVinciDTRTestKit
|
|
19
19
|
response.status = 200
|
20
20
|
response.format = 'application/fhir+json'
|
21
21
|
response.headers['Access-Control-Allow-Origin'] = '*'
|
22
|
-
response.body = build_questionnaire_package_response.to_json
|
22
|
+
response.body = custom_response.presence || build_questionnaire_package_response.to_json
|
23
|
+
end
|
24
|
+
|
25
|
+
def custom_response
|
26
|
+
@custom_response ||= JSON.parse(result.input_json)
|
27
|
+
.find { |input| input['name'].include?('custom_questionnaire_package_response') }
|
28
|
+
&.dig('value')
|
23
29
|
end
|
24
30
|
|
25
31
|
def update_result
|
@@ -8,7 +8,7 @@ module DaVinciDTRTestKit
|
|
8
8
|
FIXTURE_CONFIG = [
|
9
9
|
{
|
10
10
|
group_ids: [
|
11
|
-
'
|
11
|
+
'dtr_smart_app_resp_workflow',
|
12
12
|
'dtr_full_ehr_questionnaire_workflow'
|
13
13
|
],
|
14
14
|
questionnaire_package: File.join('respiratory_assist_device', 'questionnaire_package.json'),
|
@@ -16,23 +16,23 @@ module DaVinciDTRTestKit
|
|
16
16
|
},
|
17
17
|
{
|
18
18
|
group_ids: [
|
19
|
-
'
|
20
|
-
'
|
19
|
+
'dtr_smart_app_static_dinner_workflow',
|
20
|
+
'dtr_full_ehr_static_dinner_workflow'
|
21
21
|
],
|
22
22
|
questionnaire_package: File.join('dinner_static', 'questionnaire_dinner_order_static.json'),
|
23
23
|
questionnaire_response: File.join('dinner_static', 'questionnaire_response_dinner_order_static.json')
|
24
24
|
},
|
25
25
|
{
|
26
26
|
group_ids: [
|
27
|
-
'
|
28
|
-
'
|
27
|
+
'dtr_full_ehr_adaptive_retrieval',
|
28
|
+
'dtr_smart_app_adaptive_retrieval'
|
29
29
|
],
|
30
30
|
questionnaire_package: File.join('dinner_adaptive', 'questionnaire_dinner_order_adaptive.json'),
|
31
31
|
next_question: File.join('dinner_adaptive', 'dinner_order_adaptive_next_question_initial.json')
|
32
32
|
},
|
33
33
|
{
|
34
34
|
group_ids: [
|
35
|
-
'
|
35
|
+
'dtr_adaptive_followup_questions'
|
36
36
|
],
|
37
37
|
next_question: {
|
38
38
|
bean_burrito: File.join('dinner_adaptive', 'dinner_order_adaptive_next_question_burrito.json'),
|
Binary file
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require_relative 'version'
|
2
|
+
|
3
|
+
module DaVinciDTRTestKit
|
4
|
+
class Metadata < Inferno::TestKit
|
5
|
+
id :davinci_dtr_test_kit
|
6
|
+
title 'DDa Vinci Documentation Templates and Rules (DTR) Test Kit'
|
7
|
+
description <<~DESCRIPTION
|
8
|
+
The Da Vinci Documentation Templates and Rules (DTR) Test Kit validates
|
9
|
+
the conformance of DTR SMART app client and payer server implementations to
|
10
|
+
[version 2.0.1 of the Da Vinci DTR Implementation
|
11
|
+
Guide](https://hl7.org/fhir/us/davinci-dtr/STU2/).
|
12
|
+
|
13
|
+
<!-- break -->
|
14
|
+
|
15
|
+
## Status
|
16
|
+
|
17
|
+
These tests are a **DRAFT** intended to allow DTR implementers to perform
|
18
|
+
preliminary checks of their implementations against the DTR IG requirements and
|
19
|
+
provide feedback on the tests. Future versions of these tests may validate other
|
20
|
+
requirements and may change how these are tested.
|
21
|
+
|
22
|
+
## Test Scope and Limitations
|
23
|
+
|
24
|
+
The DTR Test Kit includes suites for the following DTR actors:
|
25
|
+
- **DTR Payer Server**: verifies the ability of a payer server to respond
|
26
|
+
to requests for questionnaires.
|
27
|
+
- **DTR SMART App**: verifies the ability of a SMART app to launch, get questionnaires
|
28
|
+
from a payer server, render them, and allow users to complete them.
|
29
|
+
- **Full DTR EHR**: verifies the ability of a EHR to get questionnaires
|
30
|
+
from a payer server, render them, and allow users to complete them.
|
31
|
+
- **Light DTR EHR**: verifies the ability of a EHR to launch a DTR SMART
|
32
|
+
app and respond to FHIR data gathering requests.
|
33
|
+
|
34
|
+
Documentation of the current tests and their limitations can be found in each
|
35
|
+
suite's description when the tests are run and can also be viewed in the
|
36
|
+
source code:
|
37
|
+
- [SMART App Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_smart_app_suite_description_v201.md)
|
38
|
+
- [Payer Server Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_payer_server_suite_description_v201.md)
|
39
|
+
- [Full DTR EHR Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_full_ehr_suite_description_v201.md)
|
40
|
+
- [Light DTR EHR Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md)
|
41
|
+
|
42
|
+
### Test Scope
|
43
|
+
|
44
|
+
To validate the behavior of the system under test, Inferno will act as an
|
45
|
+
exchange partner. Specifically,
|
46
|
+
|
47
|
+
- **When testing a DTR SMART app client**: Inferno will simulate both a payer
|
48
|
+
server that can return questionnaires and a Light DTR EHR that can respond
|
49
|
+
to queries for clinical data used to pre-populate questionnaire responses.
|
50
|
+
Inferno uses the SMART App Launch framework to establish a connection with
|
51
|
+
the app under test, either in EHR Launch or Standalone Launch mode. The app
|
52
|
+
will be expected to initiate requests to Inferno and demonstrate its ability
|
53
|
+
to react to the returned responses. Over the course of these interactions,
|
54
|
+
Inferno will seek to observe the conformant completion of a questionnaire
|
55
|
+
including pre-population, as well as the ability of the app to correctly
|
56
|
+
render the questionnaire and allow users to interact with it.
|
57
|
+
- **When testing a DTR payer server**: Inferno will simulate a DTR app
|
58
|
+
by requesting questionnaires from the server under test. The server
|
59
|
+
will be expected to respond to these requests from Inferno. Over the course
|
60
|
+
of these interactions, Inferno will seek to observe the ability of the
|
61
|
+
server under test to return conformant questionnaires.
|
62
|
+
- **When testing a Full DTR EHR client**: Inferno will simulate a payer
|
63
|
+
server that can return questionnaires. The EHR will be expected to initiate
|
64
|
+
requests to Inferno and demonstrate its ability to react to the returned
|
65
|
+
responses. Over the course of these interactions,
|
66
|
+
Inferno will seek to observe the conformant completion of a questionnaire
|
67
|
+
including fetch, as well as the ability of the app to correctly
|
68
|
+
render the questionnaire and allow users to interact with it.
|
69
|
+
- **When testing a Light DTR EHR server**: Inferno will simulate a DTR SMART app
|
70
|
+
that tested servers can launch and that will request FHIR data from and create
|
71
|
+
and update QuestionnaireResponse and Task instances on the server under test.
|
72
|
+
Over the course of these interactions, Inferno will seek to observe the ability of the
|
73
|
+
server under test to conformantly serve as a FHIR server for a DTR SMART App.
|
74
|
+
|
75
|
+
### Known Limitations
|
76
|
+
|
77
|
+
- **SMART app tests**:
|
78
|
+
- Some questionnaire features, including adaptive questionnaires, are not yet tested.
|
79
|
+
- Inferno uses a single FHIR endpoint to simulate both the payer and the EHR.
|
80
|
+
- **Payer server tests**:
|
81
|
+
- Inferno checks that CQL is used for pre-population in the questionnaires returned by the
|
82
|
+
payer server, but does not currently validate the correctness or executability of that CQL.
|
83
|
+
- **Full EHR tests**:
|
84
|
+
- Some questionnaire features are not yet tested.
|
85
|
+
- Non-standard approach to accessing QuestionnaireResponse instances for validation.
|
86
|
+
- **Light EHR tests**:
|
87
|
+
- `fhirContext` not tested as a part of the Light EHR's SMART App launch process.
|
88
|
+
|
89
|
+
## Reporting Issues
|
90
|
+
|
91
|
+
Please report any issues with this set of tests in the [GitHub
|
92
|
+
Issues](https://github.com/inferno-framework/davinci-dtr-test-kit/issues)
|
93
|
+
section of the
|
94
|
+
[open-source code repository](https://github.com/inferno-framework/davinci-dtr-test-kit).
|
95
|
+
DESCRIPTION
|
96
|
+
suite_ids [:dtr_payer_server, :dtr_smart_app, :dtr_full_ehr, :dtr_light_ehr]
|
97
|
+
tags ['Da Vinci', 'DTR']
|
98
|
+
last_updated LAST_UPDATED
|
99
|
+
version VERSION
|
100
|
+
maturity 'Low'
|
101
|
+
authors ['Karl Naden', 'Tom Strassner', 'Robert Passas', 'Vanessa Fotso', 'Elsa Perelli']
|
102
|
+
repo 'https://github.com/inferno-framework/davinci-dtr-test-kit'
|
103
|
+
end
|
104
|
+
end
|
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:adaptive_questionnaire_bundles].
|
15
|
+
skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
check_libraries(scratch[:adaptive_questionnaire_bundles])
|
17
17
|
end
|
18
18
|
end
|
data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_expressions_test.rb
CHANGED
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:adaptive_questionnaire_bundles].
|
15
|
+
skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
questionnaires = extract_questionnaires_from_bundles(scratch[:adaptive_questionnaire_bundles])
|
17
17
|
verify_questionnaire_items(questionnaires)
|
18
18
|
scratch[:adaptive_questionnaire_bundles] = nil
|
data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_extensions_test.rb
CHANGED
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:adaptive_questionnaire_bundles].
|
15
|
+
skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
questionnaires = extract_questionnaires_from_bundles(scratch[:adaptive_questionnaire_bundles])
|
17
17
|
verify_questionnaire_extensions(questionnaires)
|
18
18
|
end
|
@@ -22,7 +22,7 @@ module DaVinciDTRTestKit
|
|
22
22
|
skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
|
23
23
|
test_passed = true
|
24
24
|
profile_url = 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1'
|
25
|
-
assert
|
25
|
+
assert scratch[:adaptive_questionnaire_bundles].present?, 'No resources to validate.'
|
26
26
|
scratch[:adaptive_questionnaire_bundles].each_with_index do |bundle, index|
|
27
27
|
resource_is_valid = validate_resource(bundle, :bundle, profile_url, index)
|
28
28
|
test_passed = false unless resource_is_valid
|
@@ -22,7 +22,7 @@ module DaVinciDTRTestKit
|
|
22
22
|
skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
|
23
23
|
test_passed = true
|
24
24
|
profile_url = 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-adapt-search|2.0.1'
|
25
|
-
assert
|
25
|
+
assert scratch[:adaptive_questionnaire_bundles].present?, 'No questionnaire bundles to validate.'
|
26
26
|
|
27
27
|
questionnaires = scratch[:adaptive_questionnaire_bundles].filter_map do |bundle|
|
28
28
|
bundle.entry&.filter_map { |entry| entry.resource if entry.resource&.resourceType == 'Questionnaire' }
|
data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require_relative '../validation_test'
|
2
|
+
require_relative '../cql_test'
|
2
3
|
module DaVinciDTRTestKit
|
3
4
|
class PayerAdaptiveFormQuestionnaireResponseTest < Inferno::Test
|
4
5
|
include DaVinciDTRTestKit::ValidationTest
|
6
|
+
include DaVinciDTRTestKit::CQLTest
|
5
7
|
id :payer_server_adaptive_response_validation_test
|
6
8
|
title 'Validate that the adaptive response conforms to the DTR Questionnaire Package operation definition'
|
7
9
|
# output :questionnaire_response
|
@@ -38,21 +40,8 @@ module DaVinciDTRTestKit
|
|
38
40
|
assert_response_status([200, 201], response: req.response)
|
39
41
|
|
40
42
|
resource = FHIR.from_contents(req.response_body)
|
41
|
-
|
42
|
-
|
43
|
-
param.resource if param.resource&.resourceType == 'Bundle'
|
44
|
-
end
|
45
|
-
assert_valid_resource(resource:,
|
46
|
-
profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters|2.0.1')
|
47
|
-
questionnaire_bundle = resource.parameter.find { |param| param.resource.resourceType == 'Bundle' }&.resource
|
48
|
-
assert questionnaire_bundle, 'No questionnaire bundle found in the response'
|
49
|
-
elsif resource&.resourceType == 'Bundle'
|
50
|
-
scratch[:adaptive_questionnaire_bundles] = [resource]
|
51
|
-
assert_valid_resource(resource:,
|
52
|
-
profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1')
|
53
|
-
else
|
54
|
-
assert(false, "Unexpected resourceType: #{resource&.resourceType}. Expected Parameters or Bundle")
|
55
|
-
end
|
43
|
+
|
44
|
+
perform_questionnaire_package_validation(resource, 'adaptive')
|
56
45
|
end
|
57
46
|
end
|
58
47
|
end
|
@@ -43,7 +43,7 @@ module DaVinciDTRTestKit
|
|
43
43
|
:access_token,
|
44
44
|
:initial_static_questionnaire_request
|
45
45
|
|
46
|
-
test from: :
|
46
|
+
test from: :dtr_v201_payer_static_request_test, receives_request: :static_questionnaire_request
|
47
47
|
test from: :dtr_v201_payer_static_form_request_validation_test
|
48
48
|
test from: :dtr_v201_payer_static_form_response_test
|
49
49
|
test from: :dtr_v201_payer_static_form_libraries_test
|
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:static_questionnaire_bundles].
|
15
|
+
skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
check_libraries(scratch[:static_questionnaire_bundles])
|
17
17
|
end
|
18
18
|
end
|
data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb
CHANGED
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:static_questionnaire_bundles].
|
15
|
+
skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
questionnaires = extract_questionnaires_from_bundles(scratch[:static_questionnaire_bundles])
|
17
17
|
verify_questionnaire_items(questionnaires, final_cql_test: true)
|
18
18
|
scratch[:static_questionnaire_bundles] = nil
|
data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb
CHANGED
@@ -12,7 +12,7 @@ module DaVinciDTRTestKit
|
|
12
12
|
|
13
13
|
run do
|
14
14
|
skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
|
15
|
-
skip_if scratch[:static_questionnaire_bundles].
|
15
|
+
skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
|
16
16
|
questionnaires = extract_questionnaires_from_bundles(scratch[:static_questionnaire_bundles])
|
17
17
|
verify_questionnaire_extensions(questionnaires)
|
18
18
|
end
|
@@ -7,7 +7,7 @@ module DaVinciDTRTestKit
|
|
7
7
|
description %(
|
8
8
|
Inferno will validate questionnaires returned by the payer server.
|
9
9
|
)
|
10
|
-
id :
|
10
|
+
id :dtr_v201_payer_static_request_test
|
11
11
|
config options: { accepts_multiple_requests: false }
|
12
12
|
input :initial_static_questionnaire_request, :access_token, :retrieval_method, :url
|
13
13
|
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require_relative '../urls'
|
2
2
|
require_relative '../validation_test'
|
3
|
+
require_relative '../cql_test'
|
3
4
|
module DaVinciDTRTestKit
|
4
5
|
class PayerStaticFormResponseTest < Inferno::Test
|
5
6
|
include URLs
|
6
7
|
include DaVinciDTRTestKit::ValidationTest
|
8
|
+
include DaVinciDTRTestKit::CQLTest
|
7
9
|
id :dtr_v201_payer_static_form_response_test
|
8
10
|
title 'Validate that the static response conforms to the DTR Questionnaire Package operation definition.'
|
9
11
|
description %(
|
@@ -36,21 +38,8 @@ module DaVinciDTRTestKit
|
|
36
38
|
assert_response_status([200, 201], response: req.response)
|
37
39
|
|
38
40
|
resource = FHIR.from_contents(req.response_body)
|
39
|
-
|
40
|
-
|
41
|
-
param.resource if param.resource&.resourceType == 'Bundle'
|
42
|
-
end
|
43
|
-
assert_valid_resource(resource:,
|
44
|
-
profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters|2.0.1')
|
45
|
-
questionnaire_bundle = resource.parameter.find { |param| param.resource.resourceType == 'Bundle' }&.resource
|
46
|
-
assert questionnaire_bundle, 'No questionnaire bundle found in the response'
|
47
|
-
elsif resource&.resourceType == 'Bundle'
|
48
|
-
scratch[:static_questionnaire_bundles] = [resource]
|
49
|
-
assert_valid_resource(resource:,
|
50
|
-
profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1')
|
51
|
-
else
|
52
|
-
assert(false, "Unexpected resourceType: #{resource&.resourceType}. Expected Parameters or Bundle")
|
53
|
-
end
|
41
|
+
|
42
|
+
perform_questionnaire_package_validation(resource, 'static')
|
54
43
|
end
|
55
44
|
end
|
56
45
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module DaVinciDTRTestKit
|
2
|
+
class CommunicationRequestMustSupportTest < Inferno::Test
|
3
|
+
include USCoreTestKit::MustSupportTest
|
4
|
+
|
5
|
+
title 'All must support elements are provided in the CommunicationRequest resources returned'
|
6
|
+
description %(
|
7
|
+
This test will look through the CommunicationRequest resources
|
8
|
+
found previously for the following must support elements:\n
|
9
|
+
|
10
|
+
* CommunicationRequest.authoredOn
|
11
|
+
* CommunicationRequest.basedOn
|
12
|
+
* CommunicationRequest.extension:Coverage-Information
|
13
|
+
* CommunicationRequest.identifier
|
14
|
+
* CommunicationRequest.occurrence[x]
|
15
|
+
* CommunicationRequest.payload
|
16
|
+
* CommunicationRequest.payload.extension:codeableConcept
|
17
|
+
* CommunicationRequest.reasonCode
|
18
|
+
* CommunicationRequest.reasonReference
|
19
|
+
* CommunicationRequest.recipient
|
20
|
+
* CommunicationRequest.requester
|
21
|
+
* CommunicationRequest.sender
|
22
|
+
* CommunicationRequest.status
|
23
|
+
* CommunicationRequest.subject
|
24
|
+
)
|
25
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
|
26
|
+
id :communication_request_must_support_test
|
27
|
+
|
28
|
+
def resource_type
|
29
|
+
'CommunicationRequest'
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.metadata
|
33
|
+
@metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
|
34
|
+
aliases: true))
|
35
|
+
end
|
36
|
+
|
37
|
+
def scratch_resources
|
38
|
+
scratch[:communication_requests] ||= {}
|
39
|
+
end
|
40
|
+
|
41
|
+
run do
|
42
|
+
skip_if(communication_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
|
43
|
+
perform_must_support_test(all_scratch_resources)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
|
|
6
6
|
|
7
7
|
title 'Server returns correct CommunicationRequest resource from CommunicationRequest read interaction'
|
8
8
|
description 'A server SHOULD support the CommunicationRequest read interaction.'
|
9
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@275'
|
9
10
|
|
10
11
|
id :communication_request_read
|
11
12
|
output :communication_request_resources
|
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
|
|
14
15
|
'CommunicationRequest'
|
15
16
|
end
|
16
17
|
|
18
|
+
def scratch_resources
|
19
|
+
scratch[:communication_requests] ||= {}
|
20
|
+
end
|
21
|
+
|
17
22
|
def communication_request_id_list
|
18
23
|
return [nil] unless respond_to? :communication_request_ids
|
19
24
|
|
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
|
|
21
26
|
end
|
22
27
|
|
23
28
|
run do
|
24
|
-
|
25
|
-
|
26
|
-
output communication_request_resources: resources.to_json
|
29
|
+
perform_read_test(communication_request_id_list, resource_type)
|
27
30
|
end
|
28
31
|
end
|
29
32
|
end
|
data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_validation.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
require_relative '../../validation_test'
|
2
|
-
|
3
1
|
module DaVinciDTRTestKit
|
4
2
|
class CommunicationRequestValidationTest < Inferno::Test
|
5
|
-
include
|
3
|
+
include USCoreTestKit::ValidationTest
|
6
4
|
|
7
5
|
title 'CommunicationRequest resources returned during previous tests conform to the CRD CommunicationRequest'
|
8
6
|
description %(
|
@@ -19,17 +17,20 @@ fail if their code/system are not found in the valueset.
|
|
19
17
|
)
|
20
18
|
|
21
19
|
id :communication_request_validation
|
22
|
-
input :communication_request_resources,
|
23
|
-
optional: true
|
24
20
|
|
25
21
|
def resource_type
|
26
22
|
'CommunicationRequest'
|
27
23
|
end
|
28
24
|
|
25
|
+
def scratch_resources
|
26
|
+
scratch[:communication_requests] ||= {}
|
27
|
+
end
|
28
|
+
|
29
29
|
run do
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
perform_validation_test(scratch_resources[:all] || [],
|
31
|
+
'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest',
|
32
|
+
'2.0.1',
|
33
|
+
skip_if_empty: true)
|
33
34
|
end
|
34
35
|
end
|
35
36
|
end
|