pacing 2.1.0 → 2.2.1
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/lib/pacing/error.rb +1 -2
- data/lib/pacing/normalizer.rb +9 -7
- data/lib/pacing/pacer.rb +5 -3
- data/lib/pacing/version.rb +1 -1
- data/spec/pacing_spec.rb +26 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ccfc4f4c8e6664190adfb475373feeffa18147777afe5dd19e28b39d1c2bff2
|
4
|
+
data.tar.gz: 4834d0e23c85d6681cb91053bd4db9ab38ccd216960a157005516d9d509a7ff1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41cb717c55137d9ca5cd92925fad3ba6364687bc8bab505633c2f436a39e71a7b55eb41ffc4408f619dfbd185470bc7907f5a76508d63ecbfb7135c400620bd9
|
7
|
+
data.tar.gz: 87d1830887611012fb05d9e9f1f6149e7d367b30c9464282ef2e4a571a8a105d3bd659d54f5b44a06524c1c99a0a82ea654157f1b74073cb44b29ef0146f88ca
|
data/lib/pacing/error.rb
CHANGED
@@ -53,7 +53,7 @@ module Pacing
|
|
53
53
|
|
54
54
|
begin
|
55
55
|
@school_plan[:school_plan_services].each do |school_plan_service|
|
56
|
-
if (parse_date(school_plan_service[:start_date])
|
56
|
+
if (parse_date(school_plan_service[:start_date]) <= parse_date(@date) && parse_date(@date) <= parse_date(school_plan_service[:end_date]))
|
57
57
|
valid_range_or_exceptions = true
|
58
58
|
end
|
59
59
|
end
|
@@ -72,4 +72,3 @@ module Pacing
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
75
|
-
|
data/lib/pacing/normalizer.rb
CHANGED
@@ -32,7 +32,7 @@ module Pacing
|
|
32
32
|
discipline_services = services.filter do |service|
|
33
33
|
["pragmatic language", "speech and language", "language", "speech", "language therapy", "speech therapy", "speech and language therapy", "speech language therapy"].include?(service[:type_of_service].downcase)
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
return {} if discipline_services.empty?
|
37
37
|
|
38
38
|
discipline_services = normalize_to_monthly_frequency(discipline_services)
|
@@ -57,7 +57,7 @@ module Pacing
|
|
57
57
|
discipline_services = services.filter do |service|
|
58
58
|
["occupation therapy", "occupational therapy", "occupation"].include?(service[:type_of_service].downcase)
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
return {} if discipline_services.empty?
|
62
62
|
|
63
63
|
discipline_services = normalize_to_monthly_frequency(discipline_services)
|
@@ -82,7 +82,7 @@ module Pacing
|
|
82
82
|
discipline_services = services.filter do |service|
|
83
83
|
["physical therapy", "physical"].include?(service[:type_of_service].downcase)
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
return {} if discipline_services.empty?
|
87
87
|
|
88
88
|
discipline_services = normalize_to_monthly_frequency(discipline_services)
|
@@ -107,7 +107,7 @@ module Pacing
|
|
107
107
|
discipline_services = services.filter do |service|
|
108
108
|
["feeding therapy", "feeding"].include?(service[:type_of_service].downcase)
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
return {} if discipline_services.empty?
|
112
112
|
|
113
113
|
discipline_services = normalize_to_monthly_frequency(discipline_services)
|
@@ -155,8 +155,11 @@ module Pacing
|
|
155
155
|
# average business days for each interval
|
156
156
|
interval_average_days = {
|
157
157
|
"weekly" => 5,
|
158
|
+
"per week" => 5,
|
158
159
|
"monthly" => 22,
|
159
|
-
"
|
160
|
+
"per month" => 22,
|
161
|
+
"yearly" => 210,
|
162
|
+
"per year" => 210 # take away average holidays period with is 2.5 months
|
160
163
|
}
|
161
164
|
|
162
165
|
return services if same_interval(services)
|
@@ -164,7 +167,7 @@ module Pacing
|
|
164
167
|
services.map do |service|
|
165
168
|
if !(service[:interval] == "monthly")
|
166
169
|
# weekly(5 days) = frequency # weekly
|
167
|
-
# monthly(20 days) = frequency * monthly
|
170
|
+
# monthly(20 days) = frequency * monthly
|
168
171
|
# yearly(200 days)
|
169
172
|
|
170
173
|
f = service[:frequency]
|
@@ -207,4 +210,3 @@ module Pacing
|
|
207
210
|
end
|
208
211
|
end
|
209
212
|
end
|
210
|
-
|
data/lib/pacing/pacer.rb
CHANGED
@@ -44,7 +44,9 @@ module Pacing
|
|
44
44
|
discipline = {}
|
45
45
|
discipline[:discipline] = discipline_name
|
46
46
|
discipline[:reset_date] = reset_date(start_date: service[:start_date], interval: service[:interval])
|
47
|
-
|
47
|
+
parsed_date = service[:start_date] ? parse_date(service[:start_date]) : nil
|
48
|
+
treatment_start_date = parsed_date && service[:interval] ? start_of_treatment_date(parsed_date, service[:interval]) : nil
|
49
|
+
discipline[:start_date] = treatment_start_date ? treatment_start_date.strftime("%m-%d-%Y") : nil
|
48
50
|
discipline
|
49
51
|
end
|
50
52
|
end
|
@@ -101,7 +103,7 @@ module Pacing
|
|
101
103
|
|
102
104
|
# discipline iep frequency
|
103
105
|
def discipline_frequency(service)
|
104
|
-
service[:frequency].to_s + service[:interval]
|
106
|
+
service[:frequency].to_s + service[:interval].gsub(/(per)|p/i, "").strip[0].upcase + "x" + service[:time_per_session_in_minutes].to_s + service[:type_of_service][0].upcase + "T"
|
105
107
|
end
|
106
108
|
|
107
109
|
# get a spreadout of visit dates over an interval by using simple proportion.
|
@@ -348,6 +350,6 @@ module Pacing
|
|
348
350
|
holidays_start += 1 until holidays_start.wday == 1
|
349
351
|
|
350
352
|
[holidays_start, holidays_end]
|
351
|
-
end
|
353
|
+
end
|
352
354
|
end
|
353
355
|
end
|
data/lib/pacing/version.rb
CHANGED
data/spec/pacing_spec.rb
CHANGED
@@ -5232,4 +5232,30 @@ describe "should include frequency in the output if show frequency is true" do
|
|
5232
5232
|
results = Pacing::Pacer.new(school_plan: school_plan, date: date, non_business_days: non_business_days, show_frequency: true).calculate
|
5233
5233
|
expect(results).to eq([{:discipline=>"Speech Therapy", :remaining_visits=>1, :used_visits=>0, :pace=>0, :pace_indicator=>"😁", :pace_suggestion=>"once a week", :expected_visits_at_date=>0, :reset_date=>"10-24-2022", :frequency=>"1Wx20ST"}])
|
5234
5234
|
end
|
5235
|
+
|
5236
|
+
it "should correctly parse the pacing for patient 4564 when start_date is same as date" do
|
5237
|
+
school_plan = {:school_plan_services=>[{:school_plan_type=>"IEP", :start_date=>"01-09-2023", :end_date=>"03-30-2023", :type_of_service=>"Speech Therapy", :frequency=>1, :interval=>"weekly", :time_per_session_in_minutes=>20, :completed_visits_for_current_interval=>0, :extra_sessions_allowable=>0, :interval_for_extra_sessions_allowable=>"weekly"}]}
|
5238
|
+
date = "01-09-2023"
|
5239
|
+
non_business_days = []
|
5240
|
+
results = Pacing::Pacer.new(school_plan: school_plan, date: date, non_business_days: non_business_days, show_frequency: true).calculate
|
5241
|
+
expect(results).to eq([{:discipline=>"Speech Therapy", :remaining_visits=>1, :used_visits=>0, :pace=>0, :pace_indicator=>"😁", :pace_suggestion=>"once a week", :expected_visits_at_date=>0, :reset_date=>"01-16-2023", :frequency=>"1Wx20ST"}])
|
5242
|
+
end
|
5243
|
+
end
|
5244
|
+
|
5245
|
+
describe "should calculate pacing correctly when interval starts with 'per month, per week, and per year'" do
|
5246
|
+
it "should correctly parse the pacing for patient 4565" do
|
5247
|
+
school_plan = {:school_plan_services=>[{:school_plan_type=>"IEP", :start_date=>"02-23-2022", :end_date=>"02-23-2023", :type_of_service=>"Speech Therapy", :frequency=>12, :interval=>"per month", :time_per_session_in_minutes=>20, :completed_visits_for_current_interval=>3, :extra_sessions_allowable=>0, :interval_for_extra_sessions_allowable=>"per month"}, {:school_plan_type=>"IEP", :start_date=>"05-19-2022", :end_date=>"11-01-2022", :type_of_service=>"Language Therapy", :frequency=>3, :interval=>"per week", :time_per_session_in_minutes=>20, :completed_visits_for_current_interval=>0, :extra_sessions_allowable=>0, :interval_for_extra_sessions_allowable=>"per week"}]}
|
5248
|
+
date = "10-17-2022"
|
5249
|
+
non_business_days = []
|
5250
|
+
results = Pacing::Pacer.new(school_plan: school_plan, date: date, non_business_days: non_business_days, show_frequency: true).calculate
|
5251
|
+
expect(results).to eq([{:discipline=>"Speech Therapy", :remaining_visits=>22, :used_visits=>3, :pace=>-10, :pace_indicator=>"🐢", :pace_suggestion=>"once a day", :expected_visits_at_date=>13, :reset_date=>"11-01-2022", :frequency=>"25Mx20ST"}])
|
5252
|
+
end
|
5253
|
+
|
5254
|
+
it "should correctly parse the pacing for patient 4566" do
|
5255
|
+
school_plan = {:school_plan_services=>[{:school_plan_type=>"IEP", :start_date=>"09-27-2022", :end_date=>"09-27-2023", :type_of_service=>"Language Therapy", :frequency=>30, :interval=>"per year", :time_per_session_in_minutes=>20, :completed_visits_for_current_interval=>4, :extra_sessions_allowable=>0, :interval_for_extra_sessions_allowable=>"per year"}]}
|
5256
|
+
date = "10-17-2022"
|
5257
|
+
non_business_days = []
|
5258
|
+
results = Pacing::Pacer.new(school_plan: school_plan, date: date, non_business_days: non_business_days, show_frequency: true).calculate
|
5259
|
+
expect(results).to eq([{:discipline=>"Speech Therapy", :remaining_visits=>26, :used_visits=>4, :pace=>2, :pace_indicator=>"🐇", :pace_suggestion=>"less than once per week", :expected_visits_at_date=>2, :reset_date=>"09-27-2023", :frequency=>"30Yx20ST"}])
|
5260
|
+
end
|
5235
5261
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pacing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin S. Dias
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-05-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
|
-
rubygems_version: 3.
|
94
|
+
rubygems_version: 3.3.26
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Pacing is a tool that enables therapists to better manage and track their
|