FHIR Extensions Pack
5.3.0-ballot-tc1 - (September 2025 Ballot) International flag

This page is part of the FHIR Core Extensions Registry (v5.3.0-ballot-tc1: Release 5.3) based on FHIR (HL7® FHIR® Standard) v5.0.0. This version is a pre-release. The current official version is 5.2.0. For a full list of available versions, see the Directory of published versions

Extension: Profile Mapping Extension

Official URL: http://hl7.org/fhir/StructureDefinition/profile-mapping Version: 5.3.0-ballot-tc1
Standards status: Trial-use Maturity Level: 4 Computable Name: ProfileMapping

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 Implementation Guide

You can also check for usages in the FHIR IG Statistics

Changes since version 5.2.0:

  • New Content
  • 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: Filtersdoco
    .. Extension 0..* Extension profile-mapping
    ... Slices for extension Content/Rules for all slices
    .... extension:search 1..1 Extension The search string for this mapping
    ..... extension 0..0
    ..... url 1..1 uri "search"
    ..... value[x] 0..1 string Value of extension
    .... extension:profile 1..* Extension The profile that must match this search string
    ..... extension 0..0
    ..... url 1..1 uri "profile"
    ..... value[x] 1..1 canonical(StructureDefinition) Value of extension
    .... extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    ..... extension 0..0
    ..... url 1..1 uri "documentation"
    ..... value[x] 1..1 markdown Value of extension
    ... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format
    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Extension 0..* Extension profile-mapping
    ... id 0..1 id Unique id for inter-element referencing
    ... Slices for extension 2..* Extension Additional content defined by implementations
    Slice: Unordered, Open by value:url
    .... extension:search 1..1 Extension The search string for this mapping
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "search"
    ..... value[x] 0..1 string Value of extension
    .... extension:profile 1..* Extension The profile that must match this search string
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "profile"
    ..... value[x] 1..1 canonical(StructureDefinition) Value of extension
    .... extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "documentation"
    ..... value[x] 1..1 markdown Value of extension
    ... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"
    .... valueBase64Binary base64Binary
    .... valueBoolean boolean
    .... valueCanonical canonical(Any)
    .... valueCode code
    .... valueDate date
    .... valueDateTime dateTime
    .... valueDecimal decimal
    .... valueId id
    .... valueInstant instant
    .... valueInteger integer
    .... valueInteger64 integer64
    .... valueMarkdown markdown
    .... valueOid oid
    .... valuePositiveInt positiveInt
    .... valueString string
    .... valueTime time
    .... valueUnsignedInt unsignedInt
    .... valueUri uri
    .... valueUrl url
    .... valueUuid uuid
    .... valueAddress Address
    .... valueAge Age
    .... valueAnnotation Annotation
    .... valueAttachment Attachment
    .... valueCodeableConcept CodeableConcept
    .... valueCodeableReference CodeableReference
    .... valueCoding Coding
    .... valueContactPoint ContactPoint
    .... valueCount Count
    .... valueDistance Distance
    .... valueDuration Duration
    .... valueHumanName HumanName
    .... valueIdentifier Identifier
    .... valueMoney Money
    .... valuePeriod Period
    .... valueQuantity Quantity
    .... valueRange Range
    .... valueRatio Ratio
    .... valueRatioRange RatioRange
    .... valueReference Reference(Any)
    .... valueSampledData SampledData
    .... valueSignature Signature
    .... valueTiming Timing
    .... valueContactDetail ContactDetail
    .... valueDataRequirement DataRequirement
    .... valueExpression Expression
    .... valueParameterDefinition ParameterDefinition
    .... valueRelatedArtifact RelatedArtifact
    .... valueTriggerDefinition TriggerDefinition
    .... valueUsageContext UsageContext
    .... valueAvailability Availability
    .... valueExtendedContactDetail ExtendedContactDetail
    .... valueDosage Dosage
    .... 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: Filtersdoco
    .. Extension 0..* Extension profile-mapping
    ... Slices for extension Content/Rules for all slices
    .... extension:search 1..1 Extension The search string for this mapping
    ..... extension 0..0
    ..... url 1..1 uri "search"
    ..... value[x] 0..1 string Value of extension
    .... extension:profile 1..* Extension The profile that must match this search string
    ..... extension 0..0
    ..... url 1..1 uri "profile"
    ..... value[x] 1..1 canonical(StructureDefinition) Value of extension
    .... extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    ..... extension 0..0
    ..... url 1..1 uri "documentation"
    ..... value[x] 1..1 markdown Value of extension
    ... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format

    Snapshot View

    NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
    .. Extension 0..* Extension profile-mapping
    ... id 0..1 id Unique id for inter-element referencing
    ... Slices for extension 2..* Extension Additional content defined by implementations
    Slice: Unordered, Open by value:url
    .... extension:search 1..1 Extension The search string for this mapping
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "search"
    ..... value[x] 0..1 string Value of extension
    .... extension:profile 1..* Extension The profile that must match this search string
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "profile"
    ..... value[x] 1..1 canonical(StructureDefinition) Value of extension
    .... extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    ..... id 0..1 id Unique id for inter-element referencing
    ..... extension 0..0
    ..... url 1..1 uri "documentation"
    ..... value[x] 1..1 markdown Value of extension
    ... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"
    .... valueBase64Binary base64Binary
    .... valueBoolean boolean
    .... valueCanonical canonical(Any)
    .... valueCode code
    .... valueDate date
    .... valueDateTime dateTime
    .... valueDecimal decimal
    .... valueId id
    .... valueInstant instant
    .... valueInteger integer
    .... valueInteger64 integer64
    .... valueMarkdown markdown
    .... valueOid oid
    .... valuePositiveInt positiveInt
    .... valueString string
    .... valueTime time
    .... valueUnsignedInt unsignedInt
    .... valueUri uri
    .... valueUrl url
    .... valueUuid uuid
    .... valueAddress Address
    .... valueAge Age
    .... valueAnnotation Annotation
    .... valueAttachment Attachment
    .... valueCodeableConcept CodeableConcept
    .... valueCodeableReference CodeableReference
    .... valueCoding Coding
    .... valueContactPoint ContactPoint
    .... valueCount Count
    .... valueDistance Distance
    .... valueDuration Duration
    .... valueHumanName HumanName
    .... valueIdentifier Identifier
    .... valueMoney Money
    .... valuePeriod Period
    .... valueQuantity Quantity
    .... valueRange Range
    .... valueRatio Ratio
    .... valueRatioRange RatioRange
    .... valueReference Reference(Any)
    .... valueSampledData SampledData
    .... valueSignature Signature
    .... valueTiming Timing
    .... valueContactDetail ContactDetail
    .... valueDataRequirement DataRequirement
    .... valueExpression Expression
    .... valueParameterDefinition ParameterDefinition
    .... valueRelatedArtifact RelatedArtifact
    .... valueTriggerDefinition TriggerDefinition
    .... valueUsageContext UsageContext
    .... valueAvailability Availability
    .... valueExtendedContactDetail ExtendedContactDetail
    .... valueDosage Dosage
    .... valueMeta Meta

    doco Documentation for this format

     

    Other representations of profile: CSV, Excel, Schematron

    Constraints

    IdGradePath(s)DetailsRequirements
    ele-1error**ALL** elementsAll FHIR elements must have a @value or children
    : hasValue() or (children().count() > id.count())
    ext-1error**ALL** extensionsMust 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: Filters doco
    . . Extension 0..* Extension profile-mapping
    . . . Slices for extension Content/Rules for all slices
    . . . . extension:search 1..1 Extension The search string for this mapping
    . . . . . extension 0 .. 0
    . . . . . url 1 .. 1 uri "search"
    . . . . . value[x] 0.. 1 string Value of extension
    . . . . extension:profile 1..* Extension The profile that must match this search string
    . . . . . extension 0 .. 0
    . . . . . url 1 .. 1 uri "profile"
    . . . . . value[x] 1.. 1 uri Value of extension
    . . . . extension:documentation 0..1 Extension Documentation about this particular profile-mapping
    . . . . . extension 0 .. 0
    . . . . . url 1 .. 1 uri "documentation"
    . . . . . value[x] 1.. 1 markdown Value of extension
    . . . url 1 .. 1 uri "http://hl7.org/fhir/StructureDefinition/profile-mapping"

    doco Documentation for this format

    Search Parameters for this Extension

    (none found)