OHDSI Home | Forums | Wiki | Github

Mapping Anesthesia Procedures to SNOMED

(Roger Carlson) #1

I’m an ETL developer working to map our source data into OMOP.

Our Anesthesia Procedures use local codes, not any standard vocabulary. I’ve tried using USAGI to map them, but our codes are highly abbreviated, and USAGI’s pattern matching isn’t helping any.

I need do get our local content experts to help map these codes to SNOMED (or other standard) vocabulary. What I’d like to find is a list of all anesthesia procedures in the concept table. I can query for domain, vocabulary_id, etc,

SELECT concept_id, concept_name, domain_id, vocabulary_id, concept_class_id,
standard_concept, concept_code, valid_start_date, valid_end_date, invalid_reason
FROM OMOP.concept
WHERE (vocabulary_id = ‘snomed’) AND (domain_id = ‘procedure’) AND (standard_concept = ‘s’)

but that leaves me with all procedures, not just anesthesia.

Like I said, I’m an ETL developer, so the only granularity I’m usually interested in is the one at our EHR level. I really only use the relationship table to map non-standard to standard codes. I don’t have any expertise in pulling data out, especially at a lower granularity.

Can someone help me with the JOINS to produce a list of just anesthesia procedures?

Much appreciated.

(Oleg Zhuk) #2

Hello, @roger.carlson

This task looks like classic custom mapping task.

If you want to get all the anesthesia procedures:

  1. Check all the descendants of Procedure related to anesthesia and sedation, concept_id: 4161405 and Injection of anesthetic agent, concept_id: 42538249
    To do this, query concept_ancestor table with:
SELECT ca.ancestor_concept_id, c.*, ca.min_levels_of_separation, ca.max_levels_of_separation
FROM OMOP.concept_ancestor ca
JOIN OMOP.concept c
ON ca.descendant_concept_id = c.concept_id
WHERE ancestor_concept_id = 4161405 OR ancestor_concept_id = 42538249
ORDER BY ancestor_concept_id, min_levels_of_separation, max_levels_of_separation;

To read more about concept_ancestor table, check CDM wiki

  1. To find some concepts that might have been fallen out from the hierarchy, query the concept table using the desired keywords and syllables: ‘anest’, ‘sedat’, ‘block’, etc.

  2. But I would suggest using athena.ohdsi.org and go one by one source code searching and mapping. More frequent codes first. That seems the best practice.

Not sure how the list of all anesthesia-related procedures will help, but you’ve asked for it :slight_smile:

(Roger Carlson) #3

Thanks, this is extremely helpful.

What I’m trying to do is to create a targeted application that I can give to a content expert, familiar with our codes, but not with OMOP. I’d like to give them set of local codes that need mapping, and provide them with a list of Standard codes of a particular type (in this case anesthesia) to choose from. I don’t know if it will work, but I can’t know until I try, and I can’t try without a list of codes to choose from.

(Oleg Zhuk) #4

Yes, we’ve got this, but the best practice for custom mapping of local codes is:

  1. Try automapping (you can use custom scripts or USAGI or both or any other products, etc.)
  2. Proceed with manual mapping.

To do manual mapping, use athena.ohdsi.org (give this link to your team) and teach them at least:
a. use only standard concepts
b. use domain_id ‘Procedure’
c. use valid concepts
d. ?: use concept_class_id ‘Procedure’ OR other concept classes too for advanced users (ex. CPT4, but not CPT4 modifier)

This approach will give the opportunity to use a qualitative search of Athena (has been updated recently, now works much faster). You can also click on any concept and find all the hierarchy (concept_ancestor table) and related concepts (concept_relationship table)

Using your table with every anesthesia procedure you can find is highly not recommended.

(Roger Carlson) #5

I understand. Thanks again for your help.