Sha256: b769d371003773efe8f853624d2b536b83a66394b8077aab1d4d23fcdbb801d1

Contents?: true

Size: 1.91 KB

Versions: 7

Compression:

Stored size: 1.91 KB

Contents

module USCoreTestKit
  class ProfileSupportTest < Inferno::Test
    id :us_core_profile_support
    title 'Capability Statement lists support for required US Core Profiles'
    description %(
      The US Core Implementation Guide states:

      ```
      The US Core Server SHALL:
      1. Support the US Core Patient resource profile.
      2. Support at least one additional resource profile from the list of US
         Core Profiles.

      In order to support USCDI, servers must support all USCDI resources.
      ```
    )
    uses_request :capability_statement

    run do
      assert_resource_type(:capability_statement)
      capability_statement = resource

      supported_profiles =
        capability_statement.rest
          &.each_with_object([]) do |rest, profiles|
            rest.resource.each { |resource| profiles.concat(resource.supportedProfile) }
          end.uniq

      assert supported_profiles.include?('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'), 'US Core Patient profile not supported'

      us_core_profiles = config.options[:us_core_profiles]

      other_profiles = us_core_profiles.reject { |resource_type| resource_type == 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient' }
      other_profiles_supported = other_profiles.any? { |profile| supported_profiles.include? profile }
      assert other_profiles_supported, 'No US Core profiles other than Patient are supported'

      if config.options[:required_profiles].present?
        required_profiles = config.options[:required_profiles]

        missing_profiles = required_profiles - supported_profiles

        missing_profiles_list =
          missing_profiles
            .map { |resource| "`#{resource}`" }
            .join(', ')

        assert missing_profiles.empty?,
               "The CapabilityStatement did not list support for the following resources: #{missing_profiles_list}"
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
us_core_test_kit-0.7.1 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.7.0 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.6.5 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.6.4 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.6.3 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.6.2 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb
us_core_test_kit-0.6.1 lib/us_core_test_kit/custom_groups/capability_statement/profile_support_test.rb