davinci_dtr_test_kit 0.14.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/full_ehr_postman_dinner_order_example_postman.json +19 -0
  3. data/config/presets/full_ehr_postman_respiratory_device_example.json +15 -0
  4. data/config/presets/light_ehr_ref_server_local.json +105 -0
  5. data/config/presets/light_ehr_ref_server_prod.json +85 -0
  6. data/config/presets/payer_server_adaptive_client_flow.json +37 -0
  7. data/config/presets/payer_server_adaptive_manual_flow.json +44 -0
  8. data/config/presets/payer_server_run_against_smart_app_tests.json +35 -0
  9. data/config/presets/smart_app_postman_dinner_order_example.json +44 -0
  10. data/config/presets/smart_app_postman_respiratory_device_example.json +43 -0
  11. data/lib/davinci_dtr_test_kit/auth_groups/token_validation_test.rb +1 -1
  12. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_expressions_test.rb +22 -0
  13. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_extensions_test.rb +19 -0
  14. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_libraries_test.rb +21 -0
  15. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_custom_questionnaire_package_validation_test.rb +39 -0
  16. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_full_ehr_custom_static_workflow_group.rb +122 -0
  17. data/lib/davinci_dtr_test_kit/client_groups/custom_static/dtr_smart_app_custom_static_workflow_group.rb +91 -0
  18. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_completion_group.rb → dtr_adaptive_completion_group.rb} +4 -4
  19. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_followup_questions_group.rb → dtr_adaptive_followup_questions_group.rb} +4 -4
  20. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_request_test.rb → dtr_adaptive_next_question_request_test.rb} +3 -2
  21. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_request_validation_test.rb → dtr_adaptive_next_question_request_validation_test.rb} +3 -2
  22. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_next_question_retrieval_group.rb → dtr_adaptive_next_question_retrieval_group.rb} +8 -8
  23. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_adaptive_questionnaire_response_validation_test.rb → dtr_adaptive_response_validation_test.rb} +6 -4
  24. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_dinner_questionnaire_workflow_group.rb → dtr_full_ehr_adaptive_dinner_workflow_group.rb} +14 -12
  25. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_questionnaire_initial_retrieval_group.rb → dtr_full_ehr_adaptive_initial_retrieval_group.rb} +10 -10
  26. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_full_ehr_adaptive_questionnaire_request_test.rb → dtr_full_ehr_adaptive_request_test.rb} +4 -2
  27. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_smart_app_questionnaire_workflow_group.rb → dtr_smart_app_adaptive_dinner_workflow_group.rb} +25 -19
  28. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_initial_retrieval_group.rb +24 -0
  29. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/{dtr_smart_app_adaptive_questionnaire_request_test.rb → dtr_smart_app_adaptive_request_test.rb} +2 -2
  30. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_full_ehr_questionnaire_workflow_group.rb → dtr_full_ehr_static_dinner_workflow_group.rb} +15 -14
  31. data/lib/davinci_dtr_test_kit/client_groups/dinner_static/{dtr_smart_app_questionnaire_workflow_group.rb → dtr_smart_app_static_dinner_workflow_group.rb} +18 -13
  32. data/lib/davinci_dtr_test_kit/client_groups/{full_ehr/dtr_full_ehr_rendering_enabled_questions_attestation_test.rb → dinner_static/dtr_static_dinner_enabled_questions_attestation_test.rb} +2 -2
  33. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_launch_attestation_test.rb +8 -3
  34. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_attestation_test.rb +3 -1
  35. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_override_attestation_test.rb +2 -1
  36. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_package_request_test.rb +2 -1
  37. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_response_conformance_test.rb +6 -1
  38. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_response_correctness_test.rb +11 -22
  39. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_saving_questionnaire_response_group.rb +4 -4
  40. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_store_attestation_test.rb +2 -1
  41. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_endpoints_group.rb +22 -0
  42. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_accept_header_test.rb +26 -0
  43. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_config_test.rb +34 -0
  44. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_endpoint_test.rb +44 -0
  45. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_use_test.rb +32 -0
  46. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_light_ehr_supported_payers_user_response_test.rb +70 -0
  47. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_smart_ehr_launch.rb +18 -0
  48. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_coverage_test.rb +42 -0
  49. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_references_test.rb +59 -0
  50. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_launch_context_test.rb +23 -0
  51. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_package_group.rb → respiratory/dtr_respiratory_questionnaire_package_group.rb} +5 -5
  52. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_resp_questionnaire_package_request_test.rb → respiratory/dtr_respiratory_questionnaire_package_request_test.rb} +2 -2
  53. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_response_group.rb → respiratory/dtr_respiratory_questionnaire_response_group.rb} +7 -7
  54. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_response_save_test.rb → respiratory/dtr_respiratory_questionnaire_response_save_test.rb} +2 -2
  55. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_questionnaire_rendering_attestation_test.rb → respiratory/dtr_respiratory_rendering_attestation_test.rb} +2 -2
  56. data/lib/davinci_dtr_test_kit/client_groups/respiratory/dtr_respiratory_rendering_group.rb +14 -0
  57. data/lib/davinci_dtr_test_kit/client_groups/{resp_assist_device/dtr_smart_app_questionnaire_workflow_group.rb → respiratory/dtr_smart_app_respiratory_workflow_group.rb} +8 -8
  58. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_attestation_test.rb +33 -0
  59. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_override_attestation_test.rb +36 -0
  60. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb +3 -1
  61. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_basic_conformance_test.rb +8 -4
  62. data/lib/davinci_dtr_test_kit/client_groups/shared/{dtr_questionnaire_response_pre_population_test.rb → dtr_questionnaire_response_prepopulation_test.rb} +5 -2
  63. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_rendering_attestation_test.rb +32 -0
  64. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_attestation_test.rb +3 -1
  65. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_override_attestation_test.rb +1 -1
  66. data/lib/davinci_dtr_test_kit/client_groups/{dinner_static/dtr_smart_app_dinner_questionnaire_package_request_test.rb → smart_app/dtr_smart_app_questionnaire_package_request_test.rb} +6 -6
  67. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_correctness_test.rb +30 -0
  68. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_save_test.rb +2 -2
  69. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_saving_questionnaire_response_group.rb +3 -7
  70. data/lib/davinci_dtr_test_kit/cql_test.rb +58 -0
  71. data/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md +9 -6
  72. data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +19 -6
  73. data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +60 -40
  74. data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +0 -2
  75. data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +50 -4
  76. data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +9 -9
  77. data/lib/davinci_dtr_test_kit/endpoints/mock_authorization.rb +10 -2
  78. data/lib/davinci_dtr_test_kit/endpoints/mock_ehr.rb +17 -1
  79. data/lib/davinci_dtr_test_kit/endpoints/mock_payer/light_ehr_supported_payer_endpoint.rb +44 -0
  80. data/lib/davinci_dtr_test_kit/endpoints/mock_payer/questionnaire_package_endpoint.rb +7 -1
  81. data/lib/davinci_dtr_test_kit/fixtures.rb +6 -6
  82. data/lib/davinci_dtr_test_kit/igs/davinci_dtr_2.0.1.tgz +0 -0
  83. data/lib/davinci_dtr_test_kit/metadata.rb +104 -0
  84. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_libraries_test.rb +4 -1
  85. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_expressions_test.rb +2 -1
  86. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_extensions_test.rb +4 -1
  87. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_next_questionnaire_expressions_test.rb +1 -0
  88. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_next_questionnaire_extensions_test.rb +4 -1
  89. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_request_test.rb +2 -0
  90. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_bundles_validation_test.rb +3 -2
  91. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_search_validation_test.rb +8 -3
  92. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb +6 -15
  93. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_next_response_complete_test.rb +1 -0
  94. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_static_group.rb +1 -1
  95. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_libraries_test.rb +4 -1
  96. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +2 -1
  97. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +4 -1
  98. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +3 -1
  99. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +6 -15
  100. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_must_support_test.rb +46 -0
  101. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_read.rb +6 -3
  102. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_validation.rb +9 -8
  103. data/lib/davinci_dtr_test_kit/profiles/communication_request/metadata.yml +135 -0
  104. data/lib/davinci_dtr_test_kit/profiles/communication_request_group.rb +9 -0
  105. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_must_support_test.rb +54 -0
  106. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_read.rb +5 -3
  107. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_validation.rb +9 -8
  108. data/lib/davinci_dtr_test_kit/profiles/coverage/metadata.yml +133 -0
  109. data/lib/davinci_dtr_test_kit/profiles/coverage_group.rb +8 -0
  110. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_must_support_test.rb +45 -0
  111. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_read.rb +6 -3
  112. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_validation.rb +9 -8
  113. data/lib/davinci_dtr_test_kit/profiles/device_request/metadata.yml +130 -0
  114. data/lib/davinci_dtr_test_kit/profiles/device_request_group.rb +9 -0
  115. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_must_support_test.rb +58 -0
  116. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_read.rb +6 -3
  117. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_validation.rb +9 -8
  118. data/lib/davinci_dtr_test_kit/profiles/encounter/metadata.yml +169 -0
  119. data/lib/davinci_dtr_test_kit/profiles/encounter_group.rb +9 -0
  120. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_must_support_test.rb +50 -0
  121. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_read.rb +6 -3
  122. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_validation.rb +9 -8
  123. data/lib/davinci_dtr_test_kit/profiles/medication_request/metadata.yml +159 -0
  124. data/lib/davinci_dtr_test_kit/profiles/medication_request_group.rb +9 -0
  125. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/metadata.yml +94 -0
  126. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_must_support_test.rb +45 -0
  127. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_read.rb +6 -3
  128. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_validation.rb +9 -8
  129. data/lib/davinci_dtr_test_kit/profiles/nutrition_order_group.rb +9 -0
  130. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_context_search.rb +3 -1
  131. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_create.rb +1 -0
  132. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_must_support_test.rb +54 -0
  133. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_patient_search.rb +3 -1
  134. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_read.rb +2 -1
  135. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_update.rb +1 -0
  136. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_validation.rb +1 -1
  137. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response_group.rb +11 -1
  138. data/lib/davinci_dtr_test_kit/profiles/service_request/metadata.yml +140 -0
  139. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_must_support_test.rb +47 -0
  140. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_read.rb +6 -3
  141. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_validation.rb +9 -8
  142. data/lib/davinci_dtr_test_kit/profiles/service_request_group.rb +9 -0
  143. data/lib/davinci_dtr_test_kit/profiles/task/metadata.yml +165 -0
  144. data/lib/davinci_dtr_test_kit/profiles/task/task_create.rb +1 -0
  145. data/lib/davinci_dtr_test_kit/profiles/task/task_must_support_test.rb +46 -0
  146. data/lib/davinci_dtr_test_kit/profiles/task/task_read.rb +6 -3
  147. data/lib/davinci_dtr_test_kit/profiles/task/task_update.rb +1 -0
  148. data/lib/davinci_dtr_test_kit/profiles/task/task_validation.rb +9 -8
  149. data/lib/davinci_dtr_test_kit/profiles/task_group.rb +11 -1
  150. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/metadata.yml +107 -0
  151. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_must_support_test.rb +54 -0
  152. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_read.rb +6 -3
  153. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_validation.rb +9 -8
  154. data/lib/davinci_dtr_test_kit/profiles/vision_prescription_group.rb +9 -0
  155. data/lib/davinci_dtr_test_kit/read_test.rb +5 -0
  156. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_out_of_scope_requirements.csv +13 -0
  157. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_requirements.csv +374 -0
  158. data/lib/davinci_dtr_test_kit/requirements/generated/davinci-dtr-test-kit_requirements_coverage.csv +372 -0
  159. data/lib/davinci_dtr_test_kit/tags.rb +1 -0
  160. data/lib/davinci_dtr_test_kit/urls.rb +6 -0
  161. data/lib/davinci_dtr_test_kit/version.rb +2 -1
  162. data/lib/davinci_dtr_test_kit.rb +2 -0
  163. data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
  164. data/lib/inferno_requirements_tools/rake/rakefile_template +31 -0
  165. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
  166. data/lib/requirements_config.yaml +25 -0
  167. metadata +95 -37
  168. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_questionnaire_initial_retrieval_group.rb +0 -24
  169. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_group.rb +0 -14
  170. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_rendering_enabled_questions_attestation_test.rb +0 -30
