Skip to contents

Transforms CONCERT's curated and harmonized data into the 56-column ToxVal-compatible format with typed NAs and *_original audit columns.

Usage

map_to_toxval_schema(
  curated_data,
  harmonized_data,
  source_name = NULL,
  identity_mode = c("lookup", "accepted")
)

Arguments

curated_data

Tibble from curation pipeline containing at minimum:

  • dtxsid: DSSTox substance identifier

  • casrn: CAS Registry Number

  • name: Chemical name Optional columns: qualifier, orig_result, toxval_type, species_common, etc.

harmonized_data

Tibble from harmonize_units() containing:

  • orig_row_id: Row identifier linking back to curated_data

  • orig_unit: Original unit string before normalization

  • harmonized_value: Numeric value after conversion

  • harmonized_unit: Target canonical unit

  • conversion_factor: Multiplier applied

  • unit_flag: Conversion quality flag

source_name

Optional dataset identifier. Defaults to "user_upload".

identity_mode

"lookup" (compatibility default) retains provisional lookup identifiers. "accepted" applies identity_review_state() and never falls back to raw IDs for blocked rows. Measurements remain aligned.

Value

Tibble with 56 ToxVal columns including:

  • Mapped values from curated_data and harmonized_data

  • Typed NA values for unmapped columns (NA_character_, NA_real_)

  • source_hash: SHA256 digest of row content

  • *_original audit columns preserving pre-harmonization values

Examples

if (FALSE) { # \dontrun{
curated <- tibble::tibble(
  dtxsid = "DTXSID7020182",
  casrn = "71-43-2",
  name = "Benzene"
)
harmonized <- tibble::tibble(
  orig_row_id = 1L,
  orig_unit = "ug/L",
  harmonized_value = 0.5,
  harmonized_unit = "mg/L",
  conversion_factor = 0.001,
  unit_flag = ""
)
result <- map_to_toxval_schema(curated, harmonized)
} # }