knitr::opts_chunk$set( collapse = TRUE, comment = "#>", out.width = "100%" )
In this example we will create a candidate codelist for osteoarthritis, exploring how different search strategies may impact our final codelist. First, let's load the necessary packages and create a cdm reference using mock data.
library(dplyr) library(CodelistGenerator) cdm <- mockVocabRef()
The mock data has the following hypothetical concepts and relationships:
knitr::include_graphics("Figures/1.png")
We will start by creating a codelist with keywords match. Let's say that we want to find those codes that contain "Musculoskeletal disorder" in their concept_name:
knitr::include_graphics("Figures/2.png")
getCandidateCodes( cdm = cdm, keywords = "Musculoskeletal disorder", domains = "Condition", standardConcept = "Standard", includeDescendants = FALSE, searchInSynonyms = FALSE, searchNonStandard = FALSE, includeAncestor = FALSE )
Note that we could also identify it based on a partial match or based on all combinations match.
getCandidateCodes( cdm = cdm, keywords = "Musculoskeletal", domains = "Condition", standardConcept = "Standard", searchInSynonyms = FALSE, searchNonStandard = FALSE, includeDescendants = FALSE, includeAncestor = FALSE ) getCandidateCodes( cdm = cdm, keywords = "Disorder musculoskeletal", domains = "Condition", standardConcept = "Standard", searchInSynonyms = FALSE, searchNonStandard = FALSE, includeDescendants = FALSE, includeAncestor = FALSE )
Notice that currently we are only looking for concepts with domain = "Condition"
. However, we can expand the search to all domains using domain = NULL
.
Now we will include standard and non-standard concepts in our initial search. By setting standardConcept = c("Non-standard", "Standard")
, we allow the function to return, in the final candidate codelist, both the non-standard and standard codes that have been found.
knitr::include_graphics("Figures/3.png")
getCandidateCodes( cdm = cdm, keywords = "Musculoskeletal disorder", domains = "Condition", standardConcept = c("Non-standard", "Standard"), searchInSynonyms = FALSE, searchNonStandard = FALSE, includeDescendants = FALSE, includeAncestor = FALSE )
We can also search for multiple keywords simultaneously, capturing all of them with the following search:
knitr::include_graphics("Figures/4.png")
getCandidateCodes( cdm = cdm, keywords = c( "Musculoskeletal disorder", "arthritis" ), domains = "Condition", standardConcept = c("Standard"), includeDescendants = FALSE, searchInSynonyms = FALSE, searchNonStandard = FALSE, includeAncestor = FALSE )
Now we will include the descendants of an identified code using includeDescendants
argument
knitr::include_graphics("Figures/5.png")
getCandidateCodes( cdm = cdm, keywords = "Musculoskeletal disorder", domains = "Condition", standardConcept = "Standard", includeDescendants = TRUE, searchInSynonyms = FALSE, searchNonStandard = FALSE, includeAncestor = FALSE )
Notice that now, in the column found_from
, we can see that we have obtain concept_id=1
from an initial search, and concept_id_=c(2,3,4,5)
when searching for descendants of concept_id 1.
We can also exclude specific keywords using the argument exclude
knitr::include_graphics("Figures/6.png")
getCandidateCodes( cdm = cdm, keywords = "Musculoskeletal disorder", domains = "Condition", exclude = c("Osteoarthrosis", "knee"), standardConcept = "Standard", includeDescendants = TRUE, searchInSynonyms = FALSE, searchNonStandard = FALSE, includeAncestor = FALSE )
To include the ancestors one level above the identified concepts, we can use the argument includeAncestor
knitr::include_graphics("Figures/7.png")
codes <- getCandidateCodes( cdm = cdm, keywords = "Osteoarthritis of knee", includeAncestor = TRUE, domains = "Condition", standardConcept = "Standard", includeDescendants = TRUE, searchInSynonyms = FALSE, searchNonStandard = FALSE, ) codes
We can also pick up codes based on their synonyms. For example, Osteoarthrosis has a synonym of Arthritis.
knitr::include_graphics("Figures/8.png")
getCandidateCodes( cdm = cdm, keywords = "osteoarthrosis", domains = "Condition", searchInSynonyms = TRUE, standardConcept = "Standard", includeDescendants = FALSE, searchNonStandard = FALSE, includeAncestor = FALSE )
Notice that if includeDescendants = TRUE
, Arthritis descendants will also be included:
knitr::include_graphics("Figures/9.png")
getCandidateCodes( cdm = cdm, keywords = "osteoarthrosis", domains = "Condition", searchInSynonyms = TRUE, standardConcept = "Standard", includeDescendants = TRUE, searchNonStandard = FALSE, includeAncestor = FALSE )
We can also pick up concepts associated with our keyword via non-standard search.
knitr::include_graphics("Figures/10.png")
codes1 <- getCandidateCodes( cdm = cdm, keywords = "Degenerative", domains = "Condition", standardConcept = "Standard", searchNonStandard = TRUE, includeDescendants = FALSE, searchInSynonyms = FALSE, includeAncestor = FALSE ) codes1
Let's take a moment to focus on the standardConcept
and searchNonStandard
arguments to clarify the difference between them. standardConcept
specifies whether we want only standard concepts or also include non-standard concepts in the final candidate codelist. searchNonStandard
determines whether we want to search for keywords among non-standard concepts.
In the previous example, since we set standardConcept = "Standard"
, we retrieved the code for Osteoarthrosis from the non-standard search. However, we did not obtain the non-standard code degenerative arthropathy from the initial search. If we allow non-standard concepts in the final candidate codelist, we would retireve both codes:
knitr::include_graphics("Figures/11.png")
codes2 <- getCandidateCodes( cdm = cdm, keywords = "Degenerative", domains = "Condition", standardConcept = c("Non-standard", "Standard"), searchNonStandard = FALSE, includeDescendants = FALSE, searchInSynonyms = FALSE, includeAncestor = FALSE ) codes2
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.