onc_certification_g10_test_kit 6.0.3 → 7.0.1

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inferno/repositiories/validators.rb +0 -6
  3. data/lib/inferno/repositiories/value_sets.rb +1 -7
  4. data/lib/inferno/terminology/expected_manifest.yml +5 -5
  5. data/lib/inferno/terminology/fhir_package_manager.rb +13 -4
  6. data/lib/inferno/terminology/loader.rb +2 -1
  7. data/lib/inferno/terminology/tasks/download_fhir_terminology.rb +2 -1
  8. data/lib/inferno/terminology/tasks/download_umls.rb +2 -1
  9. data/lib/inferno/terminology/tasks/expand_value_set_to_file.rb +1 -1
  10. data/lib/inferno/terminology/tasks/run_umls_jar.rb +2 -1
  11. data/lib/inferno/terminology/validator.rb +1 -0
  12. data/lib/inferno/terminology/value_set.rb +2 -0
  13. data/lib/onc_certification_g10_test_kit/all_resources.rb +74 -0
  14. data/lib/onc_certification_g10_test_kit/bulk_data_group_export_validation.rb +361 -59
  15. data/lib/onc_certification_g10_test_kit/bulk_export_validation_tester.rb +4 -3
  16. data/lib/onc_certification_g10_test_kit/g10_options.rb +20 -1
  17. data/lib/onc_certification_g10_test_kit/limited_scope_grant_test.rb +4 -0
  18. data/lib/onc_certification_g10_test_kit/multi_patient_api_stu1.rb +2 -1
  19. data/lib/onc_certification_g10_test_kit/multi_patient_api_stu2.rb +2 -1
  20. data/lib/onc_certification_g10_test_kit/patient_scope_test.rb +1 -1
  21. data/lib/onc_certification_g10_test_kit/profile_selector.rb +40 -15
  22. data/lib/onc_certification_g10_test_kit/restricted_resource_type_access_group.rb +89 -2
  23. data/lib/onc_certification_g10_test_kit/short_id_map.yml +1417 -12
  24. data/lib/onc_certification_g10_test_kit/single_patient_us_core_7_api_group.rb +219 -0
  25. data/lib/onc_certification_g10_test_kit/smart_app_launch_invalid_aud_group.rb +41 -1
  26. data/lib/onc_certification_g10_test_kit/smart_asymmetric_launch_group.rb +33 -1
  27. data/lib/onc_certification_g10_test_kit/smart_ehr_patient_launch_group_stu2_2.rb +128 -0
  28. data/lib/onc_certification_g10_test_kit/smart_ehr_practitioner_app_group.rb +234 -0
  29. data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_group_stu2_2.rb +188 -0
  30. data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group.rb +188 -0
  31. data/lib/onc_certification_g10_test_kit/smart_fine_grained_scopes_us_core_7_group_stu2_2.rb +188 -0
  32. data/lib/onc_certification_g10_test_kit/smart_granular_scope_selection_group.rb +67 -1
  33. data/lib/onc_certification_g10_test_kit/smart_limited_app_group.rb +128 -1
  34. data/lib/onc_certification_g10_test_kit/smart_public_standalone_launch_group_stu2_2.rb +162 -0
  35. data/lib/onc_certification_g10_test_kit/smart_scopes_test.rb +10 -2
  36. data/lib/onc_certification_g10_test_kit/smart_standalone_patient_app_group.rb +159 -0
  37. data/lib/onc_certification_g10_test_kit/smart_v1_scopes_group.rb +117 -0
  38. data/lib/onc_certification_g10_test_kit/terminology_binding_validator.rb +5 -1
  39. data/lib/onc_certification_g10_test_kit/token_introspection_group_stu2_2.rb +97 -0
  40. data/lib/onc_certification_g10_test_kit/unrestricted_resource_type_access_group.rb +85 -31
  41. data/lib/onc_certification_g10_test_kit/version.rb +1 -1
  42. data/lib/onc_certification_g10_test_kit/visual_inspection_and_attestations_group.rb +171 -0
  43. data/lib/onc_certification_g10_test_kit/well_known_capabilities_test.rb +1 -1
  44. data/lib/onc_certification_g10_test_kit.rb +72 -5
  45. metadata +18 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 652df76ad9ffd8a3ab99ab73a34246cc282820dbb480847c2bfedd2109b3d523
4
- data.tar.gz: 6a9c481e3daec6bcf67275e5f52412a09df62b76f6694bbf29578a9dd659274e
3
+ metadata.gz: a7c3b147bf3895a43988f8d02e947ac646522fb0637c6bb33ca7d00fe6d8728b
4
+ data.tar.gz: b7a1f24fb4775b196f1eb48ba8bb995754580dbbd48c1dd1e066e56cb3e8cc45
5
5
  SHA512:
6
- metadata.gz: 0bf954379978636a9ae036e564102b5b4b741994778100937c847fdb54003ef7560ca102f98f47588fac71f533b5c90772a17517354406a7edae731a0be2e91e
7
- data.tar.gz: be29443df38b70553a074af1ef53f03553d4da9cd51ffccd5dca3927a82b39d4829bcf60e53c4d70ca6f8c2ce200ff9498cc9f27aeb18bb58e48d3353fdd7eee
6
+ metadata.gz: 48b3460861a86ba5358b79351fd75d0335ba7cb75a575f7e92780bee257719c0947d79f1670481187b392376888f606384a6a84c38f441f6411cb14d3f726926
7
+ data.tar.gz: 16f84edff5ac43c598d0876f2d7ec4f78d8e7d661d08bcd679d243006b00329a258d78429485d74bf60bcfd5810ec703c36e5b6ee963b082b2787ec80a331511
@@ -3,12 +3,6 @@ require 'inferno/repositories/in_memory_repository'
3
3
  module Inferno
4
4
  module Repositories
5
5
  class Validators < InMemoryRepository
6
- def self.index_by_id
7
- @all_by_id = {}
8
- all.each { |vs| @all_by_id[vs.url] = vs }
9
- @all_by_id
10
- end
11
-
12
6
  def all_urls
13
7
  all_by_id.keys
14
8
  end
@@ -3,15 +3,9 @@ require 'inferno/repositories/in_memory_repository'
3
3
  module Inferno
4
4
  module Repositories
5
5
  class ValueSets < InMemoryRepository
6
- def self.index_by_id
7
- @all_by_id = {}
8
- all.each { |vs| @all_by_id[vs.url] = vs }
9
- @all_by_id
10
- end
11
-
12
6
  # @return [Hash] a Hash where the keys are vs urls and the values are vs
13
7
  def select_by_url(urls)
14
- self.class.all_by_id.slice(*urls)
8
+ all_by_id.slice(*urls)
15
9
  end
16
10
 
17
11
  def select_by_binding_strength(strengths)
@@ -121,7 +121,7 @@
121
121
  - http://hl7.org/fhir/composition-status
122
122
  - :url: http://hl7.org/fhir/us/core/ValueSet/us-core-documentreference-type
123
123
  :file: hl7_org_fhir_us_core_ValueSet_us-core-documentreference-type.msgpack
124
- :count: 11418
124
+ :count: 12002
125
125
  :type: bloom
126
126
  :code_systems:
127
127
  - http://terminology.hl7.org/CodeSystem/v3-NullFlavor
@@ -134,7 +134,7 @@
134
134
  - http://hl7.org/fhir/document-relationship-type
135
135
  - :url: http://hl7.org/fhir/ValueSet/mimetypes
136
136
  :file: hl7_org_fhir_ValueSet_mimetypes.msgpack
137
- :count: 2503
137
+ :count: 2578
138
138
  :type: bloom
139
139
  :code_systems:
140
140
  - urn:ietf:bcp:13
@@ -504,7 +504,7 @@
504
504
  :code_systems: http://terminology.hl7.org/CodeSystem/v3-NullFlavor
505
505
  - :url: http://loinc.org
506
506
  :file: loinc_org.msgpack
507
- :count: 287148
507
+ :count: 292887
508
508
  :type: bloom
509
509
  :code_systems: http://loinc.org
510
510
  - :url: http://hl7.org/fhir/document-relationship-type
@@ -514,7 +514,7 @@
514
514
  :code_systems: http://hl7.org/fhir/document-relationship-type
515
515
  - :url: urn:ietf:bcp:13
516
516
  :file: urn_ietf_bcp_13.msgpack
517
- :count: 2503
517
+ :count: 2578
518
518
  :type: bloom
519
519
  :code_systems: urn:ietf:bcp:13
520
520
  - :url: http://hl7.org/fhir/identifier-use
@@ -669,7 +669,7 @@
669
669
  :code_systems: http://terminology.hl7.org/CodeSystem/observation-category
670
670
  - :url: http://snomed.info/sct
671
671
  :file: snomed_info_sct.msgpack
672
- :count: 508538
672
+ :count: 517626
673
673
  :type: bloom
674
674
  :code_systems: http://snomed.info/sct
675
675
  - :url: http://terminology.hl7.org/CodeSystem/data-absent-reason
@@ -10,6 +10,8 @@ module Inferno
10
10
  module FHIRPackageManager
11
11
  class << self
12
12
  REGISTRY_SERVER_URL = 'https://packages.fhir.org'.freeze
13
+ US_CORE_7_PACKAGE_URL = 'https://hl7.org/fhir/us/core/STU7/package.tgz'.freeze
14
+ VSAC_18_PACKAGE_URL = 'https://packages2.fhir.org/packages/us.nlm.vsac/0.18.0'.freeze
13
15
  REQUIRED_VSAC_VALUE_SET_URLS = [
14
16
  'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836',
15
17
  'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.1.11.14914',
@@ -44,10 +46,17 @@ module Inferno
44
46
  #
45
47
  # @param [String] package The FHIR Package
46
48
  def get_package(package, destination, desired_types = [])
47
- package_url = package
48
- .split('#')
49
- .prepend(REGISTRY_SERVER_URL)
50
- .join('/')
49
+ package_url = case package
50
+ when 'hl7.fhir.us.core#7.0.0'
51
+ US_CORE_7_PACKAGE_URL
52
+ when 'us.nlm.vsac#0.18.0'
53
+ VSAC_18_PACKAGE_URL
54
+ else
55
+ package
56
+ .split('#')
57
+ .prepend(REGISTRY_SERVER_URL)
58
+ .join('/')
59
+ end
51
60
 
52
61
  tar_file_name = "tmp/#{package.split('#').join('-')}.tgz"
53
62
 
@@ -199,7 +199,8 @@ module Inferno
199
199
  USCoreTestKit::USCoreV311::USCoreTestSuite.metadata +
200
200
  USCoreTestKit::USCoreV400::USCoreTestSuite.metadata +
201
201
  USCoreTestKit::USCoreV501::USCoreTestSuite.metadata +
202
- USCoreTestKit::USCoreV610::USCoreTestSuite.metadata
202
+ USCoreTestKit::USCoreV610::USCoreTestSuite.metadata +
203
+ USCoreTestKit::USCoreV700::USCoreTestSuite.metadata
203
204
 
204
205
  all_metadata =
205
206
  all_metadata
@@ -19,8 +19,9 @@ module Inferno
19
19
  FHIRPackageManager.get_package('hl7.fhir.us.core#4.0.0', PACKAGE_DIR, ['ValueSet', 'CodeSystem'])
20
20
  FHIRPackageManager.get_package('hl7.fhir.us.core#5.0.1', PACKAGE_DIR, ['ValueSet', 'CodeSystem'])
21
21
  FHIRPackageManager.get_package('hl7.fhir.us.core#6.1.0', PACKAGE_DIR, ['ValueSet', 'CodeSystem'])
22
+ FHIRPackageManager.get_package('hl7.fhir.us.core#7.0.0', PACKAGE_DIR, ['ValueSet', 'CodeSystem'])
22
23
  FHIRPackageManager.get_package(
23
- 'us.nlm.vsac#0.11.0', File.join(PACKAGE_DIR, 'vsac'), ['ValueSet', 'CodeSystem']
24
+ 'us.nlm.vsac#0.18.0', File.join(PACKAGE_DIR, 'vsac'), ['ValueSet', 'CodeSystem']
24
25
  )
25
26
  end
26
27
 
@@ -13,7 +13,8 @@ module Inferno
13
13
  '2020' => 'https://download.nlm.nih.gov/umls/kss/2020AB/umls-2020AB-full.zip',
14
14
  '2021' => 'https://download.nlm.nih.gov/umls/kss/2021AA/umls-2021AA-full.zip',
15
15
  '2022' => 'https://download.nlm.nih.gov/umls/kss/2022AA/umls-2022AA-full.zip',
16
- '2023' => 'https://download.nlm.nih.gov/umls/kss/2023AA/umls-2023AA-full.zip'
16
+ '2023' => 'https://download.nlm.nih.gov/umls/kss/2023AA/umls-2023AA-full.zip',
17
+ '2024' => 'https://download.nlm.nih.gov/umls/kss/2024AA/umls-2024AA-full.zip'
17
18
  }.freeze
18
19
  TICKET_GRANTING_TICKET_URL = 'https://utslogin.nlm.nih.gov/cas/v1/api-key'.freeze
19
20
 
@@ -16,7 +16,7 @@ module Inferno
16
16
  # Before writing the JSON to a file at the end
17
17
  end_vs = nil if type == 'json'
18
18
 
19
- %w[2023].each do |version|
19
+ %w[2024].each do |version|
20
20
  Loader.register_umls_db File.join(TEMP_DIR, version, 'umls.db')
21
21
  Loader.load_value_sets_from_directory(PACKAGE_DIR, true)
22
22
  vs = Repositories::ValueSets.new.find(value_set_url)
@@ -13,7 +13,8 @@ module Inferno
13
13
  '2020' => 'inferno_2020.prop',
14
14
  '2021' => 'inferno_2021.prop',
15
15
  '2022' => 'inferno_2022.prop',
16
- '2023' => 'inferno_2023.prop'
16
+ '2023' => 'inferno_2023.prop',
17
+ '2024' => 'inferno_2024.prop'
17
18
  }.freeze
18
19
 
19
20
  attr_reader :version
@@ -4,6 +4,7 @@ module Inferno
4
4
  module Terminology
5
5
  class Validator
6
6
  attr_reader :url, :concept_count, :type, :code_systems, :file_name, :bloom_filter
7
+ alias id url
7
8
 
8
9
  def initialize(metadata)
9
10
  @url = metadata[:url]
@@ -193,6 +193,8 @@ module Inferno
193
193
  @value_set_model.url
194
194
  end
195
195
 
196
+ alias id url
197
+
196
198
  # Return the number of codes in the valueset
197
199
  def count
198
200
  @value_set.length
@@ -0,0 +1,74 @@
1
+ require_relative 'g10_options'
2
+
3
+ module ONCCertificationG10TestKit
4
+ # This is a list of all resource types mapped to USCDI data classes or elements,
5
+ # and shall be supported by certified server implementation:
6
+
7
+ # * AllergyIntolerance
8
+ # * CarePlan
9
+ # * CareTeam
10
+ # * Condition
11
+ # * Device
12
+ # * DiagnosticReport
13
+ # * DocumentReference
14
+ # * Encounter
15
+ # * Goal
16
+ # * Immunization
17
+ # * MedicationRequest
18
+ # * Observation
19
+ # * Organization
20
+ # * Patient
21
+ # * Practitioner
22
+ # * Procedure
23
+ # * Provenance
24
+
25
+ # For USCDI v2 / US Core v5.0.1, these resource types are added:
26
+ # * RelatedPerson
27
+ # * ServiceRequest
28
+
29
+ # For USCDI v3 / US Core v6.1.0, these resource types are added:
30
+ # * Coverage
31
+ # * MedicationDispense
32
+ # * Specimen
33
+
34
+ # For USCDI v4 / US Core v7.0.0, these resource types are added:
35
+ # * Location
36
+ module AllResources
37
+ ALL_RESOURCES =
38
+ [
39
+ 'AllergyIntolerance',
40
+ 'CarePlan',
41
+ 'CareTeam',
42
+ 'Condition',
43
+ 'Device',
44
+ 'DiagnosticReport',
45
+ 'DocumentReference',
46
+ 'Encounter',
47
+ 'Goal',
48
+ 'Immunization',
49
+ 'MedicationRequest',
50
+ 'Observation',
51
+ 'Organization',
52
+ 'Procedure',
53
+ 'Patient',
54
+ 'Practitioner',
55
+ 'Provenance'
56
+ ].freeze
57
+
58
+ V5_ALL_RESOURCES = (ALL_RESOURCES + ['RelatedPerson', 'ServiceRequest']).freeze
59
+
60
+ V6_ALL_RESOURCES = (V5_ALL_RESOURCES + ['Coverage', 'MedicationDispense', 'Specimen']).freeze
61
+
62
+ V7_ALL_RESOURCES = (V6_ALL_RESOURCES + ['Location']).freeze
63
+
64
+ def all_required_resources
65
+ return V5_ALL_RESOURCES if using_us_core_5?
66
+
67
+ return V6_ALL_RESOURCES if using_us_core_6?
68
+
69
+ return V7_ALL_RESOURCES if using_us_core_7?
70
+
71
+ ALL_RESOURCES
72
+ end
73
+ end
74
+ end