For this example we are going to generate a candidate codelist for osteoarthritis, looking at the impact of alternative search strategies.
# postgres database connection details
serverDbi <- Sys.getenv("server")
user <- Sys.getenv("user")
password <- Sys.getenv("password")
port <- Sys.getenv("port")
host <- Sys.getenv("host")
db <- dbConnect(RPostgres::Postgres(),
dbname = serverDbi,
port = port,
host = host,
user = user,
password = password
)
# name of vocabulary schema
vocabularyDatabaseSchema <- "vocabulary"
# create cdm reference
cdm <- CDMConnector::cdm_from_con(
con = db,
cdm_schema = vocabularyDatabaseSchema
)
To start we will search for “osteoarthritis”, while excluding “post-infection” and “post-traumatic”, but without searching synonyms, without searching via non-standard codes, and without including descendants or the direct ancestor of the included concepts.
oaCodes1 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = "Condition",
searchInSynonyms = FALSE,
searchNonStandard = FALSE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = FALSE,
includeAncestor = FALSE
)
What is the candidate codelist?
Now we will also include the descendants of included concepts.
oaCodes2 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = "Condition",
searchInSynonyms = FALSE,
searchNonStandard = FALSE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = TRUE,
includeAncestor = FALSE
)
What new codes do we pick up?
Now we will search the observation domain as well as the condition domain.
oaCodes3 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = c("Condition", "Observation"),
searchInSynonyms = FALSE,
searchNonStandard = FALSE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = FALSE,
includeAncestor = FALSE
)
What new codes do we pick up?
Now we will search the concept synonym table to identify concepts to include.
oaCodes4 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = "Condition",
searchInSynonyms = TRUE,
searchNonStandard = FALSE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = FALSE,
includeAncestor = FALSE
)
What new codes do we pick up?
Now we will search the concept synonym table to identify concepts to include.
oaCodes5 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = "Condition",
searchInSynonyms = FALSE,
searchNonStandard = TRUE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = FALSE,
includeAncestor = FALSE
)
What new codes do we pick up?
Now we include the direct ancestor of included terms.
oaCodes8 <- getCandidateCodes(
cdm = cdm,
keywords = "osteoarthritis",
domains = "Condition",
searchInSynonyms = FALSE,
searchNonStandard = FALSE,
exclude = c(
"post-infection",
"post-traumatic"
),
includeDescendants = FALSE,
includeAncestor = TRUE
)
What new codes do we pick up?