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 'service_request/service_request_read'
2
2
  require_relative 'service_request/service_request_validation'
3
+ require_relative 'service_request/service_request_must_support_test'
3
4
 
4
5
  module DaVinciDTRTestKit
5
6
  class ServiceRequestGroup < Inferno::TestGroup
@@ -23,6 +24,13 @@ module DaVinciDTRTestKit
23
24
  the [CRD ServiceRequest Profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.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 ServiceRequest resources found in the first test for these
32
+ elements.
33
+
26
34
  )
27
35
  id :service_request_group
28
36
  optional
@@ -35,5 +43,6 @@ module DaVinciDTRTestKit
35
43
 
36
44
  test from: :service_request_read
37
45
  test from: :service_request_validation
46
+ test from: :service_request_must_support_test
38
47
  end
39
48
  end
@@ -0,0 +1,165 @@
1
+ ---
2
+ :name: profile_task
3
+ :class_name: ProfileTaskSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: Task
7
+ :profile_url: http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-task
8
+ :profile_name: PAS Task
9
+ :profile_version: 2.0.1
10
+ :title: PAS Task
11
+ :short_description: Verify support for the server capabilities required by the PAS
12
+ Task.
13
+ :is_delayed: true
14
+ :interactions:
15
+ - :code: read
16
+ :expectation: SHOULD
17
+ - :code: create
18
+ :expectation: SHOULD
19
+ - :code: update
20
+ :expectation: SHOULD
21
+ :operations: []
22
+ :searches: []
23
+ :search_definitions: {}
24
+ :include_params: []
25
+ :revincludes: []
26
+ :required_concepts:
27
+ - code
28
+ - input.valueCodeableConcept
29
+ :must_supports:
30
+ :extensions: []
31
+ :slices: []
32
+ :elements:
33
+ - :path: identifier
34
+ - :path: status
35
+ - :path: statusReason
36
+ - :path: intent
37
+ - :path: code
38
+ - :path: for
39
+ :types:
40
+ - Reference
41
+ :target_profiles:
42
+ - http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary
43
+ - :path: requester
44
+ :types:
45
+ - Reference
46
+ - :path: requester.identifier
47
+ - :path: owner
48
+ :types:
49
+ - Reference
50
+ - :path: owner.identifier
51
+ - :path: reasonCode.coding.code
52
+ :fixed_value: priorAuthorization
53
+ - :path: reasonReference
54
+ :types:
55
+ - Reference
56
+ :target_profiles:
57
+ - http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim
58
+ - :path: restriction.period
59
+ - :path: input
60
+ :mandatory_elements:
61
+ - Task.identifier
62
+ - Task.status
63
+ - Task.intent
64
+ - Task.code
65
+ - Task.for
66
+ - Task.requester
67
+ - Task.requester.identifier
68
+ - Task.owner
69
+ - Task.owner.identifier
70
+ - Task.reasonCode
71
+ - Task.reasonReference
72
+ - Task.input
73
+ - Task.input.type
74
+ - Task.input.value[x]
75
+ - Task.input.extension
76
+ - Task.output.type
77
+ - Task.output.value[x]
78
+ :bindings:
79
+ - :type: code
80
+ :strength: required
81
+ :system: http://hl7.org/fhir/us/davinci-hrex/ValueSet/hrex-task-status
82
+ :path: status
83
+ - :type: code
84
+ :strength: required
85
+ :system: http://hl7.org/fhir/ValueSet/task-intent
86
+ :path: intent
87
+ - :type: code
88
+ :strength: required
89
+ :system: http://hl7.org/fhir/ValueSet/request-priority
90
+ :path: priority
91
+ - :type: CodeableConcept
92
+ :strength: required
93
+ :system: http://hl7.org/fhir/us/davinci-pas/ValueSet/PASTaskCodes
94
+ :path: code
95
+ - :type: CodeableConcept
96
+ :strength: required
97
+ :system: http://hl7.org/fhir/us/davinci-pas/ValueSet/AttachmentRequestCodes
98
+ :path: input.value
99
+ :references:
100
+ - :path: Task.basedOn
101
+ :profiles:
102
+ - http://hl7.org/fhir/StructureDefinition/Resource
103
+ - :path: Task.partOf
104
+ :profiles:
105
+ - http://hl7.org/fhir/StructureDefinition/Task
106
+ - :path: Task.focus
107
+ :profiles:
108
+ - http://hl7.org/fhir/StructureDefinition/Resource
109
+ - :path: Task.for
110
+ :profiles:
111
+ - http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-beneficiary
112
+ - :path: Task.encounter
113
+ :profiles:
114
+ - http://hl7.org/fhir/StructureDefinition/Encounter
115
+ - :path: Task.requester
116
+ :profiles:
117
+ - http://hl7.org/fhir/StructureDefinition/Device
118
+ - http://hl7.org/fhir/StructureDefinition/Organization
119
+ - http://hl7.org/fhir/StructureDefinition/Patient
120
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
121
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
122
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
123
+ - :path: Task.owner
124
+ :profiles:
125
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
126
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
127
+ - http://hl7.org/fhir/StructureDefinition/Organization
128
+ - http://hl7.org/fhir/StructureDefinition/CareTeam
129
+ - http://hl7.org/fhir/StructureDefinition/HealthcareService
130
+ - http://hl7.org/fhir/StructureDefinition/Patient
131
+ - http://hl7.org/fhir/StructureDefinition/Device
132
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
133
+ - :path: Task.location
134
+ :profiles:
135
+ - http://hl7.org/fhir/StructureDefinition/Location
136
+ - :path: Task.reasonReference
137
+ :profiles:
138
+ - http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-claim
139
+ - :path: Task.insurance
140
+ :profiles:
141
+ - http://hl7.org/fhir/StructureDefinition/Coverage
142
+ - http://hl7.org/fhir/StructureDefinition/ClaimResponse
143
+ - :path: Task.relevantHistory
144
+ :profiles:
145
+ - http://hl7.org/fhir/StructureDefinition/Provenance
146
+ - :path: Task.restriction.recipient
147
+ :profiles:
148
+ - http://hl7.org/fhir/StructureDefinition/Patient
149
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
150
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
151
+ - http://hl7.org/fhir/StructureDefinition/RelatedPerson
152
+ - http://hl7.org/fhir/StructureDefinition/Group
153
+ - http://hl7.org/fhir/StructureDefinition/Organization
154
+ :tests:
155
+ - :id: us_core_v311_task_read_test
156
+ :file_name: task_read_test.rb
157
+ - :id: us_core_v311_task_validation_test
158
+ :file_name: task_validation_test.rb
159
+ - :id: us_core_v311_task_must_support_test
160
+ :file_name: task_must_support_test.rb
161
+ - :id: us_core_v311_task_reference_resolution_test
162
+ :file_name: task_reference_resolution_test.rb
163
+ :id: us_core_v311_task
164
+ :file_name: task_group.rb
165
+ :delayed_references: []
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server is capable of creating a Task resource from Task create interaction'
8
8
  description 'A server SHOULD support the Task create interaction'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@279'
