Current Build
FHIR Infrastructure Work GroupMaturity Level: N/ABallot 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
ElementinstanttimedatedateTimedecimalbooleanintegerstringuribase64BinarycodeidoidunsignedIntpositiveIntmarkdownurlcanonicaluuid
Complex Types
ElementIdentifierHumanNameAddressContactPointTimingQuantitySimpleQuantityAttachmentRangePeriodRatioCodeableConceptCodingSampledDataAgeDistanceDurationCountMoneyMoneyQuantityAnnotationSignatureBackboneElement

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

Data TypeV2RIM
base64Binary~EDBIN
booleann/aBL
dateDTTS
dateTimeDTMTS
decimal~NMREAL
instantDTMTS
integer~NM/~SIINT
stringSTST
timeTMn/a
urin/aURL

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

AttachmentED/RP
    contentTypeED.2+ED.3/RP.2+RP.3. Note conversion may be needed if old style values are being used
    language
    dataED.5
    urlRP.1+RP.2 - if they refer to a URL (see v2.6)
    size
    hash
    title
    creation
AttachmentED
    contentType./mediaType, ./charset
    language./language
    data./data
    url./reference/literal
    sizeN/A (needs data type R3 proposal)
    hash.integrityCheck[parent::ED/integrityCheckAlgorithm="SHA-1"]
    title./title/data
    creationN/A (needs data type R3 proposal)

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

IdentifierCX / EI (occasionally, more often EI maps to a resource id or a URL)
    useN/A
    typeCX.5
    systemCX.4 / EI-2-4
    valueCX.1 / EI.1
    periodCX.7 + CX.8
    assignerCX.4 / (CX.4,CX.9,CX.10)
IdentifierII - see see identifier pattern at http://wiki.hl7.org/index.php?title=Common_Design_Patterns#Identifier_Pattern for relevant discussion. 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]
    useRole.code or implied by context
    typeRole.code or implied by context
    systemII.root or Role.id.root
    valueII.extension or II.root if system indicates OID or GUID (Or Role.id.extension or root)
    periodRole.effectiveTime or implied by context
    assignerII.assigningAuthorityName but note that this is an improper use by the definition of the field. Also Role.scoper
IdentifierIdentifier
    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.

Codingfhir:Coding rdfs:subClassOf dt:CDCoding
    systemfhir:Coding.system rdfs:subPropertyOf dt:CDCoding.codeSystem
    versionfhir:Coding.version rdfs:subPropertyOf dt:CDCoding.codeSystemVersion
    codefhir:Coding.code rdfs:subPropertyOf dt:CDCoding.code
    displayfhir:Coding.display rdfs:subPropertyOf dt:CDCoding.displayName
    userSelectedfhir: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 ]
CodingCE/CNE/CWE subset one of the sets of component 1-3 or 4-6
    systemC*E.3
    versionC*E.7
    codeC*E.1
    displayC*E.2 - but note this is not well followed
    userSelectedSometimes implied by being first
CodingCV
    system./codeSystem
    version./codeSystemVersion
    code./code
    displayCV.displayName
    userSelectedCD.codingRationale

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

CodeableConceptfhir:CodeableConcept rdfs:subClassOf dt:CD
    codingfhir:CodeableConcept.coding rdfs:subPropertyOf dt:CD.coding
    textfhir:CodeableConcept.text rdfs:subPropertyOf dt:CD.originalText
CodeableConceptCE/CNE/CWE
    codingC*E.1-8, C*E.10-22
    textC*E.9. But note many systems use C*E.2 for this
CodeableConceptCD
    codingunion(., ./translation)
    text./originalText[mediaType/code="text/plain"]/data

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

QuantitySN (see also Range) or CQ
    valueSN.2 / CQ - N/A
    comparatorSN.1 / CQ.1
    unit(see OBX.6 etc.) / CQ.2
    system(see OBX.6 etc.) / CQ.2
    code(see OBX.6 etc.) / CQ.2
