Map FHIR resources to OMOP CDM v5.4
/fhir2omop/createMaps a FHIR R4 resource or Bundle into OMOP Common Data Model v5.4 rows (person, visit_occurrence, condition_occurrence, drug_exposure, procedure_occurrence, measurement, observation).
Resource support is intentionally limited to the OMOP tables returned by this endpoint:
Patient->personEncounter->visit_occurrenceCondition->condition_occurrenceProcedure->procedure_occurrenceMedicationRequest,MedicationStatement, andMedicationAdministration->drug_exposureImmunization->drug_exposureObservationwith a numericvalueQuantity,valueInteger, or numeric-lookingvalueString(for example"<2") ->measurement- non-numeric
Observation->observation AllergyIntolerance->observation
Medication is supported only as reference data for medication
resources; it is not emitted as its own row because OMOP CDM has no
Medication table. Other reference/admin resources such as Practitioner,
Organization, Location, Coverage, and Claim, and clinical
workflow/document resources such as DiagnosticReport, ServiceRequest,
CarePlan, DocumentReference, Composition, Specimen, and
DeviceUseStatement, are currently accepted in a Bundle but are not
shaped into OMOP rows. Unsupported resource types are ignored rather than
listed under dropped; dropped is reserved for supported resource types
that were missing the subject/patient, code, or medication reference data
needed to produce a valid row.
Each resource's primary clinical coding is resolved to a standard OMOP
concept_id. Alongside the OMOP rows grouped by table (tables), the
response carries mappings (how each source coding resolved, linked back
to the row it produced), dropped (resources that could not be shaped
into a row), vocab_version (the OMOP vocabulary release codes were
resolved against), and a small summary of the resolution outcomes.
A concept_id of 0 is reported, not omitted (OMOP "no matching
concept" semantics): it covers both a coding with no standard match
(UNMAPPED) and an unverified suggestion for a text-only resource
(UNCHECKED). Only the primary clinical coding is resolved, so
gender/race/ethnicity/visit/value/unit concept_ids are
always 0; the one populated non-resolved concept is measurement
operator_concept_id, set from a value comparator (<, <=, >, >=)
rather than the resolver. Each *_source_value carries the verbatim FHIR
coding (system#code), and *_type_concept_id is set to 32817 (EHR).
Medication codes are resolved whether they appear inline
(medicationCodeableConcept) or via a medicationReference to a contained,
relative (Type/id), or bundle-entry (urn:uuid) Medication resource.
Resources that cannot be shaped into a row — a medication with no usable
code, resolvable reference, or display, or any clinical resource whose
subject/patient reference cannot be tied to a person — are reported under
dropped rather than emitted as blank rows. The
bundle must contain at least one Patient resource.
Body parameters
fhir_resourcesobjectrequiredFHIR resources (single resource or Bundle). Must contain at least one Patient resource. Supported row-producing resources are Patient, Encounter, Condition, Procedure, MedicationRequest, MedicationStatement, MedicationAdministration, Immunization, Observation, and AllergyIntolerance. Standalone Medication resources are consumed by medication references rather than mapped to their own table. Other resource types are accepted but ignored.
FHIR resources mapped to OMOP CDM v5.4
Response fields
successbooleanoptionalmessagestringoptionaltablesobjectoptionalOMOP CDM v5.4 rows grouped by destination table.
locationobject[]optionallocation_idinteger (int64)optionaladdress_1stringoptionaladdress_2stringoptionalcitystringoptionalstatestringoptionalzipstringoptionalcountystringoptionallocation_source_valuestringoptionalcountry_concept_idinteger (int64)optionalcountry_source_valuestringoptionallatitudenumber (double)optionallongitudenumber (double)optionalcare_siteobject[]optionalcare_site_idinteger (int64)optionalcare_site_namestringoptionalplace_of_service_concept_idinteger (int64)optionallocation_idinteger (int64)optionalcare_site_source_valuestringoptionalplace_of_service_source_valuestringoptionalproviderobject[]optionalprovider_idinteger (int64)optionalprovider_namestringoptionalnpistringoptionaldeastringoptionalspecialty_concept_idinteger (int64)optionalcare_site_idinteger (int64)optionalyear_of_birthintegeroptionalgender_concept_idinteger (int64)optionalprovider_source_valuestringoptionalspecialty_source_valuestringoptionalspecialty_source_concept_idinteger (int64)optionalgender_source_valuestringoptionalgender_source_concept_idinteger (int64)optionalpersonobject[]optionalperson_idinteger (int64)optionalgender_concept_idinteger (int64)optionalyear_of_birthintegeroptionalmonth_of_birthintegeroptionalday_of_birthintegeroptionalbirth_datetimestringoptionalrace_concept_idinteger (int64)optionalethnicity_concept_idinteger (int64)optionallocation_idinteger (int64)optionalperson_source_valuestringoptionalgender_source_valuestringoptionalrace_source_valuestringoptionalethnicity_source_valuestringoptionaldeathobject[]optionalperson_idinteger (int64)optionaldeath_datestringoptionaldeath_datetimestringoptionaldeath_type_concept_idinteger (int64)optionalcause_concept_idinteger (int64)optionalcause_source_valuestringoptionalcause_source_concept_idinteger (int64)optionalobservation_periodobject[]optionalobservation_period_idinteger (int64)optionalperson_idinteger (int64)optionalobservation_period_start_datestringoptionalobservation_period_end_datestringoptionalperiod_type_concept_idinteger (int64)optionalvisit_occurrenceobject[]optionalvisit_occurrence_idinteger (int64)optionalperson_idinteger (int64)optionalvisit_concept_idinteger (int64)optionalvisit_start_datestringoptionalvisit_start_datetimestringoptionalvisit_end_datestringoptionalvisit_end_datetimestringoptionalvisit_type_concept_idinteger (int64)optionalprovider_idinteger (int64)optionalcare_site_idinteger (int64)optionalvisit_source_valuestringoptionalcondition_occurrenceobject[]optionalcondition_occurrence_idinteger (int64)optionalperson_idinteger (int64)optionalcondition_concept_idinteger (int64)optionalcondition_start_datestringoptionalcondition_start_datetimestringoptionalcondition_end_datestringoptionalcondition_type_concept_idinteger (int64)optionalvisit_occurrence_idinteger (int64)optionalprovider_idinteger (int64)optionalcondition_source_valuestringoptionalcondition_source_concept_idinteger (int64)optionalcondition_status_source_valuestringoptionaldrug_exposureobject[]optionaldrug_exposure_idinteger (int64)optionalperson_idinteger (int64)optionaldrug_concept_idinteger (int64)optionaldrug_exposure_start_datestringoptionaldrug_exposure_start_datetimestringoptionaldrug_exposure_end_datestringoptionaldrug_type_concept_idinteger (int64)optionalstop_reasonstringoptionalsigstringoptionalvisit_occurrence_idinteger (int64)optionalprovider_idinteger (int64)optionaldrug_source_valuestringoptionaldrug_source_concept_idinteger (int64)optionalprocedure_occurrenceobject[]optionalprocedure_occurrence_idinteger (int64)optionalperson_idinteger (int64)optionalprocedure_concept_idinteger (int64)optionalprocedure_datestringoptionalprocedure_datetimestringoptionalprocedure_type_concept_idinteger (int64)optionalvisit_occurrence_idinteger (int64)optionalprovider_idinteger (int64)optionalprocedure_source_valuestringoptionalprocedure_source_concept_idinteger (int64)optionalmeasurementobject[]optionalmeasurement_idinteger (int64)optionalperson_idinteger (int64)optionalmeasurement_concept_idinteger (int64)optionalmeasurement_datestringoptionalmeasurement_datetimestringoptionalmeasurement_type_concept_idinteger (int64)optionalvalue_as_numbernumber (double)optionaloperator_concept_idinteger (int64)optionalOMOP "Meas Value Operator" standard concept qualifying value_as_number (<, <=, >, >=), parsed from a numeric-string value or a FHIR valueQuantity.comparator. 0 when no operator (a bare number).
value_as_concept_idinteger (int64)optionalunit_concept_idinteger (int64)optionalrange_lownumber (double)optionalrange_highnumber (double)optionalvisit_occurrence_idinteger (int64)optionalprovider_idinteger (int64)optionalmeasurement_source_valuestringoptionalmeasurement_source_concept_idinteger (int64)optionalunit_source_valuestringoptionalvalue_source_valuestringoptionalobservationobject[]optionalobservation_idinteger (int64)optionalperson_idinteger (int64)optionalobservation_concept_idinteger (int64)optionalobservation_datestringoptionalobservation_datetimestringoptionalobservation_type_concept_idinteger (int64)optionalvalue_as_numbernumber (double)optionalvalue_as_stringstringoptionalvalue_as_concept_idinteger (int64)optionalunit_concept_idinteger (int64)optionalvisit_occurrence_idinteger (int64)optionalprovider_idinteger (int64)optionalobservation_source_valuestringoptionalobservation_source_concept_idinteger (int64)optionalunit_source_valuestringoptionalvalue_source_valuestringoptionalmappingsobject[]optionalOne entry per source coding (or one entry for a text-only resource with no coding), describing how it resolved and linking back to the row it produced.
resource_typestringoptionalresource_idstringoptionalomop_tablestringoptionalomop_idinteger (int64)optionalThe id of the OMOP row this coding produced (e.g. condition_occurrence_id),
within omop_table. A resource with multiple codings yields one entry
per coding, all sharing this id.
source_systemstringoptionalsource_codestringoptionalsource_namestringoptionaltarget_vocabularystringoptionaltarget_codestringoptionalThe standard concept's own code: the source code itself for an ALREADY_STANDARD row, the standard concept's code for a MAPPED row, or the suggested code for an UNCHECKED row. Omitted for UNMAPPED rows.
target_namestringoptionalmapping_statusstringoptionalALREADY_STANDARD (source coding is already a standard OMOP concept),
MAPPED (source coding was mapped to a standard concept), UNCHECKED (a
standard code was suggested — e.g. for a text-only resource — but not
verified against the OMOP vocabulary, so concept_id stays 0), or
UNMAPPED (no standard concept found).
notestringoptionaldroppedobject[]optionalSupported resource instances that could not be shaped into an OMOP row because required subject/patient, code, or medication reference data was missing. Unsupported resource types are ignored and do not appear here.
resource_typestringoptionalresource_idstringoptionalreasonstringoptionalvocab_versionstringoptionalThe OMOP vocabulary release the clinical codes were resolved against (e.g. "v20240229"), for reproducibility. Present when at least one coded concept was resolved.
summaryobjectoptionalThe request's data-quality headline: how the coded concepts split across
resolution outcomes, and the share that was not already in a target
standard vocabulary. Each coded resource is counted once (per resolved
concept), even when it carried several codings — unlike mappings, which
has one entry per coding.
codes_already_standardintegeroptionalCoded concepts already a standard OMOP concept (ALREADY_STANDARD).
codes_normalizedintegeroptionalCoded concepts mapped or suggested to a standard concept (MAPPED or UNCHECKED).
codes_unmappedintegeroptionalCoded concepts with no standard concept found (UNMAPPED).
off_vocab_ratenumber (double)optionalShare of coded concepts not already standard ((normalized + unmapped) / total).