9
10
 
10
11
  id :task_create
11
12
  input :create_task_resources,
@@ -0,0 +1,46 @@
1
+ module DaVinciDTRTestKit
2
+ class TaskMustSupportTest < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the Task resources returned'
6
+ description %(
7
+ This test will look through the Task resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * Task.code
11
+ * Task.for
12
+ * Task.identifier
13
+ * Task.input
14
+ * Task.intent
15
+ * Task.owner
16
+ * Task.owner.identifier
17
+ * Task.reasonCode.coding.code
18
+ * Task.reasonReference
19
+ * Task.requester
20
+ * Task.requester.identifier
21
+ * Task.restriction.period
22
+ * Task.status
23
+ * Task.statusReason
24
+ )
25
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
26
+ id :task_must_support_test
27
+
28
+ def resource_type
29
+ 'Task'
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[:tasks] ||= {}
39
+ end
40
+
41
+ run do
42
+ skip_if(task_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 Task resource from Task read interaction'
8
8
  description 'A server SHOULD support the Task read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@278'
9
10
 
10
11
  id :task_read
11
12
  output :task_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'Task'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:tasks] ||= {}
20
+ end
21
+
17
22
  def task_id_list
18
23
  return [nil] unless respond_to? :task_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(task_id_list, resource_type)
