Profiles & ValueSets

FHIR StructureDefinitions and ValueSets that gate conversion into OMOP tables. Domain routing: a FHIR resource maps to an OMOP table iff it validates against the corresponding profile — and the profile's code binding is the discriminator.

28
Profiles (StructureDefinition)
28
ViewDefinitions (Stage 1 flatteners)
8
ValueSets (routing keys)
4
Routing pairs (1 → N tables)

Profiles by FHIR resource → OMOP table

AllergyIntolerance

FHIR AllergyIntolerance that can be converted to OMOP `observation`. OMOP has no dedicated allergy table — allergies live in the observation table with allergy-specific SNOMED concepts. clinicalStatus…
code ∈ omop-observation-codes domain=Observation

Condition

FHIR Condition that can be converted to OMOP `condition_occurrence`. Excludes entered-in-error; requires a subject, onset, and a code in the OMOP Condition domain.
code ∈ omop-condition-codes domain=Condition

Coverage

FHIR Coverage that can be converted to OMOP `payer_plan_period`. status must be active; requires a beneficiary, a period.start, and at least one payor. No code/domain routing — payer_plan_period is pu…

Device

FHIR Device (joined with DeviceUseStatement) that can be converted to OMOP `device_exposure`. The Device.type provides the device kind; DeviceUseStatement records the clinical event (patient, timing).…

DiagnosticReport routes to 4

A DiagnosticReport whose LOINC code routes to the OMOP `measurement` table (lab panels, e.g. 24323-8 Comprehensive metabolic panel). status must be finalized; code is required and is the routing key. …
code ∈ omop-measurement-codes domain=Measurement
A DiagnosticReport that carries free-text content (conclusion or presentedForm attachments) and produces a row in the OMOP `note` table to preserve the unstructured clinical narrative. Unlike the meas…
A DiagnosticReport whose LOINC code routes to the OMOP `observation` table — primarily clinical document types (history and physical, discharge summary, consultation notes) where the LOINC code repres…
code ∈ omop-observation-codes domain=Observation
A DiagnosticReport whose LOINC code routes to the OMOP `procedure_occurrence` table — primarily imaging studies (radiology, nuclear medicine), pathology procedures, and clinical assessments whose LOIN…
code ∈ omop-procedure-codes domain=Procedure

Encounter

FHIR Encounter that can be converted to OMOP `visit_occurrence`. Requires a finalized or active encounter (finished | in-progress | onleave), a subject, a period.start, and a class coding that routes …

Immunization

