---
title: "Regimen"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Regimen}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

Regimens are defined using the `new_regimen()` function. You should provide information on the dose amount, how many doses, and the dosing interval. However, how you provide that information is very flexible. You can e.g. specify:

```{r load-lib, echo=FALSE}
library(PKPDsim)
```

```{r reg1}
reg1 <- new_regimen(
  amt = 100,
  interval = 12,
  n = 5
)
```

which will administer 5 doses of 100 mg (or whatever the unit is), at an interval of 12 hours. The same can however also be specified as:

```{r reg2}
reg1 <- new_regimen(
  amt = 100,
  times = c(0, 12, 24, 36, 48)
)
```

or:

```{r reg3}
reg1 <- new_regimen(
  amt = c(100, 100, 100, 100, 100),
  times = c(0, 12, 24, 36, 48)
)
```

Be careful: if the length of the `amt` vector is not the same as the length in `times`, the function will repeat the first `amt` specified. The same goes for the arguments `type`, `cmt`, and `t_inf`.

By default, the `new_regimen()` function assumes the dose is given as bolus. If you want to specify that these should be given as infusion, specify the `type` and `t_inf` arguments:

```{r reg-infusion}
reg1 <- new_regimen(
  amt = 100,
  times = c(0, 12, 24, 36, 48),
  type = "infusion",
  t_inf = c(1, 1, 1.5, 1.5, 1)
)
```

When you created the model using `new_ode_model`, you also specified a default dosing compartment. If you didn't specify the `dose` argument, the default dosing compartment is 1. Now, should you want to administer the dose into a different compartment, you can override it with the `cmt` argument:

```{r regimen-cmt}
reg1 <- new_regimen(
  amt = 100,
  times = c(0, 12, 24, 36, 48),
  cmt = c(1, 1, 2, 2, 3)
)
```

Which will administer the doses to compartments 1, 1, 2, 2, and 3, respectively (of course this is a hypothetical example).

*Note: `PKPDsim` doesn't care about what unit the dose is in, you have to define this yourself in conjunction with the model code and observation scale.*

# Steady state

Instead of simulating the full concentration time course for a given model,
if you want to simulate the PK(PD) at steady state, you can also specify
the `ss = TRUE` argument to `new_regimen()`, which will then simulate the
regimen at steady state. By default, steady state is assumed to occur after
5 days (PKPDsim doesn't check if steady state is reached!), but if you want
to decrease or increase this you can do so by specifying the `n_ss` argument, which takes the number of doses to simulate before assuming steady state.

```{r reg_ss}
reg_ss <- new_regimen(
  amt = 100,
  interval = 12,
  n = 5,
  ss = TRUE,
  n_ss = 10
)
reg_ss
```
