---
title: "Collect Components"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Collect Components}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
resource_files:
   - package_manual.pdf
---

```{r, echo = FALSE, message = FALSE, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  out.width = "100%"
)
```

```{r, message = FALSE}
library(metalite)
```


In this document, let's explore how to collect components using metalite.
The document is for developer who plan to create new tools.

Let's first define a meta object by using the `meta_example()` function.
It is an ad-hoc function to create a meta object same as in the `get started` page.

```{r}
meta <- meta_example()
meta
```

## Collect ADaM mapping

The object in `meta` is organized as a list of ADaM mapping objects.
For example, you can directly access an ADaM mapping object as a list.

```{r}
meta$population$apat
```

We created helper function to help you access components by component name.
For example, we can collect the same `apat` component
from `meta` by `name` using `collect_adam_mapping()`.

Collect ADaM mapping for all participants as treated.

```{r}
collect_adam_mapping(meta, name = "apat")
```

We can collect ADaM mapping
for serious adverse events parameter `meta$parameter$ser`.

```{r}
collect_adam_mapping(meta, name = "ser")
```

We can collect ADaM mapping for AE summary analysis method `meta$analysis$ae_summary`.

```{r}
collect_adam_mapping(meta, name = "ae_summary")
```

## Collect population

While developing tools, developer also need to access the subset condition of a population.
We can access the information from the list as

```{r}
meta$population$apat$subset
```

Equivalently, we can also use  `collect_population()` to collect the definition of a population.
For example, we can collect subset condition for `apat` as

```{r}
collect_population(meta, population = "apat")
```

By using `collect_population()`, we can find subset condition from multiple levels.
For example, we can collect analysis population definition for
`apat` population, `wk12` observation and `ser` parameters.

```{r}
collect_population(meta,
  population = "apat",
  observation = "wk12",
  parameter = "ser"
)
```

## Collect population records

User may want to identify records belong to an analysis population.
We can use `collect_population_index()` to show all population record index.
In this example, user would get index from all population data set for `apat` or all participants as treated.

```{r}
population_index <- collect_population_index(meta, "apat")
```

```{r}
head(collect_population_index(meta, "apat"))
```

Alternatively, people may want to know the ID of those subjects in a population.
In this case, `collect_population_id()` can be used to collect `ID - > USUBJID`
from the `apat` population.

```{r}
population_id <- collect_population_id(meta, "apat")
```

```{r}
head(collect_population_id(meta, "apat"))
```

We can further directly collect observations using `collect_population_record()`.
 By default, key variables used in `id`, `group`, and `subset` are displayed.

This example shows how to collect population record from population data set for
all participants as treated and only display default variables.

```{r}
head(collect_population_record(meta, "apat"))
```

This example show how to add variables in population data set to display.

```{r}
head(collect_population_record(meta, "apat", var = "AGE"))
```

We can also add add multiple additional variable to display

```{r}
head(collect_population_record(meta, "apat", var = c("AGE", "TRT01P")))
```

## Collect observation record

Similarly we can collect observation records with examples below.
This example shows how to collect observation record index
from observation data set for serious AE from weeks 0 to 12 using `collect_observation_index()`

```{r}
collect_observation_index(meta, "apat", "wk12", "ser")
```

We can also directly collect records using `collect_observation_record()`.
By default, key variables used in `id`, `group`, and `subset` are displayed.

This example shows how to collect observation record from observation data set
for all participants as treated from 0 to 12 week with serious AE and only display default variables.

```{r}
collect_observation_record(meta, "apat", "wk12", "ser")
```

This example show how to add variables in observation data set to display.

```{r}
collect_observation_record(meta, "apat", "wk12", "ser", var = "AEDECOD")
```

## Collect specifications

We also provided helper functions to collect commonly used items

Developer can collect table title for analysis function meta information using `collect_title()`.

```{r}
collect_title(meta, "apat", "wk12", "ser", "ae_summary")
```

Developer can collect specification for data set name using `collect_dataname()`.
It will show the data set name for population and observation.

```{r}
collect_dataname(meta)
```
