uds_plus_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.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/lib/uds_plus_test_kit/examples/manifest.json +84 -0
  4. data/lib/uds_plus_test_kit/examples/manifest_2.json +101 -0
  5. data/lib/uds_plus_test_kit/examples/manifest_not_deidentified.json +67 -0
  6. data/lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-receiver-server.json +1 -0
  7. data/lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-source.json +1 -0
  8. data/lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-submitter-client.json +1 -0
  9. data/lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-trust-service-provider.json +1 -0
  10. data/lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-agriculture-worker-status-codes.json +1 -0
  11. data/lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-housing-status-codes.json +1 -0
  12. data/lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-insurance-codes.json +1 -0
  13. data/lib/uds_plus_test_kit/igs/package/ImplementationGuide-udsplus.json +1 -0
  14. data/lib/uds_plus_test_kit/igs/package/OperationDefinition-import.json +1 -0
  15. data/lib/uds_plus_test_kit/igs/package/OperationDefinition-udsplus-de-identify.json +1 -0
  16. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-de-identified-uds-plus-patient.json +1 -0
  17. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-age-extension.json +1 -0
  18. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-agriculture-worker-status-extension.json +1 -0
  19. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-coverage.json +1 -0
  20. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-deidentify-data.json +1 -0
  21. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-diagnosis.json +1 -0
  22. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-encounter.json +1 -0
  23. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-housing-status-extension.json +1 -0
  24. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-import-manifest.json +1 -0
  25. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-income-observation.json +1 -0
  26. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-procedure.json +1 -0
  27. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-sexual-orientation-observation.json +1 -0
  28. data/lib/uds_plus_test_kit/igs/package/StructureDefinition-udsplus-agriculture-worker-status.json +1 -0
  29. data/lib/uds_plus_test_kit/igs/package/example/Condition-de-identified-example.json +1 -0
  30. data/lib/uds_plus_test_kit/igs/package/example/Condition-example.json +1 -0
  31. data/lib/uds_plus_test_kit/igs/package/example/Encounter-de-identified-example.json +1 -0
  32. data/lib/uds_plus_test_kit/igs/package/example/Encounter-example.json +1 -0
  33. data/lib/uds_plus_test_kit/igs/package/example/Parameters-example.json +1 -0
  34. data/lib/uds_plus_test_kit/igs/package/example/Patient-de-identified-example.json +1 -0
  35. data/lib/uds_plus_test_kit/igs/package/example/Patient-de-identified-smallpop-example.json +1 -0
  36. data/lib/uds_plus_test_kit/igs/package/example/Patient-example.json +1 -0
  37. data/lib/uds_plus_test_kit/igs/package/example/Patient-smallpop-example.json +1 -0
  38. data/lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-receiver-server.openapi.json +152 -0
  39. data/lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-source.openapi.json +152 -0
  40. data/lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-submitter-client.openapi.json +106 -0
  41. data/lib/uds_plus_test_kit/igs/package/openapi/uds-plus-trust-service-provider.openapi.json +152 -0
  42. data/lib/uds_plus_test_kit/igs/package/other/ig-r4.json +1 -0
  43. data/lib/uds_plus_test_kit/igs/package/other/validation-oo.json +1 -0
  44. data/lib/uds_plus_test_kit/igs/package/other/validation-summary.json +1 -0
  45. data/lib/uds_plus_test_kit/igs/package/package.json +27 -0
  46. data/lib/uds_plus_test_kit/input_resource_tests/read_coverage_test.rb +54 -0
  47. data/lib/uds_plus_test_kit/input_resource_tests/read_diagnosis_test.rb +54 -0
  48. data/lib/uds_plus_test_kit/input_resource_tests/read_encounter_test.rb +54 -0
  49. data/lib/uds_plus_test_kit/input_resource_tests/read_income_test.rb +54 -0
  50. data/lib/uds_plus_test_kit/input_resource_tests/read_patient_test.rb +54 -0
  51. data/lib/uds_plus_test_kit/input_resource_tests/read_procedure_test.rb +54 -0
  52. data/lib/uds_plus_test_kit/input_resource_tests/read_sexual_orientation_test.rb +54 -0
  53. data/lib/uds_plus_test_kit/input_resource_tests/resource_group.rb +51 -0
  54. data/lib/uds_plus_test_kit/manifest_tests/invalid_type_test.rb +40 -0
  55. data/lib/uds_plus_test_kit/manifest_tests/read_data_test.rb +75 -0
  56. data/lib/uds_plus_test_kit/manifest_tests/read_manifest_test.rb +51 -0
  57. data/lib/uds_plus_test_kit/manifest_tests/uds_plus_test_group.rb +39 -0
  58. data/lib/uds_plus_test_kit/manifest_tests/validate_manifest_test.rb +28 -0
  59. data/lib/uds_plus_test_kit/uds_plus_test_suite.rb +50 -0
  60. data/lib/uds_plus_test_kit/validate_coverage_test.rb +33 -0
  61. data/lib/uds_plus_test_kit/validate_diagnosis_test.rb +33 -0
  62. data/lib/uds_plus_test_kit/validate_encounter_test.rb +33 -0
  63. data/lib/uds_plus_test_kit/validate_income_test.rb +68 -0
  64. data/lib/uds_plus_test_kit/validate_patient_test.rb +33 -0
  65. data/lib/uds_plus_test_kit/validate_procedure_test.rb +33 -0
  66. data/lib/uds_plus_test_kit/validate_sexual_orientation_test.rb +68 -0
  67. data/lib/uds_plus_test_kit/version.rb +6 -0
  68. data/lib/uds_plus_test_kit.rb +1 -0
  69. metadata +182 -0
@@ -0,0 +1,51 @@
1
+ require 'json'
2
+
3
+ module UDSPlusTestKit
4
+ class ReadManifestTest < Inferno::Test
5
+ id :uds_plus_read_manifest_test
6
+ title 'Receive UDS+ Import Manifest'
7
+ description %(
8
+ Test takes from the user either: the http location of the import manifest
9
+ or the raw JSON of the import manifest itself.
10
+ It attempts to GET the data stored at the given location if a link is provided,
11
+ then validates whether a FHIR resource can be generated from the input data.
12
+ )
13
+
14
+ input :import_manifest,
15
+ title: 'Import Manifest',
16
+ description: %q(
17
+ User can input the Import manifest as:
18
+ a URL link to the location of the manifest (ex: http://www.example.com/import_manifest.json) OR
19
+ a JSON string that composes the manifest (ex: {manifest_contents})
20
+ )
21
+
22
+ def manifest_scratch
23
+ scratch[:manifest_resources] ||= {}
24
+ end
25
+
26
+ def manifest_resources
27
+ manifest_scratch[:all] ||= []
28
+ end
29
+
30
+ run do
31
+ # if the input is a url, else it is a json
32
+ if import_manifest.strip[0] != '{'
33
+ assert_valid_http_uri(import_manifest, "Import manifest uri location is not a valid http uri.")
34
+ get import_manifest
35
+ assert_response_status(200)
36
+ assert_valid_json(request.response_body, "Data received from request is not a valid JSON")
37
+ manifest = request.response_body
38
+ else
39
+ assert_valid_json(import_manifest, "JSON inputted was not in a valid format")
40
+ manifest = import_manifest
41
+ end
42
+
43
+ resource = FHIR::Json.from_json(manifest)
44
+ assert resource.is_a?(FHIR::Model), "Could not generate a valid resource from the input provided"
45
+
46
+ if resource.is_a?(FHIR::Model)
47
+ manifest_resources << resource
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../version'
2
+ require_relative './invalid_type_test'
3
+ require_relative './read_data_test'
4
+ require_relative './read_manifest_test'
5
+ require_relative '../validate_coverage_test'
6
+ require_relative '../validate_diagnosis_test'
7
+ require_relative '../validate_encounter_test'
8
+ require_relative '../validate_income_test'
9
+ require_relative './validate_manifest_test'
10
+ require_relative '../validate_patient_test'
11
+ require_relative '../validate_procedure_test'
12
+ require_relative '../validate_sexual_orientation_test'
13
+
14
+ module UDSPlusTestKit
15
+ class UDSPlusTestGroup < Inferno::TestGroup
16
+ title 'Data Submitter Tests'
17
+ id :uds_plus_test_group
18
+ description %(
19
+ The tests below validate the import manifest produced by a UDS+ Data Submitter.
20
+ This receiver will take a provided Import Manifest, either as an HTTP location or
21
+ as a raw json, and validate its contents. This includes validating the structure
22
+ of the manifest, as well as the structure of the data the manifest points to.
23
+ )
24
+
25
+ run_as_group
26
+
27
+ test from: :uds_plus_read_manifest_test
28
+ test from: :uds_plus_validate_manifest_test
29
+ test from: :uds_plus_read_data_test
30
+ test from: :uds_plus_validate_coverage_test
31
+ test from: :uds_plus_validate_diagnosis_test
32
+ test from: :uds_plus_validate_encounter_test
33
+ test from: :uds_plus_validate_income_test
34
+ test from: :uds_plus_validate_patient_test
35
+ test from: :uds_plus_validate_procedure_test
36
+ test from: :uds_plus_validate_sexual_orientation_test
37
+ test from: :uds_plus_invalid_type_test
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ require 'json'
2
+ require_relative '../version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateManifestTest < Inferno::Test
6
+ id :uds_plus_validate_manifest_test
7
+ title 'Validate UDS+ Import Manifest'
8
+ description %(
9
+ Test takes the resource generated by the prior test,
10
+ and validates whether the resource conforms to the
11
+ UDS+ Import Manifest Structure Definition.
12
+ )
13
+
14
+ def manifest_scratch
15
+ scratch[:manifest_resources] ||= {}
16
+ end
17
+
18
+ def manifest_resources
19
+ manifest_scratch[:all] ||= []
20
+ end
21
+
22
+ run do
23
+ profile_definition = "http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-import-manifest"
24
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
25
+ assert_valid_resource(resource: manifest_resources.first, profile_url: profile_with_version)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,50 @@
1
+ require 'inferno/dsl/oauth_credentials'
2
+ require_relative './version'
3
+ require_relative './manifest_tests/uds_plus_test_group'
4
+ require_relative './input_resource_tests/resource_group'
5
+
6
+ module UDSPlusTestKit
7
+ class UDSPlusTestSuite < Inferno::TestSuite
8
+ title 'UDS+ Test Kit'
9
+ description %(
10
+ The UDS+ Test Kit tests systems for their conformance to the [UDS+
11
+ Implementation Guide](http://fhir.drajer.com/site/index.html#uds-plus-home-page).
12
+ The included tests function as a rudimentary data receiver. This receiver will
13
+ take a provided Import Manifest, either as an HTTP location or as a raw json,
14
+ and validate its contents. This includes validating the structure of the manifest,
15
+ as well as the structure of the data the manifest points to.
16
+ )
17
+
18
+ version VERSION
19
+
20
+ validator do
21
+ url ENV.fetch('VALIDATOR_URL', 'http://validator_service:4567')
22
+
23
+ # Messages will be excluded if the block evaluates to a truthy value
24
+ exclude_message do |message|
25
+ message.type == 'warning' &&
26
+ message.message.match?(/Global Profile reference .* could not be resolved, so has not been checked/)
27
+ end
28
+ end
29
+
30
+ id :uds_plus
31
+
32
+ links [
33
+ {
34
+ label: 'Report Issue',
35
+ url: 'https://github.com/inferno-framework/uds-plus-test-kit/issues'
36
+ },
37
+ {
38
+ label: 'Open Source',
39
+ url: 'https://github.com/inferno-framework/uds-plus-test-kit/'
40
+ },
41
+ {
42
+ label: 'UDS+ Implementation Guide',
43
+ url: 'http://fhir.drajer.com/site/index.html'
44
+ }
45
+ ]
46
+
47
+ group from: :uds_plus_test_group
48
+ group from: :uds_plus_resource_test_group
49
+ end
50
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateCoverageTest < Inferno::Test
6
+ id :uds_plus_validate_coverage_test
7
+ title 'Validate UDS+ Coverage Data'
8
+ description %(
9
+ Test takes the Coverage resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Coverage'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-coverage'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ data_to_test.each do |resource|
29
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateDiagnosisTest < Inferno::Test
6
+ id :uds_plus_validate_diagnosis_test
7
+ title 'Validate UDS+ Diagnosis Data'
8
+ description %(
9
+ Test takes the Diagnosis resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Condition'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-diagnosis'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ data_to_test.each do |resource|
29
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateEncounterTest < Inferno::Test
6
+ id :uds_plus_validate_encounter_test
7
+ title 'Validate UDS+ Encounter Data'
8
+ description %(
9
+ Test takes the Encounter resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Encounter'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-encounter'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ data_to_test.each do |resource|
29
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,68 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateIncomeTest < Inferno::Test
6
+ id :uds_plus_validate_income_test
7
+ title 'Validate UDS+ Income Data'
8
+ description %(
9
+ Test takes the Income resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Observation'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-income-observation'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ no_resource_of_this_type = true
29
+ identifier_fail_message = %(Resource.meta.profile should contain the HTTP location of the
30
+ resource's Structure Definition. Resource.meta.profile either does
31
+ not exist in this resource, or its contents do not point to a valid
32
+ location for type Observation (Income/Sexual Orientation). **NOTE:**
33
+ If this error occurs, it will trigger a fail for both the Income and
34
+ Sexual Orientation tests, regardless of whether both tests were meant
35
+ to run.)
36
+
37
+ data_to_test.each do |resource|
38
+ # All these assertions are to differentaite Observation data between Income Data and Sexual Orientation data.
39
+ # A resource is skipped if it is a sexual orientation resource and fails if it cannot be identified as an income resource.
40
+ type_identifier = resource.to_hash
41
+ assert type_identifier['meta'].present?, identifier_fail_message
42
+
43
+ type_identifier = type_identifier['meta']
44
+ assert type_identifier.is_a?(Hash), identifier_fail_message
45
+ assert type_identifier['profile'].present?, identifier_fail_message
46
+
47
+ type_identifier = type_identifier['profile']
48
+ assert type_identifier.is_a?(Array), identifier_fail_message
49
+ assert !type_identifier.empty?, identifier_fail_message
50
+
51
+
52
+ type_identifier = type_identifier.first
53
+ assert type_identifier.is_a?(String), identifier_fail_message
54
+ if type_identifier.include?("sexual-orientation")
55
+ next
56
+ else
57
+ assert type_identifier.include?("income"), identifier_fail_message
58
+ end
59
+
60
+ no_resource_of_this_type = false
61
+
62
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
63
+ end
64
+
65
+ omit_if no_resource_of_this_type, "No data of this type was identified."
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidatePatientTest < Inferno::Test
6
+ id :uds_plus_validate_patient_test
7
+ title 'Validate UDS+ Patient Data'
8
+ description %(
9
+ Test takes the Patient resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Patient'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/de-identified-uds-plus-patient'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ data_to_test.each do |resource|
29
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateProcedureTest < Inferno::Test
6
+ id :uds_plus_validate_procedure_test
7
+ title 'Validate UDS+ Procedure Data'
8
+ description %(
9
+ Test takes the Procedure resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Procedure'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-procedure'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ data_to_test.each do |resource|
29
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,68 @@
1
+ require 'json'
2
+ require_relative './version'
3
+
4
+ module UDSPlusTestKit
5
+ class ValidateSexualOrientationTest < Inferno::Test
6
+ id :uds_plus_validate_sexual_orientation_test
7
+ title 'Validate UDS+ Sexual Orientation Data'
8
+ description %(
9
+ Test takes the Sexual Orientation resources identified
10
+ by the import manifest, and validates whether they conform
11
+ to their UDS+ Structure Definitions.
12
+ )
13
+
14
+ def data_scratch
15
+ scratch[:data_resources] ||= {}
16
+ end
17
+
18
+ def data_to_test
19
+ data_scratch['Observation'] ||= []
20
+ end
21
+
22
+ run do
23
+ omit_if data_to_test.empty?, "No data of this type was identified."
24
+
25
+ profile_definition = 'http://hl7.org/fhir/us/uds-plus/StructureDefinition/uds-plus-sexual-orientation-observation'
26
+ profile_with_version = "#{profile_definition}|#{UDS_PLUS_VERSION}"
27
+
28
+ no_resource_of_this_type = true
29
+ identifier_fail_message = %(Resource.meta.profile should contain the HTTP location of the
30
+ resource's Structure Definition. Resource.meta.profile either does
31
+ not exist in this resource, or its contents do not point to a valid
32
+ location for type Observation (Income/Sexual Orientation). **NOTE:**
33
+ If this error occurs, it will trigger a fail for both the Income and
34
+ Sexual Orientation tests, regardless of whether both tests were meant
35
+ to run.)
36
+
37
+ data_to_test.each do |resource|
38
+ # All these assertions are to differentaite Observation data between Income Data and Sexual Orientation data.
39
+ # A resource is skipped if it is an income resource and fails if it cannot be identified as a sexual orientation resource.
40
+ type_identifier = resource.to_hash
41
+ assert type_identifier['meta'].present?, identifier_fail_message
42
+
43
+ type_identifier = type_identifier['meta']
44
+ assert type_identifier.is_a?(Hash), identifier_fail_message
45
+ assert type_identifier['profile'].present?, identifier_fail_message
46
+
47
+ type_identifier = type_identifier['profile']
48
+ assert type_identifier.is_a?(Array), identifier_fail_message
49
+ assert !type_identifier.empty?, identifier_fail_message
50
+
51
+
52
+ type_identifier = type_identifier.first
53
+ assert type_identifier.is_a?(String), identifier_fail_message
54
+ if type_identifier.include?("income")
55
+ next
56
+ else
57
+ assert type_identifier.include?("sexual-orientation"), identifier_fail_message
58
+ end
59
+
60
+ no_resource_of_this_type = false
61
+
62
+ assert_valid_resource(resource: resource, profile_url: profile_with_version)
63
+ end
64
+
65
+ omit_if no_resource_of_this_type, "No data of this type was identified."
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module UDSPlusTestKit
4
+ VERSION = '0.9.0'
5
+ UDS_PLUS_VERSION = '0.3.0'
6
+ end
@@ -0,0 +1 @@
1
+ require_relative 'uds_plus_test_kit/uds_plus_test_suite'
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uds_plus_test_kit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Leap Orbit
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-05-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: inferno_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.4.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.4.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: database_cleaner-sequel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: factory_bot
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.11'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.11'
83
+ description: UDS Plus Test Kit
84
+ email:
85
+ - inferno@groups.mitre.org
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - LICENSE
91
+ - lib/uds_plus_test_kit.rb
92
+ - lib/uds_plus_test_kit/examples/manifest.json
93
+ - lib/uds_plus_test_kit/examples/manifest_2.json
94
+ - lib/uds_plus_test_kit/examples/manifest_not_deidentified.json
95
+ - lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-receiver-server.json
96
+ - lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-source.json
97
+ - lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-data-submitter-client.json
98
+ - lib/uds_plus_test_kit/igs/package/CapabilityStatement-uds-plus-trust-service-provider.json
99
+ - lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-agriculture-worker-status-codes.json
100
+ - lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-housing-status-codes.json
101
+ - lib/uds_plus_test_kit/igs/package/CodeSystem-udsplus-insurance-codes.json
102
+ - lib/uds_plus_test_kit/igs/package/ImplementationGuide-udsplus.json
103
+ - lib/uds_plus_test_kit/igs/package/OperationDefinition-import.json
104
+ - lib/uds_plus_test_kit/igs/package/OperationDefinition-udsplus-de-identify.json
105
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-de-identified-uds-plus-patient.json
106
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-age-extension.json
107
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-agriculture-worker-status-extension.json
108
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-coverage.json
109
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-deidentify-data.json
110
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-diagnosis.json
111
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-encounter.json
112
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-housing-status-extension.json
113
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-import-manifest.json
114
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-income-observation.json
115
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-procedure.json
116
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-uds-plus-sexual-orientation-observation.json
117
+ - lib/uds_plus_test_kit/igs/package/StructureDefinition-udsplus-agriculture-worker-status.json
118
+ - lib/uds_plus_test_kit/igs/package/example/Condition-de-identified-example.json
119
+ - lib/uds_plus_test_kit/igs/package/example/Condition-example.json
120
+ - lib/uds_plus_test_kit/igs/package/example/Encounter-de-identified-example.json
121
+ - lib/uds_plus_test_kit/igs/package/example/Encounter-example.json
122
+ - lib/uds_plus_test_kit/igs/package/example/Parameters-example.json
123
+ - lib/uds_plus_test_kit/igs/package/example/Patient-de-identified-example.json
124
+ - lib/uds_plus_test_kit/igs/package/example/Patient-de-identified-smallpop-example.json
125
+ - lib/uds_plus_test_kit/igs/package/example/Patient-example.json
126
+ - lib/uds_plus_test_kit/igs/package/example/Patient-smallpop-example.json
127
+ - lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-receiver-server.openapi.json
128
+ - lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-source.openapi.json
129
+ - lib/uds_plus_test_kit/igs/package/openapi/uds-plus-data-submitter-client.openapi.json
130
+ - lib/uds_plus_test_kit/igs/package/openapi/uds-plus-trust-service-provider.openapi.json
131
+ - lib/uds_plus_test_kit/igs/package/other/ig-r4.json
132
+ - lib/uds_plus_test_kit/igs/package/other/validation-oo.json
133
+ - lib/uds_plus_test_kit/igs/package/other/validation-summary.json
134
+ - lib/uds_plus_test_kit/igs/package/package.json
135
+ - lib/uds_plus_test_kit/input_resource_tests/read_coverage_test.rb
136
+ - lib/uds_plus_test_kit/input_resource_tests/read_diagnosis_test.rb
137
+ - lib/uds_plus_test_kit/input_resource_tests/read_encounter_test.rb
138
+ - lib/uds_plus_test_kit/input_resource_tests/read_income_test.rb
139
+ - lib/uds_plus_test_kit/input_resource_tests/read_patient_test.rb
140
+ - lib/uds_plus_test_kit/input_resource_tests/read_procedure_test.rb
141
+ - lib/uds_plus_test_kit/input_resource_tests/read_sexual_orientation_test.rb
142
+ - lib/uds_plus_test_kit/input_resource_tests/resource_group.rb
143
+ - lib/uds_plus_test_kit/manifest_tests/invalid_type_test.rb
144
+ - lib/uds_plus_test_kit/manifest_tests/read_data_test.rb
145
+ - lib/uds_plus_test_kit/manifest_tests/read_manifest_test.rb
146
+ - lib/uds_plus_test_kit/manifest_tests/uds_plus_test_group.rb
147
+ - lib/uds_plus_test_kit/manifest_tests/validate_manifest_test.rb
148
+ - lib/uds_plus_test_kit/uds_plus_test_suite.rb
149
+ - lib/uds_plus_test_kit/validate_coverage_test.rb
150
+ - lib/uds_plus_test_kit/validate_diagnosis_test.rb
151
+ - lib/uds_plus_test_kit/validate_encounter_test.rb
152
+ - lib/uds_plus_test_kit/validate_income_test.rb
153
+ - lib/uds_plus_test_kit/validate_patient_test.rb
154
+ - lib/uds_plus_test_kit/validate_procedure_test.rb
155
+ - lib/uds_plus_test_kit/validate_sexual_orientation_test.rb
156
+ - lib/uds_plus_test_kit/version.rb
157
+ homepage: https://github.com/inferno-framework/uds-plus-test-kit
158
+ licenses:
159
+ - Apache-2.0
160
+ metadata:
161
+ homepage_uri: https://github.com/inferno-framework/uds-plus-test-kit
162
+ source_code_uri: https://github.com/inferno-framework/uds-plus-test-kit
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: 3.1.2
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubygems_version: 3.3.7
179
+ signing_key:
180
+ specification_version: 4
181
+ summary: UDS Plus Test Kit
182
+ test_files: []