На форуме я новичок, так что не судите строго.
Написал примитивнейший скриптик на Ruby дла расчета дозы болюса.
Все замечания, комментарии и т.п. приветствуются!
- Код: Выделить всё
#!/usr/local/bin/ruby
=begin
Это примитивнейшая програма для расчета дозы актуального болюса
Никаких гарантий, ипользуйте если понимаете, что делаете.
Writen by E.Sevastyanov 17, Desember 2017
=end
puts
class Float
def roundf(places)
temp = self.to_s.length
sprintf("%#{temp}.#{places}f",self).to_f
end
end
fchi = 4.167 # fchi — фактор чуствительности к инсулину, для ультракоротких = 100/СДИ, для коротких = 83/СДИ, СДИ — суточная доза всех инсулинов, МЕ; 1800/(18*СДИ)
time = Time.new
b = time.to_a
case b[2]
when 6..12; uk = 0.05 # Коэффицент в МЕ/г для времени от 6:00 до 12:00
when 13..18; uk = 0.03 # Коэффициент в МЕ/г для времени от 13:00 до 18:00
else uk = 0.025 # Коэффицент для всего остального времени
end
puts "Сейчас " + b[2].to_s + ":" + b[1].to_s + " " + b[9].to_s + ", " + "Углеводный коэффицет — " + uk.to_s
print "Углеводов, г.: > "
u = gets.chomp.to_f
print "Актуальная гликемия: > "
ag = gets.chomp.to_f
print "Целевая гликемия: > "
cg = gets.chomp.to_f
begin
print "Предыдущая доза инсулина, ME: >"
pdi = gets.chomp.to_f
print "Когда введена, dd hh mm > "
time1 = gets.chomp
time1 = time1.split
time2 = Time.new(b[5], b[4], time1[0], time1[1], time1[2])
del = time.to_i - time2.to_i
if ((del >= 18000) || (del < 0)); then ai = 0.0; else ai = pdi - 0.0000625 * del * pdi; end #-22.5% в час; ai — активный инсулин
if ai < 0.0; then ai = 0.0; end
puts "Доза была введена " + time2.asctime + ", Активный инсулин — " + ai.roundf(1).to_s + "ME"
end
bolus = (((uk * u) + (ag - cg) / fchi) - ai)
if bolus > 0.0; then
puts "Доза актуального болюса: " + bolus.roundf(1).to_s + "ME"
else
print "\n"
puts "Болюс не нужен"
end
exit