OHDSI Home | Forums | Wiki | Github

Convert icd-10 to snomed

Sorry I am new here. currently working on a product that needs to convert icd10 to snomed codes. wondering if anyone knows a solution for it and/or how to do it.


Hi Jackson,

This is a subject I have some familiarity with.

First you need a mapping between both, but that’s not actually the biggest challenge. The biggest challenge is the subsequent remapping as new versions are released. Also, if you are linking other terminologies then your challenge multiplies.

There are mappings here at www.bioportal.com - https://bioportal.bioontology.org/ontologies/SNOMEDCT/?p=mappings

The above is the SNOMED CT ontology, and if you scroll down, you’ll see various ICD mappings. I can’t vouch for their accuracy or completeness, but they are probably a good start.

As I guess you know that both ICD and SNOMED (and in fact many clinical terminologies) continuously evolve. So, you have to remap as each new release occurs. I can tell you right now, if the onotology has any scale, then the remapping is very time consuming and laborious, and often containing inaccuracies.

There is an AI which can perform the remapping, called Dynaccurate (www.dynaccurate.com) which is currently in a research phase, but is going to market in Q2 2021. I’m the business advisor on that project, so feel free to reach out to me personally if you want more information on the AI. As far as we know, the AI is unique, but if you do hear of any other tools, I would be quite interested to know about them.

Also, the data scientists I work with could probably help you with regard to your over overall project too.

Hope the above helps,

The OHDSI vocabulary team curates the ICD10 (international version) and ICD10CM (US version) to SNOMED mappings. You can find and download from Athena.

1 Like

Hello @freedafeng,

OMOP Vocabularies include mapping between ICD10 and SNOMED, you can have a look in Athena (vocabulary browser). When you open a result (example), there’s a field ‘Non-standard to Standard map (OMOP)’ — you’ll mostly see SNOMED concepts there.
For automated scenarios, you can download OMOP Vocabularies in CSV from Athena (account required), load them into a database using scripts from OHDSI/CommonDataModel repository and query for the mapping:

    source.concept_code, source.concept_name,  -- ICD code + full name
    target.concept_code, target.concept_name   -- corresponding SNOMED concept
FROM concept source
INNER JOIN concept_relationship rel
    ON rel.concept_id_1 = source.concept_id    -- numeric ID for ICD code, OMOP-assigned
    AND rel.invalid_reason IS NULL             -- mapping is not deprecated
    AND rel.relationship_id = 'Maps to'        -- relationship for mapping between codes
INNER JOIN concept target
    ON target.concept_id = rel.concept_id_2
    AND target.invalid_reason IS NULL          -- SNOMED code should be valid
    source.vocabulary_id = 'ICD10'   -- also ICD10CM, etc
    AND target.vocabulary_id = 'SNOMED'
1 Like

Thanks @MPhilofsky - I’m going to check that out! Very useful.

Can I ask, how do you maintain the mappings? Is it a community effort or is there some level of automation?

@rookie_crewkie Thanks for this - when you say ‘automated scenarios’ do you mean automated queries to Athena?

Thanks a lot for the very helpful information! I am now in the process of downloading the data. So far everything works perfectly.

Thank you very much rookie_crewkie! I followed your instructions (they are quite clear and easy to follow) and everything worked nicely. The data quality is actually very high. Better than I expected for sure. never been happier.

Hello @Dermot_Doyle,

There’s no public API in Athena as far as I know. By ‘automated’, I meant using OMOP Vocabularies in applications locally to translate concepts en masse rather than query for each one separately.

Okay, thanks for clarifying!

@Dymshyts or @mik can provide the best answer to your question

1 Like

Mappings are mostly manually built by the group of medical doctors working in OHDSI Vocabulary team.

But of course, there is some automation - new concepts retrieval, incorporating concept replacements provided by a source (for example SNOMED occasionally replaces concepts, improves their definition), automatic checks for a consistency of the mapping etc.
And there’s some broader community effort - when users bump into issues or mapping inaccuracies, they report it and suggest a better mapping.

Thanks Dmytry - that explains a lot and makes perfect sense for maintaining incremental changes on an ongoing basis.

If, however, you needed to do a large scale remapping, do let me know, as this is something that can now be automated.

1 Like

I was wondering what are the terms o usage for Athena. When visiting the website, a message shows up about SNOMED and HemOnc licensing.

Does it mean one needs a HemOnc license in order to use Athena and download even the non HemOnc related files, such as the ones discussed here? If so, are there any other alternatives for donwloading the relevant ICD10 and SNOMED files?

You do not need a HemOnc license to use Athena and download other vocabularies. Click to acknowledge reading about SNOMED and HemOnc. Then go to the download tab and you can see the vocabularies that you can download.

Thank you for the clarification!

wow!! so helpful :slight_smile:
can I please ask how to do it from SNOMED to ICD10? it seems that the relations sheep is only SNOMED mapped from ICD10.


SNOMED is the ‘Standard’ vocabulary used for conditions, which is why you see the ICD10 to SNOMED relationship. But it is possible to go from SNOMED to ICD10CM. Use the search option in Atlas. Enter the SNOMED concept id, e.g. 320128 for Essential hypertension once you get the result screen click on the top row ‘Essential Hypertension’ and then select the tab at the top for ‘Related Concepts’. You will get a long list of related concepts. You can use the ‘Vocabulary’ filter on the left to filter for ICD10CM codes. You end up with ‘I10’, ’ Essential (primary) hypertension’. You can get the same results using your downloaded vocabulary and some SQL. Look at the ‘Mapped to’ and ‘Mapped from’ in The Book of OHDSI Vocabulary Relationships.

@rookie_crewkie May I ask whether you are aware the standard requirement for submission to OMOP? for example, if one ICD-10 codes map to 5 SNOMED CT codes, are we supposed to submit all 5 SNOMED CT codes or just the first one? I am not asking which is right, which is wrong, or even which is better, I am mainly referring to the “standard OMOP practice” here? Does anywhere suggest the “standard method” or down to to individual organisation to decide?

Hello @LeileifromUK,

By “submission to OMOP”, do you imply data conversion to OMOP CDM?

Chapter 5 of Book of OHDSI (5.3.1 ‘Mapping Relationships’) contains the following excerpt:

Some mappings connect a source concept to more than one Standard Concept. For example, ICD9CM 070.43 “Hepatitis E with hepatic coma” is mapped to both SNOMED 235867002 “Acute hepatitis E” as well as SNOMED 72836002 “Hepatic Coma.” The reason for this is that the original source concept is a pre-coordinated combination of two conditions, hepatitis and coma. SNOMED does not have that combination, which results in two records written for the ICD9CM record, one with each mapped Standard Concept.

Therefore, mapping to multiple target concepts may occur and in this case creating several records is seen as a somewhat standard practice.