MedicationAdministration drug_exposure documented primary

Inpatient medication administration events. Each MedicationAdministration produces one drug_exposure row distinguished by drug_type_concept_id = 38000179 (Physician administered drug). MedicationAdministration carries the richest route and dose-event timing information of the four medication resources.

A FHIR instance converts to drug_exposure iff it validates against this profile.
Path Card Type Binding / Fixed Comment
MedicationAdministration.status 1..*MS fhir/medication-admin-statusrequired
MedicationAdministration.medication[x] 1..*MS CodeableConcept omop-drug-codesrequired
MedicationAdministration.subject 1..1 Reference Required for drug_exposure.person_id.
MedicationAdministration.effective[x] 1..1MS Required for drug_exposure.drug_exposure_start_date / _end_date. May be dateTime or Period.
ViewDefinition (Stage 1 flattener) omop-medicationadministration-drug-exposure
18 columns · resource MedicationAdministration
column name FHIRPath type
id MedicationAdministration.id id
drug_rxnorm MedicationAdministration.medicationCodeableConcept.coding.where(system='http://www.nlm.nih.gov/research/umls/rxnorm').first().code code
drug_ndc MedicationAdministration.medicationCodeableConcept.coding.where(system='http://hl7.org/fhir/sid/ndc').first().code code
drug_atc MedicationAdministration.medicationCodeableConcept.coding.where(system='http://www.whocc.no/atc').first().code code
drug_snomed MedicationAdministration.medicationCodeableConcept.coding.where(system='http://snomed.info/sct').first().code code
drug_text MedicationAdministration.medicationCodeableConcept.text string
subject_id MedicationAdministration.subject Reference(Patient)
drug_exposure_start_date MedicationAdministration.effectiveDateTime dateTime
drug_exposure_start_datetime MedicationAdministration.effectiveDateTime dateTime
drug_exposure_end_date MedicationAdministration.effectivePeriod.end dateTime
drug_exposure_end_datetime MedicationAdministration.effectivePeriod.end dateTime
quantity MedicationAdministration.dosage.dose.value decimal
sig MedicationAdministration.dosage.text string
route MedicationAdministration.dosage.route CodeableConcept
route_text MedicationAdministration.dosage.route.text string
performer_id MedicationAdministration.performer[0].actor Reference(Practitioner)
encounter_id MedicationAdministration.context Reference(Encounter)
dose_unit_text MedicationAdministration.dosage.dose.unit string

