Sha256: ad66ff585355b7ea15ff2874999eaba50f0955491a4a5fddcdf143bc5f40186e

Contents?: true

Size: 1.29 KB

Versions: 26

Compression:

Stored size: 1.29 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
        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

26 entries across 26 versions & 1 rubygems

Version Path
renalware-core-2.0.46 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.45 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.44 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.43 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.42 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.41 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.40 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.39 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.38 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.37 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.36 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.35 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.34 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.33 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.32 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.31 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.30 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.28 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.27 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.26 app/models/concerns/renalware/letters/letter_pathology.rb