davinci_dtr_test_kit 0.14.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) 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 +121 -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} +2 -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} +2 -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} +3 -3
  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} +12 -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} +2 -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} +24 -18
  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} +13 -13
  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 +1 -1
  35. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_prepopulation_override_attestation_test.rb +1 -1
  36. data/lib/davinci_dtr_test_kit/client_groups/full_ehr/dtr_full_ehr_questionnaire_package_request_test.rb +1 -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 +10 -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 +1 -1
  41. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/dtr_smart_ehr_launch.rb +18 -0
  42. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_coverage_test.rb +42 -0
  43. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_context_references_test.rb +60 -0
  44. data/lib/davinci_dtr_test_kit/client_groups/light_ehr/fhir_launch_context_test.rb +23 -0
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. data/lib/davinci_dtr_test_kit/client_groups/respiratory/dtr_respiratory_rendering_group.rb +14 -0
  51. 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
  52. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_attestation_test.rb +31 -0
  53. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_prepopulation_override_attestation_test.rb +35 -0
  54. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_package_request_validation_test.rb +1 -1
  55. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_questionnaire_response_basic_conformance_test.rb +8 -4
  56. data/lib/davinci_dtr_test_kit/client_groups/shared/{dtr_questionnaire_response_pre_population_test.rb → dtr_questionnaire_response_prepopulation_test.rb} +2 -2
  57. data/lib/davinci_dtr_test_kit/client_groups/shared/dtr_rendering_attestation_test.rb +30 -0
  58. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_attestation_test.rb +1 -1
  59. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_prepopulation_override_attestation_test.rb +1 -1
  60. 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
  61. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_correctness_test.rb +28 -0
  62. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_questionnaire_response_save_test.rb +2 -2
  63. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_saving_questionnaire_response_group.rb +3 -7
  64. data/lib/davinci_dtr_test_kit/cql_test.rb +58 -0
  65. data/lib/davinci_dtr_test_kit/docs/dtr_light_ehr_suite_description_v201.md +9 -6
  66. data/lib/davinci_dtr_test_kit/dtr_full_ehr_suite.rb +19 -6
  67. data/lib/davinci_dtr_test_kit/dtr_light_ehr_suite.rb +42 -36
  68. data/lib/davinci_dtr_test_kit/dtr_payer_server_suite.rb +0 -2
  69. data/lib/davinci_dtr_test_kit/dtr_questionnaire_response_validation.rb +50 -4
  70. data/lib/davinci_dtr_test_kit/dtr_smart_app_suite.rb +9 -9
  71. data/lib/davinci_dtr_test_kit/endpoints/mock_authorization.rb +10 -2
  72. data/lib/davinci_dtr_test_kit/endpoints/mock_ehr.rb +17 -1
  73. data/lib/davinci_dtr_test_kit/endpoints/mock_payer/questionnaire_package_endpoint.rb +7 -1
  74. data/lib/davinci_dtr_test_kit/fixtures.rb +6 -6
  75. data/lib/davinci_dtr_test_kit/igs/davinci_dtr_2.0.1.tgz +0 -0
  76. data/lib/davinci_dtr_test_kit/metadata.rb +104 -0
  77. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_libraries_test.rb +1 -1
  78. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_expressions_test.rb +1 -1
  79. data/lib/davinci_dtr_test_kit/payer_server_groups/adaptive_form_questionnaire_extensions_test.rb +1 -1
  80. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_bundles_validation_test.rb +1 -1
  81. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_search_validation_test.rb +1 -1
  82. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_adaptive_response_validation_test.rb +4 -15
  83. data/lib/davinci_dtr_test_kit/payer_server_groups/payer_server_static_group.rb +1 -1
  84. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_libraries_test.rb +1 -1
  85. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_expressions_test.rb +1 -1
  86. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_questionnaire_extensions_test.rb +1 -1
  87. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_request_test.rb +1 -1
  88. data/lib/davinci_dtr_test_kit/payer_server_groups/static_form_response_validation_test.rb +4 -15
  89. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_must_support_test.rb +46 -0
  90. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_read.rb +6 -3
  91. data/lib/davinci_dtr_test_kit/profiles/communication_request/communication_request_validation.rb +9 -8
  92. data/lib/davinci_dtr_test_kit/profiles/communication_request/metadata.yml +135 -0
  93. data/lib/davinci_dtr_test_kit/profiles/communication_request_group.rb +9 -0
  94. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_must_support_test.rb +54 -0
  95. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_read.rb +5 -3
  96. data/lib/davinci_dtr_test_kit/profiles/coverage/coverage_validation.rb +9 -8
  97. data/lib/davinci_dtr_test_kit/profiles/coverage/metadata.yml +133 -0
  98. data/lib/davinci_dtr_test_kit/profiles/coverage_group.rb +8 -0
  99. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_must_support_test.rb +45 -0
  100. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_read.rb +6 -3
  101. data/lib/davinci_dtr_test_kit/profiles/device_request/device_request_validation.rb +9 -8
  102. data/lib/davinci_dtr_test_kit/profiles/device_request/metadata.yml +130 -0
  103. data/lib/davinci_dtr_test_kit/profiles/device_request_group.rb +9 -0
  104. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_must_support_test.rb +58 -0
  105. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_read.rb +6 -3
  106. data/lib/davinci_dtr_test_kit/profiles/encounter/encounter_validation.rb +9 -8
  107. data/lib/davinci_dtr_test_kit/profiles/encounter/metadata.yml +169 -0
  108. data/lib/davinci_dtr_test_kit/profiles/encounter_group.rb +9 -0
  109. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_must_support_test.rb +50 -0
  110. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_read.rb +6 -3
  111. data/lib/davinci_dtr_test_kit/profiles/medication_request/medication_request_validation.rb +9 -8
  112. data/lib/davinci_dtr_test_kit/profiles/medication_request/metadata.yml +159 -0
  113. data/lib/davinci_dtr_test_kit/profiles/medication_request_group.rb +9 -0
  114. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/metadata.yml +94 -0
  115. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_must_support_test.rb +45 -0
  116. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_read.rb +6 -3
  117. data/lib/davinci_dtr_test_kit/profiles/nutrition_order/nutrition_order_validation.rb +9 -8
  118. data/lib/davinci_dtr_test_kit/profiles/nutrition_order_group.rb +9 -0
  119. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_context_search.rb +3 -1
  120. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_create.rb +1 -0
  121. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_must_support_test.rb +54 -0
  122. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_patient_search.rb +3 -1
  123. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_read.rb +2 -1
  124. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_update.rb +1 -0
  125. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_validation.rb +1 -1
  126. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response_group.rb +11 -1
  127. data/lib/davinci_dtr_test_kit/profiles/service_request/metadata.yml +140 -0
  128. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_must_support_test.rb +47 -0
  129. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_read.rb +6 -3
  130. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_validation.rb +9 -8
  131. data/lib/davinci_dtr_test_kit/profiles/service_request_group.rb +9 -0
  132. data/lib/davinci_dtr_test_kit/profiles/task/metadata.yml +165 -0
  133. data/lib/davinci_dtr_test_kit/profiles/task/task_create.rb +1 -0
  134. data/lib/davinci_dtr_test_kit/profiles/task/task_must_support_test.rb +46 -0
  135. data/lib/davinci_dtr_test_kit/profiles/task/task_read.rb +6 -3
  136. data/lib/davinci_dtr_test_kit/profiles/task/task_update.rb +1 -0
  137. data/lib/davinci_dtr_test_kit/profiles/task/task_validation.rb +9 -8
  138. data/lib/davinci_dtr_test_kit/profiles/task_group.rb +11 -1
  139. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/metadata.yml +107 -0
  140. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_must_support_test.rb +54 -0
  141. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_read.rb +6 -3
  142. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_validation.rb +9 -8
  143. data/lib/davinci_dtr_test_kit/profiles/vision_prescription_group.rb +9 -0
  144. data/lib/davinci_dtr_test_kit/read_test.rb +5 -0
  145. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_out_of_scope_requirements.csv +13 -0
  146. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_requirements.csv +374 -0
  147. data/lib/davinci_dtr_test_kit/requirements/generated/davinci-dtr-test-kit_requirements_coverage.csv +372 -0
  148. data/lib/davinci_dtr_test_kit/urls.rb +1 -0
  149. data/lib/davinci_dtr_test_kit/version.rb +2 -1
  150. data/lib/davinci_dtr_test_kit.rb +2 -0
  151. data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
  152. data/lib/inferno_requirements_tools/rake/rakefile_template +31 -0
  153. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
  154. data/lib/requirements_config.yaml +25 -0
  155. metadata +88 -37
  156. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_questionnaire_initial_retrieval_group.rb +0 -24
  157. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_group.rb +0 -14
  158. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_rendering_enabled_questions_attestation_test.rb +0 -30
