Integration Reference
DICOM to FHIR Mapping
The canonical DICOM ↔ FHIR map — sourced directly from the HL7 FHIR R5 ImagingStudy StructureDefinition (CC0). 51 DICOM attributes map to 39 FHIR paths; where a DICOM tag spans multiple FHIR elements (e.g., Study Date + Time combining into ImagingStudy.started), every mapping is represented.
By FHIR Path
Each FHIR element lists every DICOM tag that feeds it. Some elements accept multi-tag input — + means concatenation, | means OR / alternatives.
ImagingStudy.basedOn
-
(0032,1064)Requested Procedure Code SequenceRequestedProcedureCodeSequenceRaw:
Accession Number and Issuer (0080,0050)+(0080,0051) | Requested Procedure Code Sequence (0032,1064)
ImagingStudy.description
ImagingStudy.identifier
-
(0020,000D)Study Instance UIDStudyInstanceUIDRaw:
StudyInstanceUID (0020,000D) | study ID (0020,0010) -
(0020,0010)Study IDStudyIDRaw:
StudyInstanceUID (0020,000D) | study ID (0020,0010)
ImagingStudy.location
-
(0008,1040)Institutional Department NameInstitutionalDepartmentNameRaw:
(0008,1040) | (0040,0243) -
(0040,0243)Performed LocationPerformedLocationRaw:
(0008,1040) | (0040,0243)
ImagingStudy.modality
ImagingStudy.numberOfInstances
ImagingStudy.numberOfSeries
ImagingStudy.procedure
ImagingStudy.reason
ImagingStudy.referrer
-
(0008,0090)Referring Physician's NameReferringPhysicianNameRaw:
(0008,0090)+(0008,0096) -
(0008,0096)Referring Physician Identification SequenceReferringPhysicianIdentificationSequenceRaw:
(0008,0090)+(0008,0096)
ImagingStudy.series.bodySite
ImagingStudy.series.description
ImagingStudy.series.instance.number
ImagingStudy.series.instance.sopClass
ImagingStudy.series.instance.title
-
(0008,0008)Image TypeImageTypeRaw:
(0008,0008) | (0007,0080) | (0040,A043) + (0008,0104) | (0042,0010) -
(0008,0104)Code MeaningCodeMeaningRaw:
(0008,0008) | (0007,0080) | (0040,A043) + (0008,0104) | (0042,0010) -
(0040,A043)Concept Name Code SequenceConceptNameCodeSequenceRaw:
(0008,0008) | (0007,0080) | (0040,A043) + (0008,0104) | (0042,0010) -
(0042,0010)Document TitleDocumentTitleRaw:
(0008,0008) | (0007,0080) | (0040,A043) + (0008,0104) | (0042,0010)
ImagingStudy.series.instance.uid
ImagingStudy.series.laterality
ImagingStudy.series.modality
ImagingStudy.series.number
ImagingStudy.series.numberOfInstances
ImagingStudy.series.performer
-
(0008,1050)Performing Physician's NamePerformingPhysicianNameRaw:
(0008, 1050) | (0008, 1052) | (0008, 1070) | (0008, 1072) -
(0008,1052)Performing Physician Identification SequencePerformingPhysicianIdentificationSequenceRaw:
(0008, 1050) | (0008, 1052) | (0008, 1070) | (0008, 1072) -
(0008,1070)Operators' NameOperatorsNameRaw:
(0008, 1050) | (0008, 1052) | (0008, 1070) | (0008, 1072) -
(0008,1072)Operator Identification SequenceOperatorIdentificationSequenceRaw:
(0008, 1050) | (0008, 1052) | (0008, 1070) | (0008, 1072)
ImagingStudy.series.specimen
-
(0040,0551)Specimen IdentifierSpecimenIdentifierRaw:
(0040,0551) + (0040,0562) -
(0040,0562)Issuer of the Specimen Identifier SequenceIssuerOfTheSpecimenIdentifierSequenceRaw:
(0040,0551) + (0040,0562)
ImagingStudy.series.started
-
(0008,0021)Series DateSeriesDateRaw:
(0008,0021) + (0008,0031) -
(0008,0031)Series TimeSeriesTimeRaw:
(0008,0021) + (0008,0031)
ImagingStudy.series.uid
ImagingStudy.started
-
(0008,0020)Study DateStudyDateRaw:
(0008,0020)+(0008,0030) -
(0008,0030)Study TimeStudyTimeRaw:
(0008,0020)+(0008,0030)
Observation (LOINC 29463-7)
-
(0010,1030)Patient's WeightPatientWeightRaw:
PatientWeight (DS: kilograms) ↔ Observation.code=29463-7 (Body weight) with Observation.subject=Patient. DICOM stores in kg; FHIR Observation.valueQuantity uses UCUM 'kg'.
Observation (LOINC 8302-2)
-
(0010,1020)Patient's SizePatientSizeRaw:
PatientSize (DS: meters) ↔ Observation.code=8302-2 (Body height) with Observation.subject=Patient. Not stored directly on Patient resource per FHIR convention.
Patient.address
-
(0010,1040)Patient's AddressPatientAddressRaw:
PatientAddress (LO: free-text) ↔ Patient.address[0].text. FHIR prefers structured address (line/city/state/postalCode/country) when available; DICOM rarely provides decomposed components.
Patient.birthDate
-
(0010,0030)Patient's Birth DatePatientBirthDateRaw:
PatientBirthDate (DA: YYYYMMDD) ↔ Patient.birthDate (date) — direct value mapping. Empty DICOM value maps to absent FHIR field.
Patient.birthDate (derived)
-
(0010,1010)Patient's AgePatientAgeRaw:
PatientAge (AS: nnnD/W/M/Y) is typically computed at study time from PatientBirthDate, not stored separately on FHIR Patient. Imaging downstream may carry it as Observation with LOINC 30525-0 (panel) or 63900-5 (reported age). Verify against your terminology server before binding.
Patient.birthDate.extension(patient-birthTime)
-
(0010,0032)Patient's Birth TimePatientBirthTimeRaw:
PatientBirthTime (TM) ↔ FHIR uses the patient-birthTime extension (http://hl7.org/fhir/StructureDefinition/patient-birthTime) on Patient.birthDate to carry the time-of-birth component when needed (rare in adult radiology, common in NICU/perinatal).
Patient.extension(us-core-ethnicity)
-
(0010,2160)Ethnic GroupEthnicGroupRaw:
EthnicGroup ↔ US Core ethnicity extension (http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity) on Patient. Base FHIR Patient has no ethnicity field; US Core profiles add it.
Patient.gender
-
(0010,0040)Patient's SexPatientSexRaw:
PatientSex (CS: M/F/O/empty) ↔ Patient.gender (code: male / female / other / unknown). DICOM 'O' maps to FHIR 'other'; empty DICOM → FHIR 'unknown' or absent.
Patient.identifier
-
(0010,0020)Patient IDPatientIDRaw:
PatientID ↔ Patient.identifier where system identifies the issuing assigning authority (commonly a local hospital MRN namespace). Use a coded type like MR (Medical Record Number) per HL7v2-0203.
Patient.name
-
(0010,0010)Patient's NamePatientNameRaw:
PatientName ↔ Patient.name (HumanName) — DICOM PN VR's 5 components (family^given^middle^prefix^suffix) map to FHIR HumanName fields family, given[], use=…, prefix[], suffix[]
Patient.telecom
-
(0010,2154)Patient's Telephone NumbersPatientTelephoneNumbersRaw:
PatientTelephoneNumbers ↔ Patient.telecom[].value with system='phone'. Multiple DICOM values (\-separated) map to multiple ContactPoint entries.
ServiceRequest.identifier
-
(0040,1001)Requested Procedure IDRequestedProcedureIDRaw:
RequestedProcedureID ↔ ServiceRequest.identifier where system identifies the placer order namespace. Distinct from AccessionNumber (which is a filler-side identifier).
ServiceRequest.identifier (filler)
-
(0040,2017)Filler Order Number / Imaging Service RequestFillerOrderNumberImagingServiceRequestRaw:
FillerOrderNumberImagingServiceRequest ↔ ServiceRequest.identifier with type 'FILL' (filler) per HL7v2-0203. Issued by the imaging department fulfilling the order.
ServiceRequest.identifier (placer)
-
(0040,2016)Placer Order Number / Imaging Service RequestPlacerOrderNumberImagingServiceRequestRaw:
PlacerOrderNumberImagingServiceRequest ↔ ServiceRequest.identifier with type 'PLAC' (placer) per HL7v2-0203. Issued by the EHR placing the imaging order.
FHIR ↔ DICOM Integration
Bridging DICOM PACS/VNA workflows to FHIR R4/R5 stacks is one of the most requested modernization patterns Saga IT's medical imaging team builds. If you're constructing ImagingStudy resources from incoming DIMSE store, or exposing a FHIR endpoint over a legacy PACS via DICOMweb + FHIR Bridge, talk to Saga IT.