FHIR Extensions Pack
5.4.0 - May 2026 International flag

FHIR Extensions Pack, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 5.4.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-extensions/ and changes regularly. See the Directory of published versions

Extension: Profile Mapping Extension

Official URL: http://hl7.org/fhir/StructureDefinition/profile-mapping Version: 5.4.0
Standards status: Trial-use Maturity Level: 4 Computable Name: ProfileMapping
Other Identifiers: OID:2.16.840.1.113883.4.642.40.97.42.2

Extension definition for Mapping between API and Profile. CapabilityStatement.rest.resource.profile has two different profile statements:

  • profile - the overall system profile for a resource
  • supportedProfile 0..* - a particular profile that the system supports

What is missing from this picture is defining which resources conform to which profile. Sometimes, of course, it's impossible to define this, but quite often, there's an algorithmic relationship that a server or client could use to know that resources with a particular set of values will or should conform to a given profile.

This extension defines a relationship between a search string and a profile. Any resource that meets a given search string will be expected to conform to the particular profile. If more than one profile is nominated for a search string, resources SHALL conform to all the listed profiles. The last extension can be without a search matches and remaining resources

This extension repeats, and order is important - once a match is found, this profile is the one that applies. Todo: If this extension is useful, it will be moved to the core extensions pack

Context of Use

This extension may be used on the following element(s)

Usage info

Usages:

  • This Extension is not used by any profiles in this Specification

You can also check for usages in the FHIR IG Statistics

