Skip to contents

This function allows you to identify queries using a particular expression/filter. It can be used to identify missing values or to identify values outside the lower and upper limits of a variable.

Usage

rd_query(
  ...,
  variables = NA,
  expression = NA,
  negate = FALSE,
  event = NA,
  filter = NA,
  addTo = NA,
  variables_names = NA,
  query_name = NA,
  instrument = NA,
  report_title = NA,
  report_zeros = FALSE,
  by_dag = FALSE,
  link = list(),
  data = NULL,
  dic = NULL,
  event_form = NULL
)

Arguments

...

List containing the data, dictionary and event mapping (if required) of the REDCap project. This should be the output of the `redcap_data` function.

variables

Character vector containing the names of the database variables to be checked.

expression

Character vector of expressions to apply to the selected variables.

negate

Logical value indicating whether the defined expression should be negated. Default value is `FALSE`.

event

The name of the REDCap event to analyze. If there are events in your REDCap project, you should use this argument to name the event to which the defined variables belong.

filter

A filter to be applied to the dataset. For example, this argument can be used to apply the branching logic of a defined variable.

addTo

Data frame corresponding to a previous query data frame to which you can add the new query data frame. By default, this function always creates a new data frame regardless previous reports.

variables_names

Character vector containing the description of each selected variable. By default, the function automatically takes the description of each variable from of the REDCap project dictionary.

query_name

Description of the query. It can be the same for all variables, or you can define a different one for each variable. By default, this function defines it as `The value is [value] and it should not be [expression]'`.

instrument

REDCap instrument to which the variables belong. It can be the same for all variables, or you can define a different one for each variable. By default, the function automatically selects the corresponding instrument of each variable from the REDCap project dictionary.

report_title

Character string specifying the title of the report.

report_zeros

Logical. If `TRUE`, the function returns a report containing variables with zero queries.

by_dag

Logical. If `TRUE`, both elements of the output will be grouped by the Data Access Groups (DAGs) of the REDCap project.

List containing project information used to create a web link to each query.

data

Data frame containing the data read from REDCap. If the list is given, this argument is not required.

dic

Data frame containing the dictionary read from REDCap. If the list is given, this argument is not required.

event_form

Data frame containing the correspondence of each event with each form. If the list is specified, this argument is not required.

Value

A list with a data frame of 9 columns (10 columns, if the link argument is specified) meant to help the user identify each query and a table with the total number of queries per variable.

Examples

# Missing values
example <- rd_query(covican,
                    variables = c("copd", "age"),
                    expression = c("is.na(x)", "x %in% NA"),
                    event = "baseline_visit_arm_1")
example
#> $queries
#> # A tibble: 11 × 9
#>    Identifier DAG      Event Instrument Field Repetition Description Query Code 
#>    <chr>      <chr>    <chr> <chr>      <chr> <chr>      <chr>       <chr> <chr>
#>  1 100-58     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 100-…
#>  2 102-113    Hospita… Base… Demograph… age   -          Age         The … 102-…
#>  3 105-11     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 105-…
#>  4 105-11     Hospita… Base… Demograph… age   -          Age         The … 105-…
#>  5 105-56     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 105-…
#>  6 105-56     Hospita… Base… Demograph… age   -          Age         The … 105-…
#>  7 112-15     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 112-…
#>  8 117-11     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 117-…
#>  9 117-11     Hospita… Base… Demograph… age   -          Age         The … 117-…
#> 10 117-22     Hospita… Base… Comorbidi… copd  -          Chronic ob… The … 117-…
#> 11 117-22     Hospita… Base… Demograph… age   -          Age         The … 117-…
#> 
#> $results
#> <table class="table table-striped table-condensed" style="width: auto !important; margin-left: auto; margin-right: auto;">
#> <caption>Report of queries</caption>
#>  <thead>
#>   <tr>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Variables </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Description </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Event </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Query </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Total </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:center;"> copd </td>
#>    <td style="text-align:center;"> Chronic obstructive pulmonary disease </td>
#>    <td style="text-align:center;"> Baseline visit </td>
#>    <td style="text-align:center;"> The value should not be missing </td>
#>    <td style="text-align:center;"> 6 </td>
#>   </tr>
#>   <tr>
#>    <td style="text-align:center;"> age </td>
#>    <td style="text-align:center;"> Age </td>
#>    <td style="text-align:center;"> Baseline visit </td>
#>    <td style="text-align:center;"> The value should not be missing </td>
#>    <td style="text-align:center;"> 5 </td>
#>   </tr>
#> </tbody>
#> </table>

# Expression
example <- rd_query(covican,
                    variables="age",
                    expression="x>20",
                    event="baseline_visit_arm_1")
example
#> $queries
#> # A tibble: 185 × 9
#>    Identifier DAG      Event Instrument Field Repetition Description Query Code 
#>    <chr>      <chr>    <chr> <chr>      <chr> <chr>      <chr>       <chr> <chr>
#>  1 100-6      Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  2 100-13     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  3 100-16     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  4 100-31     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  5 100-34     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  6 100-36     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  7 100-52     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  8 100-58     Hospita… Base… Demograph… age   -          Age         The … 100-…
#>  9 100-65     Hospita… Base… Demograph… age   -          Age         The … 100-…
#> 10 100-66     Hospita… Base… Demograph… age   -          Age         The … 100-…
#> # ℹ 175 more rows
#> 
#> $results
#> <table class="table table-striped table-condensed" style="width: auto !important; margin-left: auto; margin-right: auto;">
#> <caption>Report of queries</caption>
#>  <thead>
#>   <tr>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Variables </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Description </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Event </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Query </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Total </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:center;"> age </td>
#>    <td style="text-align:center;"> Age </td>
#>    <td style="text-align:center;"> Baseline visit </td>
#>    <td style="text-align:center;"> The value should not be greater than 20 </td>
#>    <td style="text-align:center;"> 185 </td>
#>   </tr>
#> </tbody>
#> </table>

# Using the filter argument
example <- rd_query(covican,
                    variables = "potassium",
                    expression = "is.na(x)",
                    event = "baseline_visit_arm_1",
                    filter = "available_analytics=='1'")
#> Warning: The branching logic of the following variable was applied automatically: potassium
example
#> $queries
#> # A tibble: 21 × 9
#>    Identifier DAG      Event Instrument Field Repetition Description Query Code 
#>    <chr>      <chr>    <chr> <chr>      <chr> <chr>      <chr>       <chr> <chr>
#>  1 102-6      Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  2 102-13     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  3 102-23     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  4 102-27     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  5 102-30     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  6 102-39     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  7 102-48     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  8 102-60     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#>  9 102-64     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#> 10 102-73     Hospita… Base… Laborator… pota… -          Potassium   The … 102-…
#> # ℹ 11 more rows
#> 
#> $results
#> <table class="table table-striped table-condensed" style="width: auto !important; margin-left: auto; margin-right: auto;">
#> <caption>Report of queries</caption>
#>  <thead>
#>   <tr>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Variables </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Description </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Event </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Query </th>
#>    <th style="text-align:center;border-bottom: 1px solid grey"> Total </th>
#>   </tr>
#>  </thead>
#> <tbody>
#>   <tr>
#>    <td style="text-align:center;"> potassium </td>
#>    <td style="text-align:center;"> Potassium </td>
#>    <td style="text-align:center;"> Baseline visit </td>
#>    <td style="text-align:center;"> The value should not be missing </td>
#>    <td style="text-align:center;"> 21 </td>
#>   </tr>
#> </tbody>
#> </table>