A FHIR Immunization that can be converted to an OMOP `drug_exposure` row of type 32827 (EHR administration record) / equivalent. Routing key: `vaccineCode` must be in the OMOP Drug domain (CVX / RxNor…

Location routes to 2

Subset of FHIR Location that participates in the secondary Location → care_site pattern (used by fhir-to-omop-demo). Requires `physicalType` (the routing discriminator — distinguishes building/wing/wa…
FHIR Location that can be converted to OMOP `location`. Requires a name and a structured address. The location table is shared with Patient.address — both populate the same table, and rows should be d…

Medication

Vocabulary-linkage profile. The FHIR Medication resource is not directly converted to a drug_exposure row; instead, when an event resource (MedicationRequest / Dispense / Administration / Statement) c…
code ∈ omop-drug-codes domain=Drug

MedicationAdministration

A FHIR MedicationAdministration that can be converted to an OMOP `drug_exposure` row of type 38000179 (Physician administered drug). Routing key: `medicationCodeableConcept` must be in the OMOP Drug d…

MedicationDispense

A FHIR MedicationDispense that can be converted to an OMOP `drug_exposure` row of type 38000175 (Prescription dispensed in pharmacy). Routing key: `medicationCodeableConcept` must be in the OMOP Drug …

MedicationRequest

A FHIR MedicationRequest that can be converted to an OMOP `drug_exposure` row of type 38000177 (Prescription written). Routing key: `medicationCodeableConcept` must be in the OMOP Drug domain (RxNorm …

MedicationStatement

A FHIR MedicationStatement that can be converted to an OMOP `drug_exposure` row of type 44787730 (Patient Self-Reported Medication). Routing key: `medicationCodeableConcept` must be in the OMOP Drug d…

Observation routes to 2

An Observation whose code routes to the OMOP `measurement` table. Validate against this profile first; if it passes, write to measurement. Routing is enforced by the `code` binding to OmopMeasurementC…
code ∈ omop-measurement-codes domain=Measurement
An Observation whose code routes to the OMOP `observation` table (qualitative findings, social history, etc.). Same FHIR resource as OmopObservationMeasurement — the difference is only the `code` bind…
code ∈ omop-observation-codes domain=Observation

Organization

FHIR Organization that can be converted to OMOP `care_site`. Requires a name (becomes care_site_name) and at least one identifier (becomes care_site_source_value). Organization.type, when present, map…

Patient routes to 4

Subset of FHIR Patient where deceased[x] is present as a dateTime. The profile is on Patient (not a separate resource) — a Patient instance produces a death row only when deceasedDateTime is set. dece…
Subset of FHIR Patient where at least one Patient.address is present with usable structured fields. The address is normalized into one OMOP `location` row whose location_id is linked back from person.…
Patient that contributes an `observation_period` row. The window itself is **derived from event data** — earliest/latest event_date across all OMOP clinical tables for the person — not from any single…
FHIR Patient that can be converted to OMOP `person`. Requires birthDate (used for year/month/day_of_birth), gender (mapped to gender_concept_id), and at least one identifier (used as person_source_val…

Practitioner

FHIR Practitioner that can be converted to OMOP `provider`. Requires at least one identifier (used as NPI / provider_source_value) and at least one name (used as provider_name). Practitioner has no `c…

PractitionerRole

PractitionerRole that enriches an existing OMOP `provider` row (created from the referenced Practitioner). Does not create a new provider row — instead it contributes specialty_concept_id, specialty_s…

Procedure

FHIR Procedure that can be converted to OMOP `procedure_occurrence`. Status must be completed or in-progress; requires a subject, a performed[x] date, and a code that resolves to the OMOP Procedure do…
code ∈ omop-procedure-codes domain=Procedure

Specimen

FHIR Specimen that can be converted to OMOP `specimen`. Requires a subject, a type in the OMOP Specimen domain, and a collection time (collected[x] or receivedTime).

ViewDefinitions — Stage 1 of ELT pipeline (SQL on FHIR)

ID Resource Flat target Columns
omop-allergyintolerance-observation AllergyIntolerance observation 15
omop-condition-condition-occurrence Condition condition_occurrence 16
omop-coverage-payer-plan-period Coverage payer_plan_period 11
omop-device-device-exposure Device device_exposure 11
omop-diagnosticreport-measurement DiagnosticReport measurement 11
omop-diagnosticreport-note DiagnosticReport note 13
omop-diagnosticreport-observation DiagnosticReport observation 12
omop-diagnosticreport-procedure-occurrence DiagnosticReport procedure_occurrence 13
omop-encounter-visit-occurrence Encounter visit_occurrence 18
omop-immunization-drug-exposure Immunization drug_exposure 19
omop-location-care-site Location care_site 2
omop-location-location Location location 12
omop-medication-drug-exposure Medication drug_exposure 6
omop-medicationadministration-drug-exposure MedicationAdministration drug_exposure 18
omop-medicationdispense-drug-exposure MedicationDispense drug_exposure 18
omop-medicationrequest-drug-exposure MedicationRequest drug_exposure 21
omop-medicationstatement-drug-exposure MedicationStatement drug_exposure 20
omop-observation-measurement Observation measurement 19
omop-observation-observation Observation observation 19
omop-organization-care-site Organization care_site 6
omop-patient-death Patient death 3
omop-patient-location Patient location 10
omop-patient-observation-period Patient observation_period 2
omop-patient-person Patient person 15
omop-practitioner-provider Practitioner provider 10
omop-practitionerrole-provider PractitionerRole provider 4
omop-procedure-procedure-occurrence Procedure procedure_occurrence 16
omop-specimen-specimen Specimen specimen 16

ValueSets (one per OMOP domain)

ID OMOP Domain Source systems Sample codes
omop-condition-codes Condition http://snomed.info/sct, http://hl7.org/fhir/sid/icd-10-cm, http://hl7.org/fhir/sid/icd-9-cm 13
omop-device-codes Device http://snomed.info/sct 6
omop-drug-codes Drug http://www.nlm.nih.gov/research/umls/rxnorm, http://hl7.org/fhir/sid/ndc, http://hl7.org/fhir/sid/cvx 6
omop-measurement-codes Measurement http://loinc.org, http://snomed.info/sct 7
omop-observation-codes Observation http://snomed.info/sct, http://loinc.org 6
omop-procedure-codes Procedure http://snomed.info/sct, http://www.ama-assn.org/go/cpt, http://hl7.org/fhir/sid/icd-10-pcs 12
omop-specimen-codes Specimen http://snomed.info/sct 7
omop-visit-codes Visit http://terminology.hl7.org/CodeSystem/v3-ActCode, https://www.cms.gov/Medicare/Coding/place-of-service-codes 9