Sha256: 496298d663887152d49389a59c1424687acc346a29fd5402a816359101961ed2

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/letters"

module Renalware
  module Letters
    module LetterPathology
      extend ActiveSupport::Concern

      # Filters a set of observations using a specific set of OBX codes
      class FilteredObservationSet
        EMPTY_SNAPSHOT = {}.freeze

        def initialize(observation_set:, codes: nil)
          @codes = codes || RelevantObservationDescription.all.map(&:code)
          @observation_set = observation_set
        end

        # Returns a hash of the filtered observations e.g.
        # {
        #   "NA"=>{"result"=>"139", "observed_at"=>"2016-03-15T03:28:00"},
        #   "ALB"=>{"result"=>"49", "observed_at"=>"2016-03-15T03:28:00"},
        #   ...
        # }
        def to_h
          return if observation_set.blank?
          hash = observation_set.values.select { |code, _| codes.include?(code.to_s) }
          hash.empty? ? nil : hash
        end

        private

        attr_reader :observation_set, :codes
      end

      # Update a letter's pathology snapshot to the current point in time
      def build_pathology_snapshot(patient)
        FilteredObservationSet.new(
          observation_set: patient.current_observation_set,
          codes: Renalware::Letters::RelevantObservationDescription.all.map(&:code)
        ).to_h
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
renalware-core-2.0.18 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.17 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.16 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.15 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.14 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.13 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.12 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.11 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.9 app/models/concerns/renalware/letters/letter_pathology.rb