Sha256: 1af2af42c20464df203a9db4219ca33ea9cb967c89727028596d701650585eae

Contents?: true

Size: 1.24 KB

Versions: 114

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "renalware/letters/part"

module Renalware
  module Letters
    class Part::ClinicalObservations < Part
      include Renalware::AttributeNameHelper
      OBSERVATION_ATTRS = %i(bp weight height bmi urine_blood urine_protein).freeze
      OBSERVATION_UNITS = { weight: :kg, height: :m }.freeze
      delegate(*OBSERVATION_ATTRS, to: :event)
      delegate :any?, to: :observations

      def each_observation
        observations.each do |arr|
          label, result, unit_of_measurement = arr
          yield(label, result, unit_of_measurement)
        end
      end

      def to_partial_path
        "renalware/letters/parts/clinical_observations"
      end

      private

      def observations
        OBSERVATION_ATTRS.each_with_object([]) do |observation, arr|
          value = send(observation)
          next if value.blank?

          arr << [
            label_for(observation),
            enum_text_or_raw_value_for(value),
            OBSERVATION_UNITS[observation]
          ]
        end
      end

      def label_for(observation)
        attr_name(Renalware::Clinics::ClinicVisit, observation)
      end

      def enum_text_or_raw_value_for(value)
        value.try(:text) || value
      end
    end
  end
end

Version data entries

114 entries across 114 versions & 1 rubygems

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