Handling allergies with SNOMED CT codes missing from value set

527 views
Skip to first unread message

Luke Degner

unread,
Apr 21, 2021, 3:15:09 PM4/21/21
to Edge Test Tool (ETT)
Hi!

I'm running into a validation error when my C-CDA includes the drug class Benzodiazepine [SCTID 372664007].

The value set Substance Reactant for Intolerance [2.16.840.1.113762.1.4.1010.1] does not include any codes for this drug class that I can see.

Does anyone know how I am supposed to get a message like this to validate? I am trying to understand why a valid drug class isn't supported and how it should be handled.Is the only way to nullFlavor the code? (I feel that would defeat the purpose.) Is there a reason I shouldn't be sending this drug class? Or is there a pending value set update that will include the missing codes?

Any help would be much appreciated!

Thanks,
Luke

mi...@chartpath.com

unread,
Apr 22, 2021, 1:01:34 PM4/22/21
to Edge Test Tool (ETT)
We've had trouble with this too.  It depends on which definition version of the value set is installed.

For the 20180125 version (C-CCDA R2.1 2020-07-13  and older), the code system is defined as a mixture of NDFRT, RXNORM and SNOMEDCT.

Benzodiazepines is found in NDFRT.

Benzodiazepines [Chemical/Ingredient]
NDFRT
2017-11
2.16.840.1.113883.3.26.1.5


the "latest" version of that code set is only RXNORM and SNOMED CT, which doesn't contain those NDFRT classifications.


I don't know what version of the code set is loaded in the ETT, but try NDFRT and N0000007542.

Luke Degner

unread,
Apr 22, 2021, 2:11:33 PM4/22/21
to Edge Test Tool (ETT)
Thanks for your reply! Unfortunately, we are implementing compliance with the 21st Century Cures Act, which adopts USCDI v1, which defines SNOMED CT as being the only applicable standard for Substance (Drug Class), so we are moving from NDF-RT codes to SNOMED CT codes.

Would I be right in assuming that a C-CDA generated to follow the 21st Century Cures Act simply can't be expected to validate due to the lack of support of a number of SNOMED CT codes in the most recent value set?

Thanks,
Luke

Nagesh Bashyam - Drajer

unread,
Apr 26, 2021, 10:27:56 AM4/26/21
to Luke Degner, Edge Test Tool (ETT)
Please refer to VSAC to get the latest value sets.

--
You received this message because you are subscribed to the Google Groups "Edge Test Tool (ETT)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to edge-test-too...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/edge-test-tool/e20b747e-1869-48ac-8665-6f6dfb73cd4an%40googlegroups.com.

Luke Degner

unread,
Apr 26, 2021, 10:39:32 AM4/26/21
to Edge Test Tool (ETT)
The issue isn't obtaining the latest value set from VSAC, it is that the latest value set does not contain some of the values that I am expecting. I am currently reaching out to the value set steward for assistance.

Nagesh Bashyam - Drajer

unread,
Apr 26, 2021, 2:26:43 PM4/26/21
to Luke Degner, Edge Test Tool (ETT)
Ok thanks for letting us know.

You may already know this: The codes in the test data are available in the valueset.

Luke Degner

unread,
May 4, 2021, 4:04:06 PM5/4/21
to Edge Test Tool (ETT)
No luck contacting the Steward of the value set (HL7 Terminology), so we have moved forward and implemented our own solution to either map the codes to other ones in the valid list or just drop them entirely. It feels odd that we cannot validate if we don't limit ourselves to a subset of SNOMED CT codes, but I guess we need to sacrifice clinical accuracy in order to validate properly. Perhaps this will be addressed in a later version.

Brett Marquard

unread,
May 5, 2021, 9:10:08 AM5/5/21
to Luke Degner, Edge Test Tool (ETT), lne...@max.md, rmcc...@mdpartners.com, Natasha Kreisle, Wayne Kubick (HL7) (wkubick@hl7.org)

Good morning Luke,

 

How did you contact ‘HL7 Terminology’?

 

There is a small team working to update the value sets this summer, and I suspect your request got missed/lost.

 

I agree sacrificing clinical accuracy to ‘pass’ validation is absurd. If you find yourself in this spot please email the HL7 Co-chairs of Structured Documents who are responsible for C-CDA. You can find their information here: http://www.hl7.org/Special/committees/structure/leadership.cfm

 

For this issue, I will do some digging and report back to the list.

 

Best

Brett

Luke Degner

unread,
May 5, 2021, 2:10:30 PM5/5/21
to Edge Test Tool (ETT)
Thank you for your response, Brett!

I used VSAC's website contact form to contact the Steward.

I have now used your link to email the co-chairs to see if they can provide some assistance.

Thank you!
Luke

Luke Degner

unread,
May 6, 2021, 6:08:36 PM5/6/21
to Robert McClure MD, Brett Marquard, Edge Test Tool (ETT), Lisa Nelson MSc, MBA, Natasha Kreisle, Wayne Kubick, Marc Duteau
Hi Robert,

Thanks for your reply!

Regarding your first question on where I'd want to log a requested change, I'd say from anywhere that is clearly linked to the value set, so if you're viewing the value set, then you could easily see any existing issues or planned updates.

The current approach for comment is workable, although it is very opaque as it currently exists, as it was unclear that any action was going to be taken in response to the message.

It is good to know that a change is planned within the year.

Regarding your suggestion to use SCTID 16047007 to represent the Benzodiazepine drug class, that code isn't in the auto-generated expansion nor the most-recently Steward-approved expansion for Substance Reactant for Intolerance [2.16.840.1.113762.1.4.1010.1]. Are you suggesting that we should make use of a service that maps SNOMED CT codes to RxNorm codes until it is included in the list? This makes sense to me as a stopgap measure to represent a drug class allergy instead as a set of drug allergies.

On a similar note, if we were trying to represent a drug class of "opium alkaloids", I can see a valid SNOMED CT code of [350304007] Product containing opium alkaloid (product), but I do not see a reference to "opium alkaloids" in HL7 Cross Paradigm Specification: Allergy and Intolerance Substance Value Set(s) Definition, Release 1. Would this SNOMED CT code be included in this year's update, or would it be excluded because it isn't in that cross paradigm specification? I think this would show up as 40+ drug allergies if we don't have a drug class allergy for it.

Thanks,
Luke  

On Wed, May 5, 2021 at 6:34 PM Robert McClure MD <rmcc...@mdpartners.com> wrote:
Sorry, adding Marc who is working on the update.
. . .
All content represents my view only
Robert McClure MD FAMIA FHL7 (he/him) : President, MD Partners, Inc.






On May 5, 2021, at 6:33 PM, Robert McClure MD <rmcc...@mdpartners.com> wrote:

Luke,
Yes, the value set no longer uses the deprecated NDFRT code system and uses SNOMED CT instead. Seems we need to do a better job of identifying the best way and location to comment on issues that arise like yours. The VSAC value set, which I assume you found, does note that for the specific drug class value set, (Medication drug class for allergen intolerance SCT 2.16.840.1.113762.1.4.1114.14) requests input on an HL7 confluence page but I suspect that is hard to find (it’s noted here in the Notes). I’d be very interested in your thoughts on where would users want to log requested changes? We did see your VSAC comment so that is a good start, is that approach for comment workable? I takes a while to address requested changes and be aware that the HL7 Structured Documents Work Group has decided that only one update to these value sets can occur a year. Luckily we’re working on them now so a change can be made. The current set of drug classes in the value set is a subset of all drug classes that cover over 95% of recorded items, but Benzodiazepines fall just outside that set ands we’d agree we should include all the concepts found in our analysis (to cover the last 4% we need to more than double the number). We plan to do that update this year and it will show up in July, we hope. 
In the mean time, the correct way to represent the class is using drug products, not substances, so they can be linked by NLM to RxNorm clinical drugs in the class. The right concept is:
Product containing benzodiazepine (product) 16047007
. . .
All content represents my view only
Robert McClure MD FAMIA FHL7 (he/him) : President, MD Partners, Inc.





Nagesh Bashyam - Drajer

unread,
May 7, 2021, 9:56:29 AM5/7/21
to Luke Degner, Robert McClure MD, Brett Marquard, Edge Test Tool (ETT), Lisa Nelson MSc, MBA, Natasha Kreisle, Wayne Kubick, Marc Duteau
Luke

If you are unable to use the code specified by the test data, you can work with the ATL to change the test data.
If you want to avoid the validator error, you will have to pick a concept that is in the value set currently. 

Once VSAC updates the value set, we will update our value sets also.

Thanks
Dragon

Nagesh Bashyam - Drajer

unread,
May 10, 2021, 8:49:16 AM5/10/21
to Robert McClure MD, Lisa Nelson MSc, MBA, Luke Degner, Brett Marquard, Edge Test Tool (ETT), Natasha Kreisle, Wayne Kubick, Marc Duteau, John D'Amore
I am not following why we are using the RxNorm code system for the participant (playing Entity).

Why would we not use the SNOMED-CT Drug class code directly ? 

On May 7, 2021, at 11:08 PM, Robert McClure MD <rmcc...@mdpartners.com> wrote:

One comment, we are not using the “substance” hierarchy at all. We are using the “Product” hierarchy.

. . .
All content represents my view only
Robert McClure MD FAMIA FHL7 (he/him) : President, MD Partners, Inc.






On May 7, 2021, at 12:01 PM, <lne...@max.md> <lne...@max.md> wrote:

Dragon,
 
John D’Amore was kind enough to quickly generate this example showing what I am talking about.
 
He added, “Some quick edits on this example: http://cdasearch.hl7.org/examples/view/Allergies/Free-text%20Allergy%20to%20clinical%20trial%20drug  Also, I wonder if this SNOMED code (372664007) or one of its parents might be better from substance hierarchy (note I did not substitute below)…Hope that helps!”
 
Would this validate in the validator? I think it should. Interested if others agree. Key area in the xml comes after this comment: <!-- This drug is a clinical drug not in VSAC value set -->
                                <!-- Use OTH and originalText -->
 
 
Lisa
 
<section>
    <templateId root="2.16.840.1.113883.10.20.22.2.6.1"/>
    <templateId root="2.16.840.1.113883.10.20.22.2.6.1" extension="2015-08-01"/>
    <!-- Allergies (entries required) section template -->
    <code code="48765-2" codeSystem="2.16.840.1.113883.6.1"/>
    <title>Allergies, Adverse Reactions and Alerts</title>
    <text>
        <table>
            <thead>
                <tr>
                    <th>Allergen</th>
                    <th>Reaction</th>
                    <th>Reaction Severity</th>
                    <th>Documentation Date</th>
                    <th>Onset Date</th> <!-- Date from observation/effectiveTime-->
                </tr>
            </thead>
            <tbody>
                <tr ID="allergy1">
                    <td ID="allergy1allergen"> Bendzodiazepines</td>
                    <td>
                        <content ID="allergy1reaction">Dyspnea</content>
                    </td>
                    <td>
                        <content ID="allergy1reactionseverity">Moderate</content>
                    </td>
                    <td>April 1 2018</td>
                    <td>April 1 2018</td>
                </tr>
            </tbody>
        </table>
    </text>
    <entry typeCode="DRIV">
        <act classCode="ACT" moodCode="EVN">
            <!-- ** Allergy problem act ** -->
            <templateId root="2.16.840.1.113883.10.20.22.4.30"/>
            <templateId root="2.16.840.1.113883.10.20.22.4.30" extension="2015-08-01"/>
            <id root="4a2ac5fc-0c85-4223-baee-c2e254803974"/>
            <code code="CONC" codeSystem="2.16.840.1.113883.5.6"/>
            <text>
                               <reference value="#allergy1"/>
                             </text>
            <statusCode code="active"/>
            <!-- This is the time stamp for when the allergy was first documented as a concern-->
            <effectiveTime value="20180401103001-0500"/> <!-- Apr 1, 2018 at 10:30a ET -->
            <author>
                <templateId root="2.16.840.1.113883.10.20.22.4.119"/>
                <time value="20180401"/>
                <assignedAuthor>
                    <id extension="12345" root="2.16.840.1.113883.4.6"/>
                    <code code="207RX0202X" codeSystem="2.16.840.1.113883.6.101"
                        codeSystemName="Health Care Provider Taxonomy" displayName="Medical Oncology"/>
                    <telecom use="WP" value=tel:555-555-1234/>
                    <assignedPerson>
                        <name>
                            <given>Adam</given>
                            <family>Anydoc</family>
                        </name>
                    </assignedPerson>
                </assignedAuthor>
            </author>
            <entryRelationship typeCode="SUBJ">
                <observation classCode="OBS" moodCode="EVN">
                    <!-- allergy observation template -->
                    <templateId root="2.16.840.1.113883.10.20.22.4.7"/>
                    <templateId root="2.16.840.1.113883.10.20.22.4.7" extension="2014-06-09"/>
                    <id root="4d3ac7ac-0c32-8712-b3fe-c2b268808259"/>
                    <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"/>
                    <text>
                        <reference value="#allergy1"/>
                    </text>
                    <statusCode code="completed"/>
                    <!-- This is the time stamp for the biological onset of the allergy. -->
                    <!-- Just the year is shown since a specific month and date was not reported -->
                    <effectiveTime>
                        <low value="20180401"/>
                        <high value="20180401"/>
                    </effectiveTime>
                    <!-- This specifies that the allergy is to a medication in contrast to other allergies (substance) -->
                    <value xsi:type="CD" code="59037007" displayName="Drug intolerance (disorder)"
                        codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" />
                    <author>
                        <templateId root="2.16.840.1.113883.10.20.22.4.119"/>
                        <time value="20180401"/>
                        <assignedAuthor>
                            <id extension="99999999" root="2.16.840.1.113883.4.6"/>
                            <code code="207RX0202X" codeSystem="2.16.840.1.113883.6.101"
                                codeSystemName="Health Care Provider Taxonomy"
                                displayName="Medical Oncology"/>
                            <telecom use="WP" value=tel:555-555-1234/>
                            <assignedPerson>
                                <name>
                                    <given>Adam</given>
                                    <family>Anydoc</family>
                                </name>
                            </assignedPerson>
                        </assignedAuthor>
                    </author>
                    <participant typeCode="CSM">
                        <participantRole classCode="MANU">
                            <playingEntity classCode="MMAT">
                                <!-- This drug is a clinical drug not in VSAC value set -->
                                <!-- Use OTH and originalText -->
                                <code nullFlavor="OTH" codeSystem="2.16.840.1.113883.6.88" codeSystemName="RxNorm">
                                    <originalText>
                                        <reference value="#allergy1allergen"/>
                                    </originalText>
                                   <translation code="16047007" displayName=" Bendzodiazepines"
                                                codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED"/>
                                </code>
                            </playingEntity>
                        </participantRole>
                    </participant>
                    <!-- Only one reaction recorded here, although multiple reactions may be recorded to the same substance ([0..*] -->
                    <entryRelationship typeCode="MFST" inversionInd="true">
                        <observation classCode="OBS" moodCode="EVN">
                            <!-- Reaction Observation template -->
                            <templateId root="2.16.840.1.113883.10.20.22.4.9"/>
                            <templateId root="2.16.840.1.113883.10.20.22.4.9" extension="2014-06-09"/>
                            <id root="fea0b775-f3fe-4e0a-9c4f-4a5c235c2af0"/>
                            <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4"/>
                            
                            <statusCode code="completed"/>
                            <effectiveTime value = "20180401"/>
                            <value xsi:type="CD" code="267036007" codeSystem="2.16.840.1.113883.6.96"
                                codeSystemName="SNOMED CT" displayName="Dyspnea">
                                <originalText>
                                    <reference value="#allergy1reaction"/>
                                </originalText>
                            </value>
                           <entryRelationship typeCode="SUBJ" inversionInd="true">
                                <observation classCode="OBS" moodCode="EVN">
                                    <!-- Severity Observation template -->
                                    <templateId root="2.16.840.1.113883.10.20.22.4.8"/>
                                    <templateId root="2.16.840.1.113883.10.20.22.4.8" extension="2014-06-09"/>
                                    <code code="SEV" codeSystem="2.16.840.1.113883.5.4"
                                        codeSystemName="ActCode"/>
                                    <text>
                                        <reference value="#allergy1reactionseverity"/>
                                    </text>
                                    <statusCode code="completed"/>
                                    <value xsi:type="CD" code="6736007" codeSystem="2.16.840.1.113883.6.96"
                                        codeSystemName="SNOMED CT" displayName="Moderate"/>
                                </observation>
                            </entryRelationship>
                        </observation>
                    </entryRelationship>
                   </observation>
            </entryRelationship>
        </act>
    </entry>
</section>
 
 
 
From: lne...@max.md <lne...@max.md> 
Sent: Friday, May 7, 2021 11:56 AM
To: 'Nagesh Bashyam - Drajer' <nagesh....@drajer.com>; 'Luke Degner' <lukedegn...@gmail.com>
Cc: 'Robert McClure MD' <rmcc...@mdpartners.com>; 'Brett Marquard' <br...@waveoneassociates.com>; 'Edge Test Tool (ETT)' <edge-te...@googlegroups.com>; 'Natasha Kreisle' <nkre...@max.md>; 'Wayne Kubick' <wku...@hl7.org>; 'Marc Duteau' <ma...@duteaudesign.com>
Subject: RE: Handling allergies with SNOMED CT codes missing from value set
 
Dragon,
 
I think we are talking about this constraint: This playingEntity SHALL contain exactly one [1..1] code, which SHALL be selected from ValueSet Substance Reactant for Intolerance  2.16.840.1.113762.1.4.1010.1 DYNAMIC (CONF:1098-7419).
I believe this constraint would permit a nullflavor of OTH and then a code that is not in the value set could legitimately be used.  When the value set binding is on the code element rather than the @code attribute, use of nullflavors is permitted.  Dragon, do you know if the validator understands how to check for this possibility to correctly handle the situation?
 
Lisa

Luke Degner

unread,
May 10, 2021, 3:35:37 PM5/10/21
to Nagesh Bashyam - Drajer, Robert McClure MD, Lisa Nelson MSc, MBA, Brett Marquard, Edge Test Tool (ETT), Natasha Kreisle, Wayne Kubick, Marc Duteau, John D'Amore
Robert, I agree that Product would be a good thing to focus on, but it looks like Substance is the only option available in some situations. I am working on manually mapping my codes, and things like Copper-containing Compounds and Bile Salts are only included in the VSAC list as a Substance.

image.png

I would like to use just the Products, but as it is right now, I am manually mapping both the Product and Substance, then checking the latest Steward-approved VSAC list to see which is available, prioritizing the Product.

Regarding the previous comments about using the "nullFlavor", that sounds possible. I'm not sure when we would want to do that for, say, a Product when there is a Substance that is available in the VSAC list. Perhaps it would be cleanest if we only include Products, and if they are not in the recent VSAC list, just do the nullFlavor? I guess it comes down to understanding why there are Substances in the list rather than Products.

Thanks,
Luke

John D'Amore

unread,
May 11, 2021, 8:07:28 AM5/11/21
to edge-te...@googlegroups.com

 

 

From: John D'Amore
Sent: Tuesday, May 11, 2021 7:58 AM
To: Luke Degner <lukedegn...@gmail.com>; Nagesh Bashyam - Drajer <nagesh....@drajer.com>
Cc: Robert McClure MD <rmcc...@mdpartners.com>; Lisa Nelson MSc, MBA <lne...@max.md>; Brett Marquard <br...@waveoneassociates.com>; Edge Test Tool (ETT) <edge-te...@googlegroups.com>; Natasha Kreisle <nkre...@max.md>; Wayne Kubick <wku...@hl7.org>; Marc Duteau <ma...@duteaudesign.com>
Subject: RE: Handling allergies with SNOMED CT codes missing from value set

 

Since this is a SHALL binding, some validators are checking that the actual code is in the value set. Lisa asked that the example use a SNOMED code which isn’t in the value set, so some validators will reject that code in the playingEntity/code. Some validators also check that the codeSystem on the playingEntity/code is one of the acceptable codeSystems (RxNorm or SNOMED) which is why one might place on the playingEntity/code with nullFlavor.  So if you’ve got something that isn’t in the value set but is coded, placing in a translation might be the best of (suboptimal) options. As mentioned, this example was based on a prior example from CDA Examples website (https://cdasearch.hl7.org/)

 

Cheers,

John D'Amore

 

_____

 

John D’Amore, MS

President, More Informatics, Inc.

jo...@moreinformatics.com

m: (917)733-3735

 

 

From: Luke Degner <lukedegn...@gmail.com>
Sent: Monday, May 10, 2021 3:35 PM
To: Nagesh Bashyam - Drajer <nagesh....@drajer.com>
Cc: Robert McClure MD <rmcc...@mdpartners.com>; Lisa Nelson MSc, MBA <lne...@max.md>; Brett Marquard <br...@waveoneassociates.com>; Edge Test Tool (ETT) <edge-te...@googlegroups.com>; Natasha Kreisle <nkre...@max.md>; Wayne Kubick <wku...@hl7.org>; Marc Duteau <ma...@duteaudesign.com>; John D'Amore <jo...@moreinformatics.com>
Subject: Re: Handling allergies with SNOMED CT codes missing from value set

 

Robert, I agree that Product would be a good thing to focus on, but it looks like Substance is the only option available in some situations. I am working on manually mapping my codes, and things like Copper-containing Compounds and Bile Salts are only included in the VSAC list as a Substance.

 

 

I would like to use just the Products, but as it is right now, I am manually mapping both the Product and Substance, then checking the latest Steward-approved VSAC list to see which is available, prioritizing the Product.

 

Regarding the previous comments about using the "nullFlavor", that sounds possible. I'm not sure when we would want to do that for, say, a Product when there is a Substance that is available in the VSAC list. Perhaps it would be cleanest if we only include Products, and if they are not in the recent VSAC list, just do the nullFlavor? I guess it comes down to understanding why there are Substances in the list rather than Products.

 

Thanks,

Luke

 

From: Nagesh Bashyam - Drajer nagesh....@drajer.com
Sent: Monday, May 10, 2021 8:49 AM
To: Robert McClure MD rmcc...@mdpartners.com
Cc: Lisa Nelson MSc, MBA lne...@max.md; Luke Degner lukedegn...@gmail.com; Brett Marquard br...@waveoneassociates.com; Edge Test Tool (ETT) edge-te...@googlegroups.com; Natasha Kreisle nkre...@max.md; Wayne Kubick wku...@hl7.org; Marc Duteau ma...@duteaudesign.com; John D'Amore jo...@moreinformatics.com
Subject: Re: Handling allergies with SNOMED CT codes missing from value set

 

I am not following why we are using the RxNorm code system for the participant (playing Entity).

SueAnn Svaby

unread,
May 18, 2021, 7:38:16 AM5/18/21
to Edge Test Tool (ETT)
We have had the same issue with the Benzazepine code.  The SNOMED code is not in the content that we get from First Data Bank.  Thanks!

Ivan Quan

unread,
May 13, 2022, 2:29:12 PM5/13/22
to Edge Test Tool (ETT)
Hi,

We also get the substance hierarchy code for benzodiazepine 372664007 from first data bank. Are there any plans on updating the validation tool to include 372664007 Benzodiazepine (substance).

Thanks,
Ivan

Luke Degner

unread,
May 16, 2022, 5:42:30 PM5/16/22
to Edge Test Tool (ETT)
I would doubt it. It looks like most of the mappings go to the "Product" type of SNOMED CT codes, and I think there are only one-to-one linkings. I haven't looked at the mapping list in about a year, but from the one I have saved, we can see the drug changed from that substance code to the product code.

Image 003.png

Reply all
Reply to author
Forward
0 new messages