---
title: "Simple dose adaptations"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Simple dose adaptations}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r, results='asis', echo=F, message=F, warning=F}
if (campsis::on_cran()) {
  cat(
    "This vignette was not built on CRAN. Please check out the online version [here](https://calvagone.github.io/campsis.doc/articles/v09_dose_adaptation.html)."
  )
  knitr::knit_exit()
}
```

```{r, results='hide', echo=F, message=F, warning=F}
library(campsis)
```

This vignette shows how simple dose adaptations can be implemented.

### Adapt the dose based on a covariate

Assume that your drug needs to be dosed according to the subject's weight, for instance 0.5 mg per kg. To illustrate this, let's use our 2-compartment PK model with absorption compartment.

```{r}
model <- model_suite$nonmem$advan4_trans4
```

We're going to create a dataset with 4 individuals, weighing respectively 40, 60, 80 and 100 kg.

```{r}
dataset <- Dataset(4) %>%
  add(Bolus(time = 0, amount = 0.5)) %>% # 0.5mg / kg
  add(Observations(times = 0:24)) %>%
  add(Covariate("WT", c(40, 60, 80, 100)))
```

Our dataset is almost ready. We just have to define the dose adaptation formula. This is done as follows:

```{r}
dataset <- dataset %>%
  add(DoseAdaptation("AMT*WT"))
```

Let's simulate this simple dataset. In order to check that the dose adaptation formula was well applied, we set the argument `dosing` to TRUE. Dosing rows will then be returned.

```{r dose_adaptation_bw , fig.align='center', fig.height=4, fig.width=8, message=F}
results <- model %>%
  disable("IIV") %>%
  simulate(dataset = dataset, dosing = TRUE, seed = 1)
spaghetti_plot(results, "CONC", "ID")
```

Let's now have a look at the dosing information which is returned.

```{r}
results %>% dosing_only()
```

This looks great! The respective amounts that were given are indeed 20, 30, 40 and 50 mg!
