us_core_test_kit 0.10.0 → 0.11.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 +4 -4
- data/config/presets/inferno_reference_server_311_preset.json +7 -35
- data/config/presets/inferno_reference_server_400_preset.json +7 -35
- data/config/presets/inferno_reference_server_501_preset.json +7 -35
- data/config/presets/inferno_reference_server_610_preset.json +25 -35
- data/config/presets/inferno_reference_server_700_preset.json +25 -35
- data/lib/us_core_test_kit/custom_groups/base_smart_granular_scopes_group.rb +20 -20
- data/lib/us_core_test_kit/custom_groups/smart_app_launch_group.rb +6 -42
- data/lib/us_core_test_kit/custom_groups/smart_ehr_launch_stu1.rb +26 -12
- data/lib/us_core_test_kit/custom_groups/smart_ehr_launch_stu2.rb +26 -12
- data/lib/us_core_test_kit/custom_groups/smart_ehr_launch_stu2_2.rb +26 -12
- data/lib/us_core_test_kit/custom_groups/smart_scopes_constants.rb +6 -0
- data/lib/us_core_test_kit/custom_groups/smart_standalone_launch_stu1_group.rb +27 -13
- data/lib/us_core_test_kit/custom_groups/smart_standalone_launch_stu2_2_group.rb +27 -13
- data/lib/us_core_test_kit/custom_groups/smart_standalone_launch_stu2_group.rb +27 -13
- data/lib/us_core_test_kit/custom_groups/v3.1.1/capability_statement_group.rb +1 -9
- data/lib/us_core_test_kit/custom_groups/v3.1.1/resource_support_test.rb +1 -1
- data/lib/us_core_test_kit/custom_groups/v4.0.0/capability_statement_group.rb +1 -9
- data/lib/us_core_test_kit/custom_groups/v5.0.1/capability_statement_group.rb +1 -9
- data/lib/us_core_test_kit/custom_groups/v6.1.0/capability_statement_group.rb +1 -9
- data/lib/us_core_test_kit/custom_groups/v6.1.0/smart_granular_scopes_group.rb +22 -6
- data/lib/us_core_test_kit/custom_groups/v7.0.0/capability_statement_group.rb +1 -9
- data/lib/us_core_test_kit/custom_groups/v7.0.0/smart_granular_scopes_group.rb +22 -6
- data/lib/us_core_test_kit/generated/v3.1.1/us_core_test_suite.rb +7 -5
- data/lib/us_core_test_kit/generated/v4.0.0/us_core_test_suite.rb +7 -5
- data/lib/us_core_test_kit/generated/v5.0.1/us_core_test_suite.rb +7 -5
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes1_group.rb +3 -3
- data/lib/us_core_test_kit/generated/v6.1.0/granular_scopes2_group.rb +3 -3
- data/lib/us_core_test_kit/generated/v6.1.0/us_core_test_suite.rb +7 -5
- data/lib/us_core_test_kit/generated/v7.0.0/granular_scopes1_group.rb +3 -3
- data/lib/us_core_test_kit/generated/v7.0.0/granular_scopes2_group.rb +3 -3
- data/lib/us_core_test_kit/generated/v7.0.0/us_core_test_suite.rb +7 -5
- data/lib/us_core_test_kit/generator/templates/granular_scope_group.rb.erb +3 -3
- data/lib/us_core_test_kit/generator/templates/suite.rb.erb +7 -5
- data/lib/us_core_test_kit/granular_scope_search_test.rb +2 -1
- data/lib/us_core_test_kit/search_test.rb +26 -50
- data/lib/us_core_test_kit/version.rb +2 -2
- metadata +6 -6
@@ -19,9 +19,9 @@ based on the following granular scopes:
|
|
19
19
|
|
20
20
|
)
|
21
21
|
|
22
|
-
input :
|
22
|
+
input :granular_scopes_1_auth_info,
|
23
23
|
title: 'SMART Credentials for Granular Scopes 1',
|
24
|
-
type: :
|
24
|
+
type: :auth_info,
|
25
25
|
locked: true
|
26
26
|
|
27
27
|
config(
|
@@ -40,7 +40,7 @@ based on the following granular scopes:
|
|
40
40
|
)
|
41
41
|
|
42
42
|
fhir_client do
|
43
|
-
|
43
|
+
auth_info :granular_scopes_1_auth_info
|
44
44
|
url :url
|
45
45
|
end
|
46
46
|
|
@@ -19,9 +19,9 @@ based on the following granular scopes:
|
|
19
19
|
|
20
20
|
)
|
21
21
|
|
22
|
-
input :
|
22
|
+
input :granular_scopes_2_auth_info,
|
23
23
|
title: 'SMART Credentials for Granular Scopes 2',
|
24
|
-
type: :
|
24
|
+
type: :auth_info,
|
25
25
|
locked: true
|
26
26
|
|
27
27
|
config(
|
@@ -40,7 +40,7 @@ based on the following granular scopes:
|
|
40
40
|
)
|
41
41
|
|
42
42
|
fhir_client do
|
43
|
-
|
43
|
+
auth_info :granular_scopes_2_auth_info
|
44
44
|
url :url
|
45
45
|
end
|
46
46
|
|
@@ -90,7 +90,8 @@ module USCoreTestKit
|
|
90
90
|
%r{Unknown Code System 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags'}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
91
91
|
%r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
92
92
|
/\A\S+: \S+: URL value '.*' does not resolve/,
|
93
|
-
%r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'} # Known issue with the Pulse Oximetry Profile
|
93
|
+
%r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'}, # Known issue with the Pulse Oximetry Profile
|
94
|
+
%r{Slice 'Observation\.value\[x\]:valueQuantity': a matching slice is required, but not found \(from (http://hl7\.org/fhir/StructureDefinition/bmi\|4\.0\.1|http://hl7\.org/fhir/StructureDefinition/bmi\%7C4\.0\.1)\)}
|
94
95
|
].freeze
|
95
96
|
|
96
97
|
VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
|
@@ -125,6 +126,7 @@ module USCoreTestKit
|
|
125
126
|
|
126
127
|
suite_option :smart_app_launch_version,
|
127
128
|
title: 'SMART App Launch Version',
|
129
|
+
default: USCoreOptions::SMART_2,
|
128
130
|
list_options: [
|
129
131
|
{
|
130
132
|
label: 'SMART App Launch 1.0.0',
|
@@ -132,7 +134,7 @@ module USCoreTestKit
|
|
132
134
|
},
|
133
135
|
{
|
134
136
|
label: 'SMART App Launch 2.0.0',
|
135
|
-
value: USCoreOptions::SMART_2
|
137
|
+
value: USCoreOptions::SMART_2,
|
136
138
|
},
|
137
139
|
{
|
138
140
|
label: 'SMART App Launch 2.2.0',
|
@@ -149,14 +151,14 @@ module USCoreTestKit
|
|
149
151
|
required_suite_options: USCoreOptions::SMART_2_2_REQUIREMENT
|
150
152
|
|
151
153
|
group do
|
152
|
-
input :
|
154
|
+
input :smart_auth_info,
|
153
155
|
title: 'OAuth Credentials',
|
154
|
-
type: :
|
156
|
+
type: :auth_info,
|
155
157
|
optional: true
|
156
158
|
|
157
159
|
fhir_client do
|
158
160
|
url :url
|
159
|
-
|
161
|
+
auth_info :smart_auth_info
|
160
162
|
end
|
161
163
|
|
162
164
|
title 'US Core FHIR API'
|
@@ -10,9 +10,9 @@ module USCoreTestKit
|
|
10
10
|
<%= description %>
|
11
11
|
)
|
12
12
|
|
13
|
-
input :granular_scopes_<%= group_number %>
|
13
|
+
input :granular_scopes_<%= group_number %>_auth_info,
|
14
14
|
title: 'SMART Credentials for Granular Scopes <%= group_number %>',
|
15
|
-
type: :
|
15
|
+
type: :auth_info,
|
16
16
|
locked: true
|
17
17
|
|
18
18
|
config(
|
@@ -31,7 +31,7 @@ module USCoreTestKit
|
|
31
31
|
)
|
32
32
|
|
33
33
|
fhir_client do
|
34
|
-
|
34
|
+
auth_info :granular_scopes_<%= group_number %>_auth_info
|
35
35
|
url :url
|
36
36
|
end
|
37
37
|
<% group_id_list.each do |group_id| %>
|
@@ -41,7 +41,8 @@ module USCoreTestKit
|
|
41
41
|
%r{Unknown Code System 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags'}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
42
42
|
%r{URL value 'http://hl7.org/fhir/us/core/CodeSystem/us-core-tags' does not resolve}, # Validator has an issue with this US Core 5 code system in US Core 6 resource
|
43
43
|
/\A\S+: \S+: URL value '.*' does not resolve/,
|
44
|
-
%r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'} # Known issue with the Pulse Oximetry Profile
|
44
|
+
%r{Observation.component\[\d+\].value.ofType\(Quantity\): The code provided \(http://unitsofmeasure.org#L/min\) was not found in the value set 'Vital Signs Units'}, # Known issue with the Pulse Oximetry Profile
|
45
|
+
%r{Slice 'Observation\.value\[x\]:valueQuantity': a matching slice is required, but not found \(from (http://hl7\.org/fhir/StructureDefinition/bmi\|4\.0\.1|http://hl7\.org/fhir/StructureDefinition/bmi\%7C4\.0\.1)\)}
|
45
46
|
].freeze
|
46
47
|
<% if version_specific_message_filters.empty? %>
|
47
48
|
VERSION_SPECIFIC_MESSAGE_FILTERS = [].freeze
|
@@ -80,6 +81,7 @@ module USCoreTestKit
|
|
80
81
|
|
81
82
|
suite_option :smart_app_launch_version,
|
82
83
|
title: 'SMART App Launch Version',
|
84
|
+
default: USCoreOptions::SMART_2,
|
83
85
|
list_options: [
|
84
86
|
{
|
85
87
|
label: 'SMART App Launch 1.0.0',
|
@@ -87,7 +89,7 @@ module USCoreTestKit
|
|
87
89
|
},
|
88
90
|
{
|
89
91
|
label: 'SMART App Launch 2.0.0',
|
90
|
-
value: USCoreOptions::SMART_2
|
92
|
+
value: USCoreOptions::SMART_2,
|
91
93
|
},
|
92
94
|
{
|
93
95
|
label: 'SMART App Launch 2.2.0',
|
@@ -104,14 +106,14 @@ module USCoreTestKit
|
|
104
106
|
required_suite_options: USCoreOptions::SMART_2_2_REQUIREMENT<% end %>
|
105
107
|
|
106
108
|
group do
|
107
|
-
input :
|
109
|
+
input :smart_auth_info,
|
108
110
|
title: 'OAuth Credentials',
|
109
|
-
type: :
|
111
|
+
type: :auth_info,
|
110
112
|
optional: true
|
111
113
|
|
112
114
|
fhir_client do
|
113
115
|
url :url
|
114
|
-
|
116
|
+
auth_info :smart_auth_info
|
115
117
|
end
|
116
118
|
|
117
119
|
title 'US Core FHIR API'
|
@@ -28,7 +28,8 @@ module USCoreTestKit
|
|
28
28
|
if request.status != 200
|
29
29
|
[]
|
30
30
|
else
|
31
|
-
fetch_all_bundled_resources
|
31
|
+
fetch_all_bundled_resources(resource_type: resource_type, bundle: resource)
|
32
|
+
.select { |resource| resource.resourceType == resource_type }
|
32
33
|
end
|
33
34
|
|
34
35
|
mismatched_ids = mismatched_resource_ids(found_resources)
|
@@ -69,7 +69,7 @@ module USCoreTestKit
|
|
69
69
|
|
70
70
|
# TODO: check that only provenance resources for resources matching
|
71
71
|
# granular scopes returned
|
72
|
-
|
72
|
+
fetch_and_assert_all_bundled_resources(additional_resource_types: ['Provenance'], params:)
|
73
73
|
.select { |resource| resource.resourceType == 'Provenance' }
|
74
74
|
end
|
75
75
|
end
|
@@ -104,7 +104,7 @@ module USCoreTestKit
|
|
104
104
|
check_search_response
|
105
105
|
|
106
106
|
resources_returned =
|
107
|
-
|
107
|
+
fetch_and_assert_all_bundled_resources(params:).select { |resource| resource.resourceType == resource_type }
|
108
108
|
|
109
109
|
return [] if resources_returned.blank?
|
110
110
|
|
@@ -139,7 +139,7 @@ module USCoreTestKit
|
|
139
139
|
|
140
140
|
check_search_response
|
141
141
|
|
142
|
-
post_search_resources =
|
142
|
+
post_search_resources = fetch_and_assert_all_bundled_resources.select { |resource| resource.resourceType == resource_type }
|
143
143
|
|
144
144
|
filter_conditions(post_search_resources) if resource_type == 'Condition' && metadata.version == 'v5.0.1'
|
145
145
|
filter_devices(post_search_resources) if resource_type == 'Device'
|
@@ -247,7 +247,7 @@ module USCoreTestKit
|
|
247
247
|
|
248
248
|
search_and_check_response(params_with_comparator)
|
249
249
|
|
250
|
-
comparator_resources =
|
250
|
+
comparator_resources = fetch_and_assert_all_bundled_resources(params: params_with_comparator).each do |resource|
|
251
251
|
check_resource_against_params(resource, params_with_comparator) if resource.resourceType == resource_type
|
252
252
|
end
|
253
253
|
end
|
@@ -264,7 +264,7 @@ module USCoreTestKit
|
|
264
264
|
search_and_check_response(new_search_params)
|
265
265
|
|
266
266
|
reference_with_type_resources =
|
267
|
-
|
267
|
+
fetch_and_assert_all_bundled_resources(params: new_search_params)
|
268
268
|
.select { |resource| resource.resourceType == resource_type }
|
269
269
|
|
270
270
|
filter_conditions(reference_with_type_resources) if resource_type == 'Condition' && metadata.version == 'v5.0.1'
|
@@ -290,7 +290,7 @@ module USCoreTestKit
|
|
290
290
|
search_and_check_response(search_params)
|
291
291
|
|
292
292
|
resources_returned =
|
293
|
-
|
293
|
+
fetch_and_assert_all_bundled_resources(params: search_params)
|
294
294
|
.select { |resource| resource.resourceType == resource_type }
|
295
295
|
|
296
296
|
assert resources_returned.present?, "No resources were returned when searching by `system|code`"
|
@@ -361,7 +361,7 @@ module USCoreTestKit
|
|
361
361
|
search_and_check_response(search_params)
|
362
362
|
|
363
363
|
resources_returned =
|
364
|
-
|
364
|
+
fetch_and_assert_all_bundled_resources(params: search_params)
|
365
365
|
.select { |resource| resource.resourceType == resource_type }
|
366
366
|
|
367
367
|
multiple_or_search_params.each do |param_name|
|
@@ -409,7 +409,7 @@ module USCoreTestKit
|
|
409
409
|
search_and_check_response(search_params)
|
410
410
|
|
411
411
|
medications =
|
412
|
-
|
412
|
+
fetch_and_assert_all_bundled_resources(params: search_params)
|
413
413
|
.select { |resource| resource.resourceType == 'Medication' }
|
414
414
|
assert medications.present?, 'No Medications were included in the search results'
|
415
415
|
|
@@ -546,56 +546,32 @@ module USCoreTestKit
|
|
546
546
|
msg + ". Please use patients with more information"
|
547
547
|
end
|
548
548
|
|
549
|
-
def
|
549
|
+
def fetch_and_assert_all_bundled_resources(
|
550
|
+
resource_type: self.resource_type,
|
550
551
|
reply_handler: nil,
|
551
552
|
max_pages: 20,
|
552
553
|
additional_resource_types: [],
|
553
|
-
resource_type: self.resource_type,
|
554
554
|
params: nil
|
555
555
|
)
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
until bundle.nil? || page_count == max_pages
|
561
|
-
resources += bundle&.entry&.map { |entry| entry&.resource }
|
562
|
-
next_bundle_link = bundle&.link&.find { |link| link.relation == 'next' }&.url
|
563
|
-
reply_handler&.call(response)
|
564
|
-
|
565
|
-
break if next_bundle_link.blank?
|
566
|
-
|
567
|
-
reply = fhir_client.raw_read_url(next_bundle_link)
|
568
|
-
|
569
|
-
store_request('outgoing', tags: tags(params)) { reply }
|
570
|
-
error_message = cant_resolve_next_bundle_message(next_bundle_link)
|
571
|
-
|
572
|
-
assert_response_status(200)
|
573
|
-
assert_valid_json(reply.body, error_message)
|
574
|
-
|
575
|
-
bundle = fhir_client.parse_reply(FHIR::Bundle, fhir_client.default_format, reply)
|
576
|
-
|
577
|
-
page_count += 1
|
578
|
-
end
|
579
|
-
|
580
|
-
valid_resource_types = [resource_type, 'OperationOutcome'].concat(additional_resource_types)
|
581
|
-
valid_resource_types << 'Medication' if ['MedicationRequest', 'MedicationDispense'].include?(resource_type)
|
582
|
-
|
583
|
-
invalid_resource_types =
|
584
|
-
resources.reject { |entry| valid_resource_types.include? entry.resourceType }
|
585
|
-
.map(&:resourceType)
|
586
|
-
.uniq
|
556
|
+
tags = tags(params)
|
557
|
+
bundle = resource
|
558
|
+
additional_resource_types << 'Medication' if ['MedicationRequest', 'MedicationDispense'].include?(resource_type)
|
587
559
|
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
end
|
560
|
+
assert_handler = Proc.new do |response|
|
561
|
+
assert_response_status(200, response: response)
|
562
|
+
assert_valid_json(response[:body], "Could not resolve bundle as JSON: #{response[:body]}")
|
563
|
+
end
|
593
564
|
|
594
|
-
|
595
|
-
|
565
|
+
if reply_handler
|
566
|
+
reply_and_assert_handler = Proc.new do |response|
|
567
|
+
assert_handler.call(response)
|
568
|
+
reply_handler.call(response)
|
569
|
+
end
|
570
|
+
else
|
571
|
+
reply_and_assert_handler = assert_handler
|
572
|
+
end
|
596
573
|
|
597
|
-
|
598
|
-
"Could not resolve next bundle: #{link}"
|
574
|
+
fetch_all_bundled_resources(resource_type:, bundle:, reply_handler: reply_and_assert_handler, max_pages:, additional_resource_types:, tags:)
|
599
575
|
end
|
600
576
|
|
601
577
|
def search_param_value(name, resource, include_system: false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: us_core_test_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen MacVicar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inferno_core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.6.
|
19
|
+
version: 0.6.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.6.
|
26
|
+
version: 0.6.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: smart_app_launch_test_kit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.6.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: tls_test_kit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|