Sha256: ed17fa8f0cd54a8296652cac665582bf390123931d0df15bfbefafccd0fb200f

Contents?: true

Size: 1.29 KB

Versions: 114

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

114 entries across 114 versions & 1 rubygems

Version Path
renalware-core-2.1.1 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.1.0 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.167 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.166 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.165 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.164 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.163 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.162 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.161 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.160 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.159 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.158 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.157 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.156 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.155 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.153 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.152 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.151 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.149 app/models/concerns/renalware/letters/letter_pathology.rb
renalware-core-2.0.148 app/models/concerns/renalware/letters/letter_pathology.rb