Last updated: 2022-03-16

Checks: 6 1

Knit directory: codemapper/

This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

The global environment had objects present when the code in the R Markdown file was run. These objects can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment. Use wflow_publish or wflow_build to ensure that the code is always run in an empty environment.

The following objects were defined in the global environment when these results were created:

Name Class Size
install_codemapper function 1.2 Kb

The command set.seed(20210923) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version b425304. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .Renviron
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    _targets/
    Ignored:    all_lkps_maps.db
    Ignored:    all_lkps_maps.db.gz
    Ignored:    renv/library/
    Ignored:    renv/staging/
    Ignored:    tar_make.R

Unstaged changes:
    Modified:   R/clinical_codes.R
    Modified:   R/lookups_and_mappings.R
    Modified:   R/utils.R
    Modified:   _targets.R
    Modified:   analysis/read2_icd10_mapping.Rmd
    Modified:   analysis/read3_icd10_mapping.Rmd

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/icd10_lkp.Rmd) and HTML (public/icd10_lkp.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
Rmd a81c1e7 rmgpanw 2022-03-14 add notes; add filter_cols function plus tests (all passing)
html a81c1e7 rmgpanw 2022-03-14 add notes; add filter_cols function plus tests (all passing)
Rmd e5c5381 rmgpanw 2022-03-10 update mainly icd10-related codes.
Rmd a64a35e rmgpanw 2022-03-10 change arg quiet = TRUE to unrecognised_codes = “error”. Also updated tests (passing)

library(tidyverse)
library(reactable)
library(readxl)
library(crosstalk)
library(targets)
library(codemapper)

tar_load(all_lkps_maps_raw)

Summary

  • The ICD10 lookup table includes 2 formats: ICD10_CODE and ALT_CODE.
  • In UK Biobank data, ICD10 codes are recorded in the ALT_CODE format (details below), however an ‘X’ filler is not appended for codes where the 3 character category is undivided. For example, the ICD10 code for Scarlet fever, A38, is recorded as A38X under ALT_CODE in the ICD10 lookup table, but recorded as A38 in UK Biobank data.
  • Some ICD10 codes have a one-to-many relationship from ICD10_CODE to ALT_CODE format. These codes have modifier descriptions under the MODIFIER_5 column.

ICD10 formats: ICD10_CODE and ALT-CODE

ICD10 codes are recorded in 2 formats in UK Biobank resource 592 ICD10_CODE and ALT_CODE. The documentation states:

- ICD10_CODE = ICD10 code
- ALT_CODE = This form strips the decimal point from the code and appends the filler X where the 3 character category is undivided. 

In UK Biobank data, ICD10 codes are recorded in the ALT_CODE format, however an ‘X’ filler is not appended for codes where the 3 character category is undivided. For example, the ICD10 code for Scarlet fever, A38, is recorded as A38X under ALT_CODE in the ICD10 lookup table, but recorded as A38 in UK Biobank data:

all_lkps_maps_raw$icd10_lkp %>% 
  filter(ICD10_CODE == "A38") %>% 
  select(ICD10_CODE:DESCRIPTION) %>% 
  knitr::kable()
ICD10_CODE ALT_CODE USAGE USAGE_UK DESCRIPTION
A38 A38X DEFAULT 3 Scarlet fever

A full list of undivided 3 character ICD10 codes is listed below:

alt_code_ends_x <- all_lkps_maps_raw$icd10_lkp %>% 
  filter(str_detect(ALT_CODE,
             ".X$"))

alt_code_ends_x %>% 
  reactable(filterable = TRUE,
            resizable = TRUE,
            searchable = TRUE,
            showPageSizeOptions = TRUE,
            pageSizeOptions = c(5, 10, 25, 50, 100, 200),
            paginationType = "jump",
            defaultPageSize = 5)

While some ICD10 codes end with ‘X’ (e.g. M45.X), only undivided 3 character codes end with ‘X’ in ALT_CODE format:

alt_code_ends_x %>% 
  mutate(ICD10_CODE_length = str_length(ICD10_CODE)) %>% 
  count(ICD10_CODE_length, 
        name = "n_ALT_CODEs_ending_with_X") %>% 
  knitr::kable()
ICD10_CODE_length n_ALT_CODEs_ending_with_X
3 254

There are also some other differences between the ICD10_CODE and ALT_CODE formats. In some cases, the same ICD10_CODE can have multiple descriptions that are differentiated by MODIFIER_5. For example, S27.9 describes ‘Injury unspecified intrathoracic organ’, which can be further modified as follows:

all_lkps_maps_raw$icd10_lkp %>% 
  filter(ICD10_CODE == "S27.9") %>% 
  select(ICD10_CODE:MODIFIER_5) %>% 
  knitr::kable()
ICD10_CODE ALT_CODE USAGE USAGE_UK DESCRIPTION MODIFIER_4 MODIFIER_5
S27.9 S279 DEFAULT 3 Injury of unspecified intrathoracic organ NA NA
S27.9 S2790 DEFAULT 3 Injury of unspecified intrathoracic organ NA without open wound into thoracic cavity
S27.9 S2791 DEFAULT 3 Injury of unspecified intrathoracic organ NA with open wound into thoracic cavity

Simply removing the ‘.’ from ICD10-CODE will not capture all codes in these cases. Note also that in some cases, removing the ‘.’ will not capture any codes used inn UK Biobank:

all_lkps_maps_raw$icd10_lkp %>% 
  filter(ICD10_CODE == "M45.X") %>% 
  select(ICD10_CODE:MODIFIER_5) %>% 
  knitr::kable()
ICD10_CODE ALT_CODE USAGE USAGE_UK DESCRIPTION MODIFIER_4 MODIFIER_5
M45.X M45X0 DEFAULT 3 Ankylosing spondylitis NA Multiple sites in spine
M45.X M45X1 DEFAULT 3 Ankylosing spondylitis NA Occipito-atlanto-axial region
M45.X M45X2 DEFAULT 3 Ankylosing spondylitis NA Cervical region
M45.X M45X3 DEFAULT 3 Ankylosing spondylitis NA Cervicothoracic region
M45.X M45X4 DEFAULT 3 Ankylosing spondylitis NA Thoracic region
M45.X M45X5 DEFAULT 3 Ankylosing spondylitis NA Thoracolumbar region
M45.X M45X6 DEFAULT 3 Ankylosing spondylitis NA Lumbar region
M45.X M45X7 DEFAULT 3 Ankylosing spondylitis NA Lumbosacral region
M45.X M45X8 DEFAULT 3 Ankylosing spondylitis NA Sacral and sacrococcygeal region
M45.X M45X9 DEFAULT 3 Ankylosing spondylitis NA Site unspecified

The number of ICD10 codes with multiple descriptions is summarised by the following table. Note that these all have a MODIFIER_5 description.

n_non_unique_icd10_code_df <- all_lkps_maps_raw$icd10_lkp %>% 
  group_by(ICD10_CODE) %>% 
  summarise(n = n(),
         n_MODIFIER_5_not_na = sum(!is.na(MODIFIER_5)),
         n_MODIFIER_4_not_na = sum(!is.na(MODIFIER_4))) %>% 
  filter(n > 1) %>% 
  # select(ICD10_CODE:MODIFIER_5,
  #        contains("not_na")) %>% 
  arrange(n_MODIFIER_5_not_na)

list(
  n_non_unique_icd10_code = nrow(n_non_unique_icd10_code_df),
  n_with_modifier_5 = sum(n_non_unique_icd10_code_df$n_MODIFIER_5_not_na > 0),
  n_with_modifier_4 = sum(n_non_unique_icd10_code_df$n_MODIFIER_4_not_na > 0)
) %>% 
  as_tibble() %>% 
  knitr::kable()
n_non_unique_icd10_code n_with_modifier_5 n_with_modifier_4
498 498 0

ICD10 codes with MODIFIER_4 descriptions are differentiated by their 4th digit. For example:

all_lkps_maps_raw$icd10_lkp %>% 
  filter(str_detect(ICD10_CODE,
                    "^E10")) %>% 
  select(ICD10_CODE:MODIFIER_5) %>% 
  knitr::kable()
ICD10_CODE ALT_CODE USAGE USAGE_UK DESCRIPTION MODIFIER_4 MODIFIER_5
E10 E10 DEFAULT 3 Type 1 diabetes mellitus NA NA
E10.0 E100 DEFAULT 3 Type 1 diabetes mellitus With coma NA
E10.1 E101 DEFAULT 3 Type 1 diabetes mellitus With ketoacidosis NA
E10.2 E102 DAGGER 4 Type 1 diabetes mellitus With renal complications NA
E10.3 E103 DAGGER 4 Type 1 diabetes mellitus With ophthalmic complications NA
E10.4 E104 DAGGER 4 Type 1 diabetes mellitus With neurological complications NA
E10.5 E105 DEFAULT 3 Type 1 diabetes mellitus With peripheral circulatory complications NA
E10.6 E106 DEFAULT 3 Type 1 diabetes mellitus With other specified complications NA
E10.7 E107 DEFAULT 3 Type 1 diabetes mellitus With multiple complications NA
E10.8 E108 DEFAULT 3 Type 1 diabetes mellitus With unspecified complications NA
E10.9 E109 DEFAULT 3 Type 1 diabetes mellitus Without complications NA

Note, there are no ICD10 codes with values for both MODIFIER_4 AND MODIFIER_5.

Dagger/asterisk pairs

Some ICD10 codes use the ‘dagger’ and ‘asterisk’ system, where the primary code for the underlying disease is the ‘dagger’ and an optional additional code for the manifestation is marked with an ‘asterisk’. See this [online article] for a fuller discussion

Dagger and asterisk codes are labelled DAGGER and ASTERIS For dagger coAsterisks codes are under QUALIFIER column

Below: USAGE_UK == 1. Here, USAGE is labelled DAGGER and the corresponding asterisk term(s) are shown under QUALIFIERS. Note that other dagger and asterisk code types have different USAGE_UK categories (see https://silo.tips/download/icd-10-4-th-edition-codes-and-titles-and-metadata-file-specification (update this link to direct link to ICD10 metadata file))

# mapping df for ICD10_CODE:ALT_CODE format
icd10_alt_code_map <- all_lkps_maps_raw$icd10_lkp %>% 
  select(ICD10_CODE, ALT_CODE)

# df of dagger/asterisk pairs
icd10_dagger_asterisk_pairs <- all_lkps_maps_raw$icd10_lkp %>%
  filter(!is.na(QUALIFIERS)) 

all_lkps_maps_raw$icd10_lkp %>% 
  filter(USAGE %in% c("DAGGER", "ASTERIS"))
# A tibble: 926 × 12
   ICD10_CODE ALT_CODE USAGE  USAGE_UK DESCRIPTION         MODIFIER_4 MODIFIER_5
   <chr>      <chr>    <chr>  <chr>    <chr>               <chr>      <chr>     
 1 A06.4      A064     DAGGER 1        Amoebic liver absc… <NA>       <NA>      
 2 A06.5      A065     DAGGER 1        Amoebic lung absce… <NA>       <NA>      
 3 A06.6      A066     DAGGER 1        Amoebic brain absc… <NA>       <NA>      
 4 A17        A17      DAGGER 4        Tuberculosis of ne… <NA>       <NA>      
 5 A17.0      A170     DAGGER 1        Tuberculous mening… <NA>       <NA>      
 6 A17.1      A171     DAGGER 1        Meningeal tubercul… <NA>       <NA>      
 7 A17.8      A178     DAGGER 4        Other tuberculosis… <NA>       <NA>      
 8 A17.9      A179     DAGGER 1        Tuberculosis of ne… <NA>       <NA>      
 9 A18.0      A180     DAGGER 4        Tuberculosis of bo… <NA>       <NA>      
10 A18.7      A187     DAGGER 1        Tuberculosis of ad… <NA>       <NA>      
# … with 916 more rows, and 5 more variables: QUALIFIERS <chr>,
#   GENDER_MASK <chr>, MIN_AGE <chr>, MAX_AGE <chr>, TREE_DESCRIPTION <chr>
# get descriptions for these codes
icd10_dagger_asterisk_descriptions <- icd10_dagger_asterisk_pairs %>%
  select(ICD10_CODE,
         QUALIFIERS) %>%
  map(reformat_icd10_codes) %>%
  map( ~ lookup_codes(codes = .x, code_type = "icd10")) %>% 
  bind_rows() %>% 
  left_join(icd10_alt_code_map,
            by = c("code" = "ALT_CODE")) %>% 
  select(description,
         ALT_CODE = code,
         ICD10_CODE)

# append descriptions to df of dagger/asterisk pairs
icd10_dagger_asterisk_pairs %>% 
  left_join(icd10_dagger_asterisk_descriptions %>% 
               select(-ICD10_CODE),
             by = c("ALT_CODE" = "ALT_CODE")) %>% 
  left_join(icd10_dagger_asterisk_descriptions %>% 
               select(-ALT_CODE),
             by = c("QUALIFIERS" = "ICD10_CODE"),   
             suffix = c("_ALT_CODE", "_QUALIFIERS")) %>% 
  select(ICD10_CODE,
         ALT_CODE,
         description_ALT_CODE,
         DESCRIPTION,
         USAGE,
         QUALIFIERS,
         description_QUALIFIERS,
         USAGE_UK) %>% 
  reactable(filterable = TRUE,
            searchable = TRUE,
            showPageSizeOptions = TRUE)

Other details

More documentation from UK Biobank resource 592:

- USAGE = Dagger / Asterisk indication
- USAGE_UK = Dagger / Asterisk indication
- DESCRIPTION = Longest preferred rubric
- MODIFIER_4 = 4th character modifier suffix
- MODIFIER_5 = 5th character modifier suffix
- QUALIFIERS = Dual classification (asterisk codes)
- GENDER_MASK = Gender mask: Identifies single sex conditions
- MIN_AGE = Minimum age that applies to this code
- MAX_AGE = Max age that applies to this code
- TREE_DESCRIPTION = This data field also contains descriptions that are functional in the context of the 3 character descriptions of their parent category, and are thus suitable for presentation where that context is available. For example:
C00 Malignant neoplasm of lip
C00.0 External upper lip
C00.1 External lower lip
C00.2 External lip, unspecified

USAGE_UK

Describes different combinations of USAGE, MODIFIER_4, MODIFIER_5 and QUALIFIERS. See https://silo.tips/download/icd-10-4-th-edition-codes-and-titles-and-metadata-file-specification (TODO - replace with direct link to ICD10 metadata file)

all_lkps_maps_raw$icd10_lkp %>%
  filter(!is.na(USAGE_UK)) %>%
  pull(USAGE_UK) %>%
  unique() %>%
  set_names() %>%
  map( ~ all_lkps_maps_raw$icd10_lkp %>%
         filter(USAGE_UK == .x) %>%
         head()) %>%
  iwalk( ~ {
    cat("### USAGE_UK ", .y, "\n\n")
    
    flextable::flextable(.x) %>%
      flextable::autofit() %>%
      flextable::flextable_to_rmd()
    
    cat("\n\n")
  })

USAGE_UK 3

USAGE_UK 1

USAGE_UK 4

USAGE_UK 2

USAGE_UK 0

GENDER_MASK, MIN_AGE, MAX_AGE, TREE_DESCRIPTION (examples)

all_lkps_maps_raw$icd10_lkp %>% 
  filter(!is.na(GENDER_MASK)) %>% 
  head() %>% 
  flextable::flextable() %>% 
  flextable::flextable_to_rmd()

```{=html}
<template id="06091ac4-a9af-477e-9e2e-9b28eafd389d"><style>
.tabwid table{
  border-spacing:0px !important;
  border-collapse:collapse;
  line-height:1;
  margin-left:auto;
  margin-right:auto;
  border-width: 0;
  display: table;
  margin-top: 1.275em;
  margin-bottom: 1.275em;
  border-color: transparent;
}
.tabwid_left table{
  margin-left:0;
}
.tabwid_right table{
  margin-right:0;
}
.tabwid td {
    padding: 0;
}
.tabwid a {
  text-decoration: none;
}
.tabwid thead {
    background-color: transparent;
}
.tabwid tfoot {
    background-color: transparent;
}
.tabwid table tr {
background-color: transparent;
}
</style><div class="tabwid"><style>.cl-421d8042{}.cl-4217feb0{font-family:'Helvetica';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-42180d10{margin:0;text-align:left;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-42184514{width:54pt;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-42184532{width:54pt;background-color:transparent;vertical-align: middle;border-bottom: 2pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-42184546{width:54pt;background-color:transparent;vertical-align: middle;border-bottom: 2pt solid rgba(102, 102, 102, 1.00);border-top: 2pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table class='cl-421d8042'>
```

```{=html}
<thead><tr style="overflow-wrap:break-word;"><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">ICD10_CODE</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">ALT_CODE</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">USAGE</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">USAGE_UK</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">DESCRIPTION</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">MODIFIER_4</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">MODIFIER_5</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">QUALIFIERS</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">GENDER_MASK</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">MIN_AGE</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">MAX_AGE</span></p></td><td class="cl-42184546"><p class="cl-42180d10"><span class="cl-4217feb0">TREE_DESCRIPTION</span></p></td></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">A34</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">A34X</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">DEFAULT</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">3</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Obstetrical tetanus</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">15</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">45</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">B26.0</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">B260</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">DAGGER</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Mumps orchitis</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">N51.1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">2</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">B37.3</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">B373</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">DAGGER</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Candidiasis of vulva and vagina</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">N77.1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">C51.0</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">C510</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">DEFAULT</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">3</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Malignant neoplasm: Labium majus</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Labium majus</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">C51.1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">C511</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">DEFAULT</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">3</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Malignant neoplasm: Labium minus</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184514"><p class="cl-42180d10"><span class="cl-4217feb0">Labium minus</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">C51.2</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">C512</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">DEFAULT</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">3</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">Malignant neoplasm: Clitoris</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">1</span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0"></span></p></td><td class="cl-42184532"><p class="cl-42180d10"><span class="cl-4217feb0">Clitoris</span></p></td></tr></tbody></table></div></template>
<div class="flextable-shadow-host" id="87a9f803-ca23-4479-bc6c-7fad8189e4d7"></div>
<script>
var dest = document.getElementById("87a9f803-ca23-4479-bc6c-7fad8189e4d7");
var template = document.getElementById("06091ac4-a9af-477e-9e2e-9b28eafd389d");
var caption = template.content.querySelector("caption");
if(caption) {
  caption.style.cssText = "display:block;text-align:center;";
  var newcapt = document.createElement("p");
  newcapt.appendChild(caption)
  dest.parentNode.insertBefore(newcapt, dest.previousSibling);
}
var fantome = dest.attachShadow({mode: 'open'});
var templateContent = template.content;
fantome.appendChild(templateContent);
</script>

```

sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] codemapper_0.0.0.9000 ukbwranglr_0.0.0.9000 targets_0.8.0        
 [4] crosstalk_1.1.1       readxl_1.3.1          reactable_0.2.3      
 [7] forcats_0.5.1         stringr_1.4.0         dplyr_1.0.7          
[10] purrr_0.3.4           readr_2.0.2           tidyr_1.1.4          
[13] tibble_3.1.4          ggplot2_3.3.5         tidyverse_1.3.1      
[16] workflowr_1.6.2      

loaded via a namespace (and not attached):
 [1] fs_1.5.0          bit64_4.0.5       lubridate_1.7.10  httr_1.4.2       
 [5] rprojroot_2.0.2   tools_4.1.0       backports_1.2.1   bslib_0.3.1      
 [9] utf8_1.2.2        R6_2.5.1          DBI_1.1.1         colorspace_2.0-2 
[13] withr_2.4.3       tidyselect_1.1.1  processx_3.5.2    bit_4.0.4        
[17] compiler_4.1.0    git2r_0.28.0      cli_3.0.1         rvest_1.0.1      
[21] flextable_0.6.10  xml2_1.3.2        officer_0.4.1     sass_0.4.0       
[25] scales_1.1.1      callr_3.7.0       systemfonts_1.0.4 digest_0.6.28    
[29] rmarkdown_2.11    base64enc_0.1-3   pkgconfig_2.0.3   htmltools_0.5.2  
[33] dbplyr_2.1.1      fastmap_1.1.0     highr_0.9         htmlwidgets_1.5.4
[37] rlang_0.4.11      RSQLite_2.2.9     rstudioapi_0.13   shiny_1.7.0      
[41] jquerylib_0.1.4   generics_0.1.0    jsonlite_1.7.2    zip_2.2.0        
[45] magrittr_2.0.1    Rcpp_1.0.7        munsell_0.5.0     fansi_0.5.0      
[49] gdtools_0.2.4     lifecycle_1.0.1   stringi_1.7.4     whisker_0.4      
[53] yaml_2.2.1        blob_1.2.2        grid_4.1.0        promises_1.2.0.1 
[57] crayon_1.4.1      haven_2.4.3       hms_1.1.1         knitr_1.34       
[61] ps_1.6.0          pillar_1.6.3      uuid_0.1-4        igraph_1.2.6     
[65] codetools_0.2-18  reprex_2.0.1      glue_1.4.2        evaluate_0.14    
[69] data.table_1.14.2 renv_0.13.2       modelr_0.1.8      vctrs_0.3.8      
[73] tzdb_0.1.2        httpuv_1.6.3      cellranger_1.1.0  gtable_0.3.0     
[77] reactR_0.4.4      assertthat_0.2.1  cachem_1.0.6      xfun_0.24        
[81] mime_0.12         xtable_1.8-4      broom_0.7.9       later_1.3.0      
[85] memoise_2.0.0     ellipsis_0.3.2