Sha256: 415c8641299238a1cb1a2277a550f0e9e38dff5f116509dae3af03deb85d5262

Contents?: true

Size: 1.94 KB

Versions: 17

Compression:

Stored size: 1.94 KB

Contents

require_dependency "renalware/pd"

module Renalware
  module PD
    class CAPDRegime < Regime
      include OrderedScope
      include PatientScope

      BAG_VOLUMES = [1000, 1200, 1500, 1800, 2000, 2200, 2500].freeze

      before_save :set_glucose_volume_low_strength
      before_save :set_glucose_volume_medium_strength
      before_save :set_glucose_volume_high_strength

      def pd_type
        :capd
      end

      private

      def match_bag_type
        @match_bag_type ||= begin
          glucose_types = [[], [], []]

          bags.each do |bag|
            weekly_total = bag.weekly_total_glucose_ml_per_bag
            case bag.bag_type.glucose_strength.to_sym
            when :low then glucose_types[0] << weekly_total
            when :medium then glucose_types[1] << weekly_total
            when :high then glucose_types[2] << weekly_total
            else glucose_types
            end
          end
          glucose_types
        end
      end

      def set_glucose_volume_low_strength
        if match_bag_type[0].empty?
          0
        else
          per_week_total = match_bag_type[0].inject{ |sum, v| sum + v }
          glucose_daily_average = per_week_total / 7.to_f
          self.glucose_volume_low_strength = glucose_daily_average.round
        end
      end

      def set_glucose_volume_medium_strength
        if match_bag_type[1].empty?
          0
        else
          per_week_total = match_bag_type[1].inject{ |sum, v| sum + v }
          glucose_daily_average = per_week_total / 7.to_f
          self.glucose_volume_medium_strength = glucose_daily_average.round
        end
      end

      def set_glucose_volume_high_strength
        if match_bag_type[2].empty?
          0
        else
          per_week_total = match_bag_type[2].inject{ |sum, v| sum + v }
          glucose_daily_average = per_week_total / 7.to_f
          self.glucose_volume_high_strength = glucose_daily_average.round
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
renalware-core-2.0.0.pre.rc9 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc8 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc7 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc6 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc5 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc4 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc3 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.rc1 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta12 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta11 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta10 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta9 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta8 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta7 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta6 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta5 app/models/renalware/pd/capd_regime.rb
renalware-core-2.0.0.pre.beta4 app/models/renalware/pd/capd_regime.rb