us_quality_core_test_kit 0.1.1 → 0.1.2
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/NOTICE.md +12 -0
- data/config/presets/{localhost_preset.json → inferno_reference_server_preset.json.erb} +2 -2
- data/lib/us_quality_core_test_kit/client/generator/example_client_generator.rb +0 -1
- data/lib/us_quality_core_test_kit/client/generator/tags_generator.rb +0 -1
- data/lib/us_quality_core_test_kit/client/server_proxy.rb +2 -6
- data/lib/us_quality_core_test_kit/date_search_validation.rb +122 -0
- data/lib/us_quality_core_test_kit/fhir_resource_navigation.rb +9 -0
- data/lib/us_quality_core_test_kit/generated/v0.5.0/devicenotrequested/devicenotrequested_validation_test.rb +3 -0
- data/lib/us_quality_core_test_kit/generated/v0.5.0/devicerequest/devicerequest_validation_test.rb +3 -0
- data/lib/us_quality_core_test_kit/generated/v0.5.0/patient/patient_validation_test.rb +4 -0
- data/lib/us_quality_core_test_kit/generated/v0.5.0/us_quality_core_test_suite.rb +1 -2
- data/lib/us_quality_core_test_kit/generator/group_generator.rb +69 -3
- data/lib/us_quality_core_test_kit/generator/group_metadata.rb +100 -4
- data/lib/us_quality_core_test_kit/generator/group_metadata_extractor.rb +184 -8
- data/lib/us_quality_core_test_kit/generator/ig_loader.rb +47 -3
- data/lib/us_quality_core_test_kit/generator/ig_metadata.rb +51 -2
- data/lib/us_quality_core_test_kit/generator/ig_metadata_extractor.rb +25 -6
- data/lib/us_quality_core_test_kit/generator/ig_resources.rb +27 -3
- data/lib/us_quality_core_test_kit/generator/must_support_metadata_extractor.rb +366 -9
- data/lib/us_quality_core_test_kit/generator/must_support_test_generator.rb +54 -3
- data/lib/us_quality_core_test_kit/generator/provenance_revinclude_search_test_generator.rb +149 -3
- data/lib/us_quality_core_test_kit/generator/read_test_generator.rb +54 -3
- data/lib/us_quality_core_test_kit/generator/reference_resolution_test_generator.rb +57 -3
- data/lib/us_quality_core_test_kit/generator/search_definition_metadata_extractor.rb +181 -5
- data/lib/us_quality_core_test_kit/generator/search_metadata_extractor.rb +61 -3
- data/lib/us_quality_core_test_kit/generator/search_test_generator.rb +186 -3
- data/lib/us_quality_core_test_kit/generator/suite_generator.rb +35 -8
- data/lib/us_quality_core_test_kit/generator/terminology_binding_metadata_extractor.rb +107 -3
- data/lib/us_quality_core_test_kit/generator/validation_test_generator.rb +83 -4
- data/lib/us_quality_core_test_kit/generator/value_extractor.rb +147 -3
- data/lib/us_quality_core_test_kit/must_support_test.rb +15 -3
- data/lib/us_quality_core_test_kit/primitive_type.rb +7 -0
- data/lib/us_quality_core_test_kit/read_test.rb +99 -4
- data/lib/us_quality_core_test_kit/reference_resolution_test.rb +164 -3
- data/lib/us_quality_core_test_kit/resource_search_param_checker.rb +138 -0
- data/lib/us_quality_core_test_kit/search_test.rb +681 -46
- data/lib/us_quality_core_test_kit/search_test_properties.rb +53 -3
- data/lib/us_quality_core_test_kit/validation_test.rb +51 -4
- data/lib/us_quality_core_test_kit/version.rb +2 -2
- data/lib/us_quality_core_test_kit/well_known_code_systems.rb +23 -0
- metadata +8 -23
|
@@ -1,8 +1,58 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'us_core_test_kit/search_test_properties'
|
|
4
|
-
|
|
5
3
|
module USQualityCoreTestKit
|
|
6
|
-
class SearchTestProperties
|
|
4
|
+
class SearchTestProperties
|
|
5
|
+
ATTRIBUTES = %i[
|
|
6
|
+
resource_type
|
|
7
|
+
search_param_names
|
|
8
|
+
first_search
|
|
9
|
+
fixed_value_search
|
|
10
|
+
saves_delayed_references
|
|
11
|
+
possible_status_search
|
|
12
|
+
test_medication_inclusion
|
|
13
|
+
token_search_params
|
|
14
|
+
test_reference_variants
|
|
15
|
+
params_with_comparators
|
|
16
|
+
multiple_or_search_params
|
|
17
|
+
test_post_search
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
ATTRIBUTES.each { |name| attr_reader name }
|
|
21
|
+
|
|
22
|
+
def initialize(**properties)
|
|
23
|
+
properties.each do |key, value|
|
|
24
|
+
raise StandardError, "Unkown search test property: #{key}" unless ATTRIBUTES.include?(key)
|
|
25
|
+
|
|
26
|
+
instance_variable_set(:"@#{key}", value)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def first_search?
|
|
31
|
+
!!first_search
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def fixed_value_search?
|
|
35
|
+
!!fixed_value_search
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def saves_delayed_references?
|
|
39
|
+
!!saves_delayed_references
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def possible_status_search?
|
|
43
|
+
!!possible_status_search
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_medication_inclusion?
|
|
47
|
+
!!test_medication_inclusion
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_reference_variants?
|
|
51
|
+
!!test_reference_variants
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_post_search?
|
|
55
|
+
!!test_post_search
|
|
56
|
+
end
|
|
7
57
|
end
|
|
8
58
|
end
|
|
@@ -1,10 +1,57 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'us_core_test_kit/validation_test'
|
|
4
|
-
|
|
5
3
|
module USQualityCoreTestKit
|
|
6
4
|
module ValidationTest
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
DAR_CODE_SYSTEM_URL = 'http://terminology.hl7.org/CodeSystem/data-absent-reason'
|
|
6
|
+
DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'
|
|
7
|
+
|
|
8
|
+
def perform_validation_test(resources,
|
|
9
|
+
profile_url,
|
|
10
|
+
profile_version,
|
|
11
|
+
skip_if_empty: true)
|
|
12
|
+
skip_if skip_if_empty && resources.blank?,
|
|
13
|
+
"No #{resource_type} resources conforming to the #{profile_url} profile were returned"
|
|
14
|
+
|
|
15
|
+
omit_if resources.blank?,
|
|
16
|
+
"No #{resource_type} resources provided so the #{profile_url} profile does not apply"
|
|
17
|
+
|
|
18
|
+
profile_with_version = "#{profile_url}|#{profile_version}"
|
|
19
|
+
resources.each do |resource|
|
|
20
|
+
resource_is_valid?(resource: resource, profile_url: profile_with_version)
|
|
21
|
+
check_for_dar(resource)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
errors_found = messages.any? { |message| message[:type] == 'error' }
|
|
25
|
+
|
|
26
|
+
assert !errors_found, "Resource does not conform to the profile #{profile_with_version}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def check_for_dar(resource)
|
|
30
|
+
unless scratch[:dar_code_found]
|
|
31
|
+
resource.each_element do |element, _meta, _path|
|
|
32
|
+
next unless element.is_a?(FHIR::Coding)
|
|
33
|
+
|
|
34
|
+
check_for_dar_code(element)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
return if scratch[:dar_extension_found]
|
|
39
|
+
|
|
40
|
+
check_for_dar_extension(resource)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def check_for_dar_code(coding)
|
|
44
|
+
return unless coding.code == 'unknown' && coding.system == DAR_CODE_SYSTEM_URL
|
|
45
|
+
|
|
46
|
+
scratch[:dar_code_found] = true
|
|
47
|
+
output dar_code_found: 'true'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def check_for_dar_extension(resource)
|
|
51
|
+
return unless resource.source_contents&.include? DAR_EXTENSION_URL
|
|
52
|
+
|
|
53
|
+
scratch[:dar_extension_found] = true
|
|
54
|
+
output dar_extension_found: 'true'
|
|
55
|
+
end
|
|
9
56
|
end
|
|
10
57
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module USQualityCoreTestKit
|
|
4
|
+
module WellKnownCodeSystems
|
|
5
|
+
HL7_CODE_SYSTEMS = [
|
|
6
|
+
'http://terminology.hl7.org/CodeSystem',
|
|
7
|
+
'http://hl7.org/fhir/us/core/CodeSystem'
|
|
8
|
+
].freeze
|
|
9
|
+
|
|
10
|
+
WELL_KNOWN_CODE_SYSTEMS = [
|
|
11
|
+
'http://loinc.org',
|
|
12
|
+
'http://snomed.info/sct'
|
|
13
|
+
].freeze
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
def include?(system)
|
|
17
|
+
return false unless system.present?
|
|
18
|
+
|
|
19
|
+
WELL_KNOWN_CODE_SYSTEMS.include?(system) || HL7_CODE_SYSTEMS.any? { |cs| system.start_with?(cs) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: us_quality_core_test_kit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- MITRE
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: inferno_core
|
|
@@ -30,26 +30,6 @@ dependencies:
|
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 1.3.1
|
|
33
|
-
- !ruby/object:Gem::Dependency
|
|
34
|
-
name: us_core_test_kit
|
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '1.1'
|
|
40
|
-
- - ">="
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: 1.1.3
|
|
43
|
-
type: :runtime
|
|
44
|
-
prerelease: false
|
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
-
requirements:
|
|
47
|
-
- - "~>"
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '1.1'
|
|
50
|
-
- - ">="
|
|
51
|
-
- !ruby/object:Gem::Version
|
|
52
|
-
version: 1.1.3
|
|
53
33
|
description:
|
|
54
34
|
email:
|
|
55
35
|
executables: []
|
|
@@ -60,7 +40,7 @@ files:
|
|
|
60
40
|
- NOTICE.md
|
|
61
41
|
- README.md
|
|
62
42
|
- config/presets/.keep
|
|
63
|
-
- config/presets/
|
|
43
|
+
- config/presets/inferno_reference_server_preset.json.erb
|
|
64
44
|
- config/presets/us_core_only_reference_server_preset.json
|
|
65
45
|
- lib/us_quality_core_test_kit.rb
|
|
66
46
|
- lib/us_quality_core_test_kit/client/generated/v0.5.0/adverse_event/adverse_event_client_read_test.rb
|
|
@@ -379,6 +359,8 @@ files:
|
|
|
379
359
|
- lib/us_quality_core_test_kit/client/metadata_helper.rb
|
|
380
360
|
- lib/us_quality_core_test_kit/client/server_proxy.rb
|
|
381
361
|
- lib/us_quality_core_test_kit/client/test_helper.rb
|
|
362
|
+
- lib/us_quality_core_test_kit/date_search_validation.rb
|
|
363
|
+
- lib/us_quality_core_test_kit/fhir_resource_navigation.rb
|
|
382
364
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_must_support_test.rb
|
|
383
365
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_provenance_revinclude_search_test.rb
|
|
384
366
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_read_test.rb
|
|
@@ -968,12 +950,15 @@ files:
|
|
|
968
950
|
- lib/us_quality_core_test_kit/igs/us_quality_core_v050/us_core_610.tgz
|
|
969
951
|
- lib/us_quality_core_test_kit/metadata.rb
|
|
970
952
|
- lib/us_quality_core_test_kit/must_support_test.rb
|
|
953
|
+
- lib/us_quality_core_test_kit/primitive_type.rb
|
|
971
954
|
- lib/us_quality_core_test_kit/read_test.rb
|
|
972
955
|
- lib/us_quality_core_test_kit/reference_resolution_test.rb
|
|
956
|
+
- lib/us_quality_core_test_kit/resource_search_param_checker.rb
|
|
973
957
|
- lib/us_quality_core_test_kit/search_test.rb
|
|
974
958
|
- lib/us_quality_core_test_kit/search_test_properties.rb
|
|
975
959
|
- lib/us_quality_core_test_kit/validation_test.rb
|
|
976
960
|
- lib/us_quality_core_test_kit/version.rb
|
|
961
|
+
- lib/us_quality_core_test_kit/well_known_code_systems.rb
|
|
977
962
|
homepage: https://github.com/inferno-framework/us-quality-core-test-kit
|
|
978
963
|
licenses:
|
|
979
964
|
- Apache-2.0
|