How to remap source concepts and standard concepts when going from an old CDM to a new CDM with updated vocab:

Step 1: Start with original source_concept_id as it is given in the original CDM. Using the source-to-source query, identify the source_code and source_vocabulary_id.

Step 2: Use the source_code and source_vocabulary_id you found in step 1 and find the correct source_concept_id through the source-to-source query where the date of the event falls between the valid_start_date and valid_end_date of the concept.

Note most of the source concepts will likely stay the same but there are some drug codes that are reused and therefore will change source concepts.

Step 3: Map the new source_concept_id to a standard concept_id using the Source-to-Standard Query.

Reading from DRUG_EXPOSURE

Destination Field Source field Logic Comment field
DOMAIN_ID - - This should be the domain_id of the standard concept in the CONCEPT_ID field. If a code is mapped to CONCEPT_ID 0, put the domain_id as Observation
PERSON_ID PERSON_ID - -
VISIT_OCCURRENCE_ID VISIT_OCCURRENCE_ID - -
VISIT_DETAIL_ID VISIT_DETAIL_ID - -
PROVIDER_ID PROVIDER_ID - -
ID DRUG_EXPOSURE_ID   -
CONCEPT_ID DRUG_SOURCE_CONCEPT_ID Use the Source-to-Standard Query.

Lookup the target concept that the source concept maps to. If there are multiple target concepts, create multiple records.
 
SOURCE_VALUE DRUG_SOURCE_VALUE - -
SOURCE_CONCEPT_ID DRUG_SOURCE_VALUE

DRUG_SOURCE_CONCEPT_ID
See the logic above for assigning the correct source concept and standard concept -
TYPE_CONCEPT_ID DRUG_TYPE_CONCEPT_ID - -
START_DATE DRUG_EXPOSURE_START_DATE - -
START_DATETIME DRUG_EXPOSURE_START_DATETIME - -
END_DATE DRUG_EXPOSURE_END_DATE - -
END_DATETIME DRUG_EXPOSURE_END_DATETIME - -
VERBATIM_END_DATE VERBATIM_END_DATE - -
DAYS_SUPPLY DAYS_SUPPLY - -
DOSE_UNIT_SOURCE_VALUE DOSE_UNIT_SOURCE_VALUE - -
LOT_NUMBER LOT_NUMBER - -
MODIFIER_CONCEPT_ID - - -
MODIFIER_SOURCE_VALUE - - -
OPERATOR_CONCEPT_ID - - -
QUANTITY QUANTITY - -
RANGE_HIGH - - -
RANGE_LOW - - -
REFILLS REFILLS - -
ROUTE_CONCEPT_ID ROUTE_CONCEPT_ID - -
ROUTE_SOURCE_VALUE ROUTE_SOURCE_VALUE - -
SIG SIG - -
STOP_REASON STOP_REASON - -
UNIQUE_DEVICE_ID - - -
UNIT_CONCEPT_ID - - -
UNIT_SOURCE_VALUE - - -
VALUE_AS_CONCEPT_ID - - -
VALUE_AS_NUMBER - - -
VALUE_AS_STRING - - -
VALUE_SOURCE_VALUE - - -
ANATOMIC_SITE_CONCEPT_ID - - -
DISEASE_STATUS_CONCEPT_ID - - -
SPECIMEN_SOURCE_ID - - -
ANATOMIC_SITE_SOURCE_VALUE - - -
DISEASE STATUS_SOURCE_VALUE - - -
CONDITION_STATUS_CONCEPT_ID - - -
CONDITION_STATUS_SOURCE_VALUE - - -
EVENT_ID - - -
EVENT_FIELD_CONCEPT_ID - - -
VALUE_AS_DATETIME - - -
QUALIFIER_CONCEPT_ID - - -
QUALIFIER_SOURCE_VALUE - - -

Please contact Clair Blacketer (https://github.com/clairblacketer) if you have any questions