davinci_pdex_test_kit 0.10.6 → 0.12.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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/config/presets/pdex_payer_client_postman_preset.json +12 -0
  3. data/config/presets/pdex_payer_server_fhir_foundry_ri_preset.json +96 -0
  4. data/config/presets/pdex_payer_server_inferno_ri_preset.json +96 -0
  5. data/lib/davinci_pdex_test_kit/docs/davinci_pdex_test_kit_description_v200.md +33 -0
  6. data/lib/davinci_pdex_test_kit/docs/payer_client_suite_description_v200.md +107 -17
  7. data/lib/davinci_pdex_test_kit/fhir_resource_navigation.rb +5 -1
  8. data/lib/davinci_pdex_test_kit/group_metadata.rb +5 -1
  9. data/lib/davinci_pdex_test_kit/igs/davinci-pdex-2.0.0.tgz +0 -0
  10. data/lib/davinci_pdex_test_kit/igs/us-core-3.1.1.tgz +0 -0
  11. data/lib/davinci_pdex_test_kit/metadata.rb +16 -0
  12. data/lib/davinci_pdex_test_kit/must_support_test.rb +3 -0
  13. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_validation_test.rb +21 -17
  14. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_validation_test.rb +96 -43
  15. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_workflow_interaction_test.rb +50 -0
  16. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/allergyintolerance_clinical_data_request_test.rb +18 -16
  17. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careplan_clinical_data_request_test.rb +18 -16
  18. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/careteam_clinical_data_request_test.rb +18 -16
  19. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/clinical_data_request_check_test.rb +24 -0
  20. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/condition_clinical_data_request_test.rb +18 -16
  21. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/device_clinical_data_request_test.rb +19 -17
  22. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/diagnosticreport_clinical_data_request_test.rb +18 -16
  23. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/documentreference_clinical_data_request_test.rb +18 -16
  24. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/encounter_clinical_data_request_test.rb +18 -16
  25. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/explanationofbenefit_clinical_data_request_test.rb +18 -16
  26. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/goal_clinical_data_request_test.rb +18 -16
  27. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/immunization_clinical_data_request_test.rb +18 -16
  28. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/location_clinical_data_request_test.rb +18 -16
  29. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationdispense_clinical_data_request_test.rb +18 -16
  30. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/medicationrequest_clinical_data_request_test.rb +18 -16
  31. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/observation_clinical_data_request_test.rb +18 -16
  32. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/organization_clinical_data_request_test.rb +18 -16
  33. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_clinical_data_request_test.rb +18 -16
  34. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/patient_id_search_request_check_test.rb +21 -0
  35. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitioner_clinical_data_request_test.rb +18 -16
  36. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/practitionerrole_clinical_data_request_test.rb +18 -16
  37. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/procedure_clinical_data_request_test.rb +18 -16
  38. data/lib/davinci_pdex_test_kit/pdex_payer_client/collection.rb +46 -44
  39. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/binary_endpoint.rb +26 -0
  40. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_endpoint.rb +29 -0
  41. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/export_status_endpoint.rb +38 -0
  42. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/member_match_endpoint.rb +51 -0
  43. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/next_page_endpoint.rb +23 -0
  44. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_endpoint.rb +25 -0
  45. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/patient_everything_endpoint.rb +34 -0
  46. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/proxy_endpoint.rb +178 -0
  47. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_read_endpoint.rb +21 -0
  48. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/resource_search_endpoint.rb +22 -0
  49. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server/token_endpoint.rb +27 -0
  50. data/lib/davinci_pdex_test_kit/pdex_payer_client/mock_server.rb +53 -0
  51. data/lib/davinci_pdex_test_kit/pdex_payer_client/tags.rb +15 -0
  52. data/lib/davinci_pdex_test_kit/pdex_payer_client/urls.rb +51 -0
  53. data/lib/davinci_pdex_test_kit/pdex_payer_client_suite.rb +99 -144
  54. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +1 -1
  55. data/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +1 -1
  56. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_must_support_test.rb +50 -0
  57. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_search_test.rb +68 -0
  58. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_patient_type_search_test.rb +54 -0
  59. data/lib/davinci_pdex_test_kit/pdex_payer_server/{explanation_of_benefit/explanation_of_benefit_provenance_revinclude_search_test.rb → device/device_provenance_revinclude_search_test.rb} +16 -13
  60. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_read_test.rb +26 -0
  61. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_reference_resolution_test.rb +42 -0
  62. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/device_validation_test.rb +39 -0
  63. data/lib/davinci_pdex_test_kit/pdex_payer_server/device/metadata.yml +154 -0
  64. data/lib/davinci_pdex_test_kit/pdex_payer_server/device_group.rb +88 -0
  65. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_id_search_test.rb +10 -26
  66. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_identifier_search_test.rb +13 -26
  67. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_must_support_test.rb +40 -7
  68. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_lastupdated_search_test.rb +48 -0
  69. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_search_test.rb +62 -0
  70. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_service_date_search_test.rb +13 -28
  71. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_type_search_test.rb +12 -28
  72. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_read_test.rb +1 -1
  73. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_reference_resolution_test.rb +10 -6
  74. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_validation_test.rb +10 -11
  75. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/metadata.yml +285 -273
  76. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit_group.rb +69 -73
  77. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_patient_group.rb +11 -13
  78. data/lib/davinci_pdex_test_kit/pdex_payer_server/export_validation_group.rb +3 -8
  79. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_must_support_test.rb +42 -0
  80. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_search_test.rb +64 -0
  81. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_search_test.rb +54 -0
  82. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_patient_status_type_search_test.rb +55 -0
  83. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_provenance_revinclude_search_test.rb +54 -0
  84. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_read_test.rb +26 -0
  85. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_reference_resolution_test.rb +42 -0
  86. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/medication_dispense_validation_test.rb +39 -0
  87. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense/metadata.yml +206 -0
  88. data/lib/davinci_pdex_test_kit/pdex_payer_server/medication_dispense_group.rb +69 -0
  89. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +1 -1
  90. data/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_profile_validation.rb +1 -3
  91. data/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +36 -37
  92. data/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +30 -31
  93. data/lib/davinci_pdex_test_kit/pdex_payer_server/patient_operation_in_capability_statement_validation.rb +16 -16
  94. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/metadata.yml +173 -0
  95. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_must_support_test.rb +51 -0
  96. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_read_test.rb +26 -0
  97. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_reference_resolution_test.rb +46 -0
  98. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance/provenance_validation_test.rb +39 -0
  99. data/lib/davinci_pdex_test_kit/pdex_payer_server/provenance_group.rb +59 -0
  100. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_clinical_data_group.rb +25 -16
  101. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_everything_group.rb +21 -10
  102. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_export_group.rb +24 -20
  103. data/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +56 -38
  104. data/lib/davinci_pdex_test_kit/pdex_payer_server_suite.rb +124 -112
  105. data/lib/davinci_pdex_test_kit/pdex_provider_client_suite.rb +8 -8
  106. data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_out_of_scope_requirements.csv +1 -0
  107. data/lib/davinci_pdex_test_kit/requirements/davinci-pdex-test-kit_requirements.csv +64 -0
  108. data/lib/davinci_pdex_test_kit/requirements/generated/davinci-pdex-test-kit_requirements_coverage.csv +64 -0
  109. data/lib/davinci_pdex_test_kit/version.rb +2 -3
  110. data/lib/davinci_pdex_test_kit.rb +2 -2
  111. data/lib/inferno_requirements_tools/ext/inferno_core/runnable.rb +22 -0
  112. data/lib/inferno_requirements_tools/rake/rakefile_template +19 -0
  113. data/lib/inferno_requirements_tools/tasks/requirements_coverage.rb +284 -0
  114. data/lib/requirements_config.yaml +17 -0
  115. metadata +113 -27
  116. data/lib/davinci_pdex_test_kit/ext/inferno_core/record_response_route.rb +0 -98
  117. data/lib/davinci_pdex_test_kit/ext/inferno_core/request.rb +0 -19
  118. data/lib/davinci_pdex_test_kit/ext/inferno_core/runnable.rb +0 -18
  119. data/lib/davinci_pdex_test_kit/mock_server.rb +0 -281
  120. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_member_match_tests/client_member_match_submit_test.rb +0 -24
  121. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_submit_test.rb +0 -26
  122. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/client_member_match_must_support_validation_test.rb +0 -32
  123. data/lib/davinci_pdex_test_kit/pdex_payer_client/client_must_support_tests/metadata.yml +0 -61
  124. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_scratch_storing.rb +0 -32
  125. data/lib/davinci_pdex_test_kit/pdex_payer_client/clinical_data_request_tests/initial_wait_test.rb +0 -31
  126. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_last_updated_search_test.rb +0 -63
  127. data/lib/davinci_pdex_test_kit/pdex_payer_server/explanation_of_benefit/explanation_of_benefit_patient_use_search_test.rb +0 -68
  128. data/lib/davinci_pdex_test_kit/tags.rb +0 -11
  129. data/lib/davinci_pdex_test_kit/urls.rb +0 -77
  130. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_capability_statement.json +0 -0
  131. /data/lib/davinci_pdex_test_kit/{metadata → pdex_payer_client/mock_server/resources}/mock_operation_outcome_resource.json +0 -0
