I would like to add my own custom vocabulary to the OMOP vocabulary
table.
Why would I want to do this? Because the column concept.vocabulary_id
in the OMOP concept
table is required to be not NULL, so I need one to load concepts from my custom vocabulary.
Okay, let’s add a new row to the OMOP vocabulary
table. I give it a vocabulary_id
= “social_hx” and a vocabulary_name
= “Social History”. Hmm, vocabulary_reference
is also required, so I put in a URL to our internal wiki documentation. The column vocabulary_version
is not required, so I skip it.
Now I get to the column vocabulary_concept_id
. What is this? Seems a bit confusing. Let’s check the OMOP data dictionary: “A Concept that represents the Vocabulary the VOCABULARY concept belongs to.” Still confusing.
Okay, let’s see how the smart people of OHDSI actually use this: SELECT * FROM vocabulary;
Okay, I see 96 rows, all of which have a concept ID populated in the vocabulary_concept_id
column.
Let’s look at the one for ICD10CM. It’s concept_id = 44819098. Another query: SELECT * FROM concept WHERE concept_id = 44819098;
Aha! Now I see that each row in the OMOP vocabulary
table also has a corresponding row in the OMOP concept
table. The keepers of ATHENA have defined a “vocabulary catalog” of sorts, where the list of vocabularies is itself a vocabulary. This is the source of the confusion, because a “vocabulary of vocabularies” is hard to wrap your brain around.
Okay, so I want to add my custom vocabulary to the ATHENA vocabulary catalog. Can I simply add my custom vocabulary as a new concept in this “Vocabulary” vocabulary (which is in the “Metadata” domain)?
Or should I create a new catalog for my list of custom vocabularies called “Custom Vocabularies”?