---
title: "Converting and creating codelists"
author: "Anoop Shah"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Converting and creating codelists}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---

Converting and creating codelists
=================================

This vignette describes a suggested method for creating and reviewing SNOMED CT codelists. Before using the code in this vignette, please follow the vignette 'Using SNOMED dictionaries and codelists' to download the NHS SNOMED distribution and create a R SNOMED dictionary. If you want to include inactive concept descriptions, ensure that the `active_only` option is set to FALSE when creating the SNOMED dictionary using `loadSNOMED`.

Searching for and using inactive concepts in SNOMED CT
------------------------------------------------------

As SNOMED CT is maintained over time, some concepts are inactivated because they are duplicates, ambiguous or no longer used. Data in existing database may still be recorded using inactive concepts, so it is important that queries account for this.

Prior to using any codelist to perform a search in a healthcare database, it is important to use the NHS Digital query table (downloadable from NHS Digital TRUD - https://isd.digital.nhs.uk/trud/user/guest/group/0/home) to augment the codelist with inactive concepts. The Query Table contains ancestor - descendant relationships for inactive concepts which correspond to current locations in the SNOMED CT hierarchy. This allows appropriate inactive terms to be included as needed, as per your chosen provenance level.

The available provenance levels are:

- 0: subsumption is always true (i.e. the descendant is always a subtype of the ancestor)
- 1: subsumption is usually true (but there is a theoretical risk of false positives)
- 2: both ancestors and descendents are only approximately known
- 3: the original concept has at least two distinct meanings, so there is a risk of false positives

The NHS Digital history table contains mappings of inactive SNOMED CT concepts to new/current concepts.

Both the query table and the history table are automatically loaded using the loadSNOMED function if they are included in the folders specified when the function is called. The query table should have a name containing "SNOMEDQueryTable" and the history table should have a name containing "HistorySubstitutionTable_Concepts".

```{r}
library(Rdiagnosislist)
require(data.table)

# Use one thread only for CRAN
data.table::setDTthreads(threads = 1)

SNOMED <- sampleSNOMED()

# Create a codelist for right heart failure
rhf <- SNOMEDcodelist('Right heart failure', include_desc = TRUE)

addInactiveConcepts(rhf)
```
Creating SNOMED CT codelists from scratch
-----------------------------------------

A suggested process is:

- Browse the SNOMED CT terminology to find ancestor terms that may be relevant.
- Create a putative codelist using the ancestor terms and their descendants.
- Export the codelist to HTML for clinical review. Reviewers can export/save the results of their review using the functions on the HTML document.
- Import the reviewed codelist, and use the as.SNOMEDcodelist function to convert it into a parsimonious form for curation.

When using the data for querying, the process is:

- Convert the codelist to the 'simple' format (i.e. enumerating all terms).
- Add inactive terms using the Query table, as above.

Converting Read codelists to SNOMED CT
--------------------------------------

A suggested process is:

- Map Read terms to SNOMED CT using the NHS Digital mapping.
- Export the codelist to HTML for clinical review. Reviewers can export/save the results of their review using the functions on the HTML document.
- Import the reviewed codelist, and use the as.SNOMEDcodelist function to convert it into a parsimonious form for curation.

Example code:

```{r}
oldReadCodelist <- fread('
readcode|readterm
G54z500|Valvular heart disease"                     
G5yyC00|Diastolic dysfunction"                      
G5y3100|Ventricular dilatation"
')

# Get sample dictionaries
data(READMAPS)
SNOMED <- sampleSNOMED()

# Create a mapping table for Read to SNOMED (from NHSD table in READMAPS)
NHSD_READ_TO_SNOMED <- READMAPS[, list(readcode = unlist(read2_code)),
	by = conceptId]
mapped <- SNOMEDcodelist(NHSD_READ_TO_SNOMED[oldReadCodelist, on = 'readcode']$conceptId,
	codelist_name = 'heart_dis_from_read', version = 0, author = 'Me', date = 'Feb 2022')

# Export to HTML
# htmlCodelistHierarchy(mapped, file = paste0(tempdir(), '/test.html'))

# Command to open file in web browser (Linux only)
# system(paste0('google-chrome ', tempdir(), '/test.html &'))

# Reimport edited list
importedlist <- fread('
conceptId,term,include_desc,included,checked,comment
368009,"Heart valve disorder (disorder)",FALSE,TRUE,FALSE,""
3545003,"Diastolic dysfunction (finding)",FALSE,TRUE,FALSE,""
6210001,"Dilatation of cardiac ventricle (disorder)",FALSE,TRUE,FALSE,""
418304008,"Diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
441530006,"Chronic diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
443343001,"Acute diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
443344007,"Acute on chronic diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
153931000119109,"Acute combined systolic and diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
153951000119103,"Acute on chronic combined systolic and diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
153941000119100,"Chronic combined systolic and diastolic heart failure (disorder)",FALSE,FALSE,FALSE,""
120891000119109,"Diastolic heart failure stage C (disorder)",FALSE,FALSE,FALSE,""
120881000119106,"Diastolic heart failure stage D (disorder)",FALSE,FALSE,FALSE,""
')

# Convert to parsimonious (tree format) codelist
treecodelist <- as.SNOMEDcodelist(importedlist, format = 'tree',
	codelist_name = 'heart_dis_from_read', version = 1, author = 'Me', date = 'Feb 2022')
```

HTML codelist for this example
------------------------------

<style type="text/css">
table {border-spacing: 0px; font-family:Arial;}
td, th {border-bottom: 1px solid #ddd; padding: 1px; text-align: left}
.button {border: 1px solid white}
.button:hover {border: 1px solid black}
.tree {color: black}
.add {background-color: green; color: white}
.remove {background-color: red; color: white}
tr:hover {background-color: #D6EEEE;}</style><script type="text/javascript">
const c_allrows = [7,8,2,1,3,4,6,5,13,16,9,10,11,12];
function showuncheckedrows(rows){
  if (document.getElementById("showuncheckedbutton").innerHTML ==
      "Show unchecked concepts only"){
    clearhighlight();
    let all_checked = true;
    rows.forEach(function(thisrow) {
      if (document.getElementById("checked".concat(thisrow)).innerHTML == "Y"){
        hiderow(thisrow);
      } else {
        all_checked = false;
        showrow(thisrow);
      }
    })
    if (all_checked == true){
      document.getElementById("showuncheckedbutton").innerHTML =
        "<strong>ALL CONCEPTS CHECKED!</strong>";
    }
  }
}
function toggle(thisrow, childrows, descendantrows){
  clearhighlight();
  if (document.getElementById("buttree".concat(thisrow)).innerHTML == "Expand"){
    childrows.forEach(showrow);
    childrows.forEach(highlightrow);
    highlightrow(thisrow);
    changebuttoncontract(thisrow);
  } else {
    childrows.forEach(changebuttonexpand);
    descendantrows.forEach(hiderow);
    highlightrow(thisrow);
    changebuttonexpand(thisrow);
  }
}
function changebuttonexpand(rownum){
  var mybutton = document.getElementById("buttree".concat(rownum));
  if (typeof(mybutton) != "undefined" && mybutton != null){
    mybutton.innerHTML = "Expand"
  }
}
function changebuttoncontract(rownum){
  var mybutton = document.getElementById("buttree".concat(rownum));
  if (typeof(mybutton) != "undefined" && mybutton != null){
    mybutton.innerHTML = "Contract"
  }
}
function clearhighlight(){
  /* Clears all highlights on all rows */
  c_allrows.forEach(backwhite);
}
function selectrow(rownum){
  document.getElementById("term".concat(rownum)
    ).style.color = "black";
  document.getElementById("include".concat(rownum)
    ).style.color = "black";
  document.getElementById("checked".concat(rownum)
    ).style.color = "black";
  document.getElementById("include".concat(rownum)
    ).innerHTML = "Y";
}
function checkrow(rownum){
  document.getElementById("checked".concat(rownum)
    ).innerHTML = "Y";
}
function checkrows(rows_to_check){
  clearhighlight();
  rows_to_check.forEach(checkrow);
  rows_to_check.forEach(highlightrow);
  /* Check if all are checked */
  var all_checked = true
  c_allrows.forEach(function(i) {
    if (document.getElementById("checked".concat(i)).innerHTML != "Y"){
      all_checked = false;
    }
  })
  if (all_checked == true){
    document.getElementById("showuncheckedbutton").innerHTML =
      "<strong>ALL CONCEPTS CHECKED!</strong>";
  }
}
function selectrows(thisrow, rows_to_select){
  clearhighlight();
  rows_to_select.forEach(selectrow);
  rows_to_select.forEach(checkrow);
  rows_to_select.forEach(highlightrow);
}
function deselectrow(rownum){
  document.getElementById("term".concat(rownum)
    ).style.color = "red";
  document.getElementById("include".concat(rownum)
    ).style.color = "red";
  document.getElementById("checked".concat(rownum)
    ).style.color = "red";
  document.getElementById("include".concat(rownum)
    ).innerHTML = "N";
}
function deselectrows(thisrow, rows_to_deselect){
  clearhighlight();
  rows_to_deselect.forEach(deselectrow);
  rows_to_deselect.forEach(checkrow);
  rows_to_deselect.forEach(highlightrow);
}
function uncheckrow(rownum){
  document.getElementById("checked".concat(rownum)
    ).innerHTML = "N";
  document.getElementById("showuncheckedbutton").innerHTML =
    "Show unchecked concepts only"
}
function uncheckrows(rows_to_uncheck){
  clearhighlight();
  rows_to_uncheck.forEach(uncheckrow);
  rows_to_uncheck.forEach(highlightrow);
}
function highlightrow(rownum){
  document.getElementById("row".concat(rownum)
    ).style.backgroundColor = "#D6EEEE";
}
function backwhite(rownum){
  document.getElementById("row".concat(rownum)
    ).style.backgroundColor = "white";
}
function hiderow(rownum){
  document.getElementById("row".concat(rownum)
    ).style.display = "none";
}
function showrow(rownum){
  document.getElementById("row".concat(rownum)
    ).style.display = "";
}
function hideall(allrows, alldescendantrows){
  clearhighlight();
  allrows.forEach(changebuttonexpand);
  alldescendantrows.forEach(hiderow);
}
function showall(rows){
  clearhighlight();
  rows.forEach(changebuttoncontract);
  rows.forEach(showrow);
}
function addcomment(thisrow_ids){
  /* Get comment from user */
  var comment = prompt("Comment", "").replace("<", "").replace(">", "");
  if (comment == "") {comment = "...";}
  thisrow_ids.forEach(function(i) {
    var cells = document.getElementById("comment".concat(i)
      ).innerHTML.split(">");
    document.getElementById("comment".concat(i)
      ).innerHTML = cells[0] + ">" + comment + "</a>";
  })
}
function exportall(){
  /* Get filename to export to */
  var filename = document.getElementById("exportfilename").value;
  /* Exports all selected terms to a text document */
  const dictionary = {"3545003":7, "418304008":8, "443343001":2, "153931000119109":1, "153951000119103":3, "443344007":4, "441530006":6, "153941000119100":5, "120891000119109":9, "120881000119106":10, "6210001":11, "368009":12}
  var output = "conceptId,term,include_desc,included,checked,comment\r\n"
  var space = document.getElementById("sample").innerHTML
  var term
  var included
  var comment
  var checked
  /* Loop through concepts, check the relevant included field */
  for (var conceptId in dictionary) {
    if (dictionary.hasOwnProperty(conceptId)) {
      if (document.getElementById("include".concat(
        dictionary[conceptId])).innerHTML == "Y"){
        included = "TRUE"
      } else {
        included = "FALSE"
      }
      /* parse comment */
      comment = document.getElementById("comment".concat(
        dictionary[conceptId])).innerHTML.replace("</a>",
        "").replace("<a href", "").split(">")[1]
      if (comment == "..."){
        comment = ""
      }
      if (document.getElementById("checked".concat(
        dictionary[conceptId])).innerHTML == "Y"){
        checked = "TRUE"
      } else {
        checked = "FALSE"
      }
      /* parse term */
      term = document.getElementById("term".concat(dictionary[conceptId])).innerHTML
      term = term.replace("<strong>",
        "").replace("</strong>", "").split(space
        ).join("").split("\"").join(",")
      /* to print to file */
      output = output + conceptId + ",\"" + term + "\",FALSE," +
        included + "," + checked + ",\"" + comment + "\"\r\n";
    }
  }
  
  /* To debug output */
  // console.log(output)
  
  /* Alternative approach */
  var link = document.createElement("a");
  if (filename == ""){
    filename = "codelist.csv"
  }
  if (/\.csv$/.test(filename) == false){
    filename = filename + ".csv"
  }
  link.setAttribute("href",
    "data:text/csv;charset=utf-8,%EF%BB%BF" +
      encodeURIComponent(output));
  link.setAttribute("download", filename);
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}
</script>

<p>This HTML document presents a hierarchy of SNOMED CT concepts.
In SNOMED CT, each concept has a distinct meaning and can
be linked to more general terms (ancestors) and more specific terms (descendants). The buttons allow you to explore the codelist at
different levels of the hierarchy, and mark whether or not you agree
with the inclusion of individual concepts or concept hierarchies. When
you have finished your review, you can download your final selection as a .CSV file by clicking the <strong>Export</strong> button below.</p>

<h4>Key to buttons for each concept</h4>
<ul>
<li><button class="button tree">Expand</button> Show descendants of this concept</li>
<li><button class="button tree">Contract</button> Hide descendants of this concept</li>
<li><button class="button tree"><strong>?</strong></button> Mark as unchecked</li>
<li><button class="button add"><strong>+</strong></button> Add a concept</li>
<li><button class="button remove"><strong>-</strong></button> Remove a concept</li>
<li><button class="button add"><strong>++</strong></button> Add a concept and all descendants</li>
<li><button class="button remove"><strong>--</strong></button> Remove a concept and all descendants</li>
</ul>

<h4>Reviewing tools</h4>
<p><button class="button tree" onclick="hideall(c_allrows, [8,2,1,3,4,6,5,13,16,9,10]);">Show top-level concepts only</button> <button class="button tree" onclick="showall(c_allrows);">Show all concepts</button></p>
<p><button class="button add" onclick="checkrows(c_allrows);"><strong>Mark all concepts as "checked"</strong></button> <button class="button remove" onclick="uncheckrows(c_allrows);"><strong>Mark all concepts as "unchecked"</strong></button> <button id="showuncheckedbutton" class="button tree"
onclick="showuncheckedrows(c_allrows);">Show unchecked concepts only</button></p>
<p><button id="exportbutton" class="button tree" onclick="exportall()"><strong>Export</strong></button> to
<input id="exportfilename" value=""> .csv
</p>

<table style="width:100%">
<tr><th>Expand</th><th>SNOMED CT concept</th><th>Comment</th><th>Checked</th><th>Included</th><th></th></tr>

<tr id="row7" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree7" onclick="toggle(7, [8], [8,2,1,3,4,6,5,13,16,9,10])">Contract</button></td><td id="term7" style="color:black;"><strong>Diastolic dysfunction (finding)</strong></td><td id="comment7"><a href="#" onclick="addcomment([7])">...</a></td><td id="checked7" style="color:black;"></td><td id="include7" style="color:black;">Y</td><td><button class="button tree" onclick="uncheckrows([7])"><strong>?</strong></button><button class="button add" onclick="selectrows(7, [7])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(7, [7])"><strong>-</strong></button><button class="button add" onclick="selectrows(7, [7,8,2,1,3,4,6,5,13,16,9,10])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(7, [7,8,2,1,3,4,6,5,13,16,9,10])"><strong>--</strong></button></td></tr>

<tr id="row8" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree8" onclick="toggle(8, [2,6,9,10], [2,1,3,4,6,5,13,16,9,10])">Contract</button></td><td id="term8" style="color:red;">&middot;&emsp;<strong>Diastolic heart failure (disorder)</strong></td><td id="comment8"><a href="#" onclick="addcomment([8])">...</a></td><td id="checked8" style="color:red;"></td><td id="include8" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([8])"><strong>?</strong></button><button class="button add" onclick="selectrows(8, [8])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(8, [8])"><strong>-</strong></button><button class="button add" onclick="selectrows(8, [8,2,1,3,4,6,5,13,16,9,10])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(8, [8,2,1,3,4,6,5,13,16,9,10])"><strong>--</strong></button></td></tr>

<tr id="row2" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree2" onclick="toggle(2, [1,4], [1,3,4])">Contract</button></td><td id="term2" style="color:red;">&middot;&emsp;&middot;&emsp;<strong>Acute diastolic heart failure (disorder)</strong></td><td id="comment2"><a href="#" onclick="addcomment([2])">...</a></td><td id="checked2" style="color:red;"></td><td id="include2" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([2])"><strong>?</strong></button><button class="button add" onclick="selectrows(2, [2])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(2, [2])"><strong>-</strong></button><button class="button add" onclick="selectrows(2, [2,1,3,4])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(2, [2,1,3,4])"><strong>--</strong></button></td></tr>

<tr id="row1" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree1" onclick="toggle(1, [3], [3])">Contract</button></td><td id="term1" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;<strong>Acute combined systolic and diastolic heart failure (disorder)</strong></td><td id="comment1"><a href="#" onclick="addcomment([1])">...</a></td><td id="checked1" style="color:red;"></td><td id="include1" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([1])"><strong>?</strong></button><button class="button add" onclick="selectrows(1, [1])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(1, [1])"><strong>-</strong></button><button class="button add" onclick="selectrows(1, [1,3])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(1, [1,3])"><strong>--</strong></button></td></tr>

<tr id="row3" style="background-color:white;"><td></td><td id="term3" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;&middot;&emsp;Acute on chronic combined systolic and diastolic heart failure (disorder)</td><td id="comment3"><a href="#" onclick="addcomment([3,16])">...</a></td><td id="checked3" style="color:red;"></td><td id="include3" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([3,16])"><strong>?</strong></button><button class="button add" onclick="selectrows(3, [3,16])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(3, [3,16])"><strong>-</strong></button></td></tr>

<tr id="row4" style="background-color:white;"><td></td><td id="term4" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;Acute on chronic diastolic heart failure (disorder)</td><td id="comment4"><a href="#" onclick="addcomment([4,13])">...</a></td><td id="checked4" style="color:red;"></td><td id="include4" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([4,13])"><strong>?</strong></button><button class="button add" onclick="selectrows(4, [4,13])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(4, [4,13])"><strong>-</strong></button></td></tr>

<tr id="row6" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree6" onclick="toggle(6, [5,13], [5,13,16])">Contract</button></td><td id="term6" style="color:red;">&middot;&emsp;&middot;&emsp;<strong>Chronic diastolic heart failure (disorder)</strong></td><td id="comment6"><a href="#" onclick="addcomment([6])">...</a></td><td id="checked6" style="color:red;"></td><td id="include6" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([6])"><strong>?</strong></button><button class="button add" onclick="selectrows(6, [6])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(6, [6])"><strong>-</strong></button><button class="button add" onclick="selectrows(6, [6,5,13,16])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(6, [6,5,13,16])"><strong>--</strong></button></td></tr>

<tr id="row5" style="background-color:white;"><td></td><td id="term5" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;Chronic combined systolic and diastolic heart failure (disorder)</td><td id="comment5"><a href="#" onclick="addcomment([5])">...</a></td><td id="checked5" style="color:red;"></td><td id="include5" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([5])"><strong>?</strong></button><button class="button add" onclick="selectrows(5, [5])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(5, [5])"><strong>-</strong></button></td></tr>

<tr id="row13" style="background-color:white;"><td><button class="button tree" background-color="#D6D6D6" id="buttree13" onclick="toggle(13, [16], [16])">Contract</button></td><td id="term13" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;<strong>Acute on chronic diastolic heart failure (disorder)</strong></td><td id="comment13"><a href="#" onclick="addcomment([4,13])">...</a></td><td id="checked13" style="color:red;"></td><td id="include13" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([4,13])"><strong>?</strong></button><button class="button add" onclick="selectrows(13, [4,13])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(13, [4,13])"><strong>-</strong></button><button class="button add" onclick="selectrows(13, [4,13,16])"><strong>++</strong></button><button class="button remove" onclick="deselectrows(13, [4,13,16])"><strong>--</strong></button></td></tr>

<tr id="row16" style="background-color:white;"><td></td><td id="term16" style="color:red;">&middot;&emsp;&middot;&emsp;&middot;&emsp;&middot;&emsp;Acute on chronic combined systolic and diastolic heart failure (disorder)</td><td id="comment16"><a href="#" onclick="addcomment([3,16])">...</a></td><td id="checked16" style="color:red;"></td><td id="include16" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([3,16])"><strong>?</strong></button><button class="button add" onclick="selectrows(16, [3,16])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(16, [3,16])"><strong>-</strong></button></td></tr>

<tr id="row9" style="background-color:white;"><td></td><td id="term9" style="color:red;">&middot;&emsp;&middot;&emsp;Diastolic heart failure stage C (disorder)</td><td id="comment9"><a href="#" onclick="addcomment([9])">...</a></td><td id="checked9" style="color:red;"></td><td id="include9" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([9])"><strong>?</strong></button><button class="button add" onclick="selectrows(9, [9])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(9, [9])"><strong>-</strong></button></td></tr>

<tr id="row10" style="background-color:white;"><td></td><td id="term10" style="color:red;">&middot;&emsp;&middot;&emsp;Diastolic heart failure stage D (disorder)</td><td id="comment10"><a href="#" onclick="addcomment([10])">...</a></td><td id="checked10" style="color:red;"></td><td id="include10" style="color:red;">N</td><td><button class="button tree" onclick="uncheckrows([10])"><strong>?</strong></button><button class="button add" onclick="selectrows(10, [10])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(10, [10])"><strong>-</strong></button></td></tr>

<tr id="row11" style="background-color:white;"><td></td><td id="term11" style="color:black;">Dilatation of cardiac ventricle (disorder)</td><td id="comment11"><a href="#" onclick="addcomment([11])">...</a></td><td id="checked11" style="color:black;"></td><td id="include11" style="color:black;">Y</td><td><button class="button tree" onclick="uncheckrows([11])"><strong>?</strong></button><button class="button add" onclick="selectrows(11, [11])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(11, [11])"><strong>-</strong></button></td></tr>

<tr id="row12" style="background-color:white;"><td></td><td id="term12" style="color:black;">Heart valve disorder (disorder)</td><td id="comment12"><a href="#" onclick="addcomment([12])">...</a></td><td id="checked12" style="color:black;"></td><td id="include12" style="color:black;">Y</td><td><button class="button tree" onclick="uncheckrows([12])"><strong>?</strong></button><button class="button add" onclick="selectrows(12, [12])"><strong>+</strong></button><button class="button remove" onclick="deselectrows(12, [12])"><strong>-</strong></button></td></tr>

</table>

More information
----------------

For more information about SNOMED CT, visit the SNOMED CT international website: <https://www.snomed.org/>

SNOMED CT (UK edition) can be downloaded from the NHS Digital site: <https://isd.digital.nhs.uk/trud/user/guest/group/0/home>

The NHS Digital terminology browser can be used to search for terms interactively: <https://termbrowser.nhs.uk/>