davinci_us_drug_formulary_test_kit 0.9.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.
- checksums.yaml +7 -0
- data/LICENSE +201 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/capability_statement/conformance_support_test.rb +41 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/capability_statement/fhir_version_test.rb +15 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/capability_statement/instantiate_test.rb +19 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/capability_statement/json_support_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/capability_statement/profile_support_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/custom_groups/v2.0.1/capability_statement_group.rb +78 -0
- data/lib/davinci_us_drug_formulary_test_kit/date_search_validation.rb +121 -0
- data/lib/davinci_us_drug_formulary_test_kit/fhir_resource_navigation.rb +155 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_code_search_test.rb +54 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_drug_tier_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_formulary_include_search_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_formulary_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_id_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_lastupdated_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_must_support_test.rb +46 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_period_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_pharmacy_benefit_type_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_read_test.rb +26 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_reference_resolution_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_status_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_subject_include_search_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_subject_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_validation_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/metadata.yml +292 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic_group.rb +107 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_coverage_area_search_test.rb +45 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_coverage_type_search_test.rb +45 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_formulary_coverage_search_test.rb +45 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_id_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_identifier_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_lastupdated_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_must_support_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_name_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_period_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_read_test.rb +26 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_status_search_test.rb +53 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_type_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/formulary_validation_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary/metadata.yml +278 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/formulary_group.rb +104 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_address_city_search_test.rb +44 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_address_postalcode_search_test.rb +44 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_address_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_address_state_search_test.rb +44 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_id_search_test.rb +56 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_lastupdated_search_test.rb +44 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_must_support_test.rb +37 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_read_test.rb +26 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/location_validation_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location/metadata.yml +177 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/location_group.rb +92 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_code_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_doseform_search_test.rb +45 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_drug_name_search_test.rb +44 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_id_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_lastupdated_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_must_support_test.rb +47 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_read_test.rb +26 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_status_search_test.rb +53 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/medication_knowledge_validation_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge/metadata.yml +214 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/medication_knowledge_group.rb +91 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/metadata.yml +1192 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/metadata.yml +371 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_coverage_area_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_coverage_type_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_formulary_coverage_include_search_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_formulary_coverage_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_id_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_identifier_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_lastupdated_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_must_support_test.rb +66 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_name_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_period_search_test.rb +42 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_read_test.rb +26 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_reference_resolution_test.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_status_search_test.rb +53 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_type_search_test.rb +43 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan/payer_insurance_plan_validation_test.rb +39 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/payer_insurance_plan_group.rb +108 -0
- data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/usdf_test_suite.rb +114 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/group_generator.rb +181 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/group_metadata.rb +79 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/group_metadata_extractor.rb +329 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/ig_loader.rb +77 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/ig_metadata.rb +33 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/ig_metadata_extractor.rb +40 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/ig_resources.rb +60 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/include_search_test_generator.rb +68 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/must_support_metadata_extractor.rb +384 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/must_support_test_generator.rb +117 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/naming.rb +28 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/read_test_generator.rb +92 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/reference_resolution_test_generator.rb +91 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/search_definition_metadata_extractor.rb +187 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/search_metadata_extractor.rb +59 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/search_test_generator.rb +270 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/suite_generator.rb +94 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/terminology_binding_metadata_extractor.rb +116 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/validation_test_generator.rb +102 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator/value_extractor.rb +113 -0
- data/lib/davinci_us_drug_formulary_test_kit/generator.rb +94 -0
- data/lib/davinci_us_drug_formulary_test_kit/igs/package/r4_search-parameters.json +65408 -0
- data/lib/davinci_us_drug_formulary_test_kit/igs/package.tgz +0 -0
- data/lib/davinci_us_drug_formulary_test_kit/must_support_test.rb +224 -0
- data/lib/davinci_us_drug_formulary_test_kit/read_test.rb +62 -0
- data/lib/davinci_us_drug_formulary_test_kit/reference_resolution_test.rb +174 -0
- data/lib/davinci_us_drug_formulary_test_kit/request_logger.rb +46 -0
- data/lib/davinci_us_drug_formulary_test_kit/search_test.rb +767 -0
- data/lib/davinci_us_drug_formulary_test_kit/search_test_properties.rb +58 -0
- data/lib/davinci_us_drug_formulary_test_kit/validation_test.rb +56 -0
- data/lib/davinci_us_drug_formulary_test_kit/version.rb +5 -0
- data/lib/davinci_us_drug_formulary_test_kit.rb +1 -0
- metadata +245 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
module DaVinciUSDrugFormularyTestKit
|
|
2
|
+
module FHIRResourceNavigation
|
|
3
|
+
DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze
|
|
4
|
+
|
|
5
|
+
def resolve_path(elements, path)
|
|
6
|
+
elements = Array.wrap(elements)
|
|
7
|
+
return elements if path.blank?
|
|
8
|
+
|
|
9
|
+
paths = path.split(/(?<!hl7)\./)
|
|
10
|
+
segment = paths.first
|
|
11
|
+
remaining_path = paths.drop(1).join('.')
|
|
12
|
+
|
|
13
|
+
elements.flat_map do |element|
|
|
14
|
+
child = get_next_value(element, segment)
|
|
15
|
+
resolve_path(child, remaining_path)
|
|
16
|
+
end.compact
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def find_a_value_at(element, path, include_dar: false, &block)
|
|
20
|
+
return nil if element.nil?
|
|
21
|
+
|
|
22
|
+
elements = Array.wrap(element)
|
|
23
|
+
|
|
24
|
+
if path.empty?
|
|
25
|
+
unless include_dar
|
|
26
|
+
elements = elements.reject do |el|
|
|
27
|
+
el.respond_to?(:extension) && el.extension.any? { |ext| ext.url == DAR_EXTENSION_URL }
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
return elements.find(&block) if block_given?
|
|
32
|
+
|
|
33
|
+
return elements.first
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
path_segments = path.split(/(?<!hl7)\./)
|
|
37
|
+
segment = path_segments.shift.delete_suffix('[x]').gsub(/^class$/, 'local_class').gsub('[x]:', ':').to_sym
|
|
38
|
+
|
|
39
|
+
no_elements_present =
|
|
40
|
+
elements.none? do |element|
|
|
41
|
+
child = get_next_value(element, segment)
|
|
42
|
+
|
|
43
|
+
child.present? || child == false
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
return nil if no_elements_present
|
|
47
|
+
|
|
48
|
+
remaining_path = path_segments.join('.')
|
|
49
|
+
|
|
50
|
+
elements.each do |element|
|
|
51
|
+
child = get_next_value(element, segment)
|
|
52
|
+
element_found =
|
|
53
|
+
if block_given?
|
|
54
|
+
find_a_value_at(child, remaining_path, include_dar:, &block)
|
|
55
|
+
else
|
|
56
|
+
find_a_value_at(child, remaining_path, include_dar:)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
return element_found if element_found.present? || element_found == false
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
nil
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def get_next_value(element, property)
|
|
66
|
+
extension_url = property[/(?<=where\(url=').*(?='\))/]
|
|
67
|
+
|
|
68
|
+
if extension_url.present?
|
|
69
|
+
element.url == extension_url ? element : nil
|
|
70
|
+
elsif property.to_s.include?(':') && !property.to_s.include?('url')
|
|
71
|
+
find_slice_via_discriminator(element, property)
|
|
72
|
+
|
|
73
|
+
else
|
|
74
|
+
element.send(property)
|
|
75
|
+
end
|
|
76
|
+
rescue NoMethodError
|
|
77
|
+
nil
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def find_slice_via_discriminator(element, property)
|
|
81
|
+
element_name = property.to_s.split(':')[0].gsub(/^class$/, 'local_class')
|
|
82
|
+
slice_name = property.to_s.split(':')[1].gsub(/^class$/, 'local_class')
|
|
83
|
+
if metadata.present?
|
|
84
|
+
slice_by_name = metadata.must_supports[:slices].find { |slice| slice[:slice_name] == slice_name }
|
|
85
|
+
discriminator = slice_by_name[:discriminator]
|
|
86
|
+
slices = Array.wrap(element.send(element_name))
|
|
87
|
+
slices.find do |slice|
|
|
88
|
+
case discriminator[:type]
|
|
89
|
+
when 'patternCodeableConcept'
|
|
90
|
+
slice_value = discriminator[:path].present? ? slice.send((discriminator[:path]).to_s).coding : slice.coding
|
|
91
|
+
slice_value.any? { |coding| coding.code == discriminator[:code] && coding.system == discriminator[:system] }
|
|
92
|
+
when 'patternCoding'
|
|
93
|
+
slice_value = discriminator[:path].present? ? slice.send(discriminator[:path]) : slice
|
|
94
|
+
slice_value.code == discriminator[:code] && slice_value.system == discriminator[:system]
|
|
95
|
+
when 'patternIdentifier'
|
|
96
|
+
slice.identifier.system == discriminator[:system]
|
|
97
|
+
when 'value'
|
|
98
|
+
values = discriminator[:values].map { |value| value.merge(path: value[:path].split('.')) }
|
|
99
|
+
verify_slice_by_values(slice, values)
|
|
100
|
+
when 'type'
|
|
101
|
+
case discriminator[:code]
|
|
102
|
+
when 'Date'
|
|
103
|
+
begin
|
|
104
|
+
Date.parse(slice)
|
|
105
|
+
rescue ArgumentError
|
|
106
|
+
false
|
|
107
|
+
end
|
|
108
|
+
when 'DateTime'
|
|
109
|
+
begin
|
|
110
|
+
DateTime.parse(slice)
|
|
111
|
+
rescue ArgumentError
|
|
112
|
+
false
|
|
113
|
+
end
|
|
114
|
+
when 'String'
|
|
115
|
+
slice.is_a? String
|
|
116
|
+
else
|
|
117
|
+
slice.is_a? FHIR.const_get(discriminator[:code])
|
|
118
|
+
end
|
|
119
|
+
when 'requiredBinding'
|
|
120
|
+
discriminator[:path].present? ? slice.send((discriminator[:path]).to_s).coding : slice.coding
|
|
121
|
+
slice_value { |coding| discriminator[:values].include?(coding.code) }
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
else
|
|
125
|
+
# TODO: Error handling for if this file doesn't have access to metadata for some reason (begin/rescue with StandardError?)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def verify_slice_by_values(element, value_definitions)
|
|
130
|
+
path_prefixes = value_definitions.map { |value_definition| value_definition[:path].first }.uniq
|
|
131
|
+
path_prefixes.all? do |path_prefix|
|
|
132
|
+
value_definitions_for_path =
|
|
133
|
+
value_definitions
|
|
134
|
+
.select { |value_definition| value_definition[:path].first == path_prefix }
|
|
135
|
+
.each { |value_definition| value_definition[:path].shift }
|
|
136
|
+
find_a_value_at(element, path_prefix) do |el_found|
|
|
137
|
+
child_element_value_definitions, current_element_value_definitions =
|
|
138
|
+
value_definitions_for_path.partition { |value_definition| value_definition[:path].present? }
|
|
139
|
+
|
|
140
|
+
current_element_values_match =
|
|
141
|
+
current_element_value_definitions
|
|
142
|
+
.all? { |value_definition| value_definition[:value] == el_found }
|
|
143
|
+
|
|
144
|
+
child_element_values_match =
|
|
145
|
+
if child_element_value_definitions.present?
|
|
146
|
+
verify_slice_by_values(el_found, child_element_value_definitions)
|
|
147
|
+
else
|
|
148
|
+
true
|
|
149
|
+
end
|
|
150
|
+
current_element_values_match && child_element_values_match
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicCodeSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by code'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
code on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
Because this is the first search of the sequence, resources in the
|
|
17
|
+
response will be used for subsequent tests.
|
|
18
|
+
|
|
19
|
+
Additionally, this test will check that GET and POST search methods
|
|
20
|
+
return the same number of results. Search by POST is required by the
|
|
21
|
+
FHIR R4 specification, and these tests interpret search by GET as a
|
|
22
|
+
requirement of US Core v2.0.1.
|
|
23
|
+
|
|
24
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
25
|
+
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
id :usdf_v201_basic_code_search_test
|
|
29
|
+
|
|
30
|
+
def self.properties
|
|
31
|
+
@properties ||= SearchTestProperties.new(
|
|
32
|
+
first_search: true,
|
|
33
|
+
fixed_value_search: true,
|
|
34
|
+
resource_type: 'Basic',
|
|
35
|
+
search_param_names: ['code'],
|
|
36
|
+
token_search_params: ['code'],
|
|
37
|
+
test_post_search: true
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.metadata
|
|
42
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def scratch_resources
|
|
46
|
+
scratch[:basic_resources] ||= {}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
run do
|
|
50
|
+
run_search_test
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_drug_tier_search_test.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicDrugTierSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by drug-tier'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
drug-tier on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic_drug_tier_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['drug-tier'],
|
|
26
|
+
token_search_params: ['drug-tier']
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.metadata
|
|
31
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def scratch_resources
|
|
35
|
+
scratch[:basic_resources] ||= {}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
run do
|
|
39
|
+
run_search_test
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicFormularyIncludeSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns InsurancePlan resources from Basic search by _include=formulary'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL be capable of supporting _includes for formulary.
|
|
12
|
+
|
|
13
|
+
This test will perform a search using _include=formulary and
|
|
14
|
+
will pass if the referenced InsurancePlan is included in the response.
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
id :usdf_v201_basic_formulary_include_search_test
|
|
18
|
+
|
|
19
|
+
def self.properties
|
|
20
|
+
@properties ||= SearchTestProperties.new(
|
|
21
|
+
resource_type: 'Basic',
|
|
22
|
+
search_param_names: ["code"],
|
|
23
|
+
include_param: 'formulary'
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.metadata
|
|
28
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml')))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.include_metadata
|
|
32
|
+
@include_metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, '..', 'InsurancePlan', 'metadata.yml'), aliases: true))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
run_include_search_test
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_formulary_search_test.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicFormularySearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by formulary'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
formulary on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic_formulary_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['formulary'],
|
|
26
|
+
test_reference_variants: true
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.metadata
|
|
31
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def scratch_resources
|
|
35
|
+
scratch[:basic_resources] ||= {}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
run do
|
|
39
|
+
run_search_test
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicIdSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by _id'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
_id on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic__id_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['_id']
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.metadata
|
|
30
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def scratch_resources
|
|
34
|
+
scratch[:basic_resources] ||= {}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
run do
|
|
38
|
+
run_search_test
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_lastupdated_search_test.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicLastupdatedSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by _lastUpdated'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
_lastUpdated on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic__lastUpdated_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['_lastUpdated']
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.metadata
|
|
30
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def scratch_resources
|
|
34
|
+
scratch[:basic_resources] ||= {}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
run do
|
|
38
|
+
run_search_test
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require_relative '../../../must_support_test'
|
|
2
|
+
|
|
3
|
+
module DaVinciUSDrugFormularyTestKit
|
|
4
|
+
module DaVinciUSDrugFormularyV201
|
|
5
|
+
class BasicMustSupportTest < Inferno::Test
|
|
6
|
+
include DaVinciUSDrugFormularyTestKit::MustSupportTest
|
|
7
|
+
|
|
8
|
+
title 'All must support elements are provided in the Basic resources returned'
|
|
9
|
+
description %(
|
|
10
|
+
US Drug Formulary Responders SHALL be capable of populating all data elements as
|
|
11
|
+
part of the query results as specified by the US Drug Formulary Capability
|
|
12
|
+
Statement. This test will look through the Basic resources
|
|
13
|
+
found previously for the following must support elements:
|
|
14
|
+
|
|
15
|
+
* Basic.extension:usdf-AvailabilityPeriod-extension
|
|
16
|
+
* Basic.extension:usdf-AvailabilityStatus-extension
|
|
17
|
+
* Basic.extension:usdf-DrugTierID-extension
|
|
18
|
+
* Basic.extension:usdf-FormularyReference-extension
|
|
19
|
+
* Basic.extension:usdf-PharmacyBenefitType-extension
|
|
20
|
+
* Basic.extension:usdf-PriorAuthorization-extension
|
|
21
|
+
* Basic.extension:usdf-QuantityLimit-extension
|
|
22
|
+
* Basic.extension:usdf-StepTherapyLimit-extension
|
|
23
|
+
* Basic.meta.lastUpdated
|
|
24
|
+
* Basic.subject
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
id :usdf_v201_basic_must_support_test
|
|
28
|
+
|
|
29
|
+
def resource_type
|
|
30
|
+
'Basic'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.metadata
|
|
34
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def scratch_resources
|
|
38
|
+
scratch[:basic_resources] ||= {}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
run do
|
|
42
|
+
perform_must_support_test(all_scratch_resources)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_period_search_test.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicPeriodSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by period'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
period on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic_period_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['period']
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.metadata
|
|
30
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def scratch_resources
|
|
34
|
+
scratch[:basic_resources] ||= {}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
run do
|
|
38
|
+
run_search_test
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicPharmacyBenefitTypeSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by pharmacy-benefit-type'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
pharmacy-benefit-type on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic_pharmacy_benefit_type_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['pharmacy-benefit-type'],
|
|
26
|
+
token_search_params: ['pharmacy-benefit-type']
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.metadata
|
|
31
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def scratch_resources
|
|
35
|
+
scratch[:basic_resources] ||= {}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
run do
|
|
39
|
+
run_search_test
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative '../../../read_test'
|
|
2
|
+
|
|
3
|
+
module DaVinciUSDrugFormularyTestKit
|
|
4
|
+
module USDFV201
|
|
5
|
+
class BasicReadTest < Inferno::Test
|
|
6
|
+
include DaVinciUSDrugFormularyTestKit::ReadTest
|
|
7
|
+
|
|
8
|
+
title 'Server returns correct Basic resource from Basic read interaction'
|
|
9
|
+
description 'A server SHALL support the Basic read interaction.'
|
|
10
|
+
|
|
11
|
+
id :usdf_v201_basic_read_test
|
|
12
|
+
|
|
13
|
+
def resource_type
|
|
14
|
+
'Basic'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def scratch_resources
|
|
18
|
+
scratch[:basic_resources] ||= {}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
run do
|
|
22
|
+
perform_read_test(all_scratch_resources)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../../../reference_resolution_test'
|
|
2
|
+
|
|
3
|
+
module DaVinciUSDrugFormularyTestKit
|
|
4
|
+
module DaVinciUSDrugFormularyV201
|
|
5
|
+
class BasicReferenceResolutionTest < Inferno::Test
|
|
6
|
+
include DaVinciUSDrugFormularyTestKit::ReferenceResolutionTest
|
|
7
|
+
|
|
8
|
+
title 'MustSupport references within Basic resources are valid'
|
|
9
|
+
description %(
|
|
10
|
+
This test will attempt to read external references provided within elements
|
|
11
|
+
marked as 'MustSupport', if any are available.
|
|
12
|
+
|
|
13
|
+
It verifies that at least one external reference for each MustSupport Reference element
|
|
14
|
+
can be accessed by the test client, and conforms to corresponding US Core profile.
|
|
15
|
+
|
|
16
|
+
Elements which may provide external references include:
|
|
17
|
+
|
|
18
|
+
* Basic.subject
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
id :usdf_v201_basic_reference_resolution_test
|
|
22
|
+
|
|
23
|
+
def resource_type
|
|
24
|
+
'Basic'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.metadata
|
|
28
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def scratch_resources
|
|
32
|
+
scratch[:basic_resources] ||= {}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
run do
|
|
36
|
+
perform_reference_resolution_test(scratch_resources[:all])
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/davinci_us_drug_formulary_test_kit/generated/v2.0.1/basic/basic_status_search_test.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative '../../../search_test'
|
|
2
|
+
require_relative '../../../generator/group_metadata'
|
|
3
|
+
|
|
4
|
+
module DaVinciUSDrugFormularyTestKit
|
|
5
|
+
module DaVinciUSDrugFormularyV201
|
|
6
|
+
class BasicStatusSearchTest < Inferno::Test
|
|
7
|
+
include DaVinciUSDrugFormularyTestKit::SearchTest
|
|
8
|
+
|
|
9
|
+
title 'Server returns valid results for Basic search by status'
|
|
10
|
+
description %(
|
|
11
|
+
A server SHALL support searching by
|
|
12
|
+
status on the Basic resource. This test
|
|
13
|
+
will pass if resources are returned and match the search criteria. If
|
|
14
|
+
none are returned, the test is skipped.
|
|
15
|
+
|
|
16
|
+
[US Drug Formulary](http://hl7.org/fhir/us/davinci-drug-formulary/STU2/CapabilityStatement-usdf-server.html)
|
|
17
|
+
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
id :usdf_v201_basic_status_search_test
|
|
21
|
+
|
|
22
|
+
def self.properties
|
|
23
|
+
@properties ||= SearchTestProperties.new(
|
|
24
|
+
resource_type: 'Basic',
|
|
25
|
+
search_param_names: ['status']
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.metadata
|
|
30
|
+
@metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def scratch_resources
|
|
34
|
+
scratch[:basic_resources] ||= {}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
run do
|
|
38
|
+
run_search_test
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|