Skip to content

Commit

Permalink
chore: improved renal rule handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Casper Bollen authored and Casper Bollen committed Jun 2, 2024
1 parent b3f20a9 commit 234bf31
Showing 1 changed file with 30 additions and 5 deletions.
35 changes: 30 additions & 5 deletions src/Informedica.GenForm.Lib/RenalRule.fs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ module RenalRule =
data
|> Array.filter (fun r ->
r.Generic <> "" &&
r.Route <> ""
r.Source <> ""
)
|> Array.choose (fun r ->
createRenalFunction
Expand Down Expand Up @@ -320,7 +320,9 @@ module RenalRule =

[|
fun (rr : RenalRule) -> rr.Generic |> eqs filter.Generic
fun (rr : RenalRule) -> filter.Route |> Option.isNone || rr.Route |> Mapping.eqsRoute filter.Route
fun (rr : RenalRule) ->
rr.Route |> String.isNullOrWhiteSpace ||
(filter.Route |> Option.isNone || rr.Route |> Mapping.eqsRoute filter.Route)
fun (rr : RenalRule) ->
rr.DoseType = NoDoseType ||
filter.DoseType
Expand Down Expand Up @@ -367,9 +369,21 @@ module RenalRule =
)
| Absolute -> vu2

let adjustMinMax dr mm2 mm1 =
match dr with
| Absolute ->
if mm2 <> MinMax.empty then mm2 else mm1
| Relative ->
if mm2 = MinMax.empty then mm2
else
mm1
|> MinMax.calc (*) mm2

{ doseRule with
RenalRule = Some renalRule.Source
Frequencies = renalRule.Frequencies
Frequencies =
if renalRule.Frequencies |> Option.isSome then renalRule.Frequencies
else doseRule.Frequencies
DoseLimits =
doseRule.DoseLimits
|> Array.map (fun dl ->
Expand All @@ -387,14 +401,25 @@ module RenalRule =
|> Option.map (fun f -> vu / f)
)
{ dl with
Quantity =
printfn $"adjusting: {dl.Quantity} with {rl.Quantity}"
dl.Quantity
|> adjustMinMax
rl.DoseReduction
rl.Quantity
NormQuantityAdjust =
normQtyAdj
|> adjustVU
rl.DoseReduction
rl.NormQuantityAdjust
QuantityAdjust = rl.QuantityAdjust
QuantityAdjust =
dl.QuantityAdjust
|> adjustMinMax
rl.DoseReduction
rl.QuantityAdjust
NormPerTimeAdjust =
if rl.NormQuantityAdjust |> Option.isSome then None
if rl.NormQuantityAdjust |> Option.isSome ||
rl.QuantityAdjust <> MinMax.empty then None
else
dl.NormPerTimeAdjust
|> adjustVU
Expand Down

0 comments on commit 234bf31

Please sign in to comment.