@@ -0,0 +1,206 @@
1
+ ---
2
+ :name: pdex_medicationdispense
3
+ :class_name: PdexMedicationdispenseSequence
4
+ :version: v2.0.0
5
+ :reformatted_version: v200
6
+ :resource: MedicationDispense
7
+ :profile_url: http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-medicationdispense
8
+ :profile_name: PDex MedicationDispense
9
+ :profile_version: 2.0.0
10
+ :title: PDex MedicationDispense
11
+ :short_description: Verify support for the server capabilities required by the PDex
12
+ MedicationDispense.
13
+ :is_delayed: true
14
+ :interactions:
15
+ - :code: search-type
16
+ :expectation: SHALL
17
+ - :code: read
18
+ :expectation: SHALL
19
+ - :code: vread
20
+ :expectation: SHOULD
21
+ - :code: history-instance
22
+ :expectation: SHOULD
23
+ - :code: history-type
24
+ :expectation: MAY
25
+ :operations: []
26
+ :searches:
27
+ - :names:
28
+ - patient
29
+ :expectation: SHALL
30
+ :names_not_must_support_or_mandatory: []
31
+ :must_support_or_mandatory: true
32
+ - :expectation: SHOULD
33
+ :names:
34
+ - patient
35
+ - status
36
+ :names_not_must_support_or_mandatory: []
37
+ :must_support_or_mandatory: true
38
+ - :expectation: SHOULD
39
+ :names:
40
+ - patient
41
+ - status
42
+ - type
43
+ :names_not_must_support_or_mandatory:
44
+ - type
45
+ :must_support_or_mandatory: false
46
+ :search_definitions:
47
+ :patient:
48
+ :paths:
49
+ - subject
50
+ :full_paths:
51
+ - MedicationDispense.subject
52
+ :comparators: {}
53
+ :values: []
54
+ :type: Reference
55
+ :contains_multiple: false
56
+ :multiple_or: MAY
57
+ :status:
58
+ :paths:
59
+ - status
60
+ :full_paths:
61
+ - MedicationDispense.status
62
+ :comparators: {}
63
+ :values:
64
+ - preparation
65
+ - in-progress
66
+ - cancelled
67
+ - on-hold
68
+ - completed
69
+ - entered-in-error
70
+ - stopped
71
+ - declined
72
+ - unknown
73
+ :type: code
74
+ :contains_multiple: false
75
+ :multiple_or: SHALL
76
+ :type:
77
+ :paths:
78
+ - type
79
+ :full_paths:
80
+ - MedicationDispense.type
81
+ :comparators: {}
82
+ :values:
83
+ - DF
84
+ - EM
85
+ - SO
86
+ - FF
87
+ - FFC
88
+ - FFP
89
+ - FFSS
90
+ - TF
91
+ - FS
92
+ - MS
93
+ - RF
94
+ - UD
95
+ - RFC
96
+ - RFCS
97
+ - RFF
98
+ - RFFS
99
+ - RFP
100
+ - RFPS
101
+ - RFS
102
+ - TB
103
+ - TBS
104
+ - UDE
105
+ :type: CodeableConcept
106
+ :contains_multiple: false
107
+ :multiple_or: SHALL
108
+ :include_params:
109
+ - MedicationDispense:medication
110
+ :revincludes:
111
+ - Provenance:target
112
+ :required_concepts:
113
+ - category
114
+ - medicationCodeableConcept
115
+ :must_supports:
116
+ :extensions: []
117
+ :slices: []
118
+ :elements:
119
+ - :path: status
120
+ - :path: subject
121
+ :types:
122
+ - Reference
123
+ :target_profiles:
124
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient
125
+ - :path: substitution
126
+ - :path: substitution.wasSubstituted
127
+ :mandatory_elements:
128
+ - MedicationDispense.status
129
+ - MedicationDispense.medication[x]
130
+ - MedicationDispense.subject
131
+ - MedicationDispense.performer.actor
132
+ - MedicationDispense.substitution.wasSubstituted
133
+ :bindings:
134
+ - :type: code
135
+ :strength: required
136
+ :system: http://hl7.org/fhir/ValueSet/medicationdispense-status
137
+ :path: status
138
+ - :type: CodeableConcept
139
+ :strength: required
140
+ :system: http://hl7.org/fhir/ValueSet/medicationdispense-category
141
+ :path: category
142
+ - :type: CodeableConcept
143
+ :strength: required
144
+ :system: http://hl7.org/fhir/us/davinci-pdex/ValueSet/FDANationalDrugCode
145
+ :path: medication
146
+ :required_binding_slice: true
147
+ :references:
148
+ - :path: MedicationDispense.partOf
149
+ :profiles:
150
+ - http://hl7.org/fhir/StructureDefinition/Procedure
151
+ - :path: MedicationDispense.subject
152
+ :profiles:
153
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient
154
+ - :path: MedicationDispense.context
155
+ :profiles:
156
+ - http://hl7.org/fhir/StructureDefinition/Encounter
157
+ - http://hl7.org/fhir/StructureDefinition/EpisodeOfCare
158
+ - :path: MedicationDispense.supportingInformation
159
+ :profiles:
160
+ - http://hl7.org/fhir/StructureDefinition/Resource
161
+ - :path: MedicationDispense.performer.actor
162
+ :profiles:
163
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner
164
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole
165
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization
166
+ - :path: MedicationDispense.location
167
+ :profiles:
168
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-location
169
+ - :path: MedicationDispense.authorizingPrescription
170
+ :profiles:
171
+ - http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest
172
+ - :path: MedicationDispense.destination
173
+ :profiles:
174
+ - http://hl7.org/fhir/StructureDefinition/Location
175
+ - :path: MedicationDispense.receiver
176
+ :profiles:
177
+ - http://hl7.org/fhir/StructureDefinition/Patient
178
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
179
+ - :path: MedicationDispense.substitution.responsibleParty
180
+ :profiles:
181
+ - http://hl7.org/fhir/StructureDefinition/Practitioner
182
+ - http://hl7.org/fhir/StructureDefinition/PractitionerRole
183
+ - :path: MedicationDispense.detectedIssue
184
+ :profiles:
185
+ - http://hl7.org/fhir/StructureDefinition/DetectedIssue
186
+ - :path: MedicationDispense.eventHistory
187
+ :profiles:
188
+ - http://hl7.org/fhir/StructureDefinition/Provenance
189
+ :tests:
190
+ - :id: pdex_medication_dispense_read
191
+ :file_name: medication_dispense_read_test.rb
192
+ - :id: pdex_medication_dispense_patient_status_search
193
+ :file_name: medication_dispense_patient_status_search_test.rb
194
+ - :id: pdex_medication_dispense_patient_status_type_search
195
+ :file_name: medication_dispense_patient_status_type_search_test.rb
196
+ - :id: pdex_medication_dispense_provenance_revinclude_search
197
+ :file_name: medication_dispense_provenance_revinclude_search_test.rb
198
+ - :id: pdex_medication_dispense_validation
199
+ :file_name: medication_dispense_validation_test.rb
200
+ - :id: pdex_medication_dispense_must_support
201
+ :file_name: medication_dispense_must_support_test.rb
202
+ - :id: pdex_medication_dispense_ref_resolution
203
+ :file_name: medication_dispense_reference_resolution_test.rb
204
+ :id: pdex_medication_dispense
205
+ :file_name: medication_dispense_group.rb
206
+ :delayed_references: []
@@ -0,0 +1,69 @@
1
+ require_relative 'medication_dispense/medication_dispense_patient_search_test'
2
+ require_relative 'medication_dispense/medication_dispense_read_test'
3
+ require_relative 'medication_dispense/medication_dispense_patient_status_search_test'
4
+ require_relative 'medication_dispense/medication_dispense_patient_status_type_search_test'
5
+ require_relative 'medication_dispense/medication_dispense_provenance_revinclude_search_test'
6
+ require_relative 'medication_dispense/medication_dispense_validation_test'
7
+ require_relative 'medication_dispense/medication_dispense_must_support_test'
8
+ require_relative 'medication_dispense/medication_dispense_reference_resolution_test'
9
+
10
+ module DaVinciPDexTestKit
11
+ module PDexPayerServer
12
+ class MedicationDispenseGroup < Inferno::TestGroup
13
+ title 'PDex MedicationDispense Tests'
14
+ short_description 'Verify support for the server capabilities required by the PDex MedicationDispense.'
15
+ description %(
16
+ # Background
17
+
18
+ The PDex MedicationDispense sequence verifies that the system under test is
19
+ able to provide correct responses for MedicationDispense queries. These queries
20
+ must contain resources conforming to the PDex MedicationDispense as
21
+ specified in the PDex v2.0.0 Implementation Guide.
22
+
23
+ # Testing Methodology
24
+
25
+
26
+ ## Must Support
27
+ Each profile contains elements marked as "must support". This test
28
+ sequence expects to see each of these elements at least once. If at
29
+ least one cannot be found, the test will fail. The test will look
30
+ through the MedicationDispense resources found in the first test for these
31
+ elements.
32
+
33
+ ## Profile Validation
34
+ Each resource returned from the first search is expected to conform to
35
+ the [PDex MedicationDispense](http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-medicationdispense). Each element is checked against
36
+ teminology binding and cardinality requirements.
37
+
38
+ Elements with a required binding are validated against their bound
39
+ ValueSet. If the code/system in the element is not part of the ValueSet,
40
+ then the test will fail.
41
+
42
+ ## Reference Validation
43
+ At least one instance of each external reference in elements marked as
44
+ "must support" within the resources provided by the system must resolve.
45
+ The test will attempt to read each reference found and will fail if no
46
+ read succeeds.
47
+ )
48
+
49
+ id :pdex_medication_dispense
50
+ run_as_group
51
+
52
+ def self.metadata
53
+ @metadata ||= USCoreTestKit::USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(
54
+ File.join(__dir__, 'medication_dispense',
55
+ 'metadata.yml'), aliases: true
56
+ ))
57
+ end
58
+
59
+ test from: :pdex_medication_dispense_patient_search
60
+ test from: :pdex_medication_dispense_patient_status_search
61
+ test from: :pdex_medication_dispense_patient_status_type_search
62
+ test from: :pdex_medication_dispense_read
63
+ test from: :pdex_medication_dispense_provenance_revinclude_search
64
+ test from: :pdex_medication_dispense_validation
65
+ test from: :pdex_medication_dispense_must_support
66
+ test from: :pdex_medication_dispense_ref_resolution
67
+ end
68
+ end
69
+ end
@@ -27,7 +27,7 @@ module DaVinciPDexTestKit
27
27
  # resource.
