Sha256: b96516a190081099ade8f25cf2c35ea228fa26d0c82402813dad6eec25422626

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

require_relative 'ig_metadata'
require_relative 'group_metadata_extractor'

module IpaTestKit
  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 IPA Server Capability Statement does not list support for the
      # required vital signs profiles, so they need to be added
      def add_vital_signs_profiles
        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

      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

1 entries across 1 versions & 1 rubygems

Version Path
ipa_test_kit-0.2.0 lib/ipa_test_kit/generator/ig_metadata_extractor.rb