25
-
26
- output task_resources: resources.to_json
29
+ perform_read_test(task_id_list, resource_type)
27
30
  end
28
31
  end
29
32
  end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server is capable of updating a Task resource from Task update interaction'
8
8
  description 'A server SHOULD support the Task update interaction'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@280'
9
10
 
10
11
  id :task_update
11
12
  input :update_task_resources,
@@ -1,8 +1,6 @@
1
- require_relative '../../validation_test'
2
-
3
1
  module DaVinciDTRTestKit
4
2
  class TaskValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'Task resources returned during previous tests conform to the PAS Task'
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 :task_validation
22
- input :task_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'Task'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:tasks] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(task_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(task_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-task|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-task',
32
+ '2.0.1',
33
+ skip_if_empty: true)
33
34
  end
34
35
  end
35
36
  end
@@ -2,6 +2,7 @@ require_relative 'task/task_read'
2
2
  require_relative 'task/task_validation'
3
3
  require_relative 'task/task_create'
4
4
  require_relative 'task/task_update'
5
+ require_relative 'task/task_must_support_test'
5
6
 
6
7
  module DaVinciDTRTestKit
7
8
  class TaskGroup < Inferno::TestGroup
@@ -34,7 +35,15 @@ module DaVinciDTRTestKit
34
35
  This test sequence will perform update interactions with the provided json
35
36
  Task resources. The server SHOULD be capable of creating a Task resource
36
37
  using the update interaction.
37
- )
38
+
39
+ ## Must Support
40
+ Each profile contains elements marked as "must support". This test
41
+ sequence expects to see each of these elements at least once. If at
42
+ least one cannot be found, the test will fail. The test will look
43
+ through the Task resources found in the first test for these
44
+ elements.
45
+
46
+ )
38
47
  id :task_group
39
48
  optional
40
49
  run_as_group
@@ -48,5 +57,6 @@ module DaVinciDTRTestKit
48
57
  test from: :task_validation
49
58
  test from: :task_create
50
59
  test from: :task_update
60
+ test from: :task_must_support_test
51
61
  end
52
62
  end
