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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/NOTICE.md +12 -0
  3. data/config/presets/{localhost_preset.json → inferno_reference_server_preset.json.erb} +2 -2
  4. data/lib/us_quality_core_test_kit/client/generator/example_client_generator.rb +0 -1
  5. data/lib/us_quality_core_test_kit/client/generator/tags_generator.rb +0 -1
  6. data/lib/us_quality_core_test_kit/client/server_proxy.rb +2 -6
  7. data/lib/us_quality_core_test_kit/date_search_validation.rb +122 -0
  8. data/lib/us_quality_core_test_kit/fhir_resource_navigation.rb +9 -0
  9. data/lib/us_quality_core_test_kit/generated/v0.5.0/devicenotrequested/devicenotrequested_validation_test.rb +3 -0
  10. data/lib/us_quality_core_test_kit/generated/v0.5.0/devicerequest/devicerequest_validation_test.rb +3 -0
  11. data/lib/us_quality_core_test_kit/generated/v0.5.0/patient/patient_validation_test.rb +4 -0
  12. data/lib/us_quality_core_test_kit/generated/v0.5.0/us_quality_core_test_suite.rb +1 -2
  13. data/lib/us_quality_core_test_kit/generator/group_generator.rb +69 -3
  14. data/lib/us_quality_core_test_kit/generator/group_metadata.rb +100 -4
  15. data/lib/us_quality_core_test_kit/generator/group_metadata_extractor.rb +184 -8
  16. data/lib/us_quality_core_test_kit/generator/ig_loader.rb +47 -3
  17. data/lib/us_quality_core_test_kit/generator/ig_metadata.rb +51 -2
  18. data/lib/us_quality_core_test_kit/generator/ig_metadata_extractor.rb +25 -6
  19. data/lib/us_quality_core_test_kit/generator/ig_resources.rb +27 -3
  20. data/lib/us_quality_core_test_kit/generator/must_support_metadata_extractor.rb +366 -9
  21. data/lib/us_quality_core_test_kit/generator/must_support_test_generator.rb +54 -3
  22. data/lib/us_quality_core_test_kit/generator/provenance_revinclude_search_test_generator.rb +149 -3
  23. data/lib/us_quality_core_test_kit/generator/read_test_generator.rb +54 -3
  24. data/lib/us_quality_core_test_kit/generator/reference_resolution_test_generator.rb +57 -3
  25. data/lib/us_quality_core_test_kit/generator/search_definition_metadata_extractor.rb +181 -5
  26. data/lib/us_quality_core_test_kit/generator/search_metadata_extractor.rb +61 -3
  27. data/lib/us_quality_core_test_kit/generator/search_test_generator.rb +186 -3
  28. data/lib/us_quality_core_test_kit/generator/suite_generator.rb +35 -8
  29. data/lib/us_quality_core_test_kit/generator/terminology_binding_metadata_extractor.rb +107 -3
  30. data/lib/us_quality_core_test_kit/generator/validation_test_generator.rb +83 -4
  31. data/lib/us_quality_core_test_kit/generator/value_extractor.rb +147 -3
  32. data/lib/us_quality_core_test_kit/must_support_test.rb +15 -3
  33. data/lib/us_quality_core_test_kit/primitive_type.rb +7 -0
  34. data/lib/us_quality_core_test_kit/read_test.rb +99 -4
  35. data/lib/us_quality_core_test_kit/reference_resolution_test.rb +164 -3
  36. data/lib/us_quality_core_test_kit/resource_search_param_checker.rb +138 -0
  37. data/lib/us_quality_core_test_kit/search_test.rb +681 -46
  38. data/lib/us_quality_core_test_kit/search_test_properties.rb +53 -3
  39. data/lib/us_quality_core_test_kit/validation_test.rb +51 -4
  40. data/lib/us_quality_core_test_kit/version.rb +2 -2
  41. data/lib/us_quality_core_test_kit/well_known_code_systems.rb +23 -0
  42. 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 < USCoreTestKit::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
- include USCoreTestKit::ValidationTest
8
- extend USCoreTestKit::ValidationTest
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module USQualityCoreTestKit
4
- VERSION = '0.1.1'
5
- LAST_UPDATED = '2026-06-18'
4
+ VERSION = '0.1.2'
5
+ LAST_UPDATED = '2026-07-13'
6
6
  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.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-06-18 00:00:00.000000000 Z
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/localhost_preset.json
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