pueri 0.7.0 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +24 -0
- data/.rubocop.yml +1 -1
- data/ABOUT.md +28 -0
- data/CHANGELOG.md +16 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +3 -3
- data/README.md +19 -2
- data/docs/Pueri.html +3 -3
- data/docs/Pueri/Age.html +1 -1
- data/docs/Pueri/DoseCalc.html +1097 -0
- data/docs/Pueri/DoseCheck.html +1094 -0
- data/docs/Pueri/Neuro.html +1 -1
- data/docs/Pueri/Vax.html +1 -1
- data/docs/_index.html +23 -1
- data/docs/class_list.html +1 -1
- data/docs/file.README.html +10 -3
- data/docs/index.html +10 -3
- data/docs/method_list.html +203 -11
- data/docs/top-level-namespace.html +1 -1
- data/lib/pueri.rb +2 -0
- data/lib/pueri/dosecalc.rb +114 -0
- data/lib/pueri/dosecheck.rb +95 -0
- data/lib/pueri/version.rb +1 -1
- data/package.json +1 -1
- metadata +8 -2
@@ -100,7 +100,7 @@
|
|
100
100
|
</div>
|
101
101
|
|
102
102
|
<div id="footer">
|
103
|
-
Generated on
|
103
|
+
Generated on Mon Oct 28 17:34:32 2019 by
|
104
104
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
105
105
|
0.9.20 (ruby-2.5.5).
|
106
106
|
</div>
|
data/lib/pueri.rb
CHANGED
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Pueri
|
4
|
+
# Calculates the prescription of a given medication given the weight of the
|
5
|
+
# pacient, the dose-per-weight-day, the concentration of the medication's
|
6
|
+
# presentation and the periodicity of takes in hours.
|
7
|
+
class DoseCalc
|
8
|
+
attr_reader :weight, :dose, :time, :days, :concentration, :result, :name
|
9
|
+
attr_accessor :dose_unit, :conc_unit
|
10
|
+
|
11
|
+
# Calculate the dosage for each taking of a given medicine.
|
12
|
+
#
|
13
|
+
# @param params [Hash] A Hash of elements, all of which are required to
|
14
|
+
# properly calculate and output the final dosage-per-taking:
|
15
|
+
# [+:weight+] The weight of the pacient, in _kilograms_.
|
16
|
+
# [+:dose+] The dose for the pacient, in _unit/kg/day_.
|
17
|
+
# [+:time+] The time between takings, in hours.
|
18
|
+
# [+:days+] The number of days to take the medication.
|
19
|
+
# [+:concentration+] The posologic concentration, number only.
|
20
|
+
# [+:dose_unit+] The unit of dosage for the pacient (_e.g._ mg/kg/d).
|
21
|
+
# [+:conc_unit+] The unit of concentration (_e.g._ mg/mL, mcg/pill).
|
22
|
+
# [+:name+] The name of the medication.
|
23
|
+
def initialize(params)
|
24
|
+
init_vars(params)
|
25
|
+
@result = ((@weight * @dose * @time) / (24.0 * @concentration)).round(3)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Outputs the calculated dosage into a prescription string.
|
29
|
+
#
|
30
|
+
# @return [String] The prescription string.
|
31
|
+
def to_s
|
32
|
+
[
|
33
|
+
"- #{@name} #{@concentration.to_i}#{@conc_unit.join '/'}",
|
34
|
+
"Tomar #{@result}#{@conc_unit[1]} #{time_to_s} #{days_to_s}."
|
35
|
+
].join "\n"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Outputs the calculated dosage for each taking. _E.g._ +3.7+, as in _use
|
39
|
+
# 3.7 units of medication each time_.
|
40
|
+
#
|
41
|
+
# @return [Float] The dosage to be used each time one takes the medication.
|
42
|
+
def to_f
|
43
|
+
@result
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def time_to_s
|
49
|
+
if @time == 24.0
|
50
|
+
'uma vez por dia'
|
51
|
+
else
|
52
|
+
time = @time.to_i.to_s.rjust(2, '0')
|
53
|
+
hour = 'hora'
|
54
|
+
hour += 's' if @time > 1.0
|
55
|
+
"de #{time}/#{time} #{hour}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def days_to_s
|
60
|
+
if @days == 1.0
|
61
|
+
str = 'por um dia'
|
62
|
+
str = 'em dose única' if @time == 24.0
|
63
|
+
str
|
64
|
+
else
|
65
|
+
days = @days.to_i.to_s.rjust(2, '0')
|
66
|
+
str = 'dia'
|
67
|
+
str += 's' if @days > 1.0
|
68
|
+
"por #{days} #{str}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def init_vars(params)
|
73
|
+
check_vars(params)
|
74
|
+
init_calc_vars(params)
|
75
|
+
init_str_vars(params)
|
76
|
+
end
|
77
|
+
|
78
|
+
def check_vars(params)
|
79
|
+
params.each do |key, value|
|
80
|
+
if value.is_a? String
|
81
|
+
check_str_var(key, value)
|
82
|
+
elsif value.zero?
|
83
|
+
raise ArgumentError, "#{key} must not be zero"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def check_str_var(key, value)
|
89
|
+
raise ArgumentError, "#{key} must not be zero" if value.empty?
|
90
|
+
|
91
|
+
if key == :dose_unit
|
92
|
+
msg = "#{key} must follow unit/kg/d format"
|
93
|
+
raise ArgumentError, msg unless value.match? %r{^[A-Za-z]+\/kg\/d$}
|
94
|
+
elsif key == :conc_unit
|
95
|
+
msg = "#{key} must follow unit/presentation format"
|
96
|
+
raise ArgumentError, msg unless value.match? %r{^[A-Za-z]+\/[A-Za-z]+$}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def init_calc_vars(params)
|
101
|
+
@weight = params[:weight].to_f
|
102
|
+
@dose = params[:dose].to_f
|
103
|
+
@time = params[:time].to_f
|
104
|
+
@days = params[:days].to_i
|
105
|
+
@concentration = params[:concentration].to_f
|
106
|
+
end
|
107
|
+
|
108
|
+
def init_str_vars(params)
|
109
|
+
@dose_unit = params[:dose_unit].split '/'
|
110
|
+
@conc_unit = params[:conc_unit].split '/'
|
111
|
+
@name = params[:name].strip
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Pueri
|
4
|
+
# Checks the prescription of a given medication given the weight of the
|
5
|
+
# pacient, the dose-per-take, the concentration of the medication's
|
6
|
+
# presentation and the periodicity of takes in hours.
|
7
|
+
class DoseCheck
|
8
|
+
attr_reader :weight, :dose, :time, :concentration, :result, :name
|
9
|
+
attr_accessor :dose_unit, :conc_unit, :way
|
10
|
+
|
11
|
+
# Calculate the dosage-per-weight-day for the prescribed medicine.
|
12
|
+
#
|
13
|
+
# @param params [Hash] A Hash of elements, all of which are required to
|
14
|
+
# properly calculate and output the final dosage-per-weight-day:
|
15
|
+
# [+:weight+] The weight of the pacient, in _kilograms_.
|
16
|
+
# [+:dose+] The dose for the pacient, in any given _unit_.
|
17
|
+
# [+:time+] The time between takings, in hours.
|
18
|
+
# [+:concentration+] The posologic concentration, number only.
|
19
|
+
# [+:dose_unit+] The unit of medication for each taking (_e.g._ mL).
|
20
|
+
# [+:conc_unit+] The unit of concentration (_e.g._ mg/mL, mcg/pill).
|
21
|
+
# [+:way+] The way of admnistration (_e.g._ IV, SC).
|
22
|
+
# [+:name+] The name of the medication.
|
23
|
+
def initialize(params)
|
24
|
+
init_vars(params)
|
25
|
+
@result = ((@dose * @concentration * 24.0) / (@time * @weight)).round(3)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Outputs the calculated dosage as a string.
|
29
|
+
#
|
30
|
+
# @return [String] The dosage-per-weight-day string.
|
31
|
+
def to_s
|
32
|
+
[
|
33
|
+
"#{@name} #{@concentration.to_i}#{@conc_unit.join '/'} (#{usage})",
|
34
|
+
"-> Dose de #{@result}#{@conc_unit[0]}/kg/d."
|
35
|
+
].join "\n"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Outputs the calculated dosage-per-weight-day as a float.
|
39
|
+
#
|
40
|
+
# @return [Float] The dosage prescribe as a float, without units.
|
41
|
+
def to_f
|
42
|
+
@result
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def usage
|
48
|
+
time = @time.to_i
|
49
|
+
"#{@dose}#{@dose_unit} #{@way} #{time}/#{time}h por #{@days.to_i}d"
|
50
|
+
end
|
51
|
+
|
52
|
+
def init_vars(params)
|
53
|
+
check_vars(params)
|
54
|
+
init_calc_vars(params)
|
55
|
+
init_str_vars(params)
|
56
|
+
end
|
57
|
+
|
58
|
+
def check_vars(params)
|
59
|
+
params.each do |key, value|
|
60
|
+
if value.is_a? String
|
61
|
+
check_str_var(key, value)
|
62
|
+
elsif value.zero?
|
63
|
+
raise ArgumentError, "#{key} must not be zero"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def check_str_var(key, value)
|
69
|
+
raise ArgumentError, "#{key} must not be zero" if value.empty?
|
70
|
+
|
71
|
+
if key == :dose_unit
|
72
|
+
msg = "#{key} must follow 'unit' format"
|
73
|
+
raise ArgumentError, msg unless value.match?(/^[A-Za-z]+$/)
|
74
|
+
elsif key == :conc_unit
|
75
|
+
msg = "#{key} must follow unit/presentation format"
|
76
|
+
raise ArgumentError, msg unless value.match? %r{^[A-Za-z]+\/[A-Za-z]+$}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def init_calc_vars(params)
|
81
|
+
@weight = params[:weight].to_f
|
82
|
+
@dose = params[:dose].to_f
|
83
|
+
@time = params[:time].to_f
|
84
|
+
@days = params[:days].to_i
|
85
|
+
@concentration = params[:concentration].to_f
|
86
|
+
end
|
87
|
+
|
88
|
+
def init_str_vars(params)
|
89
|
+
@dose_unit = params[:dose_unit].strip
|
90
|
+
@conc_unit = params[:conc_unit].split '/'
|
91
|
+
@name = params[:name].strip
|
92
|
+
@way = params[:way].strip
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/lib/pueri/version.rb
CHANGED
data/package.json
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pueri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Padoim
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -93,10 +93,12 @@ files:
|
|
93
93
|
- ".github/ISSUE_TEMPLATE/user_question.md"
|
94
94
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
95
95
|
- ".github/config.yml"
|
96
|
+
- ".github/workflows/ruby.yml"
|
96
97
|
- ".gitignore"
|
97
98
|
- ".rspec"
|
98
99
|
- ".rubocop.yml"
|
99
100
|
- ".travis.yml"
|
101
|
+
- ABOUT.md
|
100
102
|
- CHANGELOG.md
|
101
103
|
- CODE-OF-CONDUCT.md
|
102
104
|
- CONTRIBUTING.md
|
@@ -109,6 +111,8 @@ files:
|
|
109
111
|
- bin/setup
|
110
112
|
- docs/Pueri.html
|
111
113
|
- docs/Pueri/Age.html
|
114
|
+
- docs/Pueri/DoseCalc.html
|
115
|
+
- docs/Pueri/DoseCheck.html
|
112
116
|
- docs/Pueri/Neuro.html
|
113
117
|
- docs/Pueri/Vax.html
|
114
118
|
- docs/_index.html
|
@@ -127,6 +131,8 @@ files:
|
|
127
131
|
- docs/top-level-namespace.html
|
128
132
|
- lib/pueri.rb
|
129
133
|
- lib/pueri/age.rb
|
134
|
+
- lib/pueri/dosecalc.rb
|
135
|
+
- lib/pueri/dosecheck.rb
|
130
136
|
- lib/pueri/neuro.rb
|
131
137
|
- lib/pueri/vax.rb
|
132
138
|
- lib/pueri/version.rb
|