Sha256: 323144535e8904969372b2de361062117f0d6ffed7d2ec47de508a6a815d0ec9

Contents?: true

Size: 1.87 KB

Versions: 6

Compression:

Stored size: 1.87 KB

Contents

require_relative 'ig_metadata'
require_relative 'group_metadata_extractor'

module USCoreTestKit
  class Generator
    class IGMetadataExtractor
      attr_accessor :ig_resources, :metadata

      def initialize(ig_resources)
        self.ig_resources = ig_resources
        add_vital_signs_profiles
        self.metadata = IGMetadata.new
      end

      def extract
        add_metadata_from_ig
        add_metadata_from_resources
        metadata
      end

      def add_metadata_from_ig
        metadata.ig_version = "v#{ig_resources.ig.version}"
      end

      def resources_in_capability_statement
        ig_resources.capability_statement.rest.first.resource
      end

      # The US Core Server Capability Statement does not list support for the
      # required vital signs profiles, so they need to be added
      def add_vital_signs_profiles
        if ig_resources.ig.version == "3.1.1"
          ig_resources.capability_statement.rest.first.resource
            .find { |resource| resource.type == 'Observation' }
            .supportedProfile.concat [
              'http://hl7.org/fhir/StructureDefinition/bodyheight',
              'http://hl7.org/fhir/StructureDefinition/bodytemp',
              'http://hl7.org/fhir/StructureDefinition/bp',
              'http://hl7.org/fhir/StructureDefinition/bodyweight',
              'http://hl7.org/fhir/StructureDefinition/heartrate',
              'http://hl7.org/fhir/StructureDefinition/resprate'
            ]
        end
      end

      def add_metadata_from_resources
        metadata.groups =
          resources_in_capability_statement.flat_map do |resource|
            resource.supportedProfile&.map do |supported_profile|
              GroupMetadataExtractor.new(resource, supported_profile, metadata, ig_resources).group_metadata
            end
          end

        metadata.postprocess_groups(ig_resources)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
us_core_test_kit-0.2.5 lib/us_core_test_kit/generator/ig_metadata_extractor.rb
us_core_test_kit-0.2.4 lib/us_core_test_kit/generator/ig_metadata_extractor.rb
us_core_test_kit-0.2.3 lib/us_core_test_kit/generator/ig_metadata_extractor.rb
us_core_test_kit-0.2.2 lib/us_core_test_kit/generator/ig_metadata_extractor.rb
us_core_test_kit-0.2.1 lib/us_core_test_kit/generator/ig_metadata_extractor.rb
us_core_test_kit-0.2.0 lib/us_core_test_kit/generator/ig_metadata_extractor.rb