@@ -0,0 +1,107 @@
1
+ ---
2
+ :name: profile_visionprescription
3
+ :class_name: ProfileVisionprescriptionSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: VisionPrescription
7
+ :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription
8
+ :profile_name: CRD Vision Prescription
9
+ :profile_version: 2.0.1
10
+ :title: CRD Vision Prescription
11
+ :short_description: Verify support for the server capabilities required by the CRD
12
+ Vision Prescription.
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: VisionPrescription.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: created
34
+ - :path: patient
35
+ :types:
36
+ - Reference
37
+ :target_profiles:
38
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
39
+ - :path: encounter
40
+ :types:
41
+ - Reference
42
+ :target_profiles:
43
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
44
+ - :path: dateWritten
45
+ - :path: prescriber
46
+ :types:
47
+ - Reference
48
+ - :path: lensSpecification
49
+ - :path: lensSpecification.product
50
+ - :path: lensSpecification.eye
51
+ - :path: lensSpecification.sphere
52
+ - :path: lensSpecification.cylinder
53
+ - :path: lensSpecification.axis
54
+ - :path: lensSpecification.prism
55
+ - :path: lensSpecification.prism.amount
56
+ - :path: lensSpecification.prism.base
57
+ - :path: lensSpecification.add
58
+ - :path: lensSpecification.power
59
+ - :path: lensSpecification.backCurve
60
+ - :path: lensSpecification.diameter
61
+ - :path: lensSpecification.duration
62
+ :mandatory_elements:
63
+ - VisionPrescription.status
64
+ - VisionPrescription.created
65
+ - VisionPrescription.patient
66
+ - VisionPrescription.dateWritten
67
+ - VisionPrescription.prescriber
68
+ - VisionPrescription.lensSpecification
69
+ - VisionPrescription.lensSpecification.product
70
+ - VisionPrescription.lensSpecification.eye
71
+ - VisionPrescription.lensSpecification.prism.amount
72
+ - VisionPrescription.lensSpecification.prism.base
73
+ :bindings:
74
+ - :type: code
75
+ :strength: required
76
+ :system: http://hl7.org/fhir/ValueSet/vision-eye-codes
77
+ :path: lensSpecification.eye
78
+ - :type: code
79
+ :strength: required
80
+ :system: http://hl7.org/fhir/ValueSet/vision-base-codes
81
+ :path: lensSpecification.prism.base
82
+ :references:
83
+ - :path: VisionPrescription.patient
84
+ :profiles:
85
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
86
+ - :path: VisionPrescription.encounter
87
+ :profiles:
88
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
89
+ - :path: VisionPrescription.prescriber
90
+ :profiles:
91
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
92
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
93
+ :tests:
94
+ - :id: us_core_v311_vision_prescription_read_test
95
+ :file_name: vision_prescription_read_test.rb
96
+ - :id: us_core_v311_vision_prescription_validation_test
97
+ :file_name: vision_prescription_validation_test.rb
98
+ - :id: us_core_v311_vision_prescription_must_support_test
99
+ :file_name: vision_prescription_must_support_test.rb
100
+ - :id: us_core_v311_vision_prescription_reference_resolution_test
101
+ :file_name: vision_prescription_reference_resolution_test.rb
102
+ :id: us_core_v311_vision_prescription
103
+ :file_name: vision_prescription_group.rb
104
+ :delayed_references:
105
+ - :path: prescriber
106
+ :resources:
107
+ - PractitionerRole
@@ -0,0 +1,54 @@
1
+ module DaVinciDTRTestKit
2
+ class VisionPrescriptionMustSupportTest < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the VisionPrescription resources returned'
6
+ description %(
7
+ This test will look through the VisionPrescription resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * VisionPrescription.created
11
+ * VisionPrescription.dateWritten
12
+ * VisionPrescription.encounter
13
+ * VisionPrescription.extension:Coverage-Information
14
+ * VisionPrescription.identifier
15
+ * VisionPrescription.lensSpecification
16
+ * VisionPrescription.lensSpecification.add
17
+ * VisionPrescription.lensSpecification.axis
18
+ * VisionPrescription.lensSpecification.backCurve
19
+ * VisionPrescription.lensSpecification.cylinder
20
+ * VisionPrescription.lensSpecification.diameter
21
+ * VisionPrescription.lensSpecification.duration
22
+ * VisionPrescription.lensSpecification.eye
23
+ * VisionPrescription.lensSpecification.power
24
+ * VisionPrescription.lensSpecification.prism
25
+ * VisionPrescription.lensSpecification.prism.amount
26
+ * VisionPrescription.lensSpecification.prism.base
27
+ * VisionPrescription.lensSpecification.product
28
+ * VisionPrescription.lensSpecification.sphere
29
+ * VisionPrescription.patient
30
+ * VisionPrescription.prescriber
31
+ * VisionPrescription.status
32
+ )
33
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
34
+ id :vision_prescription_must_support_test
35
+
36
+ def resource_type
37
+ 'VisionPrescription'
38
+ end
39
+
40
+ def self.metadata
41
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
42
+ aliases: true))
43
+ end
44
+
45
+ def scratch_resources
46
+ scratch[:vision_prescriptions] ||= {}
47
+ end
48
+
49
+ run do
50
+ skip_if(vision_prescription_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
51
+ perform_must_support_test(all_scratch_resources)
52
+ end
53
+ end
54
+ end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server returns correct VisionPrescription resource from VisionPrescription read interaction'
8
8
  description 'A server SHOULD support the VisionPrescription read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@277'
9
10
 
10
11
  id :vision_prescription_read
11
12
  output :vision_prescription_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'VisionPrescription'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:vision_prescriptions] ||= {}
