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,403 @@
|
|
|
1
|
+
---
|
|
2
|
+
:ig_version: v2.2.0
|
|
3
|
+
:profiles:
|
|
4
|
+
- :resource: Bundle
|
|
5
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle
|
|
6
|
+
:profile_name: DTR Questionnaire Package Bundle
|
|
7
|
+
:profile_version: 2.2.0
|
|
8
|
+
:must_supports:
|
|
9
|
+
:extensions: []
|
|
10
|
+
:slices:
|
|
11
|
+
- :slice_id: Bundle.entry:questionnaire
|
|
12
|
+
:slice_name: questionnaire
|
|
13
|
+
:path: entry
|
|
14
|
+
:discriminator:
|
|
15
|
+
:type: type
|
|
16
|
+
:code: Questionnaire
|
|
17
|
+
:path: resource
|
|
18
|
+
- :slice_id: Bundle.entry:questionnaireResponse
|
|
19
|
+
:slice_name: questionnaireResponse
|
|
20
|
+
:path: entry
|
|
21
|
+
:discriminator:
|
|
22
|
+
:type: type
|
|
23
|
+
:code: QuestionnaireResponse
|
|
24
|
+
:path: resource
|
|
25
|
+
- :slice_id: Bundle.entry:valueSet
|
|
26
|
+
:slice_name: valueSet
|
|
27
|
+
:path: entry
|
|
28
|
+
:discriminator:
|
|
29
|
+
:type: type
|
|
30
|
+
:code: ValueSet
|
|
31
|
+
:path: resource
|
|
32
|
+
- :slice_id: Bundle.entry:library
|
|
33
|
+
:slice_name: library
|
|
34
|
+
:path: entry
|
|
35
|
+
:discriminator:
|
|
36
|
+
:type: type
|
|
37
|
+
:code: Library
|
|
38
|
+
:path: resource
|
|
39
|
+
:elements: []
|
|
40
|
+
:recursive_elements:
|
|
41
|
+
- link
|
|
42
|
+
- :resource: Questionnaire
|
|
43
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-base-questionnaire
|
|
44
|
+
:profile_name: DTR Base Questionnaire
|
|
45
|
+
:profile_version: 2.2.0
|
|
46
|
+
:must_supports:
|
|
47
|
+
:extensions:
|
|
48
|
+
- :id: Questionnaire.extension:terminologyServer
|
|
49
|
+
:slice_name: terminologyServer
|
|
50
|
+
:path: extension
|
|
51
|
+
:url: http://hl7.org/fhir/StructureDefinition/preferredTerminologyServer
|
|
52
|
+
:modifier_extension: false
|
|
53
|
+
- :id: Questionnaire.extension:versionAlgorithm
|
|
54
|
+
:slice_name: versionAlgorithm
|
|
55
|
+
:path: extension
|
|
56
|
+
:url: http://hl7.org/fhir/StructureDefinition/artifact-versionAlgorithm
|
|
57
|
+
:modifier_extension: false
|
|
58
|
+
- :id: Questionnaire.extension:performerType
|
|
59
|
+
:slice_name: performerType
|
|
60
|
+
:path: extension
|
|
61
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-performerType
|
|
62
|
+
:modifier_extension: false
|
|
63
|
+
- :id: Questionnaire.extension:assemble-expectation
|
|
64
|
+
:slice_name: assemble-expectation
|
|
65
|
+
:path: extension
|
|
66
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assemble-expectation
|
|
67
|
+
:modifier_extension: false
|
|
68
|
+
- :id: Questionnaire.extension:estimatedCompletionTime
|
|
69
|
+
:slice_name: estimatedCompletionTime
|
|
70
|
+
:path: extension
|
|
71
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/estimated-completion-time
|
|
72
|
+
:modifier_extension: false
|
|
73
|
+
- :id: Questionnaire.extension:audience
|
|
74
|
+
:slice_name: audience
|
|
75
|
+
:path: extension
|
|
76
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/questionnaireAudience
|
|
77
|
+
:modifier_extension: false
|
|
78
|
+
- :id: Questionnaire.extension:RequestSpecific
|
|
79
|
+
:slice_name: RequestSpecific
|
|
80
|
+
:path: extension
|
|
81
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/request-specific
|
|
82
|
+
:modifier_extension: false
|
|
83
|
+
- :id: Questionnaire.extension:signatureRequired
|
|
84
|
+
:slice_name: signatureRequired
|
|
85
|
+
:path: extension
|
|
86
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-signatureRequired
|
|
87
|
+
:modifier_extension: false
|
|
88
|
+
- :id: Questionnaire.extension:variable
|
|
89
|
+
:slice_name: variable
|
|
90
|
+
:path: extension
|
|
91
|
+
:url: http://hl7.org/fhir/StructureDefinition/variable
|
|
92
|
+
:modifier_extension: false
|
|
93
|
+
- :id: Questionnaire.extension:cqf-library
|
|
94
|
+
:slice_name: cqf-library
|
|
95
|
+
:path: extension
|
|
96
|
+
:url: http://hl7.org/fhir/StructureDefinition/cqf-library
|
|
97
|
+
:modifier_extension: false
|
|
98
|
+
- :id: Questionnaire.extension:launchContext
|
|
99
|
+
:slice_name: launchContext
|
|
100
|
+
:path: extension
|
|
101
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext
|
|
102
|
+
:modifier_extension: false
|
|
103
|
+
- :id: Questionnaire.extension:itemPopulationContext
|
|
104
|
+
:slice_name: itemPopulationContext
|
|
105
|
+
:path: extension
|
|
106
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext
|
|
107
|
+
:modifier_extension: false
|
|
108
|
+
- :id: Questionnaire.extension:entryMode
|
|
109
|
+
:slice_name: entryMode
|
|
110
|
+
:path: extension
|
|
111
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-entryMode
|
|
112
|
+
:modifier_extension: false
|
|
113
|
+
- :id: Questionnaire.item.extension:hidden
|
|
114
|
+
:slice_name: hidden
|
|
115
|
+
:path: item.extension
|
|
116
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-hidden
|
|
117
|
+
:modifier_extension: false
|
|
118
|
+
- :id: Questionnaire.item.extension:itemControl
|
|
119
|
+
:slice_name: itemControl
|
|
120
|
+
:path: item.extension
|
|
121
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl
|
|
122
|
+
:modifier_extension: false
|
|
123
|
+
- :id: Questionnaire.item.extension:supportHyperlink
|
|
124
|
+
:slice_name: supportHyperlink
|
|
125
|
+
:path: item.extension
|
|
126
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-supportHyperlink
|
|
127
|
+
:modifier_extension: false
|
|
128
|
+
- :id: Questionnaire.item.extension:mimeType
|
|
129
|
+
:slice_name: mimeType
|
|
130
|
+
:path: item.extension
|
|
131
|
+
:url: http://hl7.org/fhir/StructureDefinition/mimeType
|
|
132
|
+
:modifier_extension: false
|
|
133
|
+
- :id: Questionnaire.item.extension:unitOption
|
|
134
|
+
:slice_name: unitOption
|
|
135
|
+
:path: item.extension
|
|
136
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption
|
|
137
|
+
:modifier_extension: false
|
|
138
|
+
- :id: Questionnaire.item.extension:referenceResource
|
|
139
|
+
:slice_name: referenceResource
|
|
140
|
+
:path: item.extension
|
|
141
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource
|
|
142
|
+
:modifier_extension: false
|
|
143
|
+
- :id: Questionnaire.item.extension:referenceProfile
|
|
144
|
+
:slice_name: referenceProfile
|
|
145
|
+
:path: item.extension
|
|
146
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-referenceProfile
|
|
147
|
+
:modifier_extension: false
|
|
148
|
+
- :id: Questionnaire.item.extension:unitValueSet
|
|
149
|
+
:slice_name: unitValueSet
|
|
150
|
+
:path: item.extension
|
|
151
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-unitValueSet
|
|
152
|
+
:modifier_extension: false
|
|
153
|
+
- :id: Questionnaire.item.extension:lookupQuestionnaire
|
|
154
|
+
:slice_name: lookupQuestionnaire
|
|
155
|
+
:path: item.extension
|
|
156
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-lookupQuestionnaire
|
|
157
|
+
:modifier_extension: false
|
|
158
|
+
- :id: Questionnaire.item.extension:candidateExpression
|
|
159
|
+
:slice_name: candidateExpression
|
|
160
|
+
:path: item.extension
|
|
161
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-candidateExpression
|
|
162
|
+
:modifier_extension: false
|
|
163
|
+
- :id: Questionnaire.item.extension:candidateExpression.value[x].extension:alternativeExpression
|
|
164
|
+
:slice_name: alternativeExpression
|
|
165
|
+
:path: item.extension.value[x].extension
|
|
166
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/alternativeExpression
|
|
167
|
+
:modifier_extension: false
|
|
168
|
+
- :id: Questionnaire.item.extension:initialExpression
|
|
169
|
+
:slice_name: initialExpression
|
|
170
|
+
:path: item.extension
|
|
171
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression
|
|
172
|
+
:modifier_extension: false
|
|
173
|
+
- :id: Questionnaire.item.extension:initialExpression.value[x].extension:alternativeExpression
|
|
174
|
+
:slice_name: alternativeExpression
|
|
175
|
+
:path: item.extension.value[x].extension
|
|
176
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/alternativeExpression
|
|
177
|
+
:modifier_extension: false
|
|
178
|
+
- :id: Questionnaire.item.extension:calculatedExpression
|
|
179
|
+
:slice_name: calculatedExpression
|
|
180
|
+
:path: item.extension
|
|
181
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression
|
|
182
|
+
:modifier_extension: false
|
|
183
|
+
- :id: Questionnaire.item.extension:calculatedExpression.value[x].extension:alternativeExpression
|
|
184
|
+
:slice_name: alternativeExpression
|
|
185
|
+
:path: item.extension.value[x].extension
|
|
186
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/alternativeExpression
|
|
187
|
+
:modifier_extension: false
|
|
188
|
+
- :id: Questionnaire.item.extension:contextExpression
|
|
189
|
+
:slice_name: contextExpression
|
|
190
|
+
:path: item.extension
|
|
191
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-contextExpression
|
|
192
|
+
:modifier_extension: false
|
|
193
|
+
- :id: Questionnaire.item.extension:contextExpression.extension:expression.value[x].extension:alternativeExpression
|
|
194
|
+
:slice_name: alternativeExpression
|
|
195
|
+
:path: item.extension.extension.value[x].extension
|
|
196
|
+
:url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/alternativeExpression
|
|
197
|
+
:modifier_extension: false
|
|
198
|
+
- :id: Questionnaire.item.text.extension:itemTextRenderingXhtml
|
|
199
|
+
:slice_name: itemTextRenderingXhtml
|
|
200
|
+
:path: item.text.extension
|
|
201
|
+
:url: http://hl7.org/fhir/StructureDefinition/rendering-xhtml
|
|
202
|
+
:modifier_extension: false
|
|
203
|
+
- :id: Questionnaire.item.answerOption.extension:optionExclusive
|
|
204
|
+
:slice_name: optionExclusive
|
|
205
|
+
:path: item.answerOption.extension
|
|
206
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-optionExclusive
|
|
207
|
+
:modifier_extension: false
|
|
208
|
+
- :id: Questionnaire.item.answerOption.value[x].extension:answerOptionRenderingXhtml
|
|
209
|
+
:slice_name: answerOptionRenderingXhtml
|
|
210
|
+
:path: item.answerOption.value[x].extension
|
|
211
|
+
:url: http://hl7.org/fhir/StructureDefinition/rendering-xhtml
|
|
212
|
+
:modifier_extension: false
|
|
213
|
+
:slices:
|
|
214
|
+
- :slice_id: Questionnaire.item.answerOption.value[x]:valueCoding
|
|
215
|
+
:slice_name: valueCoding
|
|
216
|
+
:path: item.answerOption.value[x]
|
|
217
|
+
:discriminator:
|
|
218
|
+
:type: type
|
|
219
|
+
:code: Coding
|
|
220
|
+
- :slice_id: Questionnaire.item.answerOption.value[x]:valueReference
|
|
221
|
+
:slice_name: valueReference
|
|
222
|
+
:path: item.answerOption.value[x]
|
|
223
|
+
:discriminator:
|
|
224
|
+
:type: type
|
|
225
|
+
:code: Reference
|
|
226
|
+
:elements:
|
|
227
|
+
- :path: url
|
|
228
|
+
- :path: version
|
|
229
|
+
- :path: title
|
|
230
|
+
- :path: status
|
|
231
|
+
- :path: subjectType
|
|
232
|
+
- :path: effectivePeriod
|
|
233
|
+
- :path: item
|
|
234
|
+
- :path: item.linkId
|
|
235
|
+
- :path: item.prefix
|
|
236
|
+
- :path: item.type
|
|
237
|
+
- :path: item.enableBehavior
|
|
238
|
+
- :path: item.required
|
|
239
|
+
- :path: item.repeats
|
|
240
|
+
- :path: item.readOnly
|
|
241
|
+
- :path: item.answerValueSet
|
|
242
|
+
- :path: item.answerOption
|
|
243
|
+
- :path: item.answerOption.value[x]
|
|
244
|
+
:types:
|
|
245
|
+
- Reference
|
|
246
|
+
- :path: item.initial
|
|
247
|
+
- :path: item.initial.value[x]
|
|
248
|
+
:types:
|
|
249
|
+
- Reference
|
|
250
|
+
- :path: item.item
|
|
251
|
+
:recursive_elements:
|
|
252
|
+
- item
|
|
253
|
+
- :resource: Parameters
|
|
254
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters
|
|
255
|
+
:profile_name: DTR Questionnaire Package Output Parameters
|
|
256
|
+
:profile_version: 2.2.0
|
|
257
|
+
:must_supports:
|
|
258
|
+
:extensions: []
|
|
259
|
+
:slices:
|
|
260
|
+
- :slice_id: Parameters.parameter:packagebundle
|
|
261
|
+
:slice_name: packagebundle
|
|
262
|
+
:path: parameter
|
|
263
|
+
:discriminator:
|
|
264
|
+
:type: value
|
|
265
|
+
:values:
|
|
266
|
+
- :path: name
|
|
267
|
+
:value: packagebundle
|
|
268
|
+
- :slice_id: Parameters.parameter:outcome
|
|
269
|
+
:slice_name: outcome
|
|
270
|
+
:path: parameter
|
|
271
|
+
:discriminator:
|
|
272
|
+
:type: value
|
|
273
|
+
:values:
|
|
274
|
+
- :path: name
|
|
275
|
+
:value: outcome
|
|
276
|
+
:elements:
|
|
277
|
+
- :path: parameter
|
|
278
|
+
- :path: parameter:packagebundle.resource
|
|
279
|
+
- :path: parameter:outcome.resource
|
|
280
|
+
:recursive_elements:
|
|
281
|
+
- part
|
|
282
|
+
- :resource: Questionnaire
|
|
283
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-adapt-search
|
|
284
|
+
:profile_name: DTR Questionnaire for adaptive form Search
|
|
285
|
+
:profile_version: 2.2.0
|
|
286
|
+
:must_supports:
|
|
287
|
+
:extensions:
|
|
288
|
+
- :id: Questionnaire.extension:terminologyServer
|
|
289
|
+
:slice_name: terminologyServer
|
|
290
|
+
:path: extension
|
|
291
|
+
:url: http://hl7.org/fhir/StructureDefinition/preferredTerminologyServer
|
|
292
|
+
:modifier_extension: false
|
|
293
|
+
- :id: Questionnaire.extension:versionAlgorithm
|
|
294
|
+
:slice_name: versionAlgorithm
|
|
295
|
+
:path: extension
|
|
296
|
+
:url: http://hl7.org/fhir/StructureDefinition/artifact-versionAlgorithm
|
|
297
|
+
:modifier_extension: false
|
|
298
|
+
- :id: Questionnaire.extension:performerType
|
|
299
|
+
:slice_name: performerType
|
|
300
|
+
:path: extension
|
|
301
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-performerType
|
|
302
|
+
:modifier_extension: false
|
|
303
|
+
- :id: Questionnaire.extension:assemble-expectation
|
|
304
|
+
:slice_name: assemble-expectation
|
|
305
|
+
:path: extension
|
|
306
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assemble-expectation
|
|
307
|
+
:modifier_extension: false
|
|
308
|
+
- :id: Questionnaire.extension:questionnaireAdaptive
|
|
309
|
+
:slice_name: questionnaireAdaptive
|
|
310
|
+
:path: extension
|
|
311
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-questionnaireAdaptive
|
|
312
|
+
:modifier_extension: false
|
|
313
|
+
- :id: Questionnaire.extension:entryMode
|
|
314
|
+
:slice_name: entryMode
|
|
315
|
+
:path: extension
|
|
316
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-entryMode
|
|
317
|
+
:modifier_extension: false
|
|
318
|
+
- :id: Questionnaire.extension:signatureRequired
|
|
319
|
+
:slice_name: signatureRequired
|
|
320
|
+
:path: extension
|
|
321
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-signatureRequired
|
|
322
|
+
:modifier_extension: false
|
|
323
|
+
- :id: Questionnaire.extension:cqf-library
|
|
324
|
+
:slice_name: cqf-library
|
|
325
|
+
:path: extension
|
|
326
|
+
:url: http://hl7.org/fhir/StructureDefinition/cqf-library
|
|
327
|
+
:modifier_extension: false
|
|
328
|
+
- :id: Questionnaire.item.extension:hidden
|
|
329
|
+
:slice_name: hidden
|
|
330
|
+
:path: item.extension
|
|
331
|
+
:url: http://hl7.org/fhir/StructureDefinition/questionnaire-hidden
|
|
332
|
+
:modifier_extension: false
|
|
333
|
+
:slices:
|
|
334
|
+
- :slice_id: Questionnaire.item.answerOption.value[x]:valueCoding
|
|
335
|
+
:slice_name: valueCoding
|
|
336
|
+
:path: item.answerOption.value[x]
|
|
337
|
+
:discriminator:
|
|
338
|
+
:type: type
|
|
339
|
+
:code: Coding
|
|
340
|
+
- :slice_id: Questionnaire.item.answerOption.value[x]:valueReference
|
|
341
|
+
:slice_name: valueReference
|
|
342
|
+
:path: item.answerOption.value[x]
|
|
343
|
+
:discriminator:
|
|
344
|
+
:type: type
|
|
345
|
+
:code: Reference
|
|
346
|
+
:elements:
|
|
347
|
+
- :path: url
|
|
348
|
+
- :path: version
|
|
349
|
+
- :path: title
|
|
350
|
+
- :path: status
|
|
351
|
+
- :path: subjectType
|
|
352
|
+
- :path: effectivePeriod
|
|
353
|
+
- :path: item
|
|
354
|
+
- :path: item.linkId
|
|
355
|
+
- :path: item.prefix
|
|
356
|
+
- :path: item.type
|
|
357
|
+
- :path: item.required
|
|
358
|
+
- :path: item.repeats
|
|
359
|
+
- :path: item.readOnly
|
|
360
|
+
- :path: item.answerValueSet
|
|
361
|
+
- :path: item.answerOption
|
|
362
|
+
- :path: item.answerOption.value[x]
|
|
363
|
+
:types:
|
|
364
|
+
- Reference
|
|
365
|
+
- :path: item.initial
|
|
366
|
+
- :path: item.initial.value[x]
|
|
367
|
+
:types:
|
|
368
|
+
- Reference
|
|
369
|
+
- :path: item.item
|
|
370
|
+
:recursive_elements:
|
|
371
|
+
- item
|
|
372
|
+
- :resource: Questionnaire
|
|
373
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-adapt
|
|
374
|
+
:profile_name: DTR Questionnaire for adaptive form
|
|
375
|
+
:profile_version: 2.2.0
|
|
376
|
+
:must_supports:
|
|
377
|
+
:extensions:
|
|
378
|
+
- :id: Questionnaire.extension:questionnaireAdaptive
|
|
379
|
+
:slice_name: questionnaireAdaptive
|
|
380
|
+
:path: extension
|
|
381
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-questionnaireAdaptive
|
|
382
|
+
:modifier_extension: false
|
|
383
|
+
:slices: []
|
|
384
|
+
:elements:
|
|
385
|
+
- :path: item.enableWhen
|
|
386
|
+
:recursive_elements:
|
|
387
|
+
- item
|
|
388
|
+
- :resource: Questionnaire
|
|
389
|
+
:profile_url: http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-std-questionnaire
|
|
390
|
+
:profile_name: DTR Standard Questionnaire
|
|
391
|
+
:profile_version: 2.2.0
|
|
392
|
+
:must_supports:
|
|
393
|
+
:extensions:
|
|
394
|
+
- :id: Questionnaire.item.extension:enableWhenExpression
|
|
395
|
+
:slice_name: enableWhenExpression
|
|
396
|
+
:path: item.extension
|
|
397
|
+
:url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression
|
|
398
|
+
:modifier_extension: false
|
|
399
|
+
:slices: []
|
|
400
|
+
:elements:
|
|
401
|
+
- :path: item.enableWhen
|
|
402
|
+
:recursive_elements:
|
|
403
|
+
- item
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'inferno/dsl/profile_metadata'
|
|
2
|
+
|
|
3
|
+
module DaVinciDTRTestKit
|
|
4
|
+
# Loads and memoizes the Inferno::DSL::ProfileMetadata generated by Generator into
|
|
5
|
+
# cross_suite/generated/<version>/<profile>/metadata.yml, so test classes don't each
|
|
6
|
+
# need to hand-roll their own file path and loading/memoization boilerplate.
|
|
7
|
+
module GeneratedProfileMetadata
|
|
8
|
+
GENERATED_DIR = File.join(__dir__, 'generated').freeze
|
|
9
|
+
|
|
10
|
+
# @param version [String] eg 'v2.2.0'
|
|
11
|
+
# @param profile [String] the generated metadata directory name, eg 'dtr_base_questionnaire'
|
|
12
|
+
# @return [Inferno::DSL::ProfileMetadata]
|
|
13
|
+
def self.for(version, profile)
|
|
14
|
+
cache[[version, profile]] ||=
|
|
15
|
+
Inferno::DSL::ProfileMetadata.from_file(File.join(GENERATED_DIR, version, profile, 'metadata.yml'))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.cache
|
|
19
|
+
@cache ||= {}
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
module DaVinciDTRTestKit
|
|
2
|
+
module ResponseSelectionUtils
|
|
3
|
+
INFERNO_CONTROL_EXTENSION_URLS = [
|
|
4
|
+
'urn:inferno:dtr:inclusion-criteria',
|
|
5
|
+
'urn:inferno:dtr:request-range'
|
|
6
|
+
].freeze
|
|
7
|
+
|
|
8
|
+
# ***********************************************************************
|
|
9
|
+
# Selection of entries from the Template
|
|
10
|
+
# ***********************************************************************
|
|
11
|
+
|
|
12
|
+
def include_entity?(entity, parsed_request_body, operation)
|
|
13
|
+
return false if entity_has_request_range_criteria?(entity) &&
|
|
14
|
+
!request_meets_request_range_criteria?(entity, operation)
|
|
15
|
+
return false if entity_has_inclusion_criteria?(entity) &&
|
|
16
|
+
!request_meets_inclusion_criteria?(entity, parsed_request_body)
|
|
17
|
+
|
|
18
|
+
true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def strip_inferno_extensions(entity)
|
|
22
|
+
entity.extension.reject! { |ext| INFERNO_CONTROL_EXTENSION_URLS.include?(ext.url) }
|
|
23
|
+
entity
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# ***********************************************************************
|
|
27
|
+
# FHIRPath-based selection criteria
|
|
28
|
+
# ***********************************************************************
|
|
29
|
+
|
|
30
|
+
def entity_has_inclusion_criteria?(entity)
|
|
31
|
+
entity.extension.any? { |ext| ext.url == 'urn:inferno:dtr:inclusion-criteria' }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def request_meets_inclusion_criteria?(entity, parsed_request_body)
|
|
35
|
+
criteria = entity.extension.find do |ext|
|
|
36
|
+
ext.url == 'urn:inferno:dtr:inclusion-criteria'
|
|
37
|
+
end&.valueExpression&.expression
|
|
38
|
+
return false unless criteria.present?
|
|
39
|
+
|
|
40
|
+
fhirpath_result = execute_fhirpath(parsed_request_body, criteria)
|
|
41
|
+
interpret_fhirpath_result_as_boolean(fhirpath_result)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# ***********************************************************************
|
|
45
|
+
# request index-based selection criteria
|
|
46
|
+
# ***********************************************************************
|
|
47
|
+
|
|
48
|
+
def entity_has_request_range_criteria?(entity)
|
|
49
|
+
entity.extension.any? { |ext| ext.url == 'urn:inferno:dtr:request-range' }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def request_meets_request_range_criteria?(entity, operation)
|
|
53
|
+
criteria = entity.extension.find { |ext| ext.url == 'urn:inferno:dtr:request-range' }&.valueString
|
|
54
|
+
return false unless criteria.present?
|
|
55
|
+
|
|
56
|
+
ranges_cover_value?(count_previous_successful_requests(operation) + 1, criteria)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def count_previous_successful_requests(operation)
|
|
60
|
+
requests_repo = Inferno::Repositories::Requests.new
|
|
61
|
+
previous_requests = requests_repo.requests_for_result(result.id)
|
|
62
|
+
previous_requests.select { |req| req.url.include?(operation) && req.status == 200 }.count
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def ranges_cover_value?(value, ranges_string)
|
|
66
|
+
unless /\A(\d+(-\d+)?,)*\d+(-\d+)?\z/.match?(ranges_string)
|
|
67
|
+
raise ArgumentError,
|
|
68
|
+
"Invalid range string: #{ranges_string.inspect}"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
ranges_string.split(',').any? do |part|
|
|
72
|
+
if part.include?('-')
|
|
73
|
+
a, b = part.split('-').map(&:to_i)
|
|
74
|
+
raise ArgumentError, "Inverted range in: #{part.inspect}" if a > b
|
|
75
|
+
|
|
76
|
+
(a..b).cover?(value)
|
|
77
|
+
else
|
|
78
|
+
part.to_i == value
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
rescue ArgumentError => e
|
|
82
|
+
raise Inferno::Exceptions::TestSuiteImplementationException.new('dtr response range criteria', e.message)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -63,7 +63,7 @@ module DaVinciDTRTestKit
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def verify_questionnaire_extensions(questionnaires)
|
|
66
|
-
assert questionnaires&.any? && questionnaires.all?
|
|
66
|
+
assert questionnaires&.any? && questionnaires.all?(FHIR::Questionnaire), 'No questionnaires found.'
|
|
67
67
|
questionnaires.each_with_index { |q, q_index| check_questionnaire_extensions(q, q_index) }
|
|
68
68
|
check_library_references
|
|
69
69
|
assert extension_presence.value?(true), 'No extensions found. Questionnaire must demonstrate prepopulation.'
|
|
@@ -112,7 +112,7 @@ module DaVinciDTRTestKit
|
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
def verify_questionnaire_items(questionnaires, final_cql_test: false)
|
|
115
|
-
assert questionnaires&.any? && questionnaires.all?
|
|
115
|
+
assert questionnaires&.any? && questionnaires.all?(FHIR::Questionnaire), 'No questionnaires found.'
|
|
116
116
|
questionnaires.each_with_index { |q, q_index| check_questionnaire_items(q, q_index) }
|
|
117
117
|
|
|
118
118
|
begin
|
|
@@ -324,7 +324,7 @@ module DaVinciDTRTestKit
|
|
|
324
324
|
|
|
325
325
|
def extract_contained_questionnaires(questionnaire_responses)
|
|
326
326
|
questionnaire_responses&.filter_map do |qr|
|
|
327
|
-
qr.contained&.
|
|
327
|
+
qr.contained&.grep(FHIR::Questionnaire)
|
|
328
328
|
end&.flatten&.compact
|
|
329
329
|
end
|
|
330
330
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require_relative 'multi_request_message_helper'
|
|
2
|
+
|
|
3
|
+
module DaVinciDTRTestKit
|
|
4
|
+
module DTRConformanceVerification
|
|
5
|
+
include MultiRequestMessageHelper
|
|
6
|
+
|
|
7
|
+
def check_questionnaire_response_conformance(questionnaire_response_json, message_index,
|
|
8
|
+
target_profile_with_version)
|
|
9
|
+
questionnaire_response = parse_fhir_request_entity(questionnaire_response_json, 'QuestionnaireResponse',
|
|
10
|
+
message_index)
|
|
11
|
+
return unless questionnaire_response.present?
|
|
12
|
+
|
|
13
|
+
unless questionnaire_response.is_a?(FHIR::QuestionnaireResponse)
|
|
14
|
+
add_request_message('error',
|
|
15
|
+
"Expected a QuestionnaireResponse, found a #{questionnaire_response.resourceType}.")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
resource_is_valid?(resource: questionnaire_response, profile_url: target_profile_with_version)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module DaVinciDTRTestKit
|
|
2
|
+
module MultiRequestMessageHelper
|
|
3
|
+
def request_prefix(request_index)
|
|
4
|
+
"(Request #{request_index + 1}) "
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def add_request_message(type, message, request_index)
|
|
8
|
+
add_message(type, "#{request_prefix(request_index)}#{message}")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def parse_fhir_request_entity(body, entity, request_index)
|
|
12
|
+
FHIR.from_contents(body)
|
|
13
|
+
rescue JSON::ParserError
|
|
14
|
+
add_request_message('error', "#{entity} contains invalid JSON.", request_index)
|
|
15
|
+
nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def requests_with_errors_prefix
|
|
19
|
+
request_numbers = error_request_numbers
|
|
20
|
+
return '' if request_numbers.empty?
|
|
21
|
+
|
|
22
|
+
noun = request_numbers.size == 1 ? 'Request' : 'Requests'
|
|
23
|
+
"#{noun} #{request_numbers.to_sentence}: "
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def error_request_numbers
|
|
29
|
+
messages
|
|
30
|
+
.select { |m| m[:type] == 'error' }
|
|
31
|
+
.filter_map { |m| m[:message].match(/\A\(Request (\d+)\)/) { |md| md[1].to_i } } # md[1] = first capture group
|
|
32
|
+
.sort.uniq
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|