davinci_dtr_test_kit 0.17.0 → 0.18.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/v220_full_ehr_suite_run_against_payer_suite.json.erb +19 -0
- data/config/presets/v220_payer_suite_run_against_full_ehr_suite.json.erb +76 -0
- data/lib/davinci_dtr_test_kit/cross_suite/fhirpath_utils.rb +52 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_base_questionnaire/metadata.yml +212 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_q_package_bundle/metadata.yml +39 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_qpackage_output_parameters/metadata.yml +30 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_questionnaire_adapt/metadata.yml +17 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_questionnaire_adapt_search/metadata.yml +91 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_std_questionnaire/metadata.yml +17 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/metadata.yml +403 -0
- data/lib/davinci_dtr_test_kit/cross_suite/generated_profile_metadata.rb +22 -0
- data/lib/davinci_dtr_test_kit/cross_suite/response_selection_utils.rb +85 -0
- data/lib/davinci_dtr_test_kit/{cql_test.rb → cross_suite/v2.0.1/cql_test.rb} +3 -3
- data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/dtr_conformance_verification.rb +21 -0
- data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/multi_request_message_helper.rb +35 -0
- data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/questionnaire_helper.rb +162 -0
- data/lib/davinci_dtr_test_kit/{dtr_client_options.rb → full_ehr/dtr_full_ehr_options.rb} +1 -1
- data/lib/davinci_dtr_test_kit/{endpoints → full_ehr/endpoints}/mock_payer.rb +9 -3
- data/lib/davinci_dtr_test_kit/{endpoints → full_ehr/endpoints}/mock_udap_smart_server/token_endpoint.rb +2 -2
- data/lib/davinci_dtr_test_kit/full_ehr/fixture_loader.rb +37 -0
- data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_adaptive/dinner_order_adaptive_next_question_template.json +243 -0
- data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_adaptive/parameters_questionnaire_dinner_order_adaptive.json +104 -0
- data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_static/parameters_questionnaire_dinner_order_static.json +291 -0
- data/lib/davinci_dtr_test_kit/full_ehr/fixtures/empty_templates/next_question_template_empty.json +1 -0
- data/lib/davinci_dtr_test_kit/full_ehr/fixtures/empty_templates/parameters_questionnaire_package_empty.json +9 -0
- data/lib/davinci_dtr_test_kit/full_ehr/short_circuit_interaction_verification.rb +73 -0
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/custom → full_ehr/v2.0.1/adaptive_custom}/dtr_custom_next_question_response_validation_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/custom → full_ehr/v2.0.1/adaptive_custom}/dtr_full_ehr_custom_adaptive_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → full_ehr/v2.0.1/adaptive_dinner}/dtr_adaptive_next_question_retrieval_group.rb +3 -3
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → full_ehr/v2.0.1/adaptive_dinner}/dtr_full_ehr_adaptive_initial_retrieval_group.rb +5 -5
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire → full_ehr/v2.0.1/adaptive_interaction}/dtr_adaptive_next_question_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire → full_ehr/v2.0.1/adaptive_interaction}/dtr_adaptive_next_question_request_validation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire → full_ehr/v2.0.1/adaptive_interaction}/dtr_adaptive_response_validation_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → full_ehr/v2.0.1}/dtr_full_ehr_adaptive_dinner_workflow_group.rb +7 -7
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/custom → full_ehr/v2.0.1}/dtr_full_ehr_custom_adaptive_workflow_group.rb +18 -16
- data/lib/davinci_dtr_test_kit/{client_groups/custom_static → full_ehr/v2.0.1}/dtr_full_ehr_custom_static_workflow_group.rb +11 -11
- data/lib/davinci_dtr_test_kit/{client_groups/must_support → full_ehr/v2.0.1}/dtr_full_ehr_questionnaire_must_support_group.rb +8 -7
- data/lib/davinci_dtr_test_kit/{client_groups/dinner_static → full_ehr/v2.0.1}/dtr_full_ehr_static_dinner_workflow_group.rb +7 -7
- data/lib/davinci_dtr_test_kit/{dtr_full_ehr_suite.rb → full_ehr/v2.0.1/dtr_full_ehr_suite.rb} +23 -20
- data/lib/davinci_dtr_test_kit/{client_groups/payer_registration/dtr_client_registration_group.rb → full_ehr/v2.0.1/dtr_payer_registration_group.rb} +8 -8
- data/lib/davinci_dtr_test_kit/{endpoints/mock_payer/next_question_endpoint.rb → full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb} +18 -7
- data/lib/davinci_dtr_test_kit/{endpoints/mock_payer/questionnaire_package_endpoint.rb → full_ehr/v2.0.1/full_ehr_questionnaire_package_endpoint.rb} +22 -7
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/dtr_full_ehr_ms_questionnaire_package_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/dtr_must_support_attestation_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/dtr_questionnaire_must_support_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/payer_registration/configuration_display_smart_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/payer_registration/configuration_display_udap_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_expressions_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_extensions_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_libraries_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_package_validation_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_adaptive_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_launch_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_prepopulation_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_prepopulation_override_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_questionnaire_package_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_questionnaire_response_conformance_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_questionnaire_response_correctness_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_store_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_prepopulation_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_prepopulation_override_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_package_request_validation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_response_basic_conformance_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_response_prepopulation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_rendering_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/dinner_static → full_ehr/v2.0.1/static_dinner}/dtr_static_dinner_enabled_questions_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_abstract_adaptive_group.rb +87 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_abstract_standard_group.rb +59 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_suite.rb +145 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_suite_description_v220.md +254 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb +391 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_questionnaire_package_endpoint.rb +206 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb +108 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/interaction_wait_test.rb +177 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/ui_display_and_interaction_attestation_test.rb +132 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_additional_questionnaires_interaction_group.rb +74 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_adaptive_must_support_test.rb +45 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_base_must_support_test.rb +43 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_standard_must_support_test.rb +45 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/next_question_template_questionnaires.rb +21 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/request/dtr_next_question_request_validation_test.rb +85 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/request/dtr_questionnaire_package_request_validation_test.rb +89 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/response/dtr_next_question_response_validation_test.rb +85 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/response/dtr_questionnaire_package_response_validation_test.rb +77 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/workflows/dtr_full_ehr_workflow_adaptive_group.rb +24 -0
- data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/workflows/dtr_full_ehr_workflow_standard_group.rb +21 -0
- data/lib/davinci_dtr_test_kit/generator/ig_metadata.rb +21 -0
- data/lib/davinci_dtr_test_kit/generator/profile_metadata_extractor.rb +57 -0
- data/lib/davinci_dtr_test_kit/generator.rb +117 -0
- data/lib/davinci_dtr_test_kit/igs/davinci_dtr_2.2.0.tgz +0 -0
- data/lib/davinci_dtr_test_kit/{dtr_options.rb → light_ehr/dtr_light_ehr_options.rb} +1 -1
- data/lib/davinci_dtr_test_kit/{dtr_light_ehr_suite.rb → light_ehr/v2.0.1/dtr_light_ehr_suite.rb} +21 -10
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1}/dtr_light_ehr_supported_endpoints_group.rb +5 -5
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1}/dtr_smart_ehr_launch.rb +3 -3
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_create.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_update.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_create.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_update.rb +1 -1
- data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_read.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/supported_endpoints}/dtr_light_ehr_supported_payers_accept_header_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/supported_endpoints}/dtr_light_ehr_supported_payers_config_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/supported_endpoints}/dtr_light_ehr_supported_payers_endpoint_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/supported_endpoints}/dtr_light_ehr_supported_payers_use_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/supported_endpoints}/dtr_light_ehr_supported_payers_user_response_test.rb +5 -3
- data/lib/davinci_dtr_test_kit/metadata.rb +13 -68
- data/lib/davinci_dtr_test_kit/requirements/davinci_dtr_test_kit_requirements.csv +216 -0
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_full_ehr_requirements_coverage.csv +1 -1
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_full_ehr_v220_requirements_coverage.csv +1 -0
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_light_ehr_requirements_coverage.csv +1 -1
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_payer_server_requirements_coverage.csv +1 -1
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_payer_server_v220_requirements_coverage.csv +114 -0
- data/lib/davinci_dtr_test_kit/requirements/generated/dtr_smart_app_requirements_coverage.csv +1 -1
- data/lib/davinci_dtr_test_kit/requirements/hl7.fhir.us.davinci-dtr_2.2.0_requirements.xlsx +0 -0
- data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → server/endpoints}/next_question_proxy_endpoint.rb +2 -0
- data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → server/endpoints}/questionnaire_package_proxy_endpoint.rb +2 -0
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_libraries_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_questionnaire_expressions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_questionnaire_extensions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_next_questionnaire_expressions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_next_questionnaire_extensions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_request_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_request_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_response_bundles_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_response_search_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_response_validation_test.rb +4 -2
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_request_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_response_validation_test.rb +3 -1
- data/lib/davinci_dtr_test_kit/{dtr_payer_server_suite.rb → server/v2.0.1/dtr_payer_server_suite.rb} +13 -10
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1}/payer_server_adaptive_group.rb +13 -13
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1}/payer_server_static_group.rb +6 -6
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_libraries_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_questionnaire_expressions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_questionnaire_extensions_test.rb +2 -1
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_request_test.rb +4 -2
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_request_validation_test.rb +3 -2
- data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_response_validation_test.rb +5 -3
- data/lib/davinci_dtr_test_kit/server/v2.2.0/client_simulation.rb +297 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_capability_statement_test.rb +73 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_suite.rb +322 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_suite_description_v220.md +37 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/interaction_test.rb +97 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/log_questionnaire_errors_support_test.rb +57 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_adaptive_must_support_test.rb +47 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_adaptive_search_must_support_test.rb +40 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_base_must_support_test.rb +40 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_package_bundle_must_support_test.rb +38 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_package_output_parameters_must_support_test.rb +37 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_standard_must_support_test.rb +39 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_request_validation_test.rb +45 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/adaptive_questionnaire_endpoint_test.rb +98 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/invalid_questionnaire_response_test.rb +43 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_contained_questionnaire_response_references_test.rb +46 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_question_response_references_test.rb +56 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_question_response_validation_test.rb +67 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/contained_binary_test.rb +58 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/contained_binary_validation.rb +128 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/cql_library_validation_test.rb +58 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_design_support.rb +65 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_expression_elm_test.rb +81 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_expression_language_test.rb +63 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_prepopulation_test.rb +42 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_relevance_logic_test.rb +40 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_operation_validation.rb +440 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_request_validation_test.rb +42 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/adaptive_questionnaire_response_contained_questionnaire_test.rb +127 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/adaptive_questionnaire_response_validation_test.rb +61 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/contained_questionnaire_response_references_test.rb +42 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_no_custom_extension_test.rb +184 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_questionnaire_not_found_test.rb +76 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_questionnaire_package_contents_test.rb +89 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/initial_questionnaire_response_test.rb +132 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_package_input_type_test.rb +110 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_references_version_specific_test.rb +79 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_questionnaire_canonical_test.rb +89 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_references_test.rb +51 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_validation_test.rb +63 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/source_data_error_test.rb +43 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/value_set_validation_test.rb +90 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_response_reference_validation.rb +133 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb +120 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/value_set_expansion_test.rb +51 -0
- data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/value_set_expansion_validation.rb +58 -0
- data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization/token_endpoint.rb +1 -1
- data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr/fhir_get_endpoint.rb +1 -1
- data/lib/davinci_dtr_test_kit/smart_app/endpoints/mock_payer/smart_app_next_question_endpoint.rb +12 -0
- data/lib/davinci_dtr_test_kit/smart_app/endpoints/mock_payer/smart_app_questionnaire_package_endpoint.rb +12 -0
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/custom → smart_app/v2.0.1/adaptive_custom}/dtr_smart_app_custom_adaptive_workflow_group.rb +17 -15
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → smart_app/v2.0.1/adaptive_dinner}/dtr_smart_app_adaptive_dinner_workflow_group.rb +5 -5
- data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → smart_app/v2.0.1/adaptive_dinner}/dtr_smart_app_adaptive_initial_retrieval_group.rb +4 -4
- data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1/auth}/token_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/custom_static → smart_app/v2.0.1}/dtr_smart_app_custom_static_workflow_group.rb +11 -11
- data/lib/davinci_dtr_test_kit/{client_groups/must_support → smart_app/v2.0.1}/dtr_smart_app_questionnaire_must_support_group.rb +8 -7
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1}/dtr_smart_app_respiratory_workflow_group.rb +3 -3
- data/lib/davinci_dtr_test_kit/{client_groups/dinner_static → smart_app/v2.0.1}/dtr_smart_app_static_dinner_workflow_group.rb +7 -7
- data/lib/davinci_dtr_test_kit/{dtr_smart_app_suite.rb → smart_app/v2.0.1/dtr_smart_app_suite.rb} +25 -21
- data/lib/davinci_dtr_test_kit/{docs → smart_app/v2.0.1}/dtr_smart_app_suite_description_v201.md +8 -0
- data/lib/davinci_dtr_test_kit/{client_groups → smart_app/v2.0.1}/must_support/dtr_smart_app_ms_questionnaire_package_request_test.rb +2 -2
- data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1}/oauth2_authentication_group.rb +2 -2
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_package_group.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_package_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_response_group.rb +2 -2
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_response_save_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_rendering_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_adaptive_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_prepopulation_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_prepopulation_override_attestation_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_questionnaire_package_request_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_questionnaire_response_correctness_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_questionnaire_response_save_test.rb +1 -1
- data/lib/davinci_dtr_test_kit/{client_groups/smart_app → smart_app/v2.0.1/tests}/dtr_smart_app_saving_questionnaire_response_group.rb +1 -1
- data/lib/davinci_dtr_test_kit/tags.rb +2 -0
- data/lib/davinci_dtr_test_kit/version.rb +2 -2
- data/lib/davinci_dtr_test_kit.rb +6 -4
- metadata +329 -215
- data/lib/davinci_dtr_test_kit/certs/InfernoCA.key +0 -52
- data/lib/davinci_dtr_test_kit/certs/InfernoCA.pem +0 -35
- data/lib/davinci_dtr_test_kit/certs/TestKit.pem +0 -32
- data/lib/davinci_dtr_test_kit/certs/TestKitPrivateKey.key +0 -28
- data/lib/davinci_dtr_test_kit/endpoints/mock_payer/full_ehr_next_question_endpoint.rb +0 -30
- data/lib/davinci_dtr_test_kit/endpoints/mock_payer/full_ehr_questionnaire_package_endpoint.rb +0 -31
- data/lib/davinci_dtr_test_kit/fixture_loader.rb +0 -21
- /data/lib/davinci_dtr_test_kit/{endpoints → cross_suite}/cors.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{dtr_questionnaire_response_validation.rb → cross_suite/v2.0.1/dtr_questionnaire_response_validation.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{descriptions.rb → full_ehr/descriptions.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_burrito.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_hamburger.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_initial.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/questionnaire_dinner_order_adaptive.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_static/questionnaire_dinner_order_static.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_static/questionnaire_response_dinner_order_static.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/respiratory_assist_device/pre_populated_questionnaire_response.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/respiratory_assist_device/questionnaire_package.json +0 -0
- /data/lib/davinci_dtr_test_kit/{fixtures.rb → full_ehr/fixtures.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → full_ehr/v2.0.1/adaptive_dinner}/dtr_adaptive_completion_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/dinner_order → full_ehr/v2.0.1/adaptive_dinner}/dtr_adaptive_followup_questions_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/auth → full_ehr/v2.0.1}/dtr_client_payer_auth_smart_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/auth → full_ehr/v2.0.1}/dtr_client_payer_auth_udap_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{docs → full_ehr/v2.0.1}/dtr_full_ehr_suite_description_v201.md +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/questionnaire_must_support_elements.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/full_ehr → full_ehr/v2.0.1/shared}/dtr_full_ehr_saving_questionnaire_response_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{create_test.rb → light_ehr/create_test.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → light_ehr/endpoints}/light_ehr_supported_payer_endpoint.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{read_test.rb → light_ehr/read_test.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{update_test.rb → light_ehr/update_test.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{docs → light_ehr/v2.0.1}/dtr_light_ehr_suite_description_v201.md +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_context_search.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_patient_search.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_read.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/metadata.yml +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_must_support_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_validation.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription_group.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/smart_ehr_launch}/fhir_context_coverage_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/smart_ehr_launch}/fhir_context_references_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1/smart_ehr_launch}/fhir_launch_context_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints/mock_authorization → server/endpoints}/simple_token_endpoint.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_response_complete_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{docs → server/v2.0.1}/dtr_payer_server_suite_description_v201.md +0 -0
- /data/lib/davinci_dtr_test_kit/{validation_test.rb → server/validation_test.rb} +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization/authorize_endpoint.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr/questionnaire_response_endpoint.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/adaptive_questionnaire/custom → smart_app/v2.0.1/adaptive_custom}/dtr_smart_app_custom_adaptive_request_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1/auth}/token_validation_test.rb +0 -0
- /data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_rendering_group.rb +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
require_relative '../../../tags'
|
|
2
|
+
require_relative '../questionnaire_operation_validation'
|
|
3
|
+
require_relative 'value_set_expansion_validation'
|
|
4
|
+
require_relative '../../../cross_suite/v2.2.0/multi_request_message_helper'
|
|
5
|
+
|
|
6
|
+
module DaVinciDTRTestKit
|
|
7
|
+
module DTRPayerServerV220
|
|
8
|
+
class SmallValueSetExpansionTest < Inferno::Test
|
|
9
|
+
include QuestionnaireOperationValidation
|
|
10
|
+
include ValueSetExpansionValidation
|
|
11
|
+
include MultiRequestMessageHelper
|
|
12
|
+
|
|
13
|
+
id :dtr_v220_payer_small_value_set_expansion
|
|
14
|
+
title 'Verify small ValueSets are expanded'
|
|
15
|
+
description %(
|
|
16
|
+
This test verifies that ValueSets with fewer than 40 entries returned by
|
|
17
|
+
$questionnaire-package are expanded.
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.2.0@oper-15'
|
|
21
|
+
|
|
22
|
+
run do
|
|
23
|
+
requests = load_tagged_requests(QUESTIONNAIRE_TAG)
|
|
24
|
+
skip_if requests.empty?, 'No $questionnaire-package requests were made.'
|
|
25
|
+
|
|
26
|
+
expansion_sizes = expansion_sizes_by_url
|
|
27
|
+
|
|
28
|
+
requests.each_with_index do |request, request_index|
|
|
29
|
+
next unless [200, 201].include? request.status
|
|
30
|
+
|
|
31
|
+
resource = FHIR.from_contents(request.response_body)
|
|
32
|
+
|
|
33
|
+
extract_questionnaire_bundles(resource).each do |bundle|
|
|
34
|
+
bundle.entry.filter_map(&:resource).grep(FHIR::ValueSet).each do |value_set|
|
|
35
|
+
url = value_set.url
|
|
36
|
+
expansion_size = expansion_sizes[url]
|
|
37
|
+
|
|
38
|
+
if value_set_expanded?(value_set)
|
|
39
|
+
if value_set.expansion.present? && !value_set_expansion_current?(value_set)
|
|
40
|
+
add_request_message('error', expansion_timestamp_error(value_set, Date.current), request_index)
|
|
41
|
+
end
|
|
42
|
+
next
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
next if expansion_size.nil? || expansion_size >= 40
|
|
46
|
+
|
|
47
|
+
add_request_message(
|
|
48
|
+
'error',
|
|
49
|
+
"ValueSet `#{url}` has #{expansion_size} codes and is not expanded in the " \
|
|
50
|
+
'$questionnaire-package response.',
|
|
51
|
+
request_index
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
rescue JSON::ParserError, FHIR::ClientException
|
|
56
|
+
add_request_message('error', '$questionnaire-package response is not a valid FHIR resource.', request_index)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
assert_no_error_messages(
|
|
60
|
+
"#{requests_with_errors_prefix}Small ValueSets returned by $questionnaire-package must be expanded."
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def expansion_sizes_by_url
|
|
65
|
+
load_tagged_requests(VALUE_SET_EXPAND_TAG).filter_map do |request|
|
|
66
|
+
url = value_set_url_from_expand_request(request)
|
|
67
|
+
next if url.blank?
|
|
68
|
+
|
|
69
|
+
expanded_value_set = FHIR.from_contents(request.response_body)
|
|
70
|
+
|
|
71
|
+
next unless expanded_value_set.is_a?(FHIR::ValueSet) &&
|
|
72
|
+
expanded_value_set.expansion.present?
|
|
73
|
+
|
|
74
|
+
[url, expansion_entry_count(expanded_value_set.expansion.contains)]
|
|
75
|
+
rescue JSON::ParserError, FHIR::ClientException
|
|
76
|
+
nil
|
|
77
|
+
end.to_h
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def value_set_expanded?(value_set)
|
|
81
|
+
value_set_expansion_contains_codes?(value_set) ||
|
|
82
|
+
value_set_compose_contains_only_codes?(value_set)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def value_set_expansion_contains_codes?(value_set)
|
|
86
|
+
value_set.expansion&.contains.present?
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def value_set_compose_contains_only_codes?(value_set)
|
|
90
|
+
compose = value_set.compose
|
|
91
|
+
return false if compose.blank? || compose.exclude.present?
|
|
92
|
+
|
|
93
|
+
compose.include.present? &&
|
|
94
|
+
compose.include.all? do |include|
|
|
95
|
+
include.concept.present? &&
|
|
96
|
+
include.filter.blank? &&
|
|
97
|
+
include.valueSet.blank?
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def expansion_entry_count(contains)
|
|
102
|
+
return 0 if contains.blank?
|
|
103
|
+
|
|
104
|
+
contains.sum do |entry|
|
|
105
|
+
1 + expansion_entry_count(entry.contains)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def value_set_url_from_expand_request(request)
|
|
110
|
+
parameters = FHIR.from_contents(request.request_body)
|
|
111
|
+
|
|
112
|
+
url = parameters.parameter
|
|
113
|
+
.find { |parameter| parameter.name == 'url' }
|
|
114
|
+
&.valueUri
|
|
115
|
+
|
|
116
|
+
url&.split('|', 2)&.first
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/value_set_expansion_test.rb
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'value_set_expansion_validation'
|
|
4
|
+
require_relative '../../../tags'
|
|
5
|
+
require_relative '../../../cross_suite/v2.2.0/multi_request_message_helper'
|
|
6
|
+
|
|
7
|
+
module DaVinciDTRTestKit
|
|
8
|
+
module DTRPayerServerV220
|
|
9
|
+
class ValueSetExpansionTest < Inferno::Test
|
|
10
|
+
include ValueSetExpansionValidation
|
|
11
|
+
include MultiRequestMessageHelper
|
|
12
|
+
|
|
13
|
+
id :dtr_v220_payer_value_set_expansion
|
|
14
|
+
title 'ValueSet expansions use the current date and active codes'
|
|
15
|
+
description %(
|
|
16
|
+
This test verifies that ValueSets returned from `ValueSet/$expand` use the
|
|
17
|
+
current date as their expansion timestamp and contain only active codes,
|
|
18
|
+
including codes nested within the expansion hierarchy.
|
|
19
|
+
)
|
|
20
|
+
verifies_requirements 'hl7.fhir.us.davinci-dtr_2.2.0@oper-5'
|
|
21
|
+
|
|
22
|
+
run do
|
|
23
|
+
requests = load_tagged_requests(VALUE_SET_EXPAND_TAG)
|
|
24
|
+
skip_if requests.empty?, 'No ValueSet/$expand requests were made.'
|
|
25
|
+
|
|
26
|
+
requests.each_with_index do |request, request_index|
|
|
27
|
+
value_set = FHIR.from_contents(request.response_body)
|
|
28
|
+
unless value_set.is_a?(FHIR::ValueSet)
|
|
29
|
+
add_request_message('error', 'ValueSet/$expand response is not a ValueSet resource.', request_index)
|
|
30
|
+
next
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
unless value_set.expansion.present?
|
|
34
|
+
add_request_message('error', 'ValueSet response does not contain an expansion.', request_index)
|
|
35
|
+
next
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
value_set_expansion_errors(value_set).each do |error|
|
|
39
|
+
add_request_message('error', error, request_index)
|
|
40
|
+
end
|
|
41
|
+
rescue JSON::ParserError, FHIR::ClientException
|
|
42
|
+
add_request_message('error', 'ValueSet/$expand response is not a valid FHIR resource.', request_index)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
error_message = "#{requests_with_errors_prefix}ValueSet expansions must use the current date " \
|
|
46
|
+
'and contain only active codes. See Messages for details.'
|
|
47
|
+
assert_no_error_messages(error_message)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'date'
|
|
4
|
+
|
|
5
|
+
module DaVinciDTRTestKit
|
|
6
|
+
module DTRPayerServerV220
|
|
7
|
+
module ValueSetExpansionValidation
|
|
8
|
+
def value_set_expansion_errors(value_set, current_date: Date.current)
|
|
9
|
+
errors = []
|
|
10
|
+
unless value_set_expansion_current?(value_set, current_date)
|
|
11
|
+
errors << expansion_timestamp_error(value_set, current_date)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
inactive_expansion_codes(value_set).each do |code|
|
|
15
|
+
errors << inactive_code_error(code)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
errors
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def value_set_expansion_current?(value_set, current_date = Date.current)
|
|
22
|
+
timestamp = value_set.expansion&.timestamp
|
|
23
|
+
timestamp.present? && Date.parse(timestamp.to_s) == current_date
|
|
24
|
+
rescue Date::Error
|
|
25
|
+
false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def inactive_expansion_codes(value_set)
|
|
29
|
+
inactive_codes_in(value_set.expansion&.contains)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def inactive_codes_in(contains)
|
|
33
|
+
Array(contains).flat_map do |code|
|
|
34
|
+
inactive_code_array = code.inactive == true ? [code] : []
|
|
35
|
+
inactive_code_array + inactive_codes_in(code.contains)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def expansion_code_identifier(code)
|
|
40
|
+
[code.system, code.code].compact.join('|').presence || code.display
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def expansion_timestamp_error(value_set, current_date)
|
|
44
|
+
timestamp = value_set.expansion&.timestamp
|
|
45
|
+
return "expansion.timestamp is missing; expected current date `#{current_date}`" if timestamp.blank?
|
|
46
|
+
|
|
47
|
+
"expansion.timestamp `#{timestamp}` is not the current date `#{current_date}`"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def inactive_code_error(code)
|
|
51
|
+
identifier = expansion_code_identifier(code)
|
|
52
|
+
return 'expansion contains an inactive code' if identifier.blank?
|
|
53
|
+
|
|
54
|
+
"expansion contains inactive code `#{identifier}`"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr/fhir_get_endpoint.rb
RENAMED
|
@@ -51,7 +51,7 @@ module DaVinciDTRTestKit
|
|
|
51
51
|
def ehr_input_bundle(test, test_result)
|
|
52
52
|
input_name = "#{input_group_prefix(test)}_ehr_bundle"
|
|
53
53
|
ehr_bundle_input = JSON.parse(test_result.input_json).find { |input| input['name'] == input_name }
|
|
54
|
-
ehr_bundle_input_value =
|
|
54
|
+
ehr_bundle_input_value = ehr_bundle_input['value'] if ehr_bundle_input.present?
|
|
55
55
|
ehr_bundle = FHIR.from_contents(ehr_bundle_input_value) if ehr_bundle_input_value.present?
|
|
56
56
|
ehr_bundle if ehr_bundle.is_a?(FHIR::Bundle)
|
|
57
57
|
rescue StandardError
|
data/lib/davinci_dtr_test_kit/smart_app/endpoints/mock_payer/smart_app_next_question_endpoint.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../mock_authorization'
|
|
2
|
+
require_relative '../../../full_ehr/v2.0.1/full_ehr_next_question_endpoint'
|
|
3
|
+
|
|
4
|
+
module DaVinciDTRTestKit
|
|
5
|
+
module MockPayer
|
|
6
|
+
class SMARTAppNextQuestionEndpoint < FullEHRNextQuestionEndpoint
|
|
7
|
+
def test_run_identifier
|
|
8
|
+
MockAuthorization.extract_client_id_from_bearer_token(request)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative '../mock_authorization'
|
|
2
|
+
require_relative '../../../full_ehr/v2.0.1/full_ehr_questionnaire_package_endpoint'
|
|
3
|
+
|
|
4
|
+
module DaVinciDTRTestKit
|
|
5
|
+
module MockPayer
|
|
6
|
+
class SMARTAppQuestionnairePackageEndpoint < FullEHRQuestionnairePackageEndpoint
|
|
7
|
+
def test_run_identifier
|
|
8
|
+
MockAuthorization.extract_client_id_from_bearer_token(request)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
require_relative '../../../tags'
|
|
2
2
|
require_relative 'dtr_smart_app_custom_adaptive_request_test'
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
6
|
-
require_relative '
|
|
7
|
-
require_relative '
|
|
8
|
-
require_relative '
|
|
9
|
-
require_relative '
|
|
10
|
-
require_relative 'dtr_custom_next_question_response_validation_test'
|
|
11
|
-
require_relative '
|
|
12
|
-
require_relative '
|
|
13
|
-
require_relative '
|
|
14
|
-
require_relative '
|
|
3
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
4
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_interaction/dtr_adaptive_next_question_request_validation_test'
|
|
5
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_interaction/dtr_adaptive_response_validation_test'
|
|
6
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_package_validation_test'
|
|
7
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_libraries_test'
|
|
8
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_extensions_test'
|
|
9
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_expressions_test'
|
|
10
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_custom/dtr_custom_next_question_response_validation_test'
|
|
11
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_prepopulation_attestation_test'
|
|
12
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_prepopulation_override_attestation_test'
|
|
13
|
+
require_relative '../tests/dtr_smart_app_saving_questionnaire_response_group'
|
|
14
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_response_prepopulation_test'
|
|
15
15
|
|
|
16
16
|
module DaVinciDTRTestKit
|
|
17
17
|
class DTRSmartAppCustomAdaptiveWorkflowGroup < Inferno::TestGroup
|
|
@@ -88,20 +88,22 @@ module DaVinciDTRTestKit
|
|
|
88
88
|
test from: :dtr_custom_questionnaire_libraries
|
|
89
89
|
# Test 7: validate the user provided $next-question questionnaire
|
|
90
90
|
test from: :dtr_custom_next_questionnaire_validation
|
|
91
|
-
# Test 8: verify the custom response has the
|
|
91
|
+
# Test 8: verify the custom response has the necessary extensions for pre-population
|
|
92
92
|
test from: :dtr_custom_questionnaire_extensions do
|
|
93
93
|
title %(
|
|
94
|
-
|
|
94
|
+
Custom Questionnaires for $next-question Responses contain extensions
|
|
95
95
|
necessary for pre-population
|
|
96
96
|
)
|
|
97
|
+
simulation_verification
|
|
97
98
|
input :custom_next_question_questionnaires
|
|
98
99
|
end
|
|
99
100
|
# Test 9: verify custom response has necessary expressions for pre-population
|
|
100
101
|
test from: :dtr_custom_questionnaire_expressions do
|
|
101
102
|
title %(
|
|
102
|
-
|
|
103
|
+
Custom Questionnaires for $next-question Responses contain items with
|
|
103
104
|
expressions necessary for pre-population
|
|
104
105
|
)
|
|
106
|
+
simulation_verification
|
|
105
107
|
input :custom_next_question_questionnaires
|
|
106
108
|
end
|
|
107
109
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require_relative '../../../tags'
|
|
2
2
|
require_relative 'dtr_smart_app_adaptive_initial_retrieval_group'
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative 'dtr_adaptive_followup_questions_group'
|
|
6
|
-
require_relative 'dtr_adaptive_completion_group'
|
|
7
|
-
require_relative '
|
|
3
|
+
require_relative '../tests/dtr_smart_app_prepopulation_attestation_test'
|
|
4
|
+
require_relative '../tests/dtr_smart_app_prepopulation_override_attestation_test'
|
|
5
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_dinner/dtr_adaptive_followup_questions_group'
|
|
6
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_dinner/dtr_adaptive_completion_group'
|
|
7
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_response_prepopulation_test'
|
|
8
8
|
|
|
9
9
|
module DaVinciDTRTestKit
|
|
10
10
|
class DTRSmartAppAdaptiveDinnerWorkflowGroup < Inferno::TestGroup
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require_relative '../../../tags'
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
2
|
+
require_relative '../tests/dtr_smart_app_adaptive_request_test'
|
|
3
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
4
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_interaction/dtr_adaptive_next_question_request_validation_test'
|
|
5
|
+
require_relative '../../../full_ehr/v2.0.1/adaptive_interaction/dtr_adaptive_response_validation_test'
|
|
6
6
|
|
|
7
7
|
module DaVinciDTRTestKit
|
|
8
8
|
class DTRSmartAppAdaptiveInitialRetrievalGroup < Inferno::TestGroup
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
require_relative '
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
6
|
-
require_relative '
|
|
7
|
-
require_relative '
|
|
8
|
-
require_relative '
|
|
9
|
-
require_relative '
|
|
10
|
-
require_relative '
|
|
11
|
-
require_relative '
|
|
1
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_package_validation_test'
|
|
2
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_libraries_test'
|
|
3
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_extensions_test'
|
|
4
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_expressions_test'
|
|
5
|
+
require_relative 'tests/dtr_smart_app_questionnaire_package_request_test'
|
|
6
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
7
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_prepopulation_attestation_test'
|
|
8
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_rendering_attestation_test'
|
|
9
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_prepopulation_override_attestation_test'
|
|
10
|
+
require_relative 'tests/dtr_smart_app_saving_questionnaire_response_group'
|
|
11
|
+
require_relative 'tests/dtr_smart_app_questionnaire_response_correctness_test'
|
|
12
12
|
|
|
13
13
|
module DaVinciDTRTestKit
|
|
14
14
|
class DTRSmartAppCustomStaticWorkflowGroup < Inferno::TestGroup
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require_relative '../../urls'
|
|
2
|
-
require_relative 'dtr_smart_app_ms_questionnaire_package_request_test'
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative 'dtr_questionnaire_must_support_test'
|
|
6
|
-
require_relative 'dtr_must_support_attestation_test'
|
|
7
|
-
require_relative 'questionnaire_must_support_elements'
|
|
2
|
+
require_relative 'must_support/dtr_smart_app_ms_questionnaire_package_request_test'
|
|
3
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
4
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_custom_questionnaire_package_validation_test'
|
|
5
|
+
require_relative '../../full_ehr/v2.0.1/must_support/dtr_questionnaire_must_support_test'
|
|
6
|
+
require_relative '../../full_ehr/v2.0.1/must_support/dtr_must_support_attestation_test'
|
|
7
|
+
require_relative '../../full_ehr/v2.0.1/must_support/questionnaire_must_support_elements'
|
|
8
8
|
|
|
9
9
|
module DaVinciDTRTestKit
|
|
10
10
|
class DTRSmartAppQuestionnaireMustSupportGroup < Inferno::TestGroup
|
|
@@ -70,7 +70,8 @@ module DaVinciDTRTestKit
|
|
|
70
70
|
test from: :dtr_custom_qp_validation
|
|
71
71
|
# Test 4: must support test
|
|
72
72
|
test from: :dtr_questionnaire_must_support,
|
|
73
|
-
title: '
|
|
73
|
+
title: 'All must support elements are provided in the static Questionnaire resources provided',
|
|
74
|
+
simulation_verification: true,
|
|
74
75
|
description: <<~DESCRIPTION
|
|
75
76
|
The DTR client SHALL be able to handle all `mustSupport` elements defined in the
|
|
76
77
|
[DTR Standard Questionnaire](http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-std-questionnaire)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
require_relative 'dtr_respiratory_questionnaire_package_group'
|
|
2
|
-
require_relative 'dtr_respiratory_rendering_group'
|
|
3
|
-
require_relative 'dtr_respiratory_questionnaire_response_group'
|
|
1
|
+
require_relative 'static_respiratory/dtr_respiratory_questionnaire_package_group'
|
|
2
|
+
require_relative 'static_respiratory/dtr_respiratory_rendering_group'
|
|
3
|
+
require_relative 'static_respiratory/dtr_respiratory_questionnaire_response_group'
|
|
4
4
|
|
|
5
5
|
module DaVinciDTRTestKit
|
|
6
6
|
class DTRSmartAppRespiratoryWorkflowGroup < Inferno::TestGroup
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require_relative '
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative 'dtr_static_dinner_enabled_questions_attestation_test'
|
|
6
|
-
require_relative '
|
|
7
|
-
require_relative '
|
|
1
|
+
require_relative 'tests/dtr_smart_app_questionnaire_package_request_test'
|
|
2
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
3
|
+
require_relative 'tests/dtr_smart_app_prepopulation_attestation_test'
|
|
4
|
+
require_relative 'tests/dtr_smart_app_prepopulation_override_attestation_test'
|
|
5
|
+
require_relative '../../full_ehr/v2.0.1/static_dinner/dtr_static_dinner_enabled_questions_attestation_test'
|
|
6
|
+
require_relative 'tests/dtr_smart_app_saving_questionnaire_response_group'
|
|
7
|
+
require_relative '../../full_ehr/v2.0.1/shared/dtr_questionnaire_response_prepopulation_test'
|
|
8
8
|
|
|
9
9
|
module DaVinciDTRTestKit
|
|
10
10
|
class DTRSmartAppStaticDinnerWorkflowGroup < Inferno::TestGroup
|
data/lib/davinci_dtr_test_kit/{dtr_smart_app_suite.rb → smart_app/v2.0.1/dtr_smart_app_suite.rb}
RENAMED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
require_relative '
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
6
|
-
require_relative '
|
|
7
|
-
require_relative '
|
|
8
|
-
require_relative '
|
|
9
|
-
require_relative 'endpoints/mock_authorization'
|
|
10
|
-
require_relative 'endpoints/mock_authorization/authorize_endpoint'
|
|
11
|
-
require_relative 'endpoints/mock_authorization/token_endpoint'
|
|
12
|
-
require_relative 'endpoints/mock_payer/
|
|
13
|
-
require_relative 'endpoints/mock_payer/
|
|
14
|
-
require_relative 'endpoints/mock_ehr'
|
|
15
|
-
require_relative 'endpoints/mock_ehr/questionnaire_response_endpoint'
|
|
16
|
-
require_relative 'endpoints/mock_ehr/fhir_get_endpoint'
|
|
17
|
-
require_relative 'version'
|
|
1
|
+
# require_relative 'oauth2_authentication_group'
|
|
2
|
+
require_relative 'dtr_smart_app_respiratory_workflow_group'
|
|
3
|
+
require_relative 'dtr_smart_app_static_dinner_workflow_group'
|
|
4
|
+
require_relative 'adaptive_dinner/dtr_smart_app_adaptive_dinner_workflow_group'
|
|
5
|
+
require_relative 'dtr_smart_app_custom_static_workflow_group'
|
|
6
|
+
require_relative 'adaptive_custom/dtr_smart_app_custom_adaptive_workflow_group'
|
|
7
|
+
require_relative 'dtr_smart_app_questionnaire_must_support_group'
|
|
8
|
+
require_relative '../../cross_suite/cors'
|
|
9
|
+
require_relative '../endpoints/mock_authorization'
|
|
10
|
+
require_relative '../endpoints/mock_authorization/authorize_endpoint'
|
|
11
|
+
require_relative '../endpoints/mock_authorization/token_endpoint'
|
|
12
|
+
require_relative '../endpoints/mock_payer/smart_app_questionnaire_package_endpoint'
|
|
13
|
+
require_relative '../endpoints/mock_payer/smart_app_next_question_endpoint'
|
|
14
|
+
require_relative '../endpoints/mock_ehr'
|
|
15
|
+
require_relative '../endpoints/mock_ehr/questionnaire_response_endpoint'
|
|
16
|
+
require_relative '../endpoints/mock_ehr/fhir_get_endpoint'
|
|
17
|
+
require_relative '../../version'
|
|
18
18
|
|
|
19
19
|
module DaVinciDTRTestKit
|
|
20
20
|
class DTRSmartAppSuite < Inferno::TestSuite
|
|
21
21
|
extend CORS
|
|
22
22
|
|
|
23
23
|
id :dtr_smart_app
|
|
24
|
-
title 'Da Vinci DTR SMART App Test Suite'
|
|
25
|
-
description File.read(File.join(__dir__, '
|
|
24
|
+
title 'Da Vinci DTR SMART App Test Suite v2.0.1'
|
|
25
|
+
description File.read(File.join(__dir__, 'dtr_smart_app_suite_description_v201.md'))
|
|
26
26
|
|
|
27
27
|
links [
|
|
28
28
|
{
|
|
@@ -58,6 +58,10 @@ module DaVinciDTRTestKit
|
|
|
58
58
|
exclude_message do |message|
|
|
59
59
|
message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/)
|
|
60
60
|
end
|
|
61
|
+
|
|
62
|
+
validation_context do
|
|
63
|
+
snomedCT '731000124108'
|
|
64
|
+
end
|
|
61
65
|
end
|
|
62
66
|
|
|
63
67
|
allow_cors QUESTIONNAIRE_PACKAGE_PATH, QUESTIONNAIRE_RESPONSE_PATH, FHIR_RESOURCE_PATH, FHIR_SEARCH_PATH,
|
|
@@ -72,8 +76,8 @@ module DaVinciDTRTestKit
|
|
|
72
76
|
suite_endpoint :post, EHR_TOKEN_PATH, MockAuthorization::TokenEndpoint
|
|
73
77
|
|
|
74
78
|
# Payer
|
|
75
|
-
suite_endpoint :post, QUESTIONNAIRE_PACKAGE_PATH, MockPayer::
|
|
76
|
-
suite_endpoint :post, NEXT_PATH, MockPayer::
|
|
79
|
+
suite_endpoint :post, QUESTIONNAIRE_PACKAGE_PATH, MockPayer::SMARTAppQuestionnairePackageEndpoint
|
|
80
|
+
suite_endpoint :post, NEXT_PATH, MockPayer::SMARTAppNextQuestionEndpoint
|
|
77
81
|
|
|
78
82
|
# EHR
|
|
79
83
|
route(:get, METADATA_PATH, MockEHR.method(:metadata))
|
data/lib/davinci_dtr_test_kit/{docs → smart_app/v2.0.1}/dtr_smart_app_suite_description_v201.md
RENAMED
|
@@ -197,3 +197,11 @@ to retrieve questionnaires.
|
|
|
197
197
|
Not all questionnaire features that are must support within the DTR IG are currently represented
|
|
198
198
|
in questionnaires tested by the IG. Additional questionnaires testing additional features will
|
|
199
199
|
be added in the future.
|
|
200
|
+
|
|
201
|
+
### Client data access
|
|
202
|
+
|
|
203
|
+
DTR SMART Apps are required to support US Core client capabilities to access data used in
|
|
204
|
+
the completion of questionnaires. While clients must be able to fetch data to demonstrate
|
|
205
|
+
pre-population capabilities, this test suite does not currently check that the app
|
|
206
|
+
can access all US Core and DTR data required by the
|
|
207
|
+
[DTR SMART Client Capability Statement](https://hl7.org/fhir/us/davinci-dtr/STU2/CapabilityStatement-dtr-smart-client.html).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'base64'
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative 'questionnaire_must_support_elements'
|
|
2
|
+
require_relative '../../../urls'
|
|
3
|
+
require_relative '../../../full_ehr/v2.0.1/must_support/questionnaire_must_support_elements'
|
|
4
4
|
|
|
5
5
|
module DaVinciDTRTestKit
|
|
6
6
|
class DTRSmartAppMSQuestionnairePackageRequestTest < Inferno::Test
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require_relative 'dtr_respiratory_questionnaire_package_request_test'
|
|
2
|
-
require_relative '
|
|
2
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_package_request_validation_test'
|
|
3
3
|
|
|
4
4
|
module DaVinciDTRTestKit
|
|
5
5
|
class DTRRespiratoryQuestionnairePackageGroup < Inferno::TestGroup
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative 'dtr_respiratory_questionnaire_response_save_test'
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
2
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_response_basic_conformance_test'
|
|
3
|
+
require_relative '../../../full_ehr/v2.0.1/shared/dtr_questionnaire_response_prepopulation_test'
|
|
4
4
|
|
|
5
5
|
module DaVinciDTRTestKit
|
|
6
6
|
class DTRRespiratoryQuestionnaireResponseGroup < Inferno::TestGroup
|