20
+ end
21
+
17
22
  def vision_prescription_id_list
18
23
  return [nil] unless respond_to? :vision_prescription_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(vision_prescription_id_list, resource_type)
25
-
26
- output vision_prescription_resources: resources.to_json
29
+ perform_read_test(vision_prescription_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 VisionPrescriptionValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'VisionPrescription resources returned during previous tests conform to the CRD VisionPrescription'
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 :vision_prescription_validation
22
- input :vision_prescription_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'VisionPrescription'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:vision_prescriptions] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(vision_prescription_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(vision_prescription_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription',
32
+ '2.0.1',
33
+ skip_if_empty: true)
33
34
  end
34
35
  end
35
36
  end
@@ -1,5 +1,6 @@
1
1
  require_relative 'vision_prescription/vision_prescription_read'
2
2
  require_relative 'vision_prescription/vision_prescription_validation'
3
+ require_relative 'vision_prescription/vision_prescription_must_support_test'
3
4
 
4
5
  module DaVinciDTRTestKit
5
6
  class VisionPrescriptionGroup < Inferno::TestGroup
@@ -23,6 +24,13 @@ module DaVinciDTRTestKit
23
24
  the [CRD VisionPrescription Profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.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 VisionPrescription resources found in the first test for these
32
+ elements.
33
+
26
34
  )
27
35
  id :vision_prescription_group
28
36
  optional
@@ -35,5 +43,6 @@ module DaVinciDTRTestKit
35
43
 
36
44
  test from: :vision_prescription_read
37
45
  test from: :vision_prescription_validation
46
+ test from: :vision_prescription_must_support_test
38
47
  end
39
48
  end
@@ -1,5 +1,9 @@
1
1
  module DaVinciDTRTestKit
2
2
  module ReadTest
3
+ def all_scratch_resources
4
+ scratch_resources[:all] ||= []
5
+ end
6
+
3
7
  def perform_read_test(resource_ids, resource_type)
4
8
  skip_if(resource_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
5
9
  resources = []
@@ -12,6 +16,7 @@ module DaVinciDTRTestKit
12
16
 
13
17
  resources.push(resource)
14
18
  end
19
+ all_scratch_resources.concat(resources)
15
20
  resources
16
21
  end
17
22
 
@@ -0,0 +1,13 @@
1
+ Req Set,ID,Reason,Details
2
+ hl7.fhir.us.davinci-dtr_2.0.1,10,Not Tested,"QuestionnaireResponse.source is not must support or required, so these systems are not required to support it."
3
+ hl7.fhir.us.davinci-dtr_2.0.1,129,Not Tested,Cdex workflows out of initial scope
4
+ hl7.fhir.us.davinci-dtr_2.0.1,231,Not Tested,check as a part of PAS initially
5
+ hl7.fhir.us.davinci-dtr_2.0.1,232,Not Tested,check as a part of PAS initially
6
+ hl7.fhir.us.davinci-dtr_2.0.1,233,Not Tested,check as a part of PAS initially
7
+ hl7.fhir.us.davinci-dtr_2.0.1,234,Not Tested,check as a part of PAS initially
8
+ hl7.fhir.us.davinci-dtr_2.0.1,236,Not Tested,check as a part of PAS initially
9
+ hl7.fhir.us.davinci-dtr_2.0.1,237,Not Tested,"automatic or manual allowed, no clear impact on downstream functionality"
10
+ hl7.fhir.us.davinci-dtr_2.0.1,238,Not Tested,"automatic or manual allowed, no clear impact on downstream functionality"
11
+ hl7.fhir.us.davinci-dtr_2.0.1,328,Not Tested,metrics are optional at this time
12
+ hl7.fhir.us.davinci-dtr_2.0.1,329,Not Tested,metrics are optional at this time
13
+ hl7.fhir.us.davinci-dtr_2.0.1,341,Not Verifiable,Too vague.