Fields (23)

  • drug_exposure_id MedicationAdministration.id integer · id
    PKrequired
    Surrogate key. Generated deterministically from MedicationAdministration.id.
  • person_id MedicationAdministration.subject integer · Reference(Patient)
    FK→PERSONrequired
    Resolved from subject reference to Patient.
  • drug_concept_id MedicationAdministration.medication[x] integer · CodeableConcept/Reference(Medication)
    FK→CONCEPTrequired
    RxNorm / ATC / NDC mapped to OMOP standard concept. medicationCodeableConcept resolved inline; medicationReference resolved via Medication resource lookup. Placeholder: 0 when concept lookup unavailable.
    2 sources ▾
  • drug_exposure_start_date MedicationAdministration.effectiveDateTime | MedicationAdministration.effectivePeriod.start date · dateTime
    required
    Point-in-time (effectiveDateTime) or period start. Resource skipped if neither is available.
  • drug_exposure_start_datetime MedicationAdministration.effectiveDateTime | MedicationAdministration.effectivePeriod.start datetime · dateTime
    Full ISO datetime.
  • drug_exposure_end_date MedicationAdministration.effectivePeriod.end date · dateTime
    required
    transform:effectivePeriod.end ?? drug_exposure_start_date
    When effectiveDateTime is used (single point), end = start. When effectivePeriod has no end, end = start. omoponfhir general rule: setDrugExposureEndDate(startDate) when no period end.
    1 source ▾
  • drug_exposure_end_datetime MedicationAdministration.effectivePeriod.end datetime · dateTime
    Full ISO datetime. Null if no period end.
  • verbatim_end_date date
    Most implementations leave null. No direct FHIR source for MedicationAdministration.
  • drug_type_concept_id constant integer
    FK→CONCEPTrequiredmap:drug_type=38000179
    38000179 = 'Physician administered drug (identified as procedure)'. fhir-to-omop-demo uses 32818 (EHR administration record). FhirToCdm/ETL-German use 32817 (EHR/CLAIM).
    3 sources ▾
  • stop_reason varchar(20)
    MedicationAdministration does not commonly carry a discontinuation reason. Leave null.
  • refills integer
    Not applicable. Refills are MedicationRequest-only. Leave null.
  • quantity MedicationAdministration.dosage.dose.value float · decimal
    Dose amount given. ETL-German computes mean of Range when doseRange is used.
    2 sources ▾
  • days_supply integer
    Not applicable to a single administration event. Leave null.
  • sig MedicationAdministration.dosage.text varchar(MAX) · string
    Free-text dosage instructions.
  • route_concept_id MedicationAdministration.dosage.route integer · CodeableConcept
    FK→CONCEPTmap:route
    Administration route via SNOMED to OMOP Route domain lookup. MedicationAdministration carries the richest route data of the four medication resources.
  • route_source_value MedicationAdministration.dosage.route.text | MedicationAdministration.dosage.route.coding[0].display varchar(50) · string
    Raw route text or first coding display.
  • lot_number varchar(50)
    Vaccine-only field; not used for MedicationAdministration.
  • provider_id MedicationAdministration.performer[0].actor integer · Reference(Practitioner)
    FK→PROVIDER
    Administering clinician. First performer entry.
  • visit_occurrence_id MedicationAdministration.context integer · Reference(Encounter)
    FK→VISIT_OCCURRENCE
    Resolved from context reference to Encounter.
  • visit_detail_id integer
    FK→VISIT_DETAIL
    Not mapped. FhirToCdm sets it equal to visit_occurrence_id (non-standard).
    1 source ▾
  • drug_source_value MedicationAdministration.medication[x].coding[best].code varchar(50) · code
    Best code by vocabulary priority (RxNorm > ATC > NDC > first). ETL-German uses ATC code.
    2 sources ▾
  • drug_source_concept_id MedicationAdministration.medication[x] integer · CodeableConcept
    FK→CONCEPT=0
    Source vocabulary concept. Placeholder: 0. fhir-to-omop-demo uses pre-computed source_concept_id.
    2 sources ▾
  • dose_unit_source_value MedicationAdministration.dosage.dose.unit | MedicationAdministration.dosage.dose.code varchar(50) · string
    Raw dose unit string from dosage.dose.

Vocabularies

drug_type

Source Display Concept ID Concept Name
MedicationAdministration Physician administered drug 38000179 Physician administered drug (identified as procedure)
MedicationAdministration (alt: fhir-to-omop-demo) EHR administration record 32818 EHR administration record
MedicationAdministration (alt: FhirToCdm/ETL-German) EHR 32817 EHR

route

Source Display Concept ID Concept Name
26643006 Oral route 4132161 Oral
47625008 Intravenous route 4171047 Intravenous
78421000 Intramuscular route 4302612 Intramuscular
34206005 Subcutaneous route 4142048 Subcutaneous
46713006 Nasal route 4262099 Nasal
6064005 Topical route 4263689 Topical
37161004 Rectal route 4115462 Rectal
45890007 Transdermal route 4262914 Transdermal

Edge Cases

status = entered-in-error
Skip -- do not create drug_exposure row.
status = not-done
Skip -- medication was not administered.
status = stopped
Implementation-dependent. ETL-German maps; this project would skip.
effectiveDateTime (point in time)
Start and end date are the same. omoponfhir general rule: setDrugExposureStartDate(date); setDrugExposureEndDate(date).
effectivePeriod with start but no end
End date = start date.
dosage absent
Leave quantity, route_concept_id, route_source_value, dose_unit_source_value, sig all null.
doseRange (Range instead of Quantity)
ETL-German computes the mean of low and high. Others leave quantity null.
Multiple codings in medication[x]
Best by vocabulary priority (RxNorm > ATC > NDC > first).
No medication code found
Skip -- consensus across implementations.

Reference Implementations