Skip to contents

Overview

Metadata in improve attaches structured information to resources — compounds, indications, dates, and other domain-specific attributes. Metadata definitions are configured by administrators; users assign values to resources.

Metadata definitions

Definitions describe what metadata fields are available and their types.

library(improveR)

# Load all available metadata definitions
definitions <- loadMetaDataDefinitions()

# Each definition has a name and type
definitions[, c("name", "metadataType")]
#          name metadataType
# 1    Compound         TEXT
# 2  Indication          LOV
# 3 ProgramStart        DATE

Types:

Type Description
TEXT Free text value
LOV List of values (pick from predefined options)
DATE Date value

Adding metadata to a resource

# Text value
addMetaDate(folder, "Compound", value = "Aspirin")

# List of values (must match a predefined option)
addMetaDate(folder, "Indication", value = "Pain")

# Date value
addMetaDate(folder, "ProgramStart", value = lubridate::ymd("2026-01-15"))

Reading metadata

# Load metadata for a resource
meta <- loadMetaData(folder)

# Get the data
metaData <- meta %>% strip()

# Access specific values
metaData[metaData$descriptorName == "Compound", ]$textValue
# "Aspirin"

metaData[metaData$descriptorName == "Indication", ]$lovText
# "Pain"

metaData[metaData$descriptorName == "ProgramStart", ]$dateValueDate
# "2026-01-15"

Updating metadata

updateMetaDate(folder, "Compound", "Ibuprofen")
updateMetaDate(folder, "Indication", "Inflammation")
updateMetaDate(folder, "ProgramStart", lubridate::ymd("2026-03-01"))

# Refresh to see changes
meta <- refreshMetaData(folder)

Deleting metadata

deleteMetaDate(folder, "Compound")

Bulk operations

# Add multiple metadata values at once
addBulkMetaDate(folder, list(
  list(name = "Compound", value = "Aspirin"),
  list(name = "Indication", value = "Pain")
))