--- title: "Custom value sets" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Custom value sets} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(eq5dsuite) ``` ## Introduction New EQ-5D value sets are published regularly. Rather than waiting for a package update, `eq5dsuite` allows you to add your own value sets using `eqvs_add()`. Custom value sets work with all scoring and analysis functions in the package. ## Adding a custom value set A custom value set must be a data frame with two columns: - `state` — the EQ-5D health state code (integer) - A column named after the VS_code containing utility values ```{r add-custom-vs} # Generate all valid 3L health state codes states <- make_all_EQ_indexes(version = "3L") # Create a custom value set (random values for illustration) set.seed(42) custom_vs <- data.frame( state = states, MY_VS = runif(243, min = -0.5, max = 1.0) ) head(custom_vs) ``` ```{r register-vs, eval = FALSE} # Register for current session only (saveOption = 1) eqvs_add( custom_vs, version = "3L", country = "My Country", countryCode = "MC", VSCode = "MY_VS", description = "Custom value set — demonstration", saveOption = 1 ) # Verify it appears in the list eqvs_display(version = "3L") # Use it for value calculation eq5d3l(c(11111, 12321), country = "MY_VS") ``` ## Saving a custom value set permanently To persist a custom value set across R sessions, use `saveOption = 2`: ```{r save-vs, eval = FALSE} eqvs_add( custom_vs, version = "3L", country = "My Country", countryCode = "MC", VSCode = "MY_VS", description = "Custom value set — permanent", saveOption = 2 # saves to user cache ) ``` Load it in a new session with: ```{r load-vs, eval = FALSE} eqvs_load(country = "MY_VS", version = "3L") ``` ## Removing a custom value set ```{r drop-vs, eval = FALSE} eqvs_drop( country = "MY_VS", version = "3L", saveOption = 1 # remove from current session only ) ``` ## Validation `eqvs_add()` validates the value set before registration: - For 3L: checks all 243 health states are present - For 5L: checks all 3125 health states are present - Checks values are numeric with no duplicates ## Using custom value sets with crosswalk methods Custom value sets are fully compatible with all crosswalk functions: ```{r custom-xw, eval = FALSE} # Use custom 3L value set with original crosswalk eqxw( eq5d5l_data, country = "MY_VS", dim.names = c("mo", "sc", "ua", "pd", "ad") ) ``` ## Keeping value sets up to date Use `update_value_sets()` to automatically check for and install newly published value sets from the eq5dsuite online repository: ```{r update-vs, eval = FALSE} update_value_sets() ``` See `vignette("update-value-sets")` for full details.