28
28
  #
29
29
  class MemberMatchRequestLocalReferencesValidation < Inferno::Test
30
- id :pdex_member_match_request_local_references_validation
30
+ id :pdex_member_match_local_ref_validation
31
31
 
32
32
  title '[USER INPUT VALIDATION] Member match request only uses local references'
33
33
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module DaVinciPDexTestKit
4
2
  module PDexPayerServer
5
3
 
@@ -29,7 +27,7 @@ module DaVinciPDexTestKit
29
27
  # resource.
30
28
  #
31
29
  class MemberMatchRequestProfileValidation < Inferno::Test
32
- id :pdex_member_match_request_profile_validation
30
+ id :pdex_member_match_profile_validation
33
31
 
34
32
  input :member_match_request
35
33
 
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  require_relative 'member_match_request_profile_validation'
3
2
  require_relative 'member_match_request_local_references_validation'
4
3
  require_relative 'coverage_to_link_minimal_data_validation'
@@ -7,57 +6,57 @@ require_relative 'coverage_to_link_must_support_validation'
7
6
  module DaVinciPDexTestKit
8
7
  module PDexPayerServer
9
8
  class MultipleMemberMatchesGroup < Inferno::TestGroup
9
+ id :pdex_multiple_member_matches
10
+ title '$member-match with multiple matches'
10
11
 