Changes since version 5.3.0:

  • No changes
  • Formal Views of Extension Content

    Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

    This structure is derived from Extension

    Summary

    Simple Extension with the type base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta: Extension definition for Mapping between API and Profile. CapabilityStatement.rest.resource.profile has two different profile statements:

    • profile - the overall system profile for a resource
    • supportedProfile 0..* - a particular profile that the system supports

    What is missing from this picture is defining which resources conform to which profile. Sometimes, of course, it's impossible to define this, but quite often, there's an algorithmic relationship that a server or client could use to know that resources with a particular set of values will or should conform to a given profile.

    This extension defines a relationship between a search string and a profile. Any resource that meets a given search string will be expected to conform to the particular profile. If more than one profile is nominated for a search string, resources SHALL conform to all the listed profiles. The last extension can be without a search matches and remaining resources

    This extension repeats, and order is important - once a match is found, this profile is the one that applies. Todo: If this extension is useful, it will be moved to the core extensions pack

    Maturity: 4

    This structure is derived from Extension

    NameFlagsCard.TypeDescription & Constraints    Filter: doco
    Extension 0..* Extension profile-mapping
    Extension.Slices for extension Content/Rules for all slices
    Extension.Slices for extension.extension:search 1..1 Extension The search string for this mapping
    Extension.Slices for extension.extension:search.extension 0..0 Extension
    Extension.Slices for extension.extension:search.url 1..1 uri "search"
    Extension.Slices for extension.extension:search.value[x] 0..1 string Value of extension
    Extension.Slices for extension.extension:profile 1..* Extension The profile that must match this search string
    Extension.Slices for extension.extension:profile.extension 0..0 Extension
    Extension.Slices for extension.extension:profile.url 1..1 uri "profile"
    Extension.Slices for extension.extension:profile.value[x] 1..1 canonical(StructureDefinition) Value of extension
    Extension.Slices for extension.extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    Extension.Slices for extension.extension:documentation.extension 0..0 Extension
    Extension.Slices for extension.extension:documentation.url 1..1 uri "documentation"
    Extension.Slices for extension.extension:documentation.value[x] 1..1 markdown Value of extension
    Extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format
    NameFlagsCard.TypeDescription & Constraints    Filter: doco
    Extension 0..* Extension profile-mapping
    Extension.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension 2..* Extension Additional content defined by implementations
    Slice: Unordered, Open by value:url
    Extension.Slices for extension.extension:search 1..1 Extension The search string for this mapping
    Extension.Slices for extension.extension:search.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:search.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:search.url 1..1 uri "search"
    Extension.Slices for extension.extension:search.value[x] 0..1 string Value of extension
    Extension.Slices for extension.extension:profile 1..* Extension The profile that must match this search string
    Extension.Slices for extension.extension:profile.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:profile.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:profile.url 1..1 uri "profile"
    Extension.Slices for extension.extension:profile.value[x] 1..1 canonical(StructureDefinition) Value of extension
    Extension.Slices for extension.extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    Extension.Slices for extension.extension:documentation.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:documentation.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:documentation.url 1..1 uri "documentation"
    Extension.Slices for extension.extension:documentation.value[x] 1..1 markdown Value of extension
    Extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"
    Extension.value[x] 0..1 Value of extension
    Extension.value[x].valueBase64Binary base64Binary
    Extension.value[x].valueBoolean boolean
    Extension.value[x].valueCanonical canonical(Any)
    Extension.value[x].valueCode code
    Extension.value[x].valueDate date
    Extension.value[x].valueDateTime dateTime
    Extension.value[x].valueDecimal decimal
    Extension.value[x].valueId id
    Extension.value[x].valueInstant instant
    Extension.value[x].valueInteger integer
    Extension.value[x].valueInteger64 integer64
    Extension.value[x].valueMarkdown markdown
    Extension.value[x].valueOid oid
    Extension.value[x].valuePositiveInt positiveInt
    Extension.value[x].valueString string
    Extension.value[x].valueTime time
    Extension.value[x].valueUnsignedInt unsignedInt
    Extension.value[x].valueUri uri
    Extension.value[x].valueUrl url
    Extension.value[x].valueUuid uuid
    Extension.value[x].valueAddress Address
    Extension.value[x].valueAge Age
    Extension.value[x].valueAnnotation Annotation
    Extension.value[x].valueAttachment Attachment
    Extension.value[x].valueCodeableConcept CodeableConcept
    Extension.value[x].valueCodeableReference CodeableReference
    Extension.value[x].valueCoding Coding
    Extension.value[x].valueContactPoint ContactPoint
    Extension.value[x].valueCount Count
    Extension.value[x].valueDistance Distance
    Extension.value[x].valueDuration Duration
    Extension.value[x].valueHumanName HumanName
    Extension.value[x].valueIdentifier Identifier
    Extension.value[x].valueMoney Money
    Extension.value[x].valuePeriod Period
    Extension.value[x].valueQuantity Quantity
    Extension.value[x].valueRange Range
    Extension.value[x].valueRatio Ratio
    Extension.value[x].valueRatioRange RatioRange
    Extension.value[x].valueReference Reference(Any)
    Extension.value[x].valueSampledData SampledData
    Extension.value[x].valueSignature Signature
    Extension.value[x].valueTiming Timing
    Extension.value[x].valueContactDetail ContactDetail
    Extension.value[x].valueDataRequirement DataRequirement
    Extension.value[x].valueExpression Expression
    Extension.value[x].valueParameterDefinition ParameterDefinition
    Extension.value[x].valueRelatedArtifact RelatedArtifact
    Extension.value[x].valueTriggerDefinition TriggerDefinition
    Extension.value[x].valueUsageContext UsageContext
    Extension.value[x].valueAvailability Availability
    Extension.value[x].valueExtendedContactDetail ExtendedContactDetail
    Extension.value[x].valueDosage Dosage
    Extension.value[x].valueMeta Meta

    doco Documentation for this format

    This structure is derived from Extension

    Summary

    Simple Extension with the type base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, integer64, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference, SampledData, Signature, Timing, ContactDetail, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Availability, ExtendedContactDetail, Dosage, Meta: Extension definition for Mapping between API and Profile. CapabilityStatement.rest.resource.profile has two different profile statements:

    • profile - the overall system profile for a resource
    • supportedProfile 0..* - a particular profile that the system supports

    What is missing from this picture is defining which resources conform to which profile. Sometimes, of course, it's impossible to define this, but quite often, there's an algorithmic relationship that a server or client could use to know that resources with a particular set of values will or should conform to a given profile.

    This extension defines a relationship between a search string and a profile. Any resource that meets a given search string will be expected to conform to the particular profile. If more than one profile is nominated for a search string, resources SHALL conform to all the listed profiles. The last extension can be without a search matches and remaining resources

    This extension repeats, and order is important - once a match is found, this profile is the one that applies. Todo: If this extension is useful, it will be moved to the core extensions pack

    Maturity: 4

    Differential View

    This structure is derived from Extension

    NameFlagsCard.TypeDescription & Constraints    Filter: doco
    Extension 0..* Extension profile-mapping
    Extension.Slices for extension Content/Rules for all slices
    Extension.Slices for extension.extension:search 1..1 Extension The search string for this mapping
    Extension.Slices for extension.extension:search.extension 0..0 Extension
    Extension.Slices for extension.extension:search.url 1..1 uri "search"
    Extension.Slices for extension.extension:search.value[x] 0..1 string Value of extension
    Extension.Slices for extension.extension:profile 1..* Extension The profile that must match this search string
    Extension.Slices for extension.extension:profile.extension 0..0 Extension
    Extension.Slices for extension.extension:profile.url 1..1 uri "profile"
    Extension.Slices for extension.extension:profile.value[x] 1..1 canonical(StructureDefinition) Value of extension
    Extension.Slices for extension.extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    Extension.Slices for extension.extension:documentation.extension 0..0 Extension
    Extension.Slices for extension.extension:documentation.url 1..1 uri "documentation"
    Extension.Slices for extension.extension:documentation.value[x] 1..1 markdown Value of extension
    Extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format

    Snapshot View

    NameFlagsCard.TypeDescription & Constraints    Filter: doco
    Extension 0..* Extension profile-mapping
    Extension.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension 2..* Extension Additional content defined by implementations
    Slice: Unordered, Open by value:url
    Extension.Slices for extension.extension:search 1..1 Extension The search string for this mapping
    Extension.Slices for extension.extension:search.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:search.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:search.url 1..1 uri "search"
    Extension.Slices for extension.extension:search.value[x] 0..1 string Value of extension
    Extension.Slices for extension.extension:profile 1..* Extension The profile that must match this search string
    Extension.Slices for extension.extension:profile.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:profile.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:profile.url 1..1 uri "profile"
    Extension.Slices for extension.extension:profile.value[x] 1..1 canonical(StructureDefinition) Value of extension
    Extension.Slices for extension.extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    Extension.Slices for extension.extension:documentation.id 0..1 id Unique id for inter-element referencing
    Extension.Slices for extension.extension:documentation.extension 0..0 Extension
    Slice: Unordered, Open by value:url

    Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
    Extension.Slices for extension.extension:documentation.url 1..1 uri "documentation"
    Extension.Slices for extension.extension:documentation.value[x] 1..1 markdown Value of extension
    Extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"
    Extension.value[x] 0..1 Value of extension
    Extension.value[x].valueBase64Binary base64Binary
    Extension.value[x].valueBoolean boolean
    Extension.value[x].valueCanonical canonical(Any)
    Extension.value[x].valueCode code
    Extension.value[x].valueDate date
    Extension.value[x].valueDateTime dateTime
    Extension.value[x].valueDecimal decimal
    Extension.value[x].valueId id
    Extension.value[x].valueInstant instant
    Extension.value[x].valueInteger integer
    Extension.value[x].valueInteger64 integer64
    Extension.value[x].valueMarkdown markdown
    Extension.value[x].valueOid oid
    Extension.value[x].valuePositiveInt positiveInt
    Extension.value[x].valueString string
    Extension.value[x].valueTime time
    Extension.value[x].valueUnsignedInt unsignedInt
    Extension.value[x].valueUri uri
    Extension.value[x].valueUrl url
    Extension.value[x].valueUuid uuid
    Extension.value[x].valueAddress Address
    Extension.value[x].valueAge Age
    Extension.value[x].valueAnnotation Annotation
    Extension.value[x].valueAttachment Attachment
    Extension.value[x].valueCodeableConcept CodeableConcept
    Extension.value[x].valueCodeableReference CodeableReference
    Extension.value[x].valueCoding Coding
    Extension.value[x].valueContactPoint ContactPoint
    Extension.value[x].valueCount Count
    Extension.value[x].valueDistance Distance
    Extension.value[x].valueDuration Duration
    Extension.value[x].valueHumanName HumanName
    Extension.value[x].valueIdentifier Identifier
    Extension.value[x].valueMoney Money
    Extension.value[x].valuePeriod Period
    Extension.value[x].valueQuantity Quantity
    Extension.value[x].valueRange Range
    Extension.value[x].valueRatio Ratio
    Extension.value[x].valueRatioRange RatioRange
    Extension.value[x].valueReference Reference(Any)
    Extension.value[x].valueSampledData SampledData
    Extension.value[x].valueSignature Signature
    Extension.value[x].valueTiming Timing
    Extension.value[x].valueContactDetail ContactDetail
    Extension.value[x].valueDataRequirement DataRequirement
    Extension.value[x].valueExpression Expression
    Extension.value[x].valueParameterDefinition ParameterDefinition
    Extension.value[x].valueRelatedArtifact RelatedArtifact
    Extension.value[x].valueTriggerDefinition TriggerDefinition
    Extension.value[x].valueUsageContext UsageContext
    Extension.value[x].valueAvailability Availability
    Extension.value[x].valueExtendedContactDetail ExtendedContactDetail
    Extension.value[x].valueDosage Dosage
    Extension.value[x].valueMeta Meta

    doco Documentation for this format

     

    Other representations of profile: CSV, Excel, Schematron

    Constraints

    Id Grade Path(s) Description Expression
    ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
    ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

    R4B

    The extension is unchanged in R4B

    R4

    The extension is unchanged in R4

    R3

    The extension is represented a little differently in R3:

    • Map the type canonical to uri on the element Extension.extension:profile.value[x]
    • Note: Extensions that have been modified for R3 are still draft while real-world experience is collected
    Name Flags Card. Type Description & Constraints      Filter: doco
    Extension 0..* Extension profile-mapping
    Extension. Slices for extension Content/Rules for all slices
    Extension.Slices for extension. extension:search 1..1 Extension The search string for this mapping
    Extension.Slices for extension.extension:search. extension 0 .. 0 Extension
    Extension.Slices for extension.extension:search. url 1 .. 1 uri "search"
    Extension.Slices for extension.extension:search. value[x] 0.. 1 string Value of extension
    Extension.Slices for extension. extension:profile 1..* Extension The profile that must match this search string
    Extension.Slices for extension.extension:profile. extension 0 .. 0 Extension
    Extension.Slices for extension.extension:profile. url 1 .. 1 uri "profile"
    Extension.Slices for extension.extension:profile. value[x] 1.. 1 uri Value of extension
    Extension.Slices for extension. extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    Extension.Slices for extension.extension:documentation. extension 0 .. 0 Extension
    Extension.Slices for extension.extension:documentation. url 1 .. 1 uri "documentation"
    Extension.Slices for extension.extension:documentation. value[x] 1.. 1 markdown Value of extension
    Extension. url 1 .. 1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format

    Search Parameters for this Extension

    (none found)