@@ -0,0 +1,104 @@
1
+ require_relative 'version'
2
+
3
+ module DaVinciDTRTestKit
4
+ class Metadata < Inferno::TestKit
5
+ id :davinci_dtr_test_kit
6
+ title 'Da Vinci Documentation Templates and Rules (DTR) Test Kit'
7
+ description <<~DESCRIPTION
8
+ The Da Vinci Documentation Templates and Rules (DTR) Test Kit validates
9
+ the conformance of DTR SMART app client and payer server implementations to
10
+ [version 2.0.1 of the Da Vinci DTR Implementation
11
+ Guide](https://hl7.org/fhir/us/davinci-dtr/STU2/).
12
+
13
+ <!-- break -->
14
+
15
+ ## Status
16
+
17
+ These tests are a **DRAFT** intended to allow DTR implementers to perform
18
+ preliminary checks of their implementations against the DTR IG requirements and
19
+ provide feedback on the tests. Future versions of these tests may validate other
20
+ requirements and may change how these are tested.
21
+
22
+ ## Test Scope and Limitations
23
+
24
+ The DTR Test Kit includes suites for the following DTR actors:
25
+ - **DTR Payer Server**: verifies the ability of a payer server to respond
26
+ to requests for questionnaires.
27
+ - **DTR SMART App**: verifies the ability of a SMART app to launch, get questionnaires
28
+ from a payer server, render them, and allow users to complete them.
29
+ - **Full DTR EHR**: verifies the ability of a EHR to get questionnaires
30
+ from a payer server, render them, and allow users to complete them.
31
+ - **Light DTR EHR**: verifies the ability of a EHR to launch a DTR SMART
32
+ app and respond to FHIR data gathering requests.
33
+
34
+ Documentation of the current tests and their limitations can be found in each
35
+ suite's description when the tests are run and can also be viewed in the
36
+ source code:
37
+ - [SMART App Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_smart_app_suite_description_v201.md)
38
+ - [Payer Server Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_payer_server_suite_description_v201.md)
39
+ - [Full DTR EHR Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_full_ehr_suite_description_v201.md)
40
+ - [Light DTR EHR Test Suite Limitations](https://github.com/inferno-framework/davinci-dtr-test-kit/blob/main/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md)
41
+
42
+ ### Test Scope
43
+
44
+ To validate the behavior of the system under test, Inferno will act as an
45
+ exchange partner. Specifically,
46
+
47
+ - **When testing a DTR SMART app client**: Inferno will simulate both a payer
48
+ server that can return questionnaires and a Light DTR EHR that can respond
49
+ to queries for clinical data used to pre-populate questionnaire responses.
50
+ Inferno uses the SMART App Launch framework to establish a connection with
51
+ the app under test, either in EHR Launch or Standalone Launch mode. The app
52
+ will be expected to initiate requests to Inferno and demonstrate its ability
53
+ to react to the returned responses. Over the course of these interactions,
54
+ Inferno will seek to observe the conformant completion of a questionnaire
55
+ including pre-population, as well as the ability of the app to correctly
56
+ render the questionnaire and allow users to interact with it.
57
+ - **When testing a DTR payer server**: Inferno will simulate a DTR app
58
+ by requesting questionnaires from the server under test. The server
59
+ will be expected to respond to these requests from Inferno. Over the course
60
+ of these interactions, Inferno will seek to observe the ability of the
61
+ server under test to return conformant questionnaires.
62
+ - **When testing a Full DTR EHR client**: Inferno will simulate a payer
63
+ server that can return questionnaires. The EHR will be expected to initiate
64
+ requests to Inferno and demonstrate its ability to react to the returned
65
+ responses. Over the course of these interactions,
66
+ Inferno will seek to observe the conformant completion of a questionnaire
67
+ including fetch, as well as the ability of the app to correctly
68
+ render the questionnaire and allow users to interact with it.
69
+ - **When testing a Light DTR EHR server**: Inferno will simulate a DTR SMART app
70
+ that tested servers can launch and that will request FHIR data from and create
71
+ and update QuestionnaireResponse and Task instances on the server under test.
72
+ Over the course of these interactions, Inferno will seek to observe the ability of the
73
+ server under test to conformantly serve as a FHIR server for a DTR SMART App.
74
+
75
+ ### Known Limitations
76
+
77
+ - **SMART app tests**:
78
+ - Some questionnaire features, including adaptive questionnaires, are not yet tested.
79
+ - Inferno uses a single FHIR endpoint to simulate both the payer and the EHR.
80
+ - **Payer server tests**:
81
+ - Inferno checks that CQL is used for pre-population in the questionnaires returned by the
82
+ payer server, but does not currently validate the correctness or executability of that CQL.
83
+ - **Full EHR tests**:
84
+ - Some questionnaire features are not yet tested.
85
+ - Non-standard approach to accessing QuestionnaireResponse instances for validation.
86
+ - **Light EHR tests**:
87
+ - `fhirContext` not tested as a part of the Light EHR's SMART App launch process.
88
+
89
+ ## Reporting Issues
90
+
91
+ Please report any issues with this set of tests in the [GitHub
92
+ Issues](https://github.com/inferno-framework/davinci-dtr-test-kit/issues)
93
+ section of the
94
+ [open-source code repository](https://github.com/inferno-framework/davinci-dtr-test-kit).
95
+ DESCRIPTION
96
+ suite_ids [:dtr_payer_server, :dtr_smart_app, :dtr_full_ehr, :dtr_light_ehr]
97
+ tags ['Da Vinci', 'DTR']
98
+ last_updated LAST_UPDATED
99
+ version VERSION
100
+ maturity 'Low'
101
+ authors ['Karl Naden', 'Tom Strassner', 'Robert Passas', 'Vanessa Fotso', 'Elsa Perelli']
102
+ repo 'https://github.com/inferno-framework/davinci-dtr-test-kit'
103
+ end
104
+ end
@@ -9,10 +9,13 @@ module DaVinciDTRTestKit
9
9
  Inferno check that the payer response contains no duplicate library names
10
10
  and that libraries contain cql and elm data.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@84', 'hl7.fhir.us.davinci-dtr_2.0.1@95',
13
+ 'hl7.fhir.us.davinci-dtr_2.0.1@96', 'hl7.fhir.us.davinci-dtr_2.0.1@99',
14
+ 'hl7.fhir.us.davinci-dtr_2.0.1@101', 'hl7.fhir.us.davinci-dtr_2.0.1@102'
12
15
 
13
16
  run do
14
17
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
15
- skip_if scratch[:adaptive_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
18
+ skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
19
  check_libraries(scratch[:adaptive_questionnaire_bundles])
17
20
  end
18
21
  end
@@ -9,10 +9,11 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response has appropriate expressions and that expressions are
10
10
  written in cql.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@64'
12
13
 
13
14
  run do
14
15
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
15
- skip_if scratch[:adaptive_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
16
+ skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
17
  questionnaires = extract_questionnaires_from_bundles(scratch[:adaptive_questionnaire_bundles])
17
18
  verify_questionnaire_items(questionnaires)
18
19
  scratch[:adaptive_questionnaire_bundles] = nil
@@ -9,10 +9,13 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response has appropriate extensions and references to libraries within
10
10
  those extensions.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@57', 'hl7.fhir.us.davinci-dtr_2.0.1@62',
13
+ 'hl7.fhir.us.davinci-dtr_2.0.1@83', 'hl7.fhir.us.davinci-dtr_2.0.1@98',
14
+ 'hl7.fhir.us.davinci-dtr_2.0.1@309', 'hl7.fhir.us.davinci-dtr_2.0.1@317'
12
15
 
13
16
  run do
14
17
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
15
- skip_if scratch[:adaptive_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
18
+ skip_if scratch[:adaptive_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
19
  questionnaires = extract_questionnaires_from_bundles(scratch[:adaptive_questionnaire_bundles])
17
20
  verify_questionnaire_extensions(questionnaires)
18
21
  end
@@ -9,6 +9,7 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response to $next-question operation has appropriate expressions and that
10
10
  expressions are written in cql.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@64'
12
13
 
13
14
  run do
14
15
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
@@ -9,9 +9,12 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response has appropriate extensions and references to libraries within
10
10
  those extensions.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@57', 'hl7.fhir.us.davinci-dtr_2.0.1@62',
13
+ 'hl7.fhir.us.davinci-dtr_2.0.1@83', 'hl7.fhir.us.davinci-dtr_2.0.1@98'
12
14
 
13
15
  run do
14
- skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
16
+ skip_if retrieval_method == 'Static',
17
+ 'Performing only static flow tests - only one flow is required.'
15
18
  skip_if scratch[:next_question_questionnaire_responses].nil?, 'No questionnaires returned.'
16
19
  questionnaires = extract_contained_questionnaires(scratch[:next_question_questionnaire_responses])
17
20
  verify_questionnaire_extensions(questionnaires)
@@ -8,6 +8,8 @@ module DaVinciDTRTestKit
8
8
  Inferno will wait for a DTR questionnaire package request from the client. Upon receipt, Inferno will generate and
9
9
  send a response.
10
10
  )
11
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@239', 'hl7.fhir.us.davinci-dtr_2.0.1@292'
12
+
11
13
  id :payer_server_questionnaire_request
12
14
  config options: { accepts_multiple_requests: true }
13
15
 
@@ -6,7 +6,7 @@ module DaVinciDTRTestKit
6
6
  title 'Validate that the adaptive response contains valid Questionnaire Bundle resources'
7
7
  description %(
8
8
  This test ensures that the payer's response includes a resource that conforms to the the
9
- [DTR Quesitonnaire Bundle](http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle)
9
+ [DTR Questionnaire Bundle](http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle)
10
10
  structure.
11
11
 
12
12
  It verifies the presence of mandatory elements and that elements with required bindings contain appropriate
@@ -17,12 +17,13 @@ module DaVinciDTRTestKit
17
17
  This test may process multiple resources, labeling messages with the corresponding tested resources
18
18
  in the order that they were received.
19
19
  )
20
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@303'
20
21
 
21
22
  run do
22
23
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
23
24
  test_passed = true
24
25
  profile_url = 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1'
25
- assert !scratch[:adaptive_questionnaire_bundles].nil?, 'No resources to validate.'
26
+ assert scratch[:adaptive_questionnaire_bundles].present?, 'No resources to validate.'
26
27
  scratch[:adaptive_questionnaire_bundles].each_with_index do |bundle, index|
27
28
  resource_is_valid = validate_resource(bundle, :bundle, profile_url, index)
28
29
  test_passed = false unless resource_is_valid
@@ -17,15 +17,20 @@ module DaVinciDTRTestKit
17
17
  This test may process multiple resources, labeling messages with the corresponding tested resources
18
18
  in the order that they were received.
19
19
  )
20
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@37'
20
21
 
21
22
  run do
22
- skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
23
+ skip_if retrieval_method == 'Static',
24
+ 'Performing only static flow tests - only one flow is required.'
23
25
  test_passed = true
24
26
  profile_url = 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-adapt-search|2.0.1'
25
- assert !scratch[:adaptive_questionnaire_bundles].nil?, 'No questionnaire bundles to validate.'
27
+ assert scratch[:adaptive_questionnaire_bundles].present?,
28
+ 'No questionnaire bundles to validate.'
26
29
 
27
30
  questionnaires = scratch[:adaptive_questionnaire_bundles].filter_map do |bundle|
28
- bundle.entry&.filter_map { |entry| entry.resource if entry.resource&.resourceType == 'Questionnaire' }
31
+ bundle.entry&.filter_map do |entry|
32
+ entry.resource if entry.resource&.resourceType == 'Questionnaire'
33
+ end
29
34
  end&.flatten&.compact
30
35
 
31
36
  assert questionnaires&.any?, 'No adaptive questionnaires to validate.'
@@ -1,7 +1,9 @@
1
1
  require_relative '../validation_test'
2
+ require_relative '../cql_test'
2
3
  module DaVinciDTRTestKit
3
4
  class PayerAdaptiveFormQuestionnaireResponseTest < Inferno::Test
4
5
  include DaVinciDTRTestKit::ValidationTest
6
+ include DaVinciDTRTestKit::CQLTest
5
7
  id :payer_server_adaptive_response_validation_test
6
8
  title 'Validate that the adaptive response conforms to the DTR Questionnaire Package operation definition'
7
9
  # output :questionnaire_response
@@ -22,6 +24,8 @@ module DaVinciDTRTestKit
22
24
  This test may process multiple resources, labeling messages with the corresponding tested resources
23
25
  in the order that they were received.
24
26
  )
27
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@169', 'hl7.fhir.us.davinci-dtr_2.0.1@294',
28
+ 'hl7.fhir.us.davinci-dtr_2.0.1@303', 'hl7.fhir.us.davinci-dtr_2.0.1@306'
25
29
 
26
30
  run do
27
31
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
@@ -38,21 +42,8 @@ module DaVinciDTRTestKit
38
42
  assert_response_status([200, 201], response: req.response)
39
43
 
40
44
  resource = FHIR.from_contents(req.response_body)
41
- if resource&.resourceType == 'Parameters'
42
- scratch[:adaptive_questionnaire_bundles] = resource.parameter.filter_map do |param|
43
- param.resource if param.resource&.resourceType == 'Bundle'
44
- end
45
- assert_valid_resource(resource:,
46
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters|2.0.1')
47
- questionnaire_bundle = resource.parameter.find { |param| param.resource.resourceType == 'Bundle' }&.resource
48
- assert questionnaire_bundle, 'No questionnaire bundle found in the response'
49
- elsif resource&.resourceType == 'Bundle'
50
- scratch[:adaptive_questionnaire_bundles] = [resource]
51
- assert_valid_resource(resource:,
52
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1')
53
- else
54
- assert(false, "Unexpected resourceType: #{resource&.resourceType}. Expected Parameters or Bundle")
55
- end
45
+
46
+ perform_questionnaire_package_validation(resource, 'adaptive')
56
47
  end
57
48
  end
58
49
  end
@@ -5,6 +5,7 @@ module DaVinciDTRTestKit
5
5
  description %(
6
6
  This test validates that in the sequence of adaptive responses, one includes a "completed" status.
7
7
  )
8
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@219'
8
9
 
9
10
  run do
10
11
  skip_if retrieval_method == 'Static', 'Performing only static flow tests - only one flow is required.'
@@ -43,7 +43,7 @@ module DaVinciDTRTestKit
43
43
  :access_token,
44
44
  :initial_static_questionnaire_request
45
45
 
46
- test from: :dtr_v201_payer_static_questionnaire_request_test, receives_request: :static_questionnaire_request
46
+ test from: :dtr_v201_payer_static_request_test, receives_request: :static_questionnaire_request
47
47
  test from: :dtr_v201_payer_static_form_request_validation_test
48
48
  test from: :dtr_v201_payer_static_form_response_test
49
49
  test from: :dtr_v201_payer_static_form_libraries_test
@@ -9,10 +9,13 @@ module DaVinciDTRTestKit
9
9
  Inferno check that the payer response contains no duplicate library names
10
10
  and that libraries contain cql and elm data.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@84', 'hl7.fhir.us.davinci-dtr_2.0.1@95',
13
+ 'hl7.fhir.us.davinci-dtr_2.0.1@96', 'hl7.fhir.us.davinci-dtr_2.0.1@99',
14
+ 'hl7.fhir.us.davinci-dtr_2.0.1@101', 'hl7.fhir.us.davinci-dtr_2.0.1@102'
12
15
 
13
16
  run do
14
17
  skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
15
- skip_if scratch[:static_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
18
+ skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
19
  check_libraries(scratch[:static_questionnaire_bundles])
17
20
  end
18
21
  end
@@ -9,10 +9,11 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response has appropriate expressions and that expressions are
10
10
  written in cql.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@64'
12
13
 
13
14
  run do
14
15
  skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
15
- skip_if scratch[:static_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
16
+ skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
17
  questionnaires = extract_questionnaires_from_bundles(scratch[:static_questionnaire_bundles])
17
18
  verify_questionnaire_items(questionnaires, final_cql_test: true)
18
19
  scratch[:static_questionnaire_bundles] = nil
@@ -9,10 +9,13 @@ module DaVinciDTRTestKit
9
9
  Inferno checks that the payer server response has appropriate extensions and references to libraries within
10
10
  those extensions.
11
11
  )
12
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@57', 'hl7.fhir.us.davinci-dtr_2.0.1@62',
13
+ 'hl7.fhir.us.davinci-dtr_2.0.1@83', 'hl7.fhir.us.davinci-dtr_2.0.1@98',
14
+ 'hl7.fhir.us.davinci-dtr_2.0.1@309', 'hl7.fhir.us.davinci-dtr_2.0.1@317'
12
15
 
13
16
  run do
14
17
  skip_if retrieval_method == 'Adaptive', 'Performing only adaptive flow tests - only one flow is required.'
15
- skip_if scratch[:static_questionnaire_bundles].nil?, 'No questionnaire bundle returned.'
18
+ skip_if scratch[:static_questionnaire_bundles].blank?, 'No questionnaire bundle returned.'
16
19
  questionnaires = extract_questionnaires_from_bundles(scratch[:static_questionnaire_bundles])
17
20
  verify_questionnaire_extensions(questionnaires)
18
21
  end
@@ -7,7 +7,9 @@ module DaVinciDTRTestKit
7
7
  description %(
8
8
  Inferno will validate questionnaires returned by the payer server.
9
9
  )
10
- id :dtr_v201_payer_static_questionnaire_request_test
10
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@239', 'hl7.fhir.us.davinci-dtr_2.0.1@292'
11
+
12
+ id :dtr_v201_payer_static_request_test
11
13
  config options: { accepts_multiple_requests: false }
12
14
  input :initial_static_questionnaire_request, :access_token, :retrieval_method, :url
13
15
 
@@ -1,9 +1,11 @@
1
1
  require_relative '../urls'
2
2
  require_relative '../validation_test'
3
+ require_relative '../cql_test'
3
4
  module DaVinciDTRTestKit
4
5
  class PayerStaticFormResponseTest < Inferno::Test
5
6
  include URLs
6
7
  include DaVinciDTRTestKit::ValidationTest
8
+ include DaVinciDTRTestKit::CQLTest
7
9
  id :dtr_v201_payer_static_form_response_test
8
10
  title 'Validate that the static response conforms to the DTR Questionnaire Package operation definition.'
9
11
  description %(
@@ -20,6 +22,8 @@ module DaVinciDTRTestKit
20
22
  to the bound ValueSet. Quantity, Coding, and code element bindings will fail if their code/system are not found in
21
23
  the valueset.
22
24
  )
25
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@169', 'hl7.fhir.us.davinci-dtr_2.0.1@294',
26
+ 'hl7.fhir.us.davinci-dtr_2.0.1@303', 'hl7.fhir.us.davinci-dtr_2.0.1@306'
23
27
  input :url
24
28
 
25
29
  run do
@@ -36,21 +40,8 @@ module DaVinciDTRTestKit
36
40
  assert_response_status([200, 201], response: req.response)
37
41
 
38
42
  resource = FHIR.from_contents(req.response_body)
39
- if resource&.resourceType == 'Parameters'
40
- scratch[:static_questionnaire_bundles] = resource.parameter&.filter_map do |param|
41
- param.resource if param.resource&.resourceType == 'Bundle'
42
- end
43
- assert_valid_resource(resource:,
44
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-qpackage-output-parameters|2.0.1')
45
- questionnaire_bundle = resource.parameter.find { |param| param.resource.resourceType == 'Bundle' }&.resource
46
- assert questionnaire_bundle, 'No questionnaire bundle found in the response'
47
- elsif resource&.resourceType == 'Bundle'
48
- scratch[:static_questionnaire_bundles] = [resource]
49
- assert_valid_resource(resource:,
50
- profile_url: 'http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle|2.0.1')
51
- else
52
- assert(false, "Unexpected resourceType: #{resource&.resourceType}. Expected Parameters or Bundle")
53
- end
43
+
44
+ perform_questionnaire_package_validation(resource, 'static')
54
45
  end
55
46
  end
56
47
  end
@@ -0,0 +1,46 @@
1
+ module DaVinciDTRTestKit
2
+ class CommunicationRequestMustSupportTest < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the CommunicationRequest resources returned'
6
+ description %(
7
+ This test will look through the CommunicationRequest resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * CommunicationRequest.authoredOn
11
+ * CommunicationRequest.basedOn
12
+ * CommunicationRequest.extension:Coverage-Information
13
+ * CommunicationRequest.identifier
14
+ * CommunicationRequest.occurrence[x]
15
+ * CommunicationRequest.payload
16
+ * CommunicationRequest.payload.extension:codeableConcept
17
+ * CommunicationRequest.reasonCode
18
+ * CommunicationRequest.reasonReference
19
+ * CommunicationRequest.recipient
20
+ * CommunicationRequest.requester
21
+ * CommunicationRequest.sender
22
+ * CommunicationRequest.status
23
+ * CommunicationRequest.subject
24
+ )
25
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
26
+ id :communication_request_must_support_test
27
+
28
+ def resource_type
29
+ 'CommunicationRequest'
30
+ end
31
+
32
+ def self.metadata
33
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
34
+ aliases: true))
35
+ end
36
+
37
+ def scratch_resources
38
+ scratch[:communication_requests] ||= {}
39
+ end
40
+
41
+ run do
42
+ skip_if(communication_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
43
+ perform_must_support_test(all_scratch_resources)
44
+ end
45
+ end
46
+ end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server returns correct CommunicationRequest resource from CommunicationRequest read interaction'
8
8
  description 'A server SHOULD support the CommunicationRequest read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@275'
9
10
 
10
11
  id :communication_request_read
11
12
  output :communication_request_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'CommunicationRequest'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:communication_requests] ||= {}
20
+ end
21
+
17
22
  def communication_request_id_list
18
23
  return [nil] unless respond_to? :communication_request_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(communication_request_id_list, resource_type)
25
-
26
- output communication_request_resources: resources.to_json
29
+ perform_read_test(communication_request_id_list, resource_type)
27
30
  end
28
31
  end
29
32
  end
@@ -1,8 +1,6 @@
1
- require_relative '../../validation_test'
2
-
3
1
  module DaVinciDTRTestKit
4
2
  class CommunicationRequestValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'CommunicationRequest resources returned during previous tests conform to the CRD CommunicationRequest'
8
6
  description %(
@@ -19,17 +17,20 @@ fail if their code/system are not found in the valueset.
19
17
  )
20
18
 
21
19
  id :communication_request_validation
22
- input :communication_request_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'CommunicationRequest'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:communication_requests] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(communication_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(communication_request_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest',
32
+ '2.0.1',
33
+ skip_if_empty: true)
33
34
  end
34
35
  end
35
36
  end
@@ -0,0 +1,135 @@
1
+ ---
2
+ :name: profile_communicationrequest
3
+ :class_name: ProfileCommunicationrequestSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: CommunicationRequest
7
+ :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest
8
+ :profile_name: CRD Communication Request
9
+ :profile_version: 2.0.1
10
+ :title: CRD Communication Request
11
+ :short_description: Verify support for the server capabilities required by the CRD
12
+ Communication Request.
13
+ :is_delayed: true
14
+ :interactions:
15
+ - :code: read
16
+ :expectation: SHOULD
17
+ :operations: []
18
+ :searches: []
19
+ :search_definitions: {}
20
+ :include_params: []
21
+ :revincludes: []
22
+ :required_concepts: []
23
+ :must_supports:
24
+ :extensions:
25
+ - :id: CommunicationRequest.extension:Coverage-Information
26
+ :path: extension
27
+ :url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
28
+ - :id: CommunicationRequest.payload.extension:codeableConcept
29
+ :path: payload.extension
30
+ :url: http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content[x]
31
+ :slices: []
32
+ :elements:
33
+ - :path: identifier
34
+ - :path: basedOn
35
+ :types:
36
+ - Reference
37
+ - :path: status
38
+ :fixed_value: draft
39
+ - :path: subject
40
+ :types:
41
+ - Reference
42
+ :target_profiles:
43
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
44
+ - :path: payload
45
+ - :path: occurrence[x]
46
+ - :path: authoredOn
47
+ - :path: requester
48
+ :types:
49
+ - Reference
50
+ - :path: recipient
51
+ :types:
52
+ - Reference
53
+ - :path: sender
54
+ :types:
55
+ - Reference
56
+ - :path: reasonCode
57
+ - :path: reasonReference
58
+ :types:
59
+ - Reference
60
+ :mandatory_elements:
61
+ - CommunicationRequest.basedOn
62
+ - CommunicationRequest.status
63
+ - CommunicationRequest.subject
64
+ - CommunicationRequest.payload
65
+ - CommunicationRequest.payload.extension
66
+ - CommunicationRequest.payload.extension.url
67
+ - CommunicationRequest.payload.extension.value[x]
68
+ - CommunicationRequest.payload.content[x]
69
+ - CommunicationRequest.authoredOn
70
+ - CommunicationRequest.requester
71
+ :bindings:
72
+ - :type: code
73
+ :strength: required
74
+ :system: http://hl7.org/fhir/ValueSet/request-priority
75
+ :path: priority
76
+ :references:
77
+ - :path: CommunicationRequest.basedOn
78
+ :profiles:
79
+ - http://hl7.org/fhir/StructureDefinition/Resource
80
+ - :path: CommunicationRequest.replaces
81
+ :profiles:
82
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest
83
+ - :path: CommunicationRequest.subject
84
+ :profiles:
85
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
86
+ - :path: CommunicationRequest.about
87
+ :profiles:
88
+ - http://hl7.org/fhir/StructureDefinition/Resource
89
+ - :path: CommunicationRequest.encounter
90
+ :profiles:
91
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
92
+ - :path: CommunicationRequest.requester
93
+ :profiles:
94
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
95
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
96
+ - :path: CommunicationRequest.recipient
97
+ :profiles:
98
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
99
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
100
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
101
+ - :path: CommunicationRequest.sender
102
+ :profiles:
103
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
104
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
105
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
106
+ - :path: CommunicationRequest.reasonReference
107
+ :profiles:
108
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition
109
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
110
+ :tests:
111
+ - :id: us_core_v311_communication_request_read_test
112
+ :file_name: communication_request_read_test.rb
113
+ - :id: us_core_v311_communication_request_validation_test
114
+ :file_name: communication_request_validation_test.rb
115
+ - :id: us_core_v311_communication_request_must_support_test
116
+ :file_name: communication_request_must_support_test.rb
117
+ - :id: us_core_v311_communication_request_reference_resolution_test
118
+ :file_name: communication_request_reference_resolution_test.rb
119
+ :id: us_core_v311_communication_request
120
+ :file_name: communication_request_group.rb
121
+ :delayed_references:
122
+ - :path: replaces
123
+ :resources:
124
+ - CommunicationRequest
125
+ - :path: requester
126
+ :resources:
127
+ - PractitionerRole
128
+ - :path: recipient
129
+ :resources:
130
+ - PractitionerRole
131
+ - Organization
132
+ - :path: sender
133
+ :resources:
134
+ - PractitionerRole
135
+ - Organization