11
- id :pdex_multiple_member_matches_group
12
- title '$member-match with multiple matches'
12
+ run_as_group
13
13
 
14
- run_as_group
14
+ input :multiple_member_match_request,
15
+ title: 'Member Match Request for multiple matches',
16
+ description: "A JSON payload for server's $member-match endpoint that has **more than one match**",
17
+ type: 'textarea',
18
+ optional: true
15
19
 
16
- input :multiple_member_match_request,
17
- title: 'Member Match Request for multiple matches',
18
- description: "A JSON payload for server's $member-match endpoint that has **more than one match**",
19
- type: 'textarea',
20
- optional: true
20
+ group_config = { inputs: { member_match_request: { name: :multiple_member_match_request } } }
21
21
 
22
- group_config = { inputs: { member_match_request: { name: :multiple_member_match_request } } }
23
-
24
- test from: :pdex_member_match_request_profile_validation do
25
- id :multiple_member_match_request_profile_test
26
- config(group_config)
27
- title '[USER INPUT VALIDATION] Member match request for multiple matches is valid'
28
- description %{
22
+ test from: :pdex_member_match_profile_validation do
23
+ id :pdex_multiple_match_profile_validation
24
+ config(group_config)
25
+ title '[USER INPUT VALIDATION] Member match request for multiple matches is valid'
26
+ description %{
29
27
  This test validates the conformity of the user input to the
30
28
  [HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html),
31
29
  ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html),
32
30
  mandatory elements, and terminology. It also checks that the Patient reference with the Consent and CoverageToMatch parameters are local references.
33
31
  }
