This tables below contain an overview of which standard OHDSI tools
+make use of which OMOP CDM fields. The goal is to inform ETL developers,
+tooling developers and CDM extensions.
+
+
For ETL developers it helps to have guidance on which fields to
+prioritise in the mapping. Most value will be gained from populating
+fields support across the OHDSI tooling.
+
For OHDSI tooling developers, this page provides insight in the gaps
+of support and can drive future development efforts.
+
For CDM extensions, it helps to known what it means for an OMOP CDM
+table/field to be part of the standard. In other words: what OHDSI
+tooling do we at least expect to support the new extensions?
+
+
Currently four OHDSI tools have been evaluated: DataQualityDashboard,
+Achilles, Atlas (Data Sources and Cohort creation) and Feature
+Extraction.
General criteria: - ✔️ if the field essential for OMOP CDM definition
+(Primary Key, Foreign Key) e.g. person_id not explicitly used, but
+essential. (if the PK is marked as False, it typically means the whole
+table is not used in the tool e.g. _source_value fields
+that are used for traceability in ETL) - ❗ if field is used by the
+tool, but not in a meaningful way. e.g. provider_id in
+Achilles only checked for a valid foreign key to the provider table.
+
+
+
+
Tooling Support for OMOP fields
+
+
+
+
+
+
+
+
Abbreviations
+
+
+
+
+
+
PK
+
Primary Key
+
+
+
SV
+
Source Value (for data quality / etl validation)
+
+
+
BC
+
Backwards Compatibility, to support CDM <v5.4
+
+
+
FC
+
Forwards Compatibility, to easy support for CDM v6 in the
+future.
+
+
+
+
+
Person
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
cdmTableName
+
cdmFieldName
+
Special Fields
+
DQD (v1.0)
+
Achilles (v1.7)
+
Atlas Cohort (v2.10)
+
Atlas Cohort (v2.12)
+
Atlas Data Sources (v2.12)
+
Feature Extraction (v3.2)
+
Comment
+
+
+
+
+
PERSON
+
person_id
+
PK
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
PERSON
+
gender_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
PERSON
+
year_of_birth
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
PERSON
+
month_of_birth
+
+
✔️
+
✔️
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
day_of_birth
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
birth_datetime
+
FC
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
race_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
PERSON
+
ethnicity_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
PERSON
+
location_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
Achilles only does FK check
+
+
+
PERSON
+
provider_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
Achilles only does FK check
+
+
+
PERSON
+
care_site_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
Achilles only does FK check
+
+
+
PERSON
+
person_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
gender_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
gender_source_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
race_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
race_source_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
ethnicity_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
PERSON
+
ethnicity_source_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
+
+
+
Observation Period
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
cdmTableName
+
cdmFieldName
+
Special Fields
+
DQD (v1.0)
+
Achilles (v1.7)
+
Atlas Cohort (v2.10)
+
Atlas Cohort (v2.12)
+
Atlas Data Sources (v2.12)
+
Feature Extraction (v3.2)
+
Comment
+
+
+
+
+
OBSERVATION_PERIOD
+
observation_period_id
+
PK
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
OBSERVATION_PERIOD
+
person_id
+
Pid
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
OBSERVATION_PERIOD
+
observation_period_start_date
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
OBSERVATION_PERIOD
+
observation_period_end_date
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
OBSERVATION_PERIOD
+
period_type_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
❗
+
❗
+
+
+
+
+
+
+
Visit Occurrence
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
cdmTableName
+
cdmFieldName
+
Special Fields
+
DQD (v1.0)
+
Achilles (v1.7)
+
Atlas Cohort (v2.10)
+
Atlas Cohort (v2.12)
+
Atlas Data Sources (v2.12)
+
Feature Extraction (v3.2)
+
Comment
+
+
+
+
+
VISIT_OCCURRENCE
+
visit_occurrence_id
+
PK
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
VISIT_OCCURRENCE
+
person_id
+
Pid
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
VISIT_OCCURRENCE
+
visit_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
+
+
+
VISIT_OCCURRENCE
+
visit_source_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
visit_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
visit_start_date
+
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
✔️
+
Achilles check 1900
+
+
+
VISIT_OCCURRENCE
+
visit_start_datetime
+
FC
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
visit_end_date
+
+
✔️
+
✔️
+
✔️
+
✔️
+
❗
+
✔️
+
+
+
+
VISIT_OCCURRENCE
+
visit_end_datetime
+
FC
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
visit_type_concept_id
+
+
✔️
+
✔️
+
✔️
+
✔️
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
provider_id
+
+
✔️
+
❗
+
✔️
+
✔️
+
❗
+
❗
+
Atlas uses provider.specialty_concept_id
+
+
+
VISIT_OCCURRENCE
+
care_site_id
+
+
✔️
+
❗
+
✔️
+
✔️
+
❗
+
❗
+
Achilles only does FK check, Atlas uses
+care_site.place_of_service_concept_id
+
+
+
VISIT_OCCURRENCE
+
admitted_from_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
admitted_from_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
Achilles check 1900
+
+
+
VISIT_OCCURRENCE
+
discharged_to_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
VISIT_OCCURRENCE
+
discharged_to_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
Achilles check 1900
+
+
+
VISIT_OCCURRENCE
+
preceding_visit_occurrence_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
+
+
+
Episode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
cdmTableName
+
cdmFieldName
+
Special Fields
+
DQD (v1.0)
+
Achilles (v1.7)
+
Atlas Cohort (v2.10)
+
Atlas Cohort (v2.12)
+
Atlas Data Sources (v2.12)
+
Feature Extraction (v3.2)
+
Comment
+
+
+
+
+
EPISODE
+
episode_id
+
PK
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
person_id
+
Pid
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_start_date
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_start_datetime
+
FC
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_end_date
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_end_datetime
+
FC
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_parent_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_number
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_object_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_type_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_source_value
+
SV
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
EPISODE
+
episode_source_concept_id
+
+
✔️
+
❗
+
❗
+
❗
+
❗
+
❗
+
+
+
+
+
This was an effort by the CDM Working Group in 2022. *Credits: Clair
+Blacketer, Maxim Moinat, Nitin Park
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/customConcepts.html b/docs/customConcepts.html
index 23d775c..0e4b4ce 100644
--- a/docs/customConcepts.html
+++ b/docs/customConcepts.html
@@ -433,16 +433,21 @@ 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.
+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.
Custom concepts are only defined locally. These cannot be
used for network research. Therefore it remains very important to map to
standard concepts.
@@ -499,13 +504,16 @@ to’ concept should be a standard concept.
Officially, concept_hierarchy 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.
+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.
After creating these records, we can use the custom concept in our
ETL to populate the condition_source_concept_id field.
diff --git a/rmd/customConcepts.Rmd b/rmd/customConcepts.Rmd
index 0e1eddb..4f94856 100644
--- a/rmd/customConcepts.Rmd
+++ b/rmd/customConcepts.Rmd
@@ -11,9 +11,11 @@ The Themis Working Group convened on October 6th and December 7th 2023 to discus
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.
**Custom concepts are only defined locally. These cannot be used for network research. Therefore it remains very important to map to standard concepts.**
@@ -36,7 +38,9 @@ In addition, it is recommended to follow these suggestions:
- In the new vocabulary record, the `vocabulary_concept_id` can be set to 0, as this is often not used in the OMOP CDM.
- Create mappings between custom concepts and standard concepts. This can be done by adding rows to the `concept_relationship` table, with the `Maps to` relation. The reverse relation, `Mapped from`, should also be added. This allows for easy navigation between custom and standard concepts2. The 'mapped to' concept should be a standard concept.
- Officially, `concept_hierarchy` 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.
After creating these records, we can use the custom concept in our ETL to populate the `condition_source_concept_id` field.