749 lines
21 KiB
HTML
749 lines
21 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
|
|||
|
<html>
|
|||
|
|
|||
|
<head>
|
|||
|
|
|||
|
<meta charset="utf-8" />
|
|||
|
<meta name="generator" content="pandoc" />
|
|||
|
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<title>Custom Concepts</title>
|
|||
|
|
|||
|
<script src="site_libs/header-attrs-2.25/header-attrs.js"></script>
|
|||
|
<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|||
|
<link href="site_libs/bootstrap-3.3.5/css/cosmo.min.css" rel="stylesheet" />
|
|||
|
<script src="site_libs/bootstrap-3.3.5/js/bootstrap.min.js"></script>
|
|||
|
<script src="site_libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
|
|||
|
<script src="site_libs/bootstrap-3.3.5/shim/respond.min.js"></script>
|
|||
|
<style>h1 {font-size: 34px;}
|
|||
|
h1.title {font-size: 38px;}
|
|||
|
h2 {font-size: 30px;}
|
|||
|
h3 {font-size: 24px;}
|
|||
|
h4 {font-size: 18px;}
|
|||
|
h5 {font-size: 16px;}
|
|||
|
h6 {font-size: 12px;}
|
|||
|
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
|
|||
|
pre:not([class]) { background-color: white }</style>
|
|||
|
<script src="site_libs/navigation-1.1/tabsets.js"></script>
|
|||
|
<link href="site_libs/highlightjs-9.12.0/default.css" rel="stylesheet" />
|
|||
|
<script src="site_libs/highlightjs-9.12.0/highlight.js"></script>
|
|||
|
<link href="site_libs/font-awesome-6.4.2/css/all.min.css" rel="stylesheet" />
|
|||
|
<link href="site_libs/font-awesome-6.4.2/css/v4-shims.min.css" rel="stylesheet" />
|
|||
|
<link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
|
|||
|
|
|||
|
<style type="text/css">
|
|||
|
code{white-space: pre-wrap;}
|
|||
|
span.smallcaps{font-variant: small-caps;}
|
|||
|
span.underline{text-decoration: underline;}
|
|||
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|||
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|||
|
ul.task-list{list-style: none;}
|
|||
|
</style>
|
|||
|
|
|||
|
<style type="text/css">code{white-space: pre;}</style>
|
|||
|
<script type="text/javascript">
|
|||
|
if (window.hljs) {
|
|||
|
hljs.configure({languages: []});
|
|||
|
hljs.initHighlightingOnLoad();
|
|||
|
if (document.readyState && document.readyState === "complete") {
|
|||
|
window.setTimeout(function() { hljs.initHighlighting(); }, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<link rel="stylesheet" href="style.css" type="text/css" />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<style type = "text/css">
|
|||
|
.main-container {
|
|||
|
max-width: 940px;
|
|||
|
margin-left: auto;
|
|||
|
margin-right: auto;
|
|||
|
}
|
|||
|
img {
|
|||
|
max-width:100%;
|
|||
|
}
|
|||
|
.tabbed-pane {
|
|||
|
padding-top: 12px;
|
|||
|
}
|
|||
|
.html-widget {
|
|||
|
margin-bottom: 20px;
|
|||
|
}
|
|||
|
button.code-folding-btn:focus {
|
|||
|
outline: none;
|
|||
|
}
|
|||
|
summary {
|
|||
|
display: list-item;
|
|||
|
}
|
|||
|
details > summary > p:only-child {
|
|||
|
display: inline;
|
|||
|
}
|
|||
|
pre code {
|
|||
|
padding: 0;
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
|
|||
|
<style type="text/css">
|
|||
|
.dropdown-submenu {
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
.dropdown-submenu>.dropdown-menu {
|
|||
|
top: 0;
|
|||
|
left: 100%;
|
|||
|
margin-top: -6px;
|
|||
|
margin-left: -1px;
|
|||
|
border-radius: 0 6px 6px 6px;
|
|||
|
}
|
|||
|
.dropdown-submenu:hover>.dropdown-menu {
|
|||
|
display: block;
|
|||
|
}
|
|||
|
.dropdown-submenu>a:after {
|
|||
|
display: block;
|
|||
|
content: " ";
|
|||
|
float: right;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-color: transparent;
|
|||
|
border-style: solid;
|
|||
|
border-width: 5px 0 5px 5px;
|
|||
|
border-left-color: #cccccc;
|
|||
|
margin-top: 5px;
|
|||
|
margin-right: -10px;
|
|||
|
}
|
|||
|
.dropdown-submenu:hover>a:after {
|
|||
|
border-left-color: #adb5bd;
|
|||
|
}
|
|||
|
.dropdown-submenu.pull-left {
|
|||
|
float: none;
|
|||
|
}
|
|||
|
.dropdown-submenu.pull-left>.dropdown-menu {
|
|||
|
left: -100%;
|
|||
|
margin-left: 10px;
|
|||
|
border-radius: 6px 0 6px 6px;
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
<script type="text/javascript">
|
|||
|
// manage active state of menu based on current page
|
|||
|
$(document).ready(function () {
|
|||
|
// active menu anchor
|
|||
|
href = window.location.pathname
|
|||
|
href = href.substr(href.lastIndexOf('/') + 1)
|
|||
|
if (href === "")
|
|||
|
href = "index.html";
|
|||
|
var menuAnchor = $('a[href="' + href + '"]');
|
|||
|
|
|||
|
// mark the anchor link active (and if it's in a dropdown, also mark that active)
|
|||
|
var dropdown = menuAnchor.closest('li.dropdown');
|
|||
|
if (window.bootstrap) { // Bootstrap 4+
|
|||
|
menuAnchor.addClass('active');
|
|||
|
dropdown.find('> .dropdown-toggle').addClass('active');
|
|||
|
} else { // Bootstrap 3
|
|||
|
menuAnchor.parent().addClass('active');
|
|||
|
dropdown.addClass('active');
|
|||
|
}
|
|||
|
|
|||
|
// Navbar adjustments
|
|||
|
var navHeight = $(".navbar").first().height() + 15;
|
|||
|
var style = document.createElement('style');
|
|||
|
var pt = "padding-top: " + navHeight + "px; ";
|
|||
|
var mt = "margin-top: -" + navHeight + "px; ";
|
|||
|
var css = "";
|
|||
|
// offset scroll position for anchor links (for fixed navbar)
|
|||
|
for (var i = 1; i <= 6; i++) {
|
|||
|
css += ".section h" + i + "{ " + pt + mt + "}\n";
|
|||
|
}
|
|||
|
style.innerHTML = "body {" + pt + "padding-bottom: 40px; }\n" + css;
|
|||
|
document.head.appendChild(style);
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
<!-- tabsets -->
|
|||
|
|
|||
|
<style type="text/css">
|
|||
|
.tabset-dropdown > .nav-tabs {
|
|||
|
display: inline-table;
|
|||
|
max-height: 500px;
|
|||
|
min-height: 44px;
|
|||
|
overflow-y: auto;
|
|||
|
border: 1px solid #ddd;
|
|||
|
border-radius: 4px;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs > li.active:before, .tabset-dropdown > .nav-tabs.nav-tabs-open:before {
|
|||
|
content: "\e259";
|
|||
|
font-family: 'Glyphicons Halflings';
|
|||
|
display: inline-block;
|
|||
|
padding: 10px;
|
|||
|
border-right: 1px solid #ddd;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
|
|||
|
content: "\e258";
|
|||
|
font-family: 'Glyphicons Halflings';
|
|||
|
border: none;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs > li.active {
|
|||
|
display: block;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs > li > a,
|
|||
|
.tabset-dropdown > .nav-tabs > li > a:focus,
|
|||
|
.tabset-dropdown > .nav-tabs > li > a:hover {
|
|||
|
border: none;
|
|||
|
display: inline-block;
|
|||
|
border-radius: 4px;
|
|||
|
background-color: transparent;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
|
|||
|
display: block;
|
|||
|
float: none;
|
|||
|
}
|
|||
|
|
|||
|
.tabset-dropdown > .nav-tabs > li {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
<!-- code folding -->
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
|
|||
|
|
|||
|
<div class="container-fluid main-container">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
|||
|
<div class="container">
|
|||
|
<div class="navbar-header">
|
|||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-bs-toggle="collapse" data-target="#navbar" data-bs-target="#navbar">
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
</button>
|
|||
|
<a class="navbar-brand" href="index.html"><div><img src="ohdsi16x16.png"></img> OMOP Common Data Model </div></a>
|
|||
|
</div>
|
|||
|
<div id="navbar" class="navbar-collapse collapse">
|
|||
|
<ul class="nav navbar-nav">
|
|||
|
<li>
|
|||
|
<a href="index.html">
|
|||
|
<span class="fa fa-house"></span>
|
|||
|
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-landmark"></span>
|
|||
|
|
|||
|
Background
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="background.html">Model Background</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdmRefreshProcess.html">CDM Refresh Process</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="vocabulary.html">How the Vocabulary is Built</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-list-alt"></span>
|
|||
|
|
|||
|
Conventions
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="dataModelConventions.html">General Conventions</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="ehrObsPeriods.html">Observation Periods for EHR Data</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdmPrivacy.html">Patient Privacy and OMOP</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="customConcepts.html">Custom Concepts</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-history"></span>
|
|||
|
|
|||
|
CDM Versions
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="cdm30.html">CDM v3.0</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdm53.html">CDM v5.3</a>
|
|||
|
</li>
|
|||
|
<li class="dropdown-submenu">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">CDM v5.4</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="cdm54.html">CDM v5.4</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdm54Changes.html">Changes from CDM v5.3</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdm54erd.html">Entity Relationships</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdm54ToolingSupport.html">Detailed tooling support per CDM field</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-plus-square"></span>
|
|||
|
|
|||
|
CDM Proposals
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="cdmRequestProcess.html">How to Propose Changes to the CDM</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="https://github.com/OHDSI/CommonDataModel/issues?q=is%3Aopen+is%3Aissue+label%3AProposal">Under Review</a>
|
|||
|
</li>
|
|||
|
<li class="dropdown-submenu">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">Accepted</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="https://github.com/OHDSI/CommonDataModel/issues/252">Region_concept_id</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-question"></span>
|
|||
|
|
|||
|
How to
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="download.html">Download the DDL</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="cdmRPackage.html">Use the CDM R Package</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="drug_dose.html">Calculate Drug Dose</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="dropdown">
|
|||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|||
|
<span class="fa fa-life-ring"></span>
|
|||
|
|
|||
|
Support
|
|||
|
|
|||
|
<span class="caret"></span>
|
|||
|
</a>
|
|||
|
<ul class="dropdown-menu" role="menu">
|
|||
|
<li>
|
|||
|
<a href="cdmDecisionTree.html">Help! My Data Doesn't Fit!</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="faq.html">FAQ</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="sqlScripts.html">SQL Scripts</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="contribute.html">Ask a Question</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<ul class="nav navbar-nav navbar-right">
|
|||
|
<li>
|
|||
|
<a href="https://github.com/OHDSI/CommonDataModel">
|
|||
|
<span class="fa fa-github"></span>
|
|||
|
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div><!--/.nav-collapse -->
|
|||
|
</div><!--/.container -->
|
|||
|
</div><!--/.navbar -->
|
|||
|
|
|||
|
<div id="header">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<h1 class="title toc-ignore"><strong>Custom Concepts</strong></h1>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
<p><em>By Maxim Moinat and the Themis Working Group</em></p>
|
|||
|
<p>The Themis Working Group convened on October 6th and December 7th
|
|||
|
2023 to discuss the creation this convention for creating custom
|
|||
|
concepts.</p>
|
|||
|
<div id="introduction" class="section level2">
|
|||
|
<h2>Introduction</h2>
|
|||
|
<p>While the OMOP vocabularies are very comprehensive, it is not always
|
|||
|
possible to use concepts existing in the OMOP vocabularies. For example,
|
|||
|
when using a vocabulary that is only used in your institution or having
|
|||
|
custom defined variables. In these cases, custom concepts can be used.
|
|||
|
Custom concepts are concepts that are not part of the OMOP vocabularies,
|
|||
|
and are only used in your institution. There are two main reasons to
|
|||
|
define custom concepts in your local OMOP CDM vocabulary. The first is
|
|||
|
that they are available in your local Atlas instance, which has several
|
|||
|
use cases: - When viewing a standard concept, you can see which custom
|
|||
|
concepts are mapped to it. This allows you to better understand what the
|
|||
|
standard concept represents in your institution. - You can search for a
|
|||
|
custom concept and find which standard concepts it is mapped to, to
|
|||
|
include in your standard concept set. - For studies only using your
|
|||
|
local data, you can define cohorts using custom concepts (through ‘Add
|
|||
|
attribute’->‘Add … Source Concept’). The second reason is using the
|
|||
|
custom concepts in your ETL. By creating both the custom concept, and
|
|||
|
the ‘Maps to’ relationship (example below), we can use this in the same
|
|||
|
way as mapping other source vocabularies.</p>
|
|||
|
<p><strong>Custom concepts are only defined locally. These cannot be
|
|||
|
used for network research. Therefore it remains very important to map to
|
|||
|
standard concepts.</strong></p>
|
|||
|
</div>
|
|||
|
<div id="conventions" class="section level2">
|
|||
|
<h2>Conventions</h2>
|
|||
|
<p>It is important to follow a set of conventions when creating custom
|
|||
|
concepts, to avoid negatively impacting network studies. The conventions
|
|||
|
are as follows:</p>
|
|||
|
<ul>
|
|||
|
<li>Custom concepts have a <code>concept_id</code> larger than
|
|||
|
2,000,000,000. This is to avoid clashes with existing
|
|||
|
concepts.<sup>†</sup></li>
|
|||
|
<li>Custom concepts are always non-standard
|
|||
|
(<code>concept.standard_concept = NULL</code>).</li>
|
|||
|
<li>Custom concepts can only be used in the
|
|||
|
<code>_source_concept_id</code> fields
|
|||
|
(e.g. <code>procedure_source_concept_id</code>)</li>
|
|||
|
<li>If the field <code>_source_concept_id</code> does not exist, add a
|
|||
|
custom column to your table (e.g. a
|
|||
|
<code>drug_exposure.route_source_concept_id</code>)<sup>1</sup>. If
|
|||
|
there is a wide need in the community, a proposal can be submitted to
|
|||
|
the CDM Working Group to add these fields in a future OMOP CDM
|
|||
|
version.</li>
|
|||
|
<li>Always add custom concepts to a new vocabulary specifically for your
|
|||
|
source (see example below). If you have a need to add concepts to an
|
|||
|
existing vocabulary, please contact the OHDSI Vocabulary Working
|
|||
|
Group.</li>
|
|||
|
<li>Do NOT add custom concepts to the hierarchy of existing vocabularies
|
|||
|
(either in the <code>concept_ancestor</code> table or
|
|||
|
<code>subsumes</code>/<code>is a</code> relations in the
|
|||
|
<code>concept_relationship</code> table). This is to avoid descendant
|
|||
|
concepts to differ between sites.</li>
|
|||
|
</ul>
|
|||
|
<p>In addition, it is recommended to follow these suggestions:</p>
|
|||
|
<ul>
|
|||
|
<li>For the <code>domain_id</code>, choose an appropriate existing value
|
|||
|
from the domain table (‘Condition’, ‘Drug’, ‘Procedure’, etc.). Note
|
|||
|
that this determines the target table the concept can be used in.</li>
|
|||
|
<li>For the <code>concept_class_id</code>, it is not required to create
|
|||
|
new classes for your source vocabulary. To leave the class empty
|
|||
|
explicitly, use class ‘Undefined’. It is also allowed to reuse existing
|
|||
|
concept classes (e.g. SNOMED’s ‘Clinical Finding’ for conditions or
|
|||
|
RxNorm drug classes ‘Ingredient’, ‘Clinical Drug’, ‘Branded Drug’
|
|||
|
etc.).</li>
|
|||
|
<li>In the new vocabulary record, the <code>vocabulary_concept_id</code>
|
|||
|
can be set to 0, as this is often not used in the OMOP CDM.</li>
|
|||
|
<li>Create mappings between custom concepts and standard concepts. This
|
|||
|
can be done by adding rows to the <code>concept_relationship</code>
|
|||
|
table, with the <code>Maps to</code> relation. The reverse relation,
|
|||
|
<code>Mapped from</code>, should also be added. This allows for easy
|
|||
|
navigation between custom and standard concepts<sup>2</sup>. The ‘mapped
|
|||
|
to’ concept should be a standard concept.</li>
|
|||
|
<li>Officially, <code>concept_hierarchy</code> is only for standard
|
|||
|
concepts. However, if you local use case requires this (e.g. for
|
|||
|
selection of descendants of custom concepts), the custom concepts can be
|
|||
|
added into their own, isolated, hierarchy. ## Example In this example,
|
|||
|
we will add one custom concept for the ‘DHD Diagnose Thesaurus’. This is
|
|||
|
a Dutch vocabulary, which is not part of the OMOP vocabularies. We will
|
|||
|
add the concept ‘diabetes mellitus type 1’. This concept has a mapping
|
|||
|
to the standard concept ‘Diabetes mellitus type 1 (disorder)’,
|
|||
|
concept_id 3341872.</li>
|
|||
|
</ul>
|
|||
|
<p>After creating these records, we can use the custom concept in our
|
|||
|
ETL to populate the <code>condition_source_concept_id</code> field.</p>
|
|||
|
<div id="custom-vocabulary" class="section level3">
|
|||
|
<h3>Custom vocabulary</h3>
|
|||
|
<table>
|
|||
|
<colgroup>
|
|||
|
<col width="50%" />
|
|||
|
<col width="50%" />
|
|||
|
</colgroup>
|
|||
|
<thead>
|
|||
|
<tr class="header">
|
|||
|
<th>Field</th>
|
|||
|
<th>Value</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<tr class="odd">
|
|||
|
<td>vocabulary_id</td>
|
|||
|
<td>DHD Diagnose Thesaurus</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>vocabulary_name</td>
|
|||
|
<td>Dutch Hospital Data Diagnosethesaurus</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>vocabulary_reference</td>
|
|||
|
<td><a
|
|||
|
href="https://www.dhd.nl/producten-diensten/diagnosethesaurus/Paginas/diagnosethesaurus.asp"
|
|||
|
class="uri">https://www.dhd.nl/producten-diensten/diagnosethesaurus/Paginas/diagnosethesaurus.asp</a></td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>vocabulary_version</td>
|
|||
|
<td>2023-04-20</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>vocabulary_concept_id</td>
|
|||
|
<td>0</td>
|
|||
|
</tr>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
<div id="custom-concept" class="section level3">
|
|||
|
<h3>Custom concept</h3>
|
|||
|
<table>
|
|||
|
<thead>
|
|||
|
<tr class="header">
|
|||
|
<th>Field</th>
|
|||
|
<th>Value</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<tr class="odd">
|
|||
|
<td>concept_id</td>
|
|||
|
<td>2 000 000 001</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>concept_name</td>
|
|||
|
<td>diabetes mellitus type 1</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>domain_id</td>
|
|||
|
<td>Condition</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>vocabulary_id</td>
|
|||
|
<td>DHD Diagnose Thesaurus</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>concept_class_id</td>
|
|||
|
<td>Undefined</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>standard_concept</td>
|
|||
|
<td><code>NULL</code></td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>concept_code</td>
|
|||
|
<td>0000002630</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>valid_start_date</td>
|
|||
|
<td>2017-08-01</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>valid_end_date</td>
|
|||
|
<td>2099-12-31</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>invalid_reason</td>
|
|||
|
<td><code>NULL</code></td>
|
|||
|
</tr>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
<div id="mapping-relationship" class="section level3">
|
|||
|
<h3>Mapping relationship</h3>
|
|||
|
<table>
|
|||
|
<thead>
|
|||
|
<tr class="header">
|
|||
|
<th>Field</th>
|
|||
|
<th>Value</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<tr class="odd">
|
|||
|
<td>concept_id_1</td>
|
|||
|
<td>2 000 000 001</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>concept_id_2</td>
|
|||
|
<td>3341872</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>relationship_id</td>
|
|||
|
<td>Maps to</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>valid_start_date</td>
|
|||
|
<td>2017-08-01</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>valid_end_date</td>
|
|||
|
<td>2099-12-31</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>invalid_reason</td>
|
|||
|
<td><code>NULL</code></td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>Field</td>
|
|||
|
<td>Value</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>——-</td>
|
|||
|
<td>——-</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>concept_id_1</td>
|
|||
|
<td>3341872</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>concept_id_2</td>
|
|||
|
<td>2 000 000 001</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>relationship_id</td>
|
|||
|
<td>Mapped from</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>valid_start_date</td>
|
|||
|
<td>2017-08-01</td>
|
|||
|
</tr>
|
|||
|
<tr class="odd">
|
|||
|
<td>valid_end_date</td>
|
|||
|
<td>2099-12-31</td>
|
|||
|
</tr>
|
|||
|
<tr class="even">
|
|||
|
<td>invalid_reason</td>
|
|||
|
<td><code>NULL</code></td>
|
|||
|
</tr>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
<p>See the <a
|
|||
|
href="https://ohdsi.github.io/CommonDataModel/sqlScripts.html#Source_to_Standard">Source
|
|||
|
To Standard query</a> to map a code in the source data to a standard
|
|||
|
concept.</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="getting-your-vocabulary-into-the-omop-vocabularies"
|
|||
|
class="section level2">
|
|||
|
<h2>Getting your vocabulary into the OMOP vocabularies</h2>
|
|||
|
<p>If you think your custom concepts are useful for others, you can
|
|||
|
submit them to the OMOP vocabularies. This could be as a supported
|
|||
|
source vocabulary (like ICD) or a new vocabulary with standard concepts
|
|||
|
(like LOINC). This is a separate process from the conventions described
|
|||
|
above. Please see the <a
|
|||
|
href="https://ohdsi.github.io/CommonDataModel/vocabRequest.html">this
|
|||
|
support page</a>.</p>
|
|||
|
</div>
|
|||
|
<div id="references" class="section level2">
|
|||
|
<h2>References</h2>
|
|||
|
<p><sup>1</sup><a
|
|||
|
href="https://www.ohdsi.org/2021-global-symposium-showcase-18/">Melanie
|
|||
|
Philofsky; Implementing & adopting a customized OMOP Common Data
|
|||
|
Model; OHDSI Symposium 2021</a></p>
|
|||
|
<p><sup>2</sup><a
|
|||
|
href="https://www.ohdsi.org/wp-content/uploads/2020/10/Melanie-Philofsky-Philofsky-Mapping-Source-Codes-Poster.pdf">Melanie
|
|||
|
Philofsky; Mapping Custom Source Codes to Standard Concepts: A
|
|||
|
Comparison of Two Approaches; OHDSI Symposium 2020</a> </br>
|
|||
|
<sup>†</sup>this is why custom concepts are sometimes referred to as
|
|||
|
“2B+” or “2billionaires”.</p>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<script>
|
|||
|
|
|||
|
// add bootstrap table styles to pandoc tables
|
|||
|
function bootstrapStylePandocTables() {
|
|||
|
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
|
|||
|
}
|
|||
|
$(document).ready(function () {
|
|||
|
bootstrapStylePandocTables();
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
</script>
|
|||
|
|
|||
|
<!-- tabsets -->
|
|||
|
|
|||
|
<script>
|
|||
|
$(document).ready(function () {
|
|||
|
window.buildTabsets("TOC");
|
|||
|
});
|
|||
|
|
|||
|
$(document).ready(function () {
|
|||
|
$('.tabset-dropdown > .nav-tabs > li').click(function () {
|
|||
|
$(this).parent().toggleClass('nav-tabs-open');
|
|||
|
});
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
<!-- code folding -->
|
|||
|
|
|||
|
|
|||
|
<!-- dynamically load mathjax for compatibility with self-contained -->
|
|||
|
<script>
|
|||
|
(function () {
|
|||
|
var script = document.createElement("script");
|
|||
|
script.type = "text/javascript";
|
|||
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
|||
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|||
|
})();
|
|||
|
</script>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|