How to encode allergy

Sorry if this is a duplicate, but I cannot find a detailed description of how to encode allergies. In one database, I see the SNOMED code “H/O: drug allergy” in the observation_concept_id column of the observation table, with the text allergen in the value_as_string column. In another database, I see a SNOMED substance in the observation_concept_id column and LOINC “Medication allergies panel [ESRD]” in the observation_type_concept_id.

From the CDM document, it looks like the right way is SNOMED code “H/O: drug allergy” in the observation_concept_id column of the observation table and a coded allergen in the value_as_concept_id column. But for the allergen, do we use the RxNorm term, the SNOMED term for the substance, or the SNOMED term for the allergy (4240903=91936005=Allergy to penicillin; or 4058741=161591004=H/O: penicillin allergy)? Or should we use H/O: penicillin allergy in the observation_concept_id column?

Thanks.

George

I would be interested to see how other in the community are doing with populating allergies. @ericaVoss do you have any recommendations?

Thanks

Here is how we are doing it for one customer.

All allergy records are recorded in Observation table with the Observation
Concept Id set to 43021227 (Allergic condition). For value as string we
put in the description of the allergy, and in qualifier concept id we map
severity to concepts:
4328749 ( High )
4285732 (Moderate)
4267416 (Low)

You cannot really do analysis on the rows since we do not assign allergies
to specific concepts, but it does allow for recording the information.

I haven’t come across working with allergies myself.

Using “Medication allergies panel [ESRD]” as a type is not correct as this concept is of type OBSERVATION not of type TYPE. I think what is trying to be done there is link the allergy to the observation test.

As @hripcsa discuses it above, I feel like it depends on how your raw data is coming across. Maybe if I give an example that might help the discussion.

Incoming data provides information that a panel was performed and the result of the panel is given (e.g. allergy panel is run and we know that the person is allergic to “honey”). In that case I would probably write 1 observation record, with mapping the LOINC to its CONCEPT_ID in the OBSERVATION_CONCEPT_ID (e.g. 49222-3-Food allergen panel - Serum). Depending on how the results come over store them in the VALUE_AS_ fields (e.g. VALUE_AS_STRING = “honey” and VALUE_AS_CONCEPT_ID = 4028010). Then for an OBSERVATION_TYPE I would choose a concept that is of DOMAIN_ID = “Type Concept” and CLASS = “Observation Type”. If you do not find a good match recommend for its creation with the CDM/Vocab working group.

Are we only discussing how to encode an allergy when it learned from a test? What about when a physician provides a diagnosis like ICD10CM-Z91.01-Food allergy status. In this case I would expect a result and additionally this ICD10CM is mapped to a standard concept in the CONDITION domain.

Thanks, Don and Erica. In our case, these are not allergy panels nor ICD9 codes. Instead, somewhere in the EHR, the doctor enters an allergy (be it coded or text), and it is stored in the record. So something like Don’s could make sense if the allergen is text.

George

According to the

seems the best way is to map directly to the SNOMED concept like “4240903=91936005=Allergy to penicillin” you mentioned before.

And if you do any mappings . . . you can use USAGI to help and you should export maps made into the SOURCE_TO_CONCEPT_MAP table in the Vocabulary and build using this table. Not good to hard code that stuff in your builder because it is not exposed.

1 Like