QuantityPQ, IVL<PQ>, MO, CO, depending on the values
    valuePQ.value, CO.value, MO.value, IVL.high or IVL.low depending on the value
    comparatorIVL properties
    unitPQ.unit
    systemCO.codeSystem, PQ.translation.codeSystem
    codePQ.code, MO.currency, PQ.translation.code

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

Money
    valueMO.Value
    currencyMO.Currency
MoneyMO

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

RangeNR and also possibly SN (but see also quantity)
    lowNR.1
    highNR.2
RangeIVL<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.

RatioN/A
RatioRTO
    numerator.numerator
    denominator.denominator

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

PeriodDR
    startDR.1
    endDR.2
PeriodIVL<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.

SampledDataN/A (but see section 7.14 in v2.7)
    origin
    period
    factor
    lowerLimit
    upperLimit
    dimensions
    data
SampledDataSLIST + GLIST
    originSLIST.origin
    periodGLIST.increment
    factorSLIST.factor
    lowerLimitN/A (use SLIST.digits.nullFlavor)
    upperLimitN/A (use SLIST.digits.nullFlavor)
    dimensionsN/A (fixed to 1)
    dataSLIST.digits

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

HumanNameXPN
    useXPN.7, but often indicated by which field contains the name
    textimplied by XPN.11
    familyXPN.1/FN.1
    givenXPN.2 + XPN.3
    prefixXPN.5
    suffixXPN/4
    periodXPN.13 + XPN.14
HumanNameEN (actually, PN)
    useunique(./use)
    text./formatted
    family./part[partType = FAM]
    given./part[partType = GIV]
    prefix./part[partType = PFX]
    suffix./part[partType = SFX]
    period./usablePeriod[type="IVL<TS>"]
HumanNameProviderName
    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.

AddressXAD
    useXAD.7
    typeXAD.18
    textXAD.1 + XAD.2 + XAD.3 + XAD.4 + XAD.5 + XAD.6
    lineXAD.1 + XAD.2 (note: XAD.1 and XAD.2 have different meanings for a company address than for a person address)
    cityXAD.3
    districtXAD.9
    stateXAD.4
    postalCodeXAD.5
    countryXAD.6
    periodXAD.12 / XAD.13 + XAD.14
AddressAD
    useunique(./use)
    typeunique(./use)
    text./formatted
    lineAD.part[parttype = AL]
    cityAD.part[parttype = CTY]
    districtAD.part[parttype = CNT | CPA]
    stateAD.part[parttype = STA]
    postalCodeAD.part[parttype = ZIP]
    countryAD.part[parttype = CNT]
    period./usablePeriod[type="IVL<TS>"]
Address
    use
    typeaddress type parameter
    textaddress label parameter
    linestreet
    citylocality
    district
    stateregion
    postalCodecode
    countrycountry
    period
AddressAddress
    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.

ContactPointXTN
    systemXTN.3
    valueXTN.1 (or XTN.12)
    useXTN.2 - but often indicated by field
    rankn/a
    periodN/A
ContactPointTEL
    system./scheme
    value./url
    useunique(./use)
    rankn/a
    period./usablePeriod[type="IVL<TS>"]
ContactPointContactPoint
    system./ContactPointType
    value./Value
    use./ContactPointPurpose
    rank
    period./StartDate and ./EndDate

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

TimingN/A
TimingQSET<TS> (GTS)
    eventQLIST<TS>
    repeatImplies PIVL or EIVL
        bounds[x]IVL(TS) used in a QSI
        countPIVL.count
        countMaxPIVL.count
        durationPIVL.phase
        durationMaxPIVL.phase
        durationUnitPIVL.phase.unit
        frequencyPIVL.phase
        frequencyMaxPIVL.phase
        periodPIVL.phase
        periodMaxPIVL.phase
        periodUnitPIVL.phase.unit
        dayOfWeekn/a
        timeOfDayn/a
        whenEIVL.event
        offsetEIVL.offset
    codeQSC.code

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

SignatureN/A

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

AnnotationN/A
AnnotationAct
    author[x]Act.participant[typeCode=AUT].role
    timeAct.effectiveTime
    textAct.text