FHIR R4 Current Build
This page is part of FHIR R4 - the current version v4.0.0 - in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions .
FHIR Infrastructure Work Group Maturity Level : N/A Standards Status : Informative

This page provides mappings for the data types. There are mappings to HL7 v2 , HL7 v3 , and (where appropriate) vCard (see Mappings to Other Standards for further information & status).

Table of Contents

Primitive Types
Element instant time date dateTime decimal boolean integer string uri base64Binary code id oid unsignedInt positiveInt markdown url canonical uuid
Complex Types
Element Identifier HumanName Address ContactPoint Timing Quantity SimpleQuantity Attachment Range Period Ratio CodeableConcept Coding SampledData Age Distance Duration Count Money MoneyQuantity Annotation Signature BackboneElement

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Data Type V2 RIM
base64Binary ~ED BIN
boolean n/a BL
date DT TS
dateTime DTM TS
decimal ~NM REAL
instant DTM TS
integer ~NM/~SI INT
string ST ST
time TM n/a
uri n/a URL

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Attachment ED/RP
    contentType ED.2+ED.3/RP.2+RP.3. Note conversion may be needed if old style values are being used
    language
    data ED.5
    url RP.1+RP.2 - if they refer to a URL (see v2.6)
    size
    hash
    title
    creation
    height
    width
    frames
    duration
    pages