34
32
 
35
- # Inherits
36
- end
33
+ # Inherits
34
+ end
35
+
36
+ test from: :pdex_member_match_local_ref_validation, config: group_config
37
37
 
38
- test from: :pdex_member_match_request_local_references_validation, config: group_config
39
-
40
- test from: :pdex_coverage_to_link_minimal_data_validation, config: group_config
41
- test from: :pdex_coverage_to_link_must_support_validation, config: group_config
38
+ test from: :pdex_coverage_to_link_minimal_validation, config: group_config
39
+ test from: :pdex_coverage_to_link_ms_validation, config: group_config
42
40
 
43
- test do
44
- id :member_match_has_multiple_matches
45
- title 'Server $member-match operation returns 422 Unprocessable Content if multiple matches are found'
46
- description %{
41
+ test do
42
+ id :pdex_member_match_has_multiple_matches
43
+ title 'Server $member-match operation returns 422 Unprocessable Content if multiple matches are found'
44
+ description %{
47
45
  See [member matching logic](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#member-matching-logic)
48
46
  for specification.
49
- }
50
-
51
- run do
52
- skip_if !multiple_member_match_request, "No member match request inputted for multiple-match tests."
53
-
54
- member_match_request_resource = FHIR.from_contents(multiple_member_match_request)
55
-
56
- fhir_operation('/Patient/$member-match', body: member_match_request_resource)
57
- assert_response_status(422)
58
- end
59
- end
47
+ }
60
48
 
49
+ verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@37'
50
+
51
+ run do
52
+ skip_if !multiple_member_match_request, 'No member match request inputted for multiple-match tests.'
53
+
54
+ member_match_request_resource = FHIR.from_contents(multiple_member_match_request)
55
+
56
+ fhir_operation('/Patient/$member-match', body: member_match_request_resource)
57
+ assert_response_status(422)
58
+ end
59
+ end
61
60
  end
62
61
  end
63
62
  end
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  require_relative 'member_match_request_profile_validation'
3
2
  require_relative 'member_match_request_local_references_validation'
4
3
  require_relative 'coverage_to_link_minimal_data_validation'
@@ -7,42 +6,41 @@ require_relative 'coverage_to_link_must_support_validation'
7
6
  module DaVinciPDexTestKit
8
7
  module PDexPayerServer
9
8
  class NoMemberMatchesGroup < Inferno::TestGroup
10
- id :pdex_no_member_matches_group
11
- title '$member-match with no matches'
9
+ id :pdex_no_member_matches
10
+ title '$member-match with no matches'
12
11
 
13
- run_as_group
12
+ run_as_group
14
13
 
15
- input :no_member_match_request,
16
- title: 'Member Match Request for no matches',
17
- description: "A JSON payload for server's $member-match endpoint that has **no matches**",
18
- type: 'textarea',
19
- optional: true
14
+ input :no_member_match_request,
15
+ title: 'Member Match Request for no matches',
16
+ description: "A JSON payload for server's $member-match endpoint that has **no matches**",
17
+ type: 'textarea',
18
+ optional: true
20
19
 
21
- group_config = { inputs: { member_match_request: { name: :no_member_match_request } } }
20
+ group_config = { inputs: { member_match_request: { name: :no_member_match_request } } }
22
21
 
23
- test from: :pdex_member_match_request_profile_validation do
24
- id :no_member_match_request_profile_test
25
- config(group_config)
22
+ test from: :pdex_member_match_profile_validation do
23
+ id :pdex_no_match_profile_validation
24
+ config(group_config)
26
25
 
27
- title '[USER INPUT VALIDATION] Member match request for no matches is valid'
28
- description %{
26
+ title '[USER INPUT VALIDATION] Member match request for no matches is valid'
27
+ description %{
29
28
  Regardless of having no intended matches, this test validates the conformity of the user input to the
30
29
  [HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html),
31
30
  ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html),
32
31
  mandatory elements, and terminology. It also checks that the Patient reference with the Consent and CoverageToMatch parameters are local references.
33
32
  }
34
- end
35
-
36
- test from: :pdex_member_match_request_local_references_validation, config: group_config
33
+ end
37
34
 
38
- test from: :pdex_coverage_to_link_minimal_data_validation, config: group_config
39
- test from: :pdex_coverage_to_link_must_support_validation, config: group_config
35
+ test from: :pdex_member_match_local_ref_validation, config: group_config
40
36
 
37
+ test from: :pdex_coverage_to_link_minimal_validation, config: group_config
38
+ test from: :pdex_coverage_to_link_ms_validation, config: group_config
41
39
 
42
- test do
43
- id :member_match_has_no_matches
44
- title 'Server $member-match operation returns 422 Unprocessable Content if no matches are found'
45
- description %{
40
+ test do
41
+ id :pdex_member_match_has_no_matches
42
+ title 'Server $member-match operation returns 422 Unprocessable Content if no matches are found'
43
+ description %{
46
44
  See [member matching logic](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#member-matching-logic)
47
45
  for specification.
48
46
 
@@ -50,15 +48,16 @@ module DaVinciPDexTestKit
50
48
  is expected to return 422.
51
49
  }
52
50
 
53
- run do
54
- skip_if !no_member_match_request, "No member match request inputted for no-match tests."
55
- member_match_request_resource = FHIR.from_contents(no_member_match_request)
51
+ verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@36'
56
52
 
57
- fhir_operation('/Patient/$member-match', body: member_match_request_resource)
58
- assert_response_status(422)
59
- end
60
- end
53
+ run do
54
+ skip_if !no_member_match_request, 'No member match request inputted for no-match tests.'
55
+ member_match_request_resource = FHIR.from_contents(no_member_match_request)
61
56
 
57
+ fhir_operation('/Patient/$member-match', body: member_match_request_resource)
58
+ assert_response_status(422)
59
+ end
60
+ end
62
61
  end
63
62
  end
64
63
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module DaVinciPDexTestKit
4
2
  module PDexPayerServer
5
3
  # Factorized test for asserting a patient resource opeartion in a Capability Statement
@@ -17,7 +15,7 @@ module DaVinciPDexTestKit
17
15
  # options:
18
16
  # operation_name: operation to check for, i.e: 'member-match'
19
17
  # operation_url: operation definition canonical URL
20
- #
18
+ # client: fhir client name, default: :default
21
19
  # ==== Required Scratch
22
20
  #
23
21
  # (none)
@@ -27,7 +25,7 @@ module DaVinciPDexTestKit
27
25
  # Requires an Inferno fhir client configured.
28
26
  #
29
27
  class PatientOperationInCapabilityStatementValidation < Inferno::Test
30
- id :patient_operation_in_capability_statement_validation
28
+ id :pdex_patient_operation_in_cap_stmt_validation
31
29
 
32
30
  description %{
33
31
  The [CapabilityStatement](https://hl7.org/fhir/R4/capabilitystatement.html) must declare support for the
@@ -38,21 +36,23 @@ module DaVinciPDexTestKit
38
36
  The operation shall only be declared in one object in the `rest` array.
39
37
  }
40
38
 
39
+ verifies_requirements 'hl7.fhir.us.davinci-pdex_2.0.0@30'
40
+
41
41
  run do
42
- fhir_get_capability_statement
42
+ fhir_get_capability_statement(client: config.options.fetch(:client, :default))
43
43
 
44
- assert_response_status(200)
45
- assert_resource_type(:capability_statement)
44
+ assert_response_status(200)
45
+ assert_resource_type(:capability_statement)
46
46
 
47
- assert(
48
- resource.rest&.one? do |rest_metadata|
49
- rest_metadata.resource&.find{|resource_metadata| resource_metadata.type == 'Patient'}
50
- &.operation&.any? do |operation_metadata|
51
- operation_metadata.name == config.options[:operation_name] &&
52
- operation_metadata.definition == config.options[:operation_url]
53
- end
54
- end
55
- )
47
+ assert(
48
+ resource.rest&.one? do |rest_metadata|
49
+ rest_metadata.resource&.find { |resource_metadata| resource_metadata.type == 'Patient' }
50
+ &.operation&.any? do |operation_metadata|
51
+ operation_metadata.name == config.options[:operation_name] &&
52
+ operation_metadata.definition == config.options[:operation_url]
53
+ end
54
+ end
55
+ )
56
56
  end
57
57
  end
58
58
  end