@@ -1,5 +1,6 @@
1
1
  require_relative 'device_request/device_request_read'
2
2
  require_relative 'device_request/device_request_validation'
3
+ require_relative 'device_request/device_request_must_support_test'
3
4
 
4
5
  module DaVinciDTRTestKit
5
6
  class DeviceRequestGroup < Inferno::TestGroup
@@ -23,6 +24,13 @@ module DaVinciDTRTestKit
23
24
  the [CRD DeviceRequest Profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html).
24
25
  Each element is checked against terminology binding and cardinality requirements.
25
26
 
27
+ ## Must Support
28
+ Each profile contains elements marked as "must support". This test
29
+ sequence expects to see each of these elements at least once. If at
30
+ least one cannot be found, the test will fail. The test will look
31
+ through the DeviceRequest resources found in the first test for these
32
+ elements.
33
+
26
34
  )
27
35
  id :device_request_group
28
36
  optional
@@ -35,5 +43,6 @@ module DaVinciDTRTestKit
35
43
 
36
44
  test from: :device_request_read
37
45
  test from: :device_request_validation
46
+ test from: :device_request_must_support_test
38
47
  end
39
48
  end
@@ -0,0 +1,58 @@
1
+ module DaVinciDTRTestKit
2
+ class EncounterMustSupportTEst < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the Encounter resources returned'
6
+ description %(
7
+ This test will look through the Encounter resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * Encounter.appointment
11
+ * Encounter.class
12
+ * Encounter.diagnosis
13
+ * Encounter.diagnosis.condition
14
+ * Encounter.extension:Coverage-Information
15
+ * Encounter.hospitalization
16
+ * Encounter.hospitalization.dischargeDisposition
17
+ * Encounter.identifier
18
+ * Encounter.identifier.system
19
+ * Encounter.identifier.value
20
+ * Encounter.length
21
+ * Encounter.location
22
+ * Encounter.location.location
23
+ * Encounter.location.period
24
+ * Encounter.location.status
25
+ * Encounter.participant
26
+ * Encounter.participant.individual
27
+ * Encounter.participant.period
28
+ * Encounter.participant.type
29
+ * Encounter.period
30
+ * Encounter.reasonCode
31
+ * Encounter.reasonReference
32
+ * Encounter.serviceType
33
+ * Encounter.status
34
+ * Encounter.subject
35
+ * Encounter.type
36
+ )
37
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
38
+ id :encounter_must_support_test
39
+
40
+ def resource_type
41
+ 'Encounter'
42
+ end
43
+
44
+ def self.metadata
45
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
46
+ aliases: true))
47
+ end
48
+
49
+ def scratch_resources
50
+ scratch[:encounters] ||= {}
51
+ end
52
+
53
+ run do
54
+ skip_if(encounter_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
55
+ perform_must_support_test(all_scratch_resources)
56
+ end
57
+ end
58
+ end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server returns correct Encounter resource from Encounter read interaction'
8
8
  description 'A server SHOULD support the Encounter read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@271'
9
10
 
10
11
  id :encounter_read
11
12
  output :encounter_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'Encounter'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:encounters] ||= {}
20
+ end
21
+
17
22
  def encounter_id_list
18
23
  return [nil] unless respond_to? :encounter_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(encounter_id_list, resource_type)
25
-
26
- output encounter_resources: resources.to_json
29
+ perform_read_test(encounter_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 EncounterValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'Encounter resources returned during previous tests conform to the CRD Encounter'
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 :encounter_validation
22
- input :encounter_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'Encounter'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:encounters] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(encounter_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(encounter_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter',
32
+ '2.0.1',
33
+ skip_if_empty: true)
33
34
  end
34
35
  end
35
36
  end
@@ -0,0 +1,169 @@
1
+ ---
2
+ :name: profile_encounter
3
+ :class_name: ProfileEncounterSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: Encounter
7
+ :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
8
+ :profile_name: CRD Encounter
9
+ :profile_version: 2.0.1
10
+ :title: CRD Encounter
11
+ :short_description: Verify support for the server capabilities required by the CRD
12
+ Encounter.
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: Encounter.extension:Coverage-Information
26
+ :path: extension
27
+ :url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
28
+ :slices: []
29
+ :elements:
30
+ - :path: identifier
31
+ - :path: identifier.system
32
+ - :path: identifier.value
33
+ - :path: status
34
+ - :path: class
35
+ - :path: type
36
+ - :path: serviceType
37
+ - :path: subject
38
+ :types:
39
+ - Reference
40
+ :target_profiles:
41
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
42
+ - :path: participant
43
+ - :path: participant.type
44
+ - :path: participant.period
45
+ - :path: participant.individual
46
+ :types:
47
+ - Reference
48
+ :target_profiles:
49
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
50
+ - :path: appointment
51
+ :types:
52
+ - Reference
53
+ :target_profiles:
54
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment
55
+ - :path: period
56
+ - :path: length
57
+ - :path: reasonCode
58
+ - :path: reasonReference
59
+ :types:
60
+ - Reference
61
+ - :path: diagnosis
62
+ - :path: diagnosis.condition
63
+ :types:
64
+ - Reference
65
+ - :path: hospitalization
66
+ - :path: hospitalization.dischargeDisposition
67
+ - :path: location
68
+ - :path: location.location
69
+ :types:
70
+ - Reference
71
+ :target_profiles:
72
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location
73
+ - :path: location.status
74
+ - :path: location.period
75
+ :mandatory_elements:
76
+ - Encounter.identifier.system
77
+ - Encounter.identifier.value
78
+ - Encounter.status
79
+ - Encounter.statusHistory.status
80
+ - Encounter.statusHistory.period
81
+ - Encounter.class
82
+ - Encounter.classHistory.class
83
+ - Encounter.classHistory.period
84
+ - Encounter.type
85
+ - Encounter.subject
86
+ - Encounter.diagnosis.condition
87
+ - Encounter.location.location
88
+ :bindings:
89
+ - :type: code
90
+ :strength: required
91
+ :system: http://hl7.org/fhir/ValueSet/identifier-use
92
+ :path: identifier.use
93
+ - :type: code
94
+ :strength: required
95
+ :system: http://hl7.org/fhir/ValueSet/encounter-status
96
+ :path: status
97
+ - :type: code
98
+ :strength: required
99
+ :system: http://hl7.org/fhir/ValueSet/encounter-status
100
+ :path: statusHistory.status
101
+ - :type: code
102
+ :strength: required
103
+ :system: http://hl7.org/fhir/ValueSet/encounter-location-status
104
+ :path: location.status
105
+ :references:
106
+ - :path: Encounter.identifier.assigner
107
+ :profiles:
108
+ - http://hl7.org/fhir/StructureDefinition/Organization
109
+ - :path: Encounter.subject
110
+ :profiles:
111
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
112
+ - :path: Encounter.episodeOfCare
113
+ :profiles:
114
+ - http://hl7.org/fhir/StructureDefinition/EpisodeOfCare
115
+ - :path: Encounter.basedOn
116
+ :profiles:
117
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest
118
+ - :path: Encounter.participant.individual
119
+ :profiles:
120
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
121
+ - :path: Encounter.appointment
122
+ :profiles:
123
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment
124
+ - :path: Encounter.reasonReference
125
+ :profiles:
126
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition
127
+ - http://hl7.org/fhir/StructureDefinition/Procedure
128
+ - :path: Encounter.diagnosis.condition
129
+ :profiles:
130
+ - http://hl7.org/fhir/StructureDefinition/Condition
131
+ - http://hl7.org/fhir/StructureDefinition/Procedure
132
+ - :path: Encounter.account
133
+ :profiles:
134
+ - http://hl7.org/fhir/StructureDefinition/Account
135
+ - :path: Encounter.hospitalization.origin
136
+ :profiles:
137
+ - http://hl7.org/fhir/StructureDefinition/Location
138
+ - http://hl7.org/fhir/StructureDefinition/Organization
139
+ - :path: Encounter.hospitalization.destination
140
+ :profiles:
141
+ - http://hl7.org/fhir/StructureDefinition/Location
142
+ - http://hl7.org/fhir/StructureDefinition/Organization
143
+ - :path: Encounter.location.location
144
+ :profiles:
145
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location
146
+ - :path: Encounter.serviceProvider
147
+ :profiles:
148
+ - http://hl7.org/fhir/StructureDefinition/Organization
149
+ - :path: Encounter.partOf
150
+ :profiles:
151
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
152
+ :tests:
153
+ - :id: us_core_v311_encounter_read_test
154
+ :file_name: encounter_read_test.rb
155
+ - :id: us_core_v311_encounter_validation_test
156
+ :file_name: encounter_validation_test.rb
157
+ - :id: us_core_v311_encounter_must_support_test
158
+ :file_name: encounter_must_support_test.rb
159
+ - :id: us_core_v311_encounter_reference_resolution_test
160
+ :file_name: encounter_reference_resolution_test.rb
161
+ :id: us_core_v311_encounter
162
+ :file_name: encounter_group.rb
163
+ :delayed_references:
164
+ - :path: basedOn
165
+ :resources:
166
+ - ServiceRequest
167
+ - :path: partOf
168
+ :resources:
169
+ - Encounter
@@ -1,5 +1,6 @@
1
1
  require_relative 'encounter/encounter_read'
2
2
  require_relative 'encounter/encounter_validation'
3
+ require_relative 'encounter/encounter_must_support_test'
3
4
 
4
5
  module DaVinciDTRTestKit
5
6
  class EncounterGroup < Inferno::TestGroup
@@ -23,6 +24,13 @@ module DaVinciDTRTestKit
23
24
  the [CRD Encounter Profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html).
24
25
  Each element is checked against terminology binding and cardinality requirements.
25
26
 
27
+ ## Must Support
28
+ Each profile contains elements marked as "must support". This test
29
+ sequence expects to see each of these elements at least once. If at
30
+ least one cannot be found, the test will fail. The test will look
31
+ through the Encounter resources found in the first test for these
32
+ elements.
33
+
26
34
  )
27
35
  id :encounter_group
28
36
  optional
@@ -35,5 +43,6 @@ module DaVinciDTRTestKit
35
43
 
36
44
  test from: :encounter_read
37
45
  test from: :encounter_validation
46
+ test from: :encounter_must_support_test
38
47
  end
39
48
  end
@@ -0,0 +1,50 @@
1
+ module DaVinciDTRTestKit
2
+ class MedicationRequestMustSupportTest < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the MedicationRequest resources returned'
6
+ description %(
7
+ This test will look through the MedicationRequest resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * MedicationRequest.authoredOn
11
+ * MedicationRequest.dispenseRequest
12
+ * MedicationRequest.dosageInstruction
13
+ * MedicationRequest.dosageInstruction.text
14
+ * MedicationRequest.encounter
15
+ * MedicationRequest.extension:Coverage-Information
16
+ * MedicationRequest.identifier
17
+ * MedicationRequest.intent
18
+ * MedicationRequest.medication[x]
19
+ * MedicationRequest.performer
20
+ * MedicationRequest.priorPrescription
21
+ * MedicationRequest.reasonCode
22
+ * MedicationRequest.reasonReference
23
+ * MedicationRequest.reported[x]
24
+ * MedicationRequest.requester
25
+ * MedicationRequest.status
26
+ * MedicationRequest.subject
27
+ * MedicationRequest.substitution
28
+ )
29
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
30
+ id :medication_request_must_support_test
31
+
32
+ def resource_type
33
+ 'MedicationRequest'
34
+ end
35
+
36
+ def self.metadata
37
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
38
+ aliases: true))
39
+ end
40
+
41
+ def scratch_resources
42
+ scratch[:medication_requests] ||= {}
43
+ end
44
+
45
+ run do
46
+ skip_if(medication_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
47
+ perform_must_support_test(all_scratch_resources)
48
+ end
49
+ end
50
+ end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server returns correct MedicationRequest resource from MedicationRequest read interaction'
8
8
  description 'A server SHOULD support the MedicationRequest read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@273'
9
10
 
10
11
  id :medication_request_read
11
12
  output :medication_request_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'MedicationRequest'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:medication_requests] ||= {}
20
+ end
21
+
17
22
  def medication_request_id_list
18
23
  return [nil] unless respond_to? :medication_request_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(medication_request_id_list, resource_type)
25
-
26
- output medication_request_resources: resources.to_json
29
+ perform_read_test(medication_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 MedicationRequestValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'MedicationRequest resources returned during previous tests conform to the CRD MedicationRequest'
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 :medication_request_validation
22
- input :medication_request_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'MedicationRequest'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:medication_requests] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(medication_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(medication_request_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest',
32
+ '2.0.1',
33
+ skip_if_empty: true)
33
34
  end
34
35
  end
35
36
  end
@@ -0,0 +1,159 @@
1
+ ---
2
+ :name: profile_medicationrequest
3
+ :class_name: ProfileMedicationrequestSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: MedicationRequest
7
+ :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest
8
+ :profile_name: CRD Medication Request
9
+ :profile_version: 2.0.1
10
+ :title: CRD Medication Request
11
+ :short_description: Verify support for the server capabilities required by the CRD
12
+ Medication 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: MedicationRequest.extension:Coverage-Information
26
+ :path: extension
27
+ :url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
28
+ :slices: []
29
+ :elements:
30
+ - :path: identifier
31
+ - :path: status
32
+ :fixed_value: draft
33
+ - :path: intent
34
+ - :path: reported[x]
35
+ :types:
36
+ - Reference
37
+ - :path: medication[x]
38
+ :types:
39
+ - Reference
40
+ - :path: subject
41
+ :types:
42
+ - Reference
43
+ :target_profiles:
44
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
45
+ - :path: encounter
46
+ :types:
47
+ - Reference
48
+ :target_profiles:
49
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
50
+ - :path: authoredOn
51
+ - :path: requester
52
+ :types:
53
+ - Reference
54
+ - :path: performer
55
+ :types:
56
+ - Reference
57
+ - :path: reasonCode
58
+ - :path: reasonReference
59
+ :types:
60
+ - Reference
61
+ - :path: dosageInstruction
62
+ - :path: dosageInstruction.text
63
+ - :path: dispenseRequest
64
+ - :path: substitution
65
+ - :path: priorPrescription
66
+ :types:
67
+ - Reference
68
+ :target_profiles:
69
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest
70
+ :mandatory_elements:
71
+ - MedicationRequest.status
72
+ - MedicationRequest.intent
73
+ - MedicationRequest.medication[x]
74
+ - MedicationRequest.subject
75
+ - MedicationRequest.authoredOn
76
+ - MedicationRequest.requester
77
+ - MedicationRequest.substitution.allowed[x]
78
+ :bindings:
79
+ - :type: code
80
+ :strength: required
81
+ :system: http://hl7.org/fhir/ValueSet/medicationrequest-intent
82
+ :path: intent
83
+ - :type: code
84
+ :strength: required
85
+ :system: http://hl7.org/fhir/ValueSet/request-priority
86
+ :path: priority
87
+ :references:
88
+ - :path: MedicationRequest.subject
89
+ :profiles:
90
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
91
+ - :path: MedicationRequest.encounter
92
+ :profiles:
93
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
94
+ - :path: MedicationRequest.supportingInformation
95
+ :profiles:
96
+ - http://hl7.org/fhir/StructureDefinition/Resource
97
+ - :path: MedicationRequest.requester
98
+ :profiles:
99
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
100
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
101
+ - :path: MedicationRequest.performer
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
+ - :path: MedicationRequest.recorder
106
+ :profiles:
107
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
108
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
109
+ - :path: MedicationRequest.reasonReference
110
+ :profiles:
111
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition
112
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
113
+ - :path: MedicationRequest.basedOn
114
+ :profiles:
115
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest
116
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest
117
+ - :path: MedicationRequest.insurance
118
+ :profiles:
119
+ - http://hl7.org/fhir/StructureDefinition/Coverage
120
+ - http://hl7.org/fhir/StructureDefinition/ClaimResponse
121
+ - :path: MedicationRequest.dispenseRequest.performer
122
+ :profiles:
123
+ - http://hl7.org/fhir/StructureDefinition/Organization
124
+ - :path: MedicationRequest.priorPrescription
125
+ :profiles:
126
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest
127
+ - :path: MedicationRequest.detectedIssue
128
+ :profiles:
129
+ - http://hl7.org/fhir/StructureDefinition/DetectedIssue
130
+ - :path: MedicationRequest.eventHistory
131
+ :profiles:
132
+ - http://hl7.org/fhir/StructureDefinition/Provenance
133
+ :tests:
134
+ - :id: us_core_v311_medication_request_read_test
135
+ :file_name: medication_request_read_test.rb
136
+ - :id: us_core_v311_medication_request_validation_test
137
+ :file_name: medication_request_validation_test.rb
138
+ - :id: us_core_v311_medication_validation_test
139
+ :file_name: medication_validation_test.rb
140
+ - :id: us_core_v311_medication_request_must_support_test
141
+ :file_name: medication_request_must_support_test.rb
142
+ - :id: us_core_v311_medication_request_reference_resolution_test
143
+ :file_name: medication_request_reference_resolution_test.rb
144
+ :id: us_core_v311_medication_request
145
+ :file_name: medication_request_group.rb
146
+ :delayed_references:
147
+ - :path: requester
148
+ :resources:
149
+ - PractitionerRole
150
+ - :path: performer
151
+ :resources:
152
+ - PractitionerRole
153
+ - :path: basedOn
154
+ :resources:
155
+ - MedicationRequest
156
+ - ServiceRequest
157
+ - :path: priorPrescription
158
+ :resources:
159
+ - MedicationRequest
@@ -1,5 +1,6 @@
1
1
  require_relative 'medication_request/medication_request_read'
2
2
  require_relative 'medication_request/medication_request_validation'
3
+ require_relative 'medication_request/medication_request_must_support_test'
3
4
 
4
5
  module DaVinciDTRTestKit
5
6
  class MedicationRequestGroup < Inferno::TestGroup
@@ -23,6 +24,13 @@ module DaVinciDTRTestKit
23
24
  the [CRD MedicationRequest Profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html).
24
25
  Each element is checked against terminology binding and cardinality requirements.
25
26
 
27
+ ## Must Support
28
+ Each profile contains elements marked as "must support". This test
29
+ sequence expects to see each of these elements at least once. If at
30
+ least one cannot be found, the test will fail. The test will look
31
+ through the MedicationRequest resources found in the first test for these
32
+ elements.
33
+
26
34
  )
27
35
  id :medication_request_group
28
36
  optional
@@ -35,5 +43,6 @@ module DaVinciDTRTestKit
35
43
 
36
44
  test from: :medication_request_read
37
45
  test from: :medication_request_validation
46
+ test from: :medication_request_must_support_test
38
47
  end
39
48
  end