Attachment ED
    contentType ./mediaType, ./charset
    language ./language
    data ./data
    url ./reference/literal
    size N/A (needs data type R3 proposal)
    hash .integrityCheck[parent::ED/integrityCheckAlgorithm="SHA-1"]
    title ./title/data
    creation N/A (needs data type R3 proposal)
    height .outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value
    width .outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value
    frames .outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value
    duration .outboundRelationship[typeCode="COMP].target[classCode="OBS", moodCode="EVN",code="<CODE>"].value

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Identifier CX / EI (occasionally, more often EI maps to a resource id or a URL)
    use N/A
    type CX.5
    system CX.4 / EI-2-4
    value CX.1 / EI.1
    period CX.7 + CX.8
    assigner CX.4 / (CX.4,CX.9,CX.10)
Identifier II - The Identifier class is a little looser than the v3 type II because it allows URIs as well as registered OIDs or GUIDs. Also maps to Role[classCode=IDENT]
    use Role.code or implied by context
    type Role.code or implied by context
    system II.root or Role.id.root
    value II.extension or II.root if system indicates OID or GUID (Or Role.id.extension or root)
    period Role.effectiveTime or implied by context
    assigner II.assigningAuthorityName but note that this is an improper use by the definition of the field. Also Role.scoper
Identifier Identifier
    use
    type
    system ./IdentifierType
    value ./Value
    period ./StartDate and ./EndDate
    assigner ./IdentifierIssuingAuthority

When mapping an HL7 v3 II data type to a FHIR Identifier, there are two possibilities:

  • If the II has only a root and no extension, the FHIR Identifier will have a system of 'urn:ietf:rfc:3986' and the II.root will appear in Identifier.value
  • If the II has both a root and an extension, the II.root will be mapped to a URI - either a human-friendly URL or URN or (less preferred) an OID expressed as a urn, and the II.extension will be sent in Identifier.value

To search on a CDA II.root - which may appear in either Identifier.system or Identifier.value , use the syntax identifier=|[root],[root] .

See v3 Mapping examples

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Coding fhir:Coding rdfs:subClassOf dt:CDCoding
    system fhir:Coding.system rdfs:subPropertyOf dt:CDCoding.codeSystem
    version fhir:Coding.version rdfs:subPropertyOf dt:CDCoding.codeSystemVersion
    code fhir:Coding.code rdfs:subPropertyOf dt:CDCoding.code
    display fhir:Coding.display rdfs:subPropertyOf dt:CDCoding.displayName
    userSelected fhir:Coding.userSelected fhir:mapsTo dt:CDCoding.codingRationale. fhir:Coding.userSelected fhir:hasMap fhir:Coding.userSelected.map. fhir:Coding.userSelected.map a fhir:Map; fhir:target dt:CDCoding.codingRationale. fhir:Coding.userSelected\#true a [ fhir:source "true"; fhir:target dt:CDCoding.codingRationale\#O ]
Coding CE/CNE/CWE subset one of the sets of component 1-3 or 4-6
    system C*E.3
    version C*E.7
    code C*E.1
    display C*E.2 - but note this is not well followed
    userSelected Sometimes implied by being first
Coding CV
    system ./codeSystem
    version ./codeSystemVersion
    code ./code
    display CV.displayName
    userSelected CD.codingRationale

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

CodeableConcept fhir:CodeableConcept rdfs:subClassOf dt:CD
    coding fhir:CodeableConcept.coding rdfs:subPropertyOf dt:CD.coding
    text fhir:CodeableConcept.text rdfs:subPropertyOf dt:CD.originalText
CodeableConcept CE/CNE/CWE
    coding C*E.1-8, C*E.10-22
    text C*E.9. But note many systems use C*E.2 for this
CodeableConcept CD
    coding union(., ./translation)
    text ./originalText[mediaType/code="text/plain"]/data

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Quantity SN (see also Range) or CQ
    value SN.2 / CQ - N/A
    comparator SN.1 / CQ.1
    unit (see OBX.6 etc.) / CQ.2
    system (see OBX.6 etc.) / CQ.2
    code (see OBX.6 etc.) / CQ.2
Quantity PQ, IVL<PQ>, MO, CO, depending on the values
    value PQ.value, CO.value, MO.value, IVL.high or IVL.low depending on the value
    comparator IVL properties
    unit PQ.unit
    system CO.codeSystem, PQ.translation.codeSystem
    code PQ.code, MO.currency, PQ.translation.code

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Money
    value MO.Value
    currency MO.Currency
Money MO

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Range NR and also possibly SN (but see also quantity)
    low NR.1
    high NR.2
Range IVL<QTY[not(type="TS")]> [lowClosed="true" and highClosed="true"]or URG<QTY[not(type="TS")]>
    low ./low
    high ./high

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Ratio N/A
Ratio RTO
    numerator .numerator
    denominator .denominator

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Period DR
    start DR.1
    end DR.2
Period IVL<TS>[lowClosed="true" and highClosed="true"] or URG<TS>[lowClosed="true" and highClosed="true"]
    start ./low
    end ./high

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

SampledData N/A (but see section 7.14 in v2.7)
    origin
    period
    factor
    lowerLimit
    upperLimit
    dimensions
    data
SampledData SLIST + GLIST
    origin SLIST.origin
    period GLIST.increment
    factor SLIST.factor
    lowerLimit N/A (use SLIST.digits.nullFlavor)
    upperLimit N/A (use SLIST.digits.nullFlavor)
    dimensions N/A (fixed to 1)
    data SLIST.digits

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

HumanName XPN
    use XPN.7, but often indicated by which field contains the name
    text implied by XPN.11
    family XPN.1/FN.1
    given XPN.2 + XPN.3
    prefix XPN.5
    suffix XPN/4
    period XPN.13 + XPN.14
HumanName EN (actually, PN)
    use unique(./use)
    text ./formatted
    family ./part[partType = FAM]
    given ./part[partType = GIV]
    prefix ./part[partType = PFX]
    suffix ./part[partType = SFX]
    period ./usablePeriod[type="IVL<TS>"]
HumanName ProviderName
    use ./NamePurpose
    text
    family ./FamilyName
    given ./GivenNames
    prefix ./TitleCode
    suffix
    period ./StartDate and ./EndDate

vCard Mappings

  • HumanName.text = vCard "FN" field
  • HumanName.use = use of the vCard "TYPE" parameter
  • HumanName.family, .given, .prefix, .suffix = parts of vCard "N" field. Note that there is no FHIR equivalent for the poorly defined "additional" name field. In FHIR, given names go in "middle" names
  • The vCard nickname corresponds to a name with the use "nickname"

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Address XAD
    use XAD.7
    type XAD.18
    text XAD.1 + XAD.2 + XAD.3 + XAD.4 + XAD.5 + XAD.6
    line XAD.1 + XAD.2 (note: XAD.1 and XAD.2 have different meanings for a company address than for a person address)
    city XAD.3
    district XAD.9
    state XAD.4
    postalCode XAD.5
    country XAD.6
    period XAD.12 / XAD.13 + XAD.14
Address AD
    use unique(./use)
    type unique(./use)
    text ./formatted
    line AD.part[parttype = AL]
    city AD.part[parttype = CTY]
    district AD.part[parttype = CNT | CPA]
    state AD.part[parttype = STA]
    postalCode AD.part[parttype = ZIP]
    country AD.part[parttype = CNT]
    period ./usablePeriod[type="IVL<TS>"]
Address
    use
    type address type parameter
    text address label parameter
    line street
    city locality
    district
    state region
    postalCode code
    country country
    period
Address Address
    use ./AddressPurpose
    type
    text
    line ./StreetAddress (newline delimitted)
    city ./Jurisdiction
    district
    state ./Region
    postalCode ./PostalIdentificationCode
    country ./Country
    period ./StartDate and ./EndDate

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

ContactPoint XTN
    system XTN.3
    value XTN.1 (or XTN.12)
    use XTN.2 - but often indicated by field
    rank n/a
    period N/A
ContactPoint TEL
    system ./scheme
    value ./url
    use unique(./use)
    rank n/a
    period ./usablePeriod[type="IVL<TS>"]
ContactPoint ContactPoint
    system ./ContactPointType
    value ./Value
    use ./ContactPointPurpose
    rank
    period ./StartDate and ./EndDate

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Timing N/A
Timing QSET<TS> (GTS)
    event QLIST<TS>
    repeat Implies PIVL or EIVL
        bounds[x] IVL(TS) used in a QSI
        count PIVL.count
        countMax PIVL.count
        duration PIVL.phase
        durationMax PIVL.phase
        durationUnit PIVL.phase.unit
        frequency PIVL.phase
        frequencyMax PIVL.phase
        period PIVL.phase
        periodMax PIVL.phase
        periodUnit PIVL.phase.unit
        dayOfWeek n/a
        timeOfDay n/a
        when EIVL.event
        offset EIVL.offset
    code QSC.code

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Signature N/A

See also Base Definition , Examples , Profiles & Extensions , Detailed Descriptions and R2 Conversions .

Annotation N/A
Annotation Act
    author[x] Act.participant[typeCode=AUT].role
    time Act.effectiveTime
    text Act.text