davinci_dtr_test_kit 0.14.1 → 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 (159) 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/metadata.yml +166 -0
  120. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_context_search.rb +3 -1
  121. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_create.rb +1 -0
  122. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_must_support_test.rb +54 -0
  123. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_patient_search.rb +3 -1
  124. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_read.rb +2 -1
  125. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_update.rb +1 -0
  126. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response/questionnaire_response_validation.rb +1 -1
  127. data/lib/davinci_dtr_test_kit/profiles/questionnaire_response_group.rb +11 -1
  128. data/lib/davinci_dtr_test_kit/profiles/service_request/metadata.yml +140 -0
  129. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_must_support_test.rb +47 -0
  130. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_read.rb +6 -3
  131. data/lib/davinci_dtr_test_kit/profiles/service_request/service_request_validation.rb +9 -8
  132. data/lib/davinci_dtr_test_kit/profiles/service_request_group.rb +9 -0
  133. data/lib/davinci_dtr_test_kit/profiles/task/metadata.yml +165 -0
  134. data/lib/davinci_dtr_test_kit/profiles/task/task_create.rb +1 -0
  135. data/lib/davinci_dtr_test_kit/profiles/task/task_must_support_test.rb +46 -0
  136. data/lib/davinci_dtr_test_kit/profiles/task/task_read.rb +6 -3
  137. data/lib/davinci_dtr_test_kit/profiles/task/task_update.rb +1 -0
  138. data/lib/davinci_dtr_test_kit/profiles/task/task_validation.rb +9 -8
  139. data/lib/davinci_dtr_test_kit/profiles/task_group.rb +11 -1
  140. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/metadata.yml +107 -0
  141. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_must_support_test.rb +54 -0
  142. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_read.rb +6 -3
  143. data/lib/davinci_dtr_test_kit/profiles/vision_prescription/vision_prescription_validation.rb +9 -8
  144. data/lib/davinci_dtr_test_kit/profiles/vision_prescription_group.rb +9 -0
  145. data/lib/davinci_dtr_test_kit/read_test.rb +5 -0
  146. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_out_of_scope_requirements.csv +13 -0
  147. data/lib/davinci_dtr_test_kit/requirements/davinci-dtr-test-kit_requirements.csv +374 -0
  148. data/lib/davinci_dtr_test_kit/requirements/generated/davinci-dtr-test-kit_requirements_coverage.csv +372 -0
  149. data/lib/davinci_dtr_test_kit/urls.rb +1 -0
  150. data/lib/davinci_dtr_test_kit/version.rb +2 -1
  151. data/lib/davinci_dtr_test_kit.rb +2 -0
  152. data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
  153. data/lib/inferno_requirements_tools/rake/rakefile_template +31 -0
  154. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
  155. data/lib/requirements_config.yaml +25 -0
  156. metadata +89 -37
  157. data/lib/davinci_dtr_test_kit/client_groups/dinner_adaptive/dtr_smart_app_adaptive_questionnaire_initial_retrieval_group.rb +0 -24
  158. data/lib/davinci_dtr_test_kit/client_groups/resp_assist_device/dtr_questionnaire_rendering_group.rb +0 -14
  159. data/lib/davinci_dtr_test_kit/client_groups/smart_app/dtr_smart_app_rendering_enabled_questions_attestation_test.rb +0 -30
@@ -0,0 +1,140 @@
1
+ ---
2
+ :name: profile_servicerequest
3
+ :class_name: ProfileServicerequestSequence
4
+ :version: v3.1.1
5
+ :reformatted_version: v311
6
+ :resource: ServiceRequest
7
+ :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest
8
+ :profile_name: CRD Service Request
9
+ :profile_version: 2.0.1
10
+ :title: CRD Service Request
11
+ :short_description: Verify support for the server capabilities required by the CRD
12
+ Service 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: ServiceRequest.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: basedOn
32
+ :types:
33
+ - Reference
34
+ - :path: status
35
+ :fixed_value: draft
36
+ - :path: doNotPerform
37
+ - :path: code
38
+ - :path: quantity[x]
39
+ - :path: subject
40
+ :types:
41
+ - Reference
42
+ :target_profiles:
43
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
44
+ - :path: occurrence[x]
45
+ - :path: authoredOn
46
+ - :path: requester
47
+ :types:
48
+ - Reference
49
+ - :path: performer
50
+ :types:
51
+ - Reference
52
+ - :path: locationReference
53
+ :types:
54
+ - Reference
55
+ :target_profiles:
56
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location
57
+ - :path: reasonCode
58
+ - :path: reasonReference
59
+ :types:
60
+ - Reference
61
+ :mandatory_elements:
62
+ - ServiceRequest.status
63
+ - ServiceRequest.intent
64
+ - ServiceRequest.code
65
+ - ServiceRequest.subject
66
+ - ServiceRequest.authoredOn
67
+ - ServiceRequest.requester
68
+ :bindings:
69
+ - :type: code
70
+ :strength: required
71
+ :system: http://hl7.org/fhir/ValueSet/request-intent
72
+ :path: intent
73
+ - :type: code
74
+ :strength: required
75
+ :system: http://hl7.org/fhir/ValueSet/request-priority
76
+ :path: priority
77
+ :references:
78
+ - :path: ServiceRequest.basedOn
79
+ :profiles:
80
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest
81
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest
82
+ - :path: ServiceRequest.replaces
83
+ :profiles:
84
+ - http://hl7.org/fhir/StructureDefinition/ServiceRequest
85
+ - :path: ServiceRequest.subject
86
+ :profiles:
87
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient
88
+ - :path: ServiceRequest.encounter
89
+ :profiles:
90
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter
91
+ - :path: ServiceRequest.requester
92
+ :profiles:
93
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
94
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
95
+ - :path: ServiceRequest.performer
96
+ :profiles:
97
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner
98
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
99
+ - :path: ServiceRequest.locationReference
100
+ :profiles:
101
+ - http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location
102
+ - :path: ServiceRequest.reasonReference
103
+ :profiles:
104
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition
105
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab
106
+ - :path: ServiceRequest.insurance
107
+ :profiles:
108
+ - http://hl7.org/fhir/StructureDefinition/Coverage
109
+ - http://hl7.org/fhir/StructureDefinition/ClaimResponse
110
+ - :path: ServiceRequest.supportingInfo
111
+ :profiles:
112
+ - http://hl7.org/fhir/StructureDefinition/Resource
113
+ - :path: ServiceRequest.specimen
114
+ :profiles:
115
+ - http://hl7.org/fhir/StructureDefinition/Specimen
116
+ - :path: ServiceRequest.relevantHistory
117
+ :profiles:
118
+ - http://hl7.org/fhir/StructureDefinition/Provenance
119
+ :tests:
120
+ - :id: us_core_v311_service_request_read_test
121
+ :file_name: service_request_read_test.rb
122
+ - :id: us_core_v311_service_request_validation_test
123
+ :file_name: service_request_validation_test.rb
124
+ - :id: us_core_v311_service_request_must_support_test
125
+ :file_name: service_request_must_support_test.rb
126
+ - :id: us_core_v311_service_request_reference_resolution_test
127
+ :file_name: service_request_reference_resolution_test.rb
128
+ :id: us_core_v311_service_request
129
+ :file_name: service_request_group.rb
130
+ :delayed_references:
131
+ - :path: basedOn
132
+ :resources:
133
+ - ServiceRequest
134
+ - MedicationRequest
135
+ - :path: requester
136
+ :resources:
137
+ - PractitionerRole
138
+ - :path: performer
139
+ :resources:
140
+ - PractitionerRole
@@ -0,0 +1,47 @@
1
+ module DaVinciDTRTestKit
2
+ class ServiceRequestMustSupportTest < Inferno::Test
3
+ include USCoreTestKit::MustSupportTest
4
+
5
+ title 'All must support elements are provided in the ServiceRequest resources returned'
6
+ description %(
7
+ This test will look through the ServiceRequest resources
8
+ found previously for the following must support elements:\n
9
+
10
+ * ServiceRequest.authoredOn
11
+ * ServiceRequest.basedOn
12
+ * ServiceRequest.code
13
+ * ServiceRequest.doNotPerform
14
+ * ServiceRequest.extension:Coverage-Information
15
+ * ServiceRequest.identifier
16
+ * ServiceRequest.locationReference
17
+ * ServiceRequest.occurrence[x]
18
+ * ServiceRequest.performer
19
+ * ServiceRequest.quantity[x]
20
+ * ServiceRequest.reasonCode
21
+ * ServiceRequest.reasonReference
22
+ * ServiceRequest.requester
23
+ * ServiceRequest.status
24
+ * ServiceRequest.subject
25
+ )
26
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@355'
27
+ id :service_request_must_support_test
28
+
29
+ def resource_type
30
+ 'ServiceRequest'
31
+ end
32
+
33
+ def self.metadata
34
+ @metadata ||= USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'),
35
+ aliases: true))
36
+ end
37
+
38
+ def scratch_resources
39
+ scratch[:service_requests] ||= {}
40
+ end
41
+
42
+ run do
43
+ skip_if(service_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
44
+ perform_must_support_test(all_scratch_resources)
45
+ end
46
+ end
47
+ end
@@ -6,6 +6,7 @@ module DaVinciDTRTestKit
6
6
 
7
7
  title 'Server returns correct ServiceRequest resource from ServiceRequest read interaction'
8
8
  description 'A server SHOULD support the ServiceRequest read interaction.'
9
+ verifies_requirements 'hl7.fhir.us.davinci-dtr_2.0.1@276'
9
10
 
10
11
  id :service_request_read
11
12
  output :service_request_resources
@@ -14,6 +15,10 @@ module DaVinciDTRTestKit
14
15
  'ServiceRequest'
15
16
  end
16
17
 
18
+ def scratch_resources
19
+ scratch[:service_requests] ||= {}
20
+ end
21
+
17
22
  def service_request_id_list
18
23
  return [nil] unless respond_to? :service_request_ids
19
24
 
@@ -21,9 +26,7 @@ module DaVinciDTRTestKit
21
26
  end
22
27
 
23
28
  run do
24
- resources = perform_read_test(service_request_id_list, resource_type)
25
-
26
- output service_request_resources: resources.to_json
29
+ perform_read_test(service_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 ServiceRequestValidationTest < Inferno::Test
5
- include DaVinciDTRTestKit::ValidationTest
3
+ include USCoreTestKit::ValidationTest
6
4
 
7
5
  title 'ServiceRequest resources returned during previous tests conform to the CRD ServiceRequest'
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 :service_request_validation
22
- input :service_request_resources,
23
- optional: true
24
20
 
25
21
  def resource_type
26
22
  'ServiceRequest'
27
23
  end
28
24
 
25
+ def scratch_resources
26
+ scratch[:service_requests] ||= {}
27
+ end
28
+
29
29
  run do
30
- skip_if(service_request_ids.nil?, "No `#{resource_type}` IDs provided, skipping test.")
31
- perform_profile_validation_test(service_request_resources, resource_type,
32
- 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest|2.0.1')
30
+ perform_validation_test(scratch_resources[:all] || [],
31
+ 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest',
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 '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