Skip to contents

Flags cancer from the Swedish Cancer Register by topography (tumour site) only, ignoring morphology/histology. Use this when the phenotype is site-level – "any breast cancer", "any endometrial cancer" – which is the granularity ICD-10 and the patient register encode cancer at. Morphology / histology (cell type, behaviour) is out of scope for this function.

Usage

add_cancer_without_morphology(skeleton, dataset, id_name, codes = list())

Arguments

skeleton

The skeleton data.table created by create_skeleton()

dataset

Cancer register data.table containing icdo10 and/or icdo3 columns and an indatum date column.

id_name

Character string specifying the name of the ID variable in the dataset

codes

Named list of topography (C-code) patterns. Names become column names in the skeleton; values are character vectors of code prefixes. Matching is prefix-only via startsWith(); "!"-prefixed patterns act as row-level vetoes. See add_diagnoses for the full pattern-syntax description.

Value

The skeleton data.table is modified by reference; one boolean column per pattern, TRUE when the cancer topography code is present.

The function also returns the skeleton, invisibly. The return is the object the caller passed, while that object has a free column slot for every new column. Past that point data.table cannot grow the column list in place, so the new columns land on the returned table alone. A caller that passes an expression rather than a variable MUST use the return value.

Any other name that pointed at the same table before the call is stale afterwards. R cannot grow a list in place. A growth therefore leaves the caller's binding on a NEW object, and every other name on the old one. Take an alias after the call, never before it.

Details

Searches BOTH ICD-O topography columns and unions the result, giving complete coverage:

  • icdo10 – ICD-O/2 topography, populated back to register start (the complete column).

  • icdo3 – ICD-O/3 topography, populated from ~2000 onward.

Despite its name, icdo10 is not "ICD-O edition 10" (ICD-O has only editions 1-3). It is Socialstyrelsen's (confusingly named) column for ICD-O/2 topography, whose codes ARE the ICD-10 neoplasm site codes (e.g. C50 = breast). That is why ICD-10 cancer patterns match it – and why it must not be mistaken for a stray ICD-O column and dropped.

Note: in-situ tumours carry the malignant topography code (in-situ breast is C50 + morphology /2, never D05), so a C50 pattern here captures both invasive and in-situ breast.

See also

add_diagnoses for ICD-10 patient-register codes, make_lowercase_names for data preprocessing

Other data_integration: add_annual(), add_cods(), add_diagnoses(), add_onetime(), add_operations(), add_quality_registry(), add_rx()

Examples

data("fake_person_ids", package = "swereg")
data("fake_diagnoses", package = "swereg")
swereg::make_lowercase_names(fake_diagnoses, date_columns = "indatum")
#> Found additional date columns not in date_columns: utdatum. Consider adding them for automatic date parsing.
skeleton <- create_skeleton(fake_person_ids[1:10], 2020, "2020-53")
cancer_codes <- list("breast" = c("C50"), "endometrial" = c("C54", "C55"))
add_cancer_without_morphology(skeleton, fake_diagnoses, "lopnr", cancer_codes)