us_quality_core_test_kit 0.1.0 → 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 -17
|
@@ -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,20 +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.3
|
|
40
|
-
type: :runtime
|
|
41
|
-
prerelease: false
|
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 1.1.3
|
|
47
33
|
description:
|
|
48
34
|
email:
|
|
49
35
|
executables: []
|
|
@@ -54,7 +40,7 @@ files:
|
|
|
54
40
|
- NOTICE.md
|
|
55
41
|
- README.md
|
|
56
42
|
- config/presets/.keep
|
|
57
|
-
- config/presets/
|
|
43
|
+
- config/presets/inferno_reference_server_preset.json.erb
|
|
58
44
|
- config/presets/us_core_only_reference_server_preset.json
|
|
59
45
|
- lib/us_quality_core_test_kit.rb
|
|
60
46
|
- lib/us_quality_core_test_kit/client/generated/v0.5.0/adverse_event/adverse_event_client_read_test.rb
|
|
@@ -373,6 +359,8 @@ files:
|
|
|
373
359
|
- lib/us_quality_core_test_kit/client/metadata_helper.rb
|
|
374
360
|
- lib/us_quality_core_test_kit/client/server_proxy.rb
|
|
375
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
|
|
376
364
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_must_support_test.rb
|
|
377
365
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_provenance_revinclude_search_test.rb
|
|
378
366
|
- lib/us_quality_core_test_kit/generated/v0.5.0/adverse_event/adverse_event_read_test.rb
|
|
@@ -962,12 +950,15 @@ files:
|
|
|
962
950
|
- lib/us_quality_core_test_kit/igs/us_quality_core_v050/us_core_610.tgz
|
|
963
951
|
- lib/us_quality_core_test_kit/metadata.rb
|
|
964
952
|
- lib/us_quality_core_test_kit/must_support_test.rb
|
|
953
|
+
- lib/us_quality_core_test_kit/primitive_type.rb
|
|
965
954
|
- lib/us_quality_core_test_kit/read_test.rb
|
|
966
955
|
- lib/us_quality_core_test_kit/reference_resolution_test.rb
|
|
956
|
+
- lib/us_quality_core_test_kit/resource_search_param_checker.rb
|
|
967
957
|
- lib/us_quality_core_test_kit/search_test.rb
|
|
968
958
|
- lib/us_quality_core_test_kit/search_test_properties.rb
|
|
969
959
|
- lib/us_quality_core_test_kit/validation_test.rb
|
|
970
960
|
- lib/us_quality_core_test_kit/version.rb
|
|
961
|
+
- lib/us_quality_core_test_kit/well_known_code_systems.rb
|
|
971
962
|
homepage: https://github.com/inferno-framework/us-quality-core-test-kit
|
|
972
963
|
licenses:
|
|
973
964
|
- Apache-2.0
|