OHDSI Home | Forums | Wiki | Github

HCPCS codes change their meaning over time

(Dmytry Dymshyts) #1

discovered that HCPCS codes have the wrong mapping

The HCPCS codes for cancer therapeutic drugs Kymriah (Q2040, Q2042) and Yescarta (Q2041) seem to be mapped to non-cancer drugs. Here is the current mapping with the corresponding description:

OMOP Concept ID: 35605867
OMOP Concept Name: Botulinum Toxin Type A Injection

OMOP Concept ID: 36249937
OMOP Concept Name: 17-alpha-Hydroxyprogesterone Injection

OMOP Concept ID: 41085967
OMOP Concept Name: von Willebrand factor 1 UNT Injectable Solution

The thing is that these codes changed their meaning over time,
for example:
Q2042 was “Injection, hydroxyprogesterone caproate, 1 mg” till 2017-11-05,
but beginning from 2019-01-01 it becomes “Tisagenlecleucel, up to 600 million car-positive viable t cells, including leukapheresis and dose preparation procedures, per therapeutic dose”

So, we can’t just change the mapping, because if the Q2042 concept exists in a patient data before 2017, the mapping to “hydroxyprogesterone caproate” is correct.

@Christian_Reich, @aostropolets,

Running WG Agendas and Notes
Vaccines standard - CVX or RxNorm?
Important! Change in rule for CONCEPT records: concept_code is not longer unique within some vocabularies
(Anna Ostropolets) #2

Yep, this is a feature of NDC that pops up. An obvious and discussed approach is to use valid_end_date, valid_start_date to separate those 2 codes. To implement this logic, we need a reliable source of codes, names, and their valid dates. This is why there is an ongoing collection of NDC codes from different sources so that these codes can be validated and inserted into the vocabulary.
The corresponding forum thread is here: Missing NDCs remote studies
so everybody is more than welcome to submit their data there.

(Dmytry Dymshyts) #3

So, we concatenate alid_end_date, valid_start_date, concept_code to distinguish these concepts
change the whole logic allowing to exist two concepts with the same concept codes but different dates
Sorry, I can’t see here
Missing NDCs remote studies
where the exact format is discussed

(Anna Ostropolets) #4

You are all over the place guys :slight_smile:

Missing NDC and HCPCS in OMOP and Athena and so on.
Concept code and dates, correct

(Dmytry Dymshyts) #5

Just talked to @aostropolets
So, yes, we are going to allow duplicated concept_codes with different start / end dates.
So, I’ll collect more information about HCPCS changes over time

(Margarita Fernandez-Chas) #6

Thank you. That would be very helpful. I hope these changes can be made sometime soon. Could it be possible to receive a notification when this happens?

(Dmytry Dymshyts) #7

Sure, I’ll notify you.

(Matt Stagg) #8

Thank you everyone for your help. Just following up with this. Any progress with this mapping issue of Kymriah and Yescarta HCPCS codes?

(Dmytry Dymshyts) #9

Not yet.
Seems I hurried with this

This requires too many changes. So we need to think twice about this idea or come up with other ideas.

DRG codes change their meaning over time
(Nadya Zvyagina) #10

Here is the topic for the similar problem with DRG codes DRG codes change their meaning over time.

(Matt Stagg) #11

Any resolutions or updates on mapping of Kymriah and Yescarta HCPCS codes? Thank you everyone for your work on this.

(Jeremy Warner) #12

Not sure if this is the answer you’re looking for, but Kymriah has HCPCS code Q2042, and Yescarta has HCPCS code Q2041 as of Jan 1, 2019. These are temporary codes which apparently get reused as per earlier in this thread. Until they are given permanent codes, this would be the only representation in HCPCS as far as I know.

(Dmytry Dymshyts) #13

Exactly, that’s the problem we are dealing with.
We want to capture meaning of temporary codes depending on the dates they were used.

It turned out the problem is not so big. We’ll allow duplicates of concept_code, vocabulary_id combination.

(Margarita Fernandez-Chas) #14

Hi Dymshyts. This is very good news. I am glad a solution was found. Do you mind providing an example to better understand how it works?

(Dmytry Dymshyts) #15

We are still discussing the details here: