Sha256: 1a10e1076418198ac8815b5dad0d4a8833765268cc71a62d461ef1a4bc338d05

Contents?: true

Size: 1.41 KB

Versions: 9

Compression:

Stored size: 1.41 KB

Contents

require 'insulin'
require 'time'

module Insulin
  class NDayPeriod < Array
    attr_reader :descriptor, :start_date, :hba1c

    def initialize hash
      @start_date = hash["start_date"]
      @days = hash["days"]
      @mongo = hash["mongo"]

      t = Time.parse @start_date
      today = Time.new
      @count = 0
      @days.times do |i|
        d = (t + (i * 86400))
        if d <= today
          day = Day.new d.strftime("%F"), @mongo
          if day.has_events?
            self << day
          end
          @count += 1
        end
      end

      @descriptor = "%d-day period" % [
        @count
      ]

      @hba1c = @mongo.db.collection("hba1c").find.sort(:timestamp).to_a[-1]
    end

    def average_glucose
      total = 0
      self.each do |d|
        total += d.average_glucose
      end

      return total / self.size
    end

    def to_s
      s = "%s commencing %s" % [
        @descriptor,
        @start_date
      ]
      s << "\n"
      s << "\n"

      self.each do |d|
        s << d.minimal
        s << "\n"
      end

      s << "    "
      s << "average glucose for %s commencing %s: %0.2f %s" % [
        @descriptor,
        @start_date,
        self.average_glucose,
        self[0].glucose_units
      ]

      s << "\n"
      s << "    "
      s << "latest hba1c (from %s): %0.1f%s" % [
        @hba1c["date"],
        @hba1c["value"],
        @hba1c["units"]
      ]

      s
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
insulin-0.1.11 lib/insulin/n_day_period.rb
insulin-0.1.10 lib/insulin/n_day_period.rb
insulin-0.1.9 lib/insulin/n_day_period.rb
insulin-0.1.8 lib/insulin/n_day_period.rb
insulin-0.1.7 lib/insulin/n_day_period.rb
insulin-0.1.6 lib/insulin/n_day_period.rb
insulin-0.1.5 lib/insulin/n_day_period.rb
insulin-0.1.4 lib/insulin/n_day_period.rb
insulin-0.1.3 lib/insulin/n_day_period.rb