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.
Files changed (311) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/v220_full_ehr_suite_run_against_payer_suite.json.erb +19 -0
  3. data/config/presets/v220_payer_suite_run_against_full_ehr_suite.json.erb +76 -0
  4. data/lib/davinci_dtr_test_kit/cross_suite/fhirpath_utils.rb +52 -0
  5. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_base_questionnaire/metadata.yml +212 -0
  6. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_q_package_bundle/metadata.yml +39 -0
  7. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_qpackage_output_parameters/metadata.yml +30 -0
  8. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_questionnaire_adapt/metadata.yml +17 -0
  9. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_questionnaire_adapt_search/metadata.yml +91 -0
  10. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/dtr_std_questionnaire/metadata.yml +17 -0
  11. data/lib/davinci_dtr_test_kit/cross_suite/generated/v2.2.0/metadata.yml +403 -0
  12. data/lib/davinci_dtr_test_kit/cross_suite/generated_profile_metadata.rb +22 -0
  13. data/lib/davinci_dtr_test_kit/cross_suite/response_selection_utils.rb +85 -0
  14. data/lib/davinci_dtr_test_kit/{cql_test.rb → cross_suite/v2.0.1/cql_test.rb} +3 -3
  15. data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/dtr_conformance_verification.rb +21 -0
  16. data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/multi_request_message_helper.rb +35 -0
  17. data/lib/davinci_dtr_test_kit/cross_suite/v2.2.0/questionnaire_helper.rb +162 -0
  18. data/lib/davinci_dtr_test_kit/{dtr_client_options.rb → full_ehr/dtr_full_ehr_options.rb} +1 -1
  19. data/lib/davinci_dtr_test_kit/{endpoints → full_ehr/endpoints}/mock_payer.rb +9 -3
  20. data/lib/davinci_dtr_test_kit/{endpoints → full_ehr/endpoints}/mock_udap_smart_server/token_endpoint.rb +2 -2
  21. data/lib/davinci_dtr_test_kit/full_ehr/fixture_loader.rb +37 -0
  22. data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_adaptive/dinner_order_adaptive_next_question_template.json +243 -0
  23. data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_adaptive/parameters_questionnaire_dinner_order_adaptive.json +104 -0
  24. data/lib/davinci_dtr_test_kit/full_ehr/fixtures/dinner_static/parameters_questionnaire_dinner_order_static.json +291 -0
  25. data/lib/davinci_dtr_test_kit/full_ehr/fixtures/empty_templates/next_question_template_empty.json +1 -0
  26. data/lib/davinci_dtr_test_kit/full_ehr/fixtures/empty_templates/parameters_questionnaire_package_empty.json +9 -0
  27. data/lib/davinci_dtr_test_kit/full_ehr/short_circuit_interaction_verification.rb +73 -0
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. data/lib/davinci_dtr_test_kit/{dtr_full_ehr_suite.rb → full_ehr/v2.0.1/dtr_full_ehr_suite.rb} +23 -20
  41. 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
  42. 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
  43. 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
  44. 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
  45. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/dtr_must_support_attestation_test.rb +2 -1
  46. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/dtr_questionnaire_must_support_test.rb +3 -2
  47. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/payer_registration/configuration_display_smart_test.rb +1 -1
  48. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/payer_registration/configuration_display_udap_test.rb +1 -1
  49. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_expressions_test.rb +3 -2
  50. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_extensions_test.rb +3 -2
  51. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_libraries_test.rb +3 -2
  52. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_custom_questionnaire_package_validation_test.rb +3 -2
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_prepopulation_attestation_test.rb +1 -1
  62. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_prepopulation_override_attestation_test.rb +1 -1
  63. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_package_request_validation_test.rb +1 -1
  64. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_response_basic_conformance_test.rb +2 -2
  65. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_questionnaire_response_prepopulation_test.rb +1 -1
  66. data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/shared/dtr_rendering_attestation_test.rb +1 -1
  67. 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
  68. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_abstract_adaptive_group.rb +87 -0
  69. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_abstract_standard_group.rb +59 -0
  70. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_suite.rb +145 -0
  71. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/dtr_full_ehr_suite_description_v220.md +254 -0
  72. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb +391 -0
  73. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_questionnaire_package_endpoint.rb +206 -0
  74. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb +108 -0
  75. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/interaction_wait_test.rb +177 -0
  76. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/ui_display_and_interaction_attestation_test.rb +132 -0
  77. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_additional_questionnaires_interaction_group.rb +74 -0
  78. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_adaptive_must_support_test.rb +45 -0
  79. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_base_must_support_test.rb +43 -0
  80. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/must_support/dtr_questionnaire_standard_must_support_test.rb +45 -0
  81. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/next_question_template_questionnaires.rb +21 -0
  82. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/request/dtr_next_question_request_validation_test.rb +85 -0
  83. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/request/dtr_questionnaire_package_request_validation_test.rb +89 -0
  84. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/response/dtr_next_question_response_validation_test.rb +85 -0
  85. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/response/dtr_questionnaire_package_response_validation_test.rb +77 -0
  86. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/workflows/dtr_full_ehr_workflow_adaptive_group.rb +24 -0
  87. data/lib/davinci_dtr_test_kit/full_ehr/v2.2.0/workflows/dtr_full_ehr_workflow_standard_group.rb +21 -0
  88. data/lib/davinci_dtr_test_kit/generator/ig_metadata.rb +21 -0
  89. data/lib/davinci_dtr_test_kit/generator/profile_metadata_extractor.rb +57 -0
  90. data/lib/davinci_dtr_test_kit/generator.rb +117 -0
  91. data/lib/davinci_dtr_test_kit/igs/davinci_dtr_2.2.0.tgz +0 -0
  92. data/lib/davinci_dtr_test_kit/{dtr_options.rb → light_ehr/dtr_light_ehr_options.rb} +1 -1
  93. data/lib/davinci_dtr_test_kit/{dtr_light_ehr_suite.rb → light_ehr/v2.0.1/dtr_light_ehr_suite.rb} +21 -10
  94. data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1}/dtr_light_ehr_supported_endpoints_group.rb +5 -5
  95. data/lib/davinci_dtr_test_kit/{client_groups/light_ehr → light_ehr/v2.0.1}/dtr_smart_ehr_launch.rb +3 -3
  96. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_read.rb +1 -1
  97. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_read.rb +1 -1
  98. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_read.rb +1 -1
  99. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_read.rb +1 -1
  100. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_read.rb +1 -1
  101. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_read.rb +1 -1
  102. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_create.rb +1 -1
  103. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_update.rb +1 -1
  104. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_read.rb +1 -1
  105. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_create.rb +1 -1
  106. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_read.rb +1 -1
  107. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_update.rb +1 -1
  108. data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_read.rb +1 -1
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. data/lib/davinci_dtr_test_kit/metadata.rb +13 -68
  115. data/lib/davinci_dtr_test_kit/requirements/davinci_dtr_test_kit_requirements.csv +216 -0
  116. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_full_ehr_requirements_coverage.csv +1 -1
  117. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_full_ehr_v220_requirements_coverage.csv +1 -0
  118. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_light_ehr_requirements_coverage.csv +1 -1
  119. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_payer_server_requirements_coverage.csv +1 -1
  120. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_payer_server_v220_requirements_coverage.csv +114 -0
  121. data/lib/davinci_dtr_test_kit/requirements/generated/dtr_smart_app_requirements_coverage.csv +1 -1
  122. data/lib/davinci_dtr_test_kit/requirements/hl7.fhir.us.davinci-dtr_2.2.0_requirements.xlsx +0 -0
  123. data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → server/endpoints}/next_question_proxy_endpoint.rb +2 -0
  124. data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → server/endpoints}/questionnaire_package_proxy_endpoint.rb +2 -0
  125. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_libraries_test.rb +2 -1
  126. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_questionnaire_expressions_test.rb +2 -1
  127. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_form_questionnaire_extensions_test.rb +2 -1
  128. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_next_questionnaire_expressions_test.rb +2 -1
  129. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/adaptive_next_questionnaire_extensions_test.rb +2 -1
  130. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_request_test.rb +2 -1
  131. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_request_validation_test.rb +3 -1
  132. 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
  133. 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
  134. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_adaptive_response_validation_test.rb +4 -2
  135. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_request_validation_test.rb +3 -1
  136. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_response_validation_test.rb +3 -1
  137. data/lib/davinci_dtr_test_kit/{dtr_payer_server_suite.rb → server/v2.0.1/dtr_payer_server_suite.rb} +13 -10
  138. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1}/payer_server_adaptive_group.rb +13 -13
  139. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1}/payer_server_static_group.rb +6 -6
  140. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_libraries_test.rb +2 -1
  141. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_questionnaire_expressions_test.rb +2 -1
  142. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_questionnaire_extensions_test.rb +2 -1
  143. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_request_test.rb +4 -2
  144. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_request_validation_test.rb +3 -2
  145. data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/static_forms}/static_form_response_validation_test.rb +5 -3
  146. data/lib/davinci_dtr_test_kit/server/v2.2.0/client_simulation.rb +297 -0
  147. data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_capability_statement_test.rb +73 -0
  148. data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_suite.rb +322 -0
  149. data/lib/davinci_dtr_test_kit/server/v2.2.0/dtr_payer_server_suite_description_v220.md +37 -0
  150. data/lib/davinci_dtr_test_kit/server/v2.2.0/interaction_test.rb +97 -0
  151. data/lib/davinci_dtr_test_kit/server/v2.2.0/log_questionnaire_errors_support_test.rb +57 -0
  152. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_adaptive_must_support_test.rb +47 -0
  153. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_adaptive_search_must_support_test.rb +40 -0
  154. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_base_must_support_test.rb +40 -0
  155. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_package_bundle_must_support_test.rb +38 -0
  156. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_package_output_parameters_must_support_test.rb +37 -0
  157. data/lib/davinci_dtr_test_kit/server/v2.2.0/must_support/questionnaire_standard_must_support_test.rb +39 -0
  158. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_request_validation_test.rb +45 -0
  159. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/adaptive_questionnaire_endpoint_test.rb +98 -0
  160. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/invalid_questionnaire_response_test.rb +43 -0
  161. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_contained_questionnaire_response_references_test.rb +46 -0
  162. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_question_response_references_test.rb +56 -0
  163. data/lib/davinci_dtr_test_kit/server/v2.2.0/next_question_support/next_question_response_validation_test.rb +67 -0
  164. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/contained_binary_test.rb +58 -0
  165. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/contained_binary_validation.rb +128 -0
  166. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/cql_library_validation_test.rb +58 -0
  167. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_design_support.rb +65 -0
  168. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_expression_elm_test.rb +81 -0
  169. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_expression_language_test.rb +63 -0
  170. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_prepopulation_test.rb +42 -0
  171. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_design/questionnaire_relevance_logic_test.rb +40 -0
  172. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_operation_validation.rb +440 -0
  173. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_request_validation_test.rb +42 -0
  174. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/adaptive_questionnaire_response_contained_questionnaire_test.rb +127 -0
  175. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/adaptive_questionnaire_response_validation_test.rb +61 -0
  176. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/contained_questionnaire_response_references_test.rb +42 -0
  177. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_no_custom_extension_test.rb +184 -0
  178. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_questionnaire_not_found_test.rb +76 -0
  179. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/dtr_server_questionnaire_package_contents_test.rb +89 -0
  180. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/initial_questionnaire_response_test.rb +132 -0
  181. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_package_input_type_test.rb +110 -0
  182. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_references_version_specific_test.rb +79 -0
  183. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_questionnaire_canonical_test.rb +89 -0
  184. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_references_test.rb +51 -0
  185. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/questionnaire_response_validation_test.rb +63 -0
  186. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/source_data_error_test.rb +43 -0
  187. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_package_support/value_set_validation_test.rb +90 -0
  188. data/lib/davinci_dtr_test_kit/server/v2.2.0/questionnaire_response_reference_validation.rb +133 -0
  189. data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb +120 -0
  190. data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/value_set_expansion_test.rb +51 -0
  191. data/lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/value_set_expansion_validation.rb +58 -0
  192. data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization/token_endpoint.rb +1 -1
  193. data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr/fhir_get_endpoint.rb +1 -1
  194. data/lib/davinci_dtr_test_kit/smart_app/endpoints/mock_payer/smart_app_next_question_endpoint.rb +12 -0
  195. data/lib/davinci_dtr_test_kit/smart_app/endpoints/mock_payer/smart_app_questionnaire_package_endpoint.rb +12 -0
  196. 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
  197. 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
  198. 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
  199. data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1/auth}/token_request_test.rb +1 -1
  200. 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
  201. 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
  202. data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1}/dtr_smart_app_respiratory_workflow_group.rb +3 -3
  203. 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
  204. data/lib/davinci_dtr_test_kit/{dtr_smart_app_suite.rb → smart_app/v2.0.1/dtr_smart_app_suite.rb} +25 -21
  205. data/lib/davinci_dtr_test_kit/{docs → smart_app/v2.0.1}/dtr_smart_app_suite_description_v201.md +8 -0
  206. 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
  207. data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1}/oauth2_authentication_group.rb +2 -2
  208. data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_package_group.rb +1 -1
  209. 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
  210. data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_questionnaire_response_group.rb +2 -2
  211. 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
  212. data/lib/davinci_dtr_test_kit/{client_groups/respiratory → smart_app/v2.0.1/static_respiratory}/dtr_respiratory_rendering_attestation_test.rb +1 -1
  213. 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
  214. 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
  215. 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
  216. 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
  217. 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
  218. 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
  219. 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
  220. data/lib/davinci_dtr_test_kit/tags.rb +2 -0
  221. data/lib/davinci_dtr_test_kit/version.rb +2 -2
  222. data/lib/davinci_dtr_test_kit.rb +6 -4
  223. metadata +329 -215
  224. data/lib/davinci_dtr_test_kit/certs/InfernoCA.key +0 -52
  225. data/lib/davinci_dtr_test_kit/certs/InfernoCA.pem +0 -35
  226. data/lib/davinci_dtr_test_kit/certs/TestKit.pem +0 -32
  227. data/lib/davinci_dtr_test_kit/certs/TestKitPrivateKey.key +0 -28
  228. data/lib/davinci_dtr_test_kit/endpoints/mock_payer/full_ehr_next_question_endpoint.rb +0 -30
  229. data/lib/davinci_dtr_test_kit/endpoints/mock_payer/full_ehr_questionnaire_package_endpoint.rb +0 -31
  230. data/lib/davinci_dtr_test_kit/fixture_loader.rb +0 -21
  231. /data/lib/davinci_dtr_test_kit/{endpoints → cross_suite}/cors.rb +0 -0
  232. /data/lib/davinci_dtr_test_kit/{dtr_questionnaire_response_validation.rb → cross_suite/v2.0.1/dtr_questionnaire_response_validation.rb} +0 -0
  233. /data/lib/davinci_dtr_test_kit/{descriptions.rb → full_ehr/descriptions.rb} +0 -0
  234. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_burrito.json +0 -0
  235. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_hamburger.json +0 -0
  236. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/dinner_order_adaptive_next_question_initial.json +0 -0
  237. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_adaptive/questionnaire_dinner_order_adaptive.json +0 -0
  238. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_static/questionnaire_dinner_order_static.json +0 -0
  239. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/dinner_static/questionnaire_response_dinner_order_static.json +0 -0
  240. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/respiratory_assist_device/pre_populated_questionnaire_response.json +0 -0
  241. /data/lib/davinci_dtr_test_kit/{fixtures → full_ehr/fixtures}/respiratory_assist_device/questionnaire_package.json +0 -0
  242. /data/lib/davinci_dtr_test_kit/{fixtures.rb → full_ehr/fixtures.rb} +0 -0
  243. /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
  244. /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
  245. /data/lib/davinci_dtr_test_kit/{client_groups/auth → full_ehr/v2.0.1}/dtr_client_payer_auth_smart_group.rb +0 -0
  246. /data/lib/davinci_dtr_test_kit/{client_groups/auth → full_ehr/v2.0.1}/dtr_client_payer_auth_udap_group.rb +0 -0
  247. /data/lib/davinci_dtr_test_kit/{docs → full_ehr/v2.0.1}/dtr_full_ehr_suite_description_v201.md +0 -0
  248. /data/lib/davinci_dtr_test_kit/{client_groups → full_ehr/v2.0.1}/must_support/questionnaire_must_support_elements.rb +0 -0
  249. /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
  250. /data/lib/davinci_dtr_test_kit/{create_test.rb → light_ehr/create_test.rb} +0 -0
  251. /data/lib/davinci_dtr_test_kit/{endpoints/mock_payer → light_ehr/endpoints}/light_ehr_supported_payer_endpoint.rb +0 -0
  252. /data/lib/davinci_dtr_test_kit/{read_test.rb → light_ehr/read_test.rb} +0 -0
  253. /data/lib/davinci_dtr_test_kit/{update_test.rb → light_ehr/update_test.rb} +0 -0
  254. /data/lib/davinci_dtr_test_kit/{docs → light_ehr/v2.0.1}/dtr_light_ehr_suite_description_v201.md +0 -0
  255. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_must_support_test.rb +0 -0
  256. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/communication_request_validation.rb +0 -0
  257. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request/metadata.yml +0 -0
  258. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/communication_request_group.rb +0 -0
  259. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_must_support_test.rb +0 -0
  260. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/coverage_validation.rb +0 -0
  261. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage/metadata.yml +0 -0
  262. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/coverage_group.rb +0 -0
  263. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_must_support_test.rb +0 -0
  264. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/device_request_validation.rb +0 -0
  265. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request/metadata.yml +0 -0
  266. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/device_request_group.rb +0 -0
  267. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_must_support_test.rb +0 -0
  268. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/encounter_validation.rb +0 -0
  269. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter/metadata.yml +0 -0
  270. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/encounter_group.rb +0 -0
  271. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_must_support_test.rb +0 -0
  272. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/medication_request_validation.rb +0 -0
  273. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request/metadata.yml +0 -0
  274. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/medication_request_group.rb +0 -0
  275. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/metadata.yml +0 -0
  276. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_must_support_test.rb +0 -0
  277. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order/nutrition_order_validation.rb +0 -0
  278. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/nutrition_order_group.rb +0 -0
  279. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/metadata.yml +0 -0
  280. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_context_search.rb +0 -0
  281. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_must_support_test.rb +0 -0
  282. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_patient_search.rb +0 -0
  283. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_read.rb +0 -0
  284. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response/questionnaire_response_validation.rb +0 -0
  285. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/questionnaire_response_group.rb +0 -0
  286. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/metadata.yml +0 -0
  287. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_must_support_test.rb +0 -0
  288. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request/service_request_validation.rb +0 -0
  289. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/service_request_group.rb +0 -0
  290. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/metadata.yml +0 -0
  291. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_must_support_test.rb +0 -0
  292. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task/task_validation.rb +0 -0
  293. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/task_group.rb +0 -0
  294. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/metadata.yml +0 -0
  295. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_must_support_test.rb +0 -0
  296. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription/vision_prescription_validation.rb +0 -0
  297. /data/lib/davinci_dtr_test_kit/{profiles → light_ehr/v2.0.1/profiles}/vision_prescription_group.rb +0 -0
  298. /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
  299. /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
  300. /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
  301. /data/lib/davinci_dtr_test_kit/{endpoints/mock_authorization → server/endpoints}/simple_token_endpoint.rb +0 -0
  302. /data/lib/davinci_dtr_test_kit/{payer_server_groups → server/v2.0.1/adaptive_forms}/payer_server_next_response_complete_test.rb +0 -0
  303. /data/lib/davinci_dtr_test_kit/{docs → server/v2.0.1}/dtr_payer_server_suite_description_v201.md +0 -0
  304. /data/lib/davinci_dtr_test_kit/{validation_test.rb → server/validation_test.rb} +0 -0
  305. /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization/authorize_endpoint.rb +0 -0
  306. /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_authorization.rb +0 -0
  307. /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr/questionnaire_response_endpoint.rb +0 -0
  308. /data/lib/davinci_dtr_test_kit/{endpoints → smart_app/endpoints}/mock_ehr.rb +0 -0
  309. /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
  310. /data/lib/davinci_dtr_test_kit/{auth_groups → smart_app/v2.0.1/auth}/token_validation_test.rb +0 -0
  311. /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
@@ -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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../urls'
3
+ require_relative '../../../urls'
4
4
  require_relative '../mock_authorization'
5
5
 
6
6
  module DaVinciDTRTestKit
@@ -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 = ehr_bundle_input_value = ehr_bundle_input['value'] if ehr_bundle_input.present?
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
@@ -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 '../../shared/dtr_questionnaire_package_request_validation_test'
4
- require_relative '../dtr_adaptive_next_question_request_validation_test'
5
- require_relative '../dtr_adaptive_response_validation_test'
6
- require_relative '../../shared/dtr_custom_questionnaire_package_validation_test'
7
- require_relative '../../shared/dtr_custom_questionnaire_libraries_test'
8
- require_relative '../../shared/dtr_custom_questionnaire_extensions_test'
9
- require_relative '../../shared/dtr_custom_questionnaire_expressions_test'
10
- require_relative 'dtr_custom_next_question_response_validation_test'
11
- require_relative '../../shared/dtr_prepopulation_attestation_test'
12
- require_relative '../../shared/dtr_prepopulation_override_attestation_test'
13
- require_relative '../../smart_app/dtr_smart_app_saving_questionnaire_response_group'
14
- require_relative '../../shared/dtr_questionnaire_response_prepopulation_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
+ 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 necessaru extensions for pre-population
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
- [USER INPUT VERIFICATION] Custom Questionnaires for $next-question Responses contain extensions
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
- [USER INPUT VERIFICATION] Custom Questionnaires for $next-question Responses contain items with
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 '../../smart_app/dtr_smart_app_prepopulation_attestation_test'
4
- require_relative '../../smart_app/dtr_smart_app_prepopulation_override_attestation_test'
5
- require_relative 'dtr_adaptive_followup_questions_group'
6
- require_relative 'dtr_adaptive_completion_group'
7
- require_relative '../../shared/dtr_questionnaire_response_prepopulation_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/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 '../../smart_app/dtr_smart_app_adaptive_request_test'
3
- require_relative '../../shared/dtr_questionnaire_package_request_validation_test'
4
- require_relative '../dtr_adaptive_next_question_request_validation_test'
5
- require_relative '../dtr_adaptive_response_validation_test'
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,4 +1,4 @@
1
- require_relative '../urls'
1
+ require_relative '../../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
4
  class TokenRequestTest < Inferno::Test
@@ -1,14 +1,14 @@
1
- require_relative '../shared/dtr_custom_questionnaire_package_validation_test'
2
- require_relative '../shared/dtr_custom_questionnaire_libraries_test'
3
- require_relative '../shared/dtr_custom_questionnaire_extensions_test'
4
- require_relative '../shared/dtr_custom_questionnaire_expressions_test'
5
- require_relative '../smart_app/dtr_smart_app_questionnaire_package_request_test'
6
- require_relative '../shared/dtr_questionnaire_package_request_validation_test'
7
- require_relative '../shared/dtr_prepopulation_attestation_test'
8
- require_relative '../shared/dtr_rendering_attestation_test'
9
- require_relative '../shared/dtr_prepopulation_override_attestation_test'
10
- require_relative '../smart_app/dtr_smart_app_saving_questionnaire_response_group'
11
- require_relative '../smart_app/dtr_smart_app_questionnaire_response_correctness_test'
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 '../shared/dtr_questionnaire_package_request_validation_test'
4
- require_relative '../shared/dtr_custom_questionnaire_package_validation_test'
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: '[USER INPUT VALIDATION] All must support elements are provided in the static Questionnaire resources provided', # rubocop:disable Layout/LineLength
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 '../smart_app/dtr_smart_app_questionnaire_package_request_test'
2
- require_relative '../shared/dtr_questionnaire_package_request_validation_test'
3
- require_relative '../smart_app/dtr_smart_app_prepopulation_attestation_test'
4
- require_relative '../smart_app/dtr_smart_app_prepopulation_override_attestation_test'
5
- require_relative 'dtr_static_dinner_enabled_questions_attestation_test'
6
- require_relative '../smart_app/dtr_smart_app_saving_questionnaire_response_group'
7
- require_relative '../shared/dtr_questionnaire_response_prepopulation_test'
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
@@ -1,28 +1,28 @@
1
- require_relative 'auth_groups/oauth2_authentication_group'
2
- require_relative 'client_groups/respiratory/dtr_smart_app_respiratory_workflow_group'
3
- require_relative 'client_groups/dinner_static/dtr_smart_app_static_dinner_workflow_group'
4
- require_relative 'client_groups/adaptive_questionnaire/dinner_order/dtr_smart_app_adaptive_dinner_workflow_group'
5
- require_relative 'client_groups/custom_static/dtr_smart_app_custom_static_workflow_group'
6
- require_relative 'client_groups/adaptive_questionnaire/custom/dtr_smart_app_custom_adaptive_workflow_group'
7
- require_relative 'client_groups/must_support/dtr_smart_app_questionnaire_must_support_group'
8
- require_relative 'endpoints/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/questionnaire_package_endpoint'
13
- require_relative 'endpoints/mock_payer/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'
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__, 'docs', 'dtr_smart_app_suite_description_v201.md'))
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::QuestionnairePackageEndpoint
76
- suite_endpoint :post, NEXT_PATH, MockPayer::NextQuestionEndpoint
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))
@@ -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 '../../urls'
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
- require_relative 'token_request_test'
2
- require_relative 'token_validation_test'
1
+ require_relative 'auth/token_request_test'
2
+ require_relative 'auth/token_validation_test'
3
3
 
4
4
  module DaVinciDTRTestKit
5
5
  class OAuth2AuthenticationGroup < Inferno::TestGroup
@@ -1,5 +1,5 @@
1
1
  require_relative 'dtr_respiratory_questionnaire_package_request_test'
2
- require_relative '../shared/dtr_questionnaire_package_request_validation_test'
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,4 +1,4 @@
1
- require_relative '../../urls'
1
+ require_relative '../../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
4
  class DTRRespiratoryQuestionnairePackageRequestTest < Inferno::Test
@@ -1,6 +1,6 @@
1
1
  require_relative 'dtr_respiratory_questionnaire_response_save_test'
2
- require_relative '../shared/dtr_questionnaire_response_basic_conformance_test'
3
- require_relative '../shared/dtr_questionnaire_response_prepopulation_test'
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
@@ -1,4 +1,4 @@
1
- require_relative '../../urls'
1
+ require_relative '../../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
4
  class DTRRespiratoryQuestionnaireResponseSaveTest < Inferno::Test
@@ -1,5 +1,5 @@
1
1
  require 'securerandom'
2
- require_relative '../../urls'
2
+ require_relative '../../../urls'
3
3
 
4
4
  module DaVinciDTRTestKit
5
5
  class DTRRespiratoryRenderingAttestationTest < Inferno::Test
@@ -1,4 +1,4 @@
1
- require_relative '../../urls'
1
+ require_relative '../../../urls'
2
2
 
3
3
  module DaVinciDTRTestKit
4
4
  class DTRSmartAppAdaptiveRequestTest < Inferno::Test
@@ -1,5 +1,5 @@
1
1
  require 'securerandom'
2
- require_relative '../../urls'
2
+ require_relative '../../../urls'
3
3
 
4
4
  module DaVinciDTRTestKit
5
5
  class DTRSmartAppPrepopulationAttestationTest < Inferno::Test
@@ -1,5 +1,5 @@
1
1
  require 'securerandom'
2
- require_relative '../../urls'
2
+ require_relative '../../../urls'
3
3
 
4
4
  module DaVinciDTRTestKit
5
5
  class DTRSmartAppPrepopulationOverrideAttestationTest < Inferno::Test