Creates a queries dataset as input dataset to the dataset_queries
argument in
derive_vars_query()
Source: R/create_query_data.R
create_query_data.Rd
Creates a queries dataset as input dataset to the dataset_queries
argument
in the derive_vars_query()
function as defined in the Queries Dataset Documentation.
Arguments
- queries
List of queries
A list of
query()
objects is expected.- version
Dictionary version
The dictionary version used for coding the terms should be specified. If any of the queries is a basket (SMQ, SDG, ....) or a customized query including a basket, the parameter needs to be specified.
Permitted Values: A character string (the expected format is company-specific)
- get_terms_fun
Function which returns the terms
For each query specified for the
queries
parameter referring to a basket (i.e., those where thedefinition
field is set to abasket_select()
object or a list which contains at least onebasket_select()
object) the specified function is called to retrieve the terms defining the query. This function is not provided by admiral as it is company specific, i.e., it has to be implemented at company level.The function must return a dataset with all the terms defining the basket. The output dataset must contain the following variables.
TERM_LEVEL
: the variable to be used for defining a term of the basket, e.g.,AEDECOD
TERM_NAME
: the name of the term if the variableTERM_LEVEL
is referring to is characterTERM_ID
the numeric id of the term if the variableTERM_LEVEL
is referring to is numericQUERY_NAME
: the name of the basket. The values must be the same for all observations.
The function must provide the following parameters
basket_select
: Abasket_select()
object.version
: The dictionary version. The value specified for theversion
in thecreate_query_data()
call is passed to this parameter.keep_id
: If set toTRUE
, the output dataset must contain theQUERY_ID
variable. The variable must be set to the numeric id of the basket.temp_env
: A temporary environment is passed to this parameter. It can be used to store data which is used for all baskets in thecreate_query_data()
call. For example if SMQs need to be read from a database all SMQs can be read and stored in the environment when the first SMQ is handled. For the other SMQs the terms can be retrieved from the environment instead of accessing the database again.
Details
For each query()
object listed in the queries
argument, the terms belonging
to the query (TERM_LEVEL
, TERM_NAME
, TERM_ID
) are determined with respect
to the definition
field of the query: if the definition field of the
query()
object is
a
basket_select()
object, the terms are read from the basket database by calling the function specified for theget_terms_fun
parameter.a data frame, the terms stored in the data frame are used.
a list of data frames and
basket_select()
objects, all terms from the data frames and all terms read from the basket database referenced by thebasket_select()
objects are collated.
The following variables (as described in Queries Dataset Documentation) are created:
VAR_PREFIX
: Prefix of the variables to be created byderive_vars_query()
as specified by theprefix
element.QUERY_NAME
: Name of the query as specified by thename
element.QUERY_ID
: Id of the query as specified by theid
element. If theid
element is not specified for a query, the variable is set toNA
. If theid
element is not specified for any query, the variable is not created.QUERY_SCOPE
: scope of the query as specified by thescope
element of thebasket_select()
object. For queries not defined by abasket_select()
object, the variable is set toNA
. If none of the queries is defined by abasket_select()
object, the variable is not created.QUERY_SCOPE_NUM
: numeric scope of the query. It is set to1
if the scope is broad. Otherwise it is set to2
. If theadd_scope_num
element equalsFALSE
, the variable is set toNA
. If theadd_scope_num
element equalsFALSE
for all baskets or none of the queries is an basket , the variable is not created.TERM_LEVEL
: Name of the variable used to identify the terms.TERM_NAME
: Value of the term variable if it is a character variable.TERM_ID
: Value of the term variable if it is a numeric variable.VERSION
: Set to the value of theversion
argument. If it is not specified, the variable is not created.
See also
derive_vars_query()
, query()
, basket_select()
, Queries Dataset Documentation
Creating auxiliary datasets:
consolidate_metadata()
,
create_period_dataset()
,
create_single_dose_dataset()
Examples
library(tibble)
library(dplyr, warn.conflicts = FALSE)
library(admiral.test)
library(admiral)
# creating a query dataset for a customized query
cqterms <- tribble(
~TERM_NAME, ~TERM_ID,
"APPLICATION SITE ERYTHEMA", 10003041L,
"APPLICATION SITE PRURITUS", 10003053L
) %>%
mutate(TERM_LEVEL = "AEDECOD")
cq <- query(
prefix = "CQ01",
name = "Application Site Issues",
definition = cqterms
)
create_query_data(queries = list(cq))
#> # A tibble: 2 x 5
#> TERM_NAME TERM_ID TERM_LEVEL VAR_PREFIX QUERY_NAME
#> <chr> <int> <chr> <chr> <chr>
#> 1 APPLICATION SITE ERYTHE… 10003041 AEDECOD CQ01 Application Site Issu…
#> 2 APPLICATION SITE PRURIT… 10003053 AEDECOD CQ01 Application Site Issu…
# create a query dataset for SMQs
pregsmq <- query(
prefix = "SMQ02",
id = auto,
definition = basket_select(
name = "Pregnancy and neonatal topics (SMQ)",
scope = "NARROW",
type = "smq"
)
)
bilismq <- query(
prefix = "SMQ04",
definition = basket_select(
id = 20000121L,
scope = "BROAD",
type = "smq"
)
)
# The get_terms function from admiral.test is used for this example.
# In a real application a company-specific function must be used.
create_query_data(
queries = list(pregsmq, bilismq),
get_terms_fun = admiral.test:::get_terms,
version = "20.1"
)
#> # A tibble: 43 x 7
#> TERM_NAME TERM_LEVEL QUERY_NAME QUERY_ID QUERY_SCOPE VAR_PREFIX VERSION
#> <chr> <chr> <chr> <int> <chr> <chr> <chr>
#> 1 Achromotrich… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 2 Craniosynost… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 3 Hypophosphat… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 4 Congenital p… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 5 Uterine cont… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 6 Ductus arter… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 7 Pseudotruncu… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 8 Lipomeningoc… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 9 Macrocephaly AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> 10 Carnitine pa… AEDECOD Pregnancy a… 20000185 NARROW SMQ02 20.1
#> # … with 33 more rows
# create a query dataset for SDGs
sdg <- query(
prefix = "SDG01",
id = auto,
definition = basket_select(
name = "5-aminosalicylates for ulcerative colitis",
scope = NA_character_,
type = "sdg"
)
)
# The get_terms function from admiral.test is used for this example.
# In a real application a company-specific function must be used.
create_query_data(
queries = list(sdg),
get_terms_fun = admiral.test:::get_terms,
version = "2019-09"
)
#> # A tibble: 16 x 7
#> TERM_NAME TERM_LEVEL QUERY_NAME QUERY_ID QUERY_SCOPE VAR_PREFIX VERSION
#> <chr> <chr> <chr> <int> <chr> <chr> <chr>
#> 1 AMINOSALICYL… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 2 AMINOSALICYL… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 3 AMINOSALICYL… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 4 AMINOSALICYL… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 5 SODIUM AMINO… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 6 AMINOSALICYL… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 7 SULFASALAZINE CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 8 CALCIUM BENZ… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 9 OLSALAZINE CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 10 OLSALAZINE S… CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 11 MESALAZINE CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 12 BALSALAZIDE CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 13 BALSALAZIDE … CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 14 BALSALAZIDE … CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 15 DERSALAZINE CMDECOD 5-aminosali… 220 NA SDG01 2019-09
#> 16 DERSALAZINE … CMDECOD 5-aminosali… 220 NA SDG01 2019-09
# creating a query dataset for a customized query including SMQs
# The get_terms function from admiral.test is used for this example.
# In a real application a company-specific function must be used.
create_query_data(
queries = list(
query(
prefix = "CQ03",
name = "Special issues of interest",
definition = list(
basket_select(
name = "Pregnancy and neonatal topics (SMQ)",
scope = "NARROW",
type = "smq"
),
cqterms
)
)
),
get_terms_fun = admiral.test:::get_terms,
version = "20.1"
)
#> # A tibble: 23 x 6
#> TERM_NAME TERM_LEVEL QUERY_NAME TERM_ID VAR_PREFIX VERSION
#> <chr> <chr> <chr> <int> <chr> <chr>
#> 1 Achromotrichia congen… AEDECOD Special issues … NA CQ03 20.1
#> 2 Craniosynostosis AEDECOD Special issues … NA CQ03 20.1
#> 3 Hypophosphatasia AEDECOD Special issues … NA CQ03 20.1
#> 4 Congenital pyelocalie… AEDECOD Special issues … NA CQ03 20.1
#> 5 Uterine contractions … AEDECOD Special issues … NA CQ03 20.1
#> 6 Ductus arteriosus pre… AEDECOD Special issues … NA CQ03 20.1
#> 7 Pseudotruncus arterio… AEDECOD Special issues … NA CQ03 20.1
#> 8 Lipomeningocele AEDECOD Special issues … NA CQ03 20.1
#> 9 Macrocephaly AEDECOD Special issues … NA CQ03 20.1
#> 10 Carnitine palmitoyltr… AEDECOD Special issues … NA CQ03 20.1
#> # … with 13 more rows