FHIR Tooling Extensions IG
0.1.0 - Release International flag

This page is part of the HL7 Tools Extension IG (v0.1.0: Releases - Informative) based on FHIR (HL7® FHIR® Standard) v5.0.0. . For a full list of available versions, see the Directory of published versions

Extension: Profile Mapping Extension

Official URL: http://hl7.org/fhir/tools/StructureDefinition/profile-mapping Version: 0.1.0
Active as of 2023-12-19 Maturity Level: 2 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):

  • Element ID CapabilityStatement.rest.resource

Usage info

Usage:

  • This Extension is not used by any profiles in this Implementation Guide

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 of 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: 2

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*Extensionprofile-mapping
... extension:search 1..1ExtensionThe search string for this mapping
.... extension 0..0
.... url 1..1uri"search"
.... value[x] 0..1stringValue of extension
... extension:profile 1..*ExtensionThe profile that must match this search string
.... extension 0..0
.... url 1..1uri"profile"
.... value[x] 1..1canonical(StructureDefinition)Value of extension
... extension:documentation 0..1ExtensionDocumentation about this particular profile-mapping
.... extension 0..0
.... url 1..1uri"documentation"
.... value[x] 1..1markdownValue of extension

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*Extensionprofile-mapping
... id 0..1idUnique id for inter-element referencing
... Slices for extension 2..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
... extension:search 1..1ExtensionThe search string for this mapping
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"search"
.... value[x] 0..1stringValue of extension
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"profile"
.... value[x] 1..1canonical(StructureDefinition)Value of extension
... extension:documentation 0..1ExtensionDocumentation about this particular profile-mapping
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"documentation"
.... value[x] 1..1markdownValue of extension
... url 1..1uri"http://hl7.org/fhir/tools/StructureDefinition/profile-mapping"
... value[x] 0..1Value of extension
.... valueBase64Binarybase64Binary
.... valueBooleanboolean
.... valueCanonicalcanonical(Any)
.... valueCodecode
.... valueDatedate
.... valueDateTimedateTime
.... valueDecimaldecimal
.... valueIdid
.... valueInstantinstant
.... valueIntegerinteger
.... valueInteger64integer64
.... valueMarkdownmarkdown
.... valueOidoid
.... valuePositiveIntpositiveInt
.... valueStringstring
.... valueTimetime
.... valueUnsignedIntunsignedInt
.... valueUriuri
.... valueUrlurl
.... valueUuiduuid
.... valueAddressAddress
.... valueAgeAge
.... valueAnnotationAnnotation
.... valueAttachmentAttachment
.... valueCodeableConceptCodeableConcept
.... valueCodeableReferenceCodeableReference
.... valueCodingCoding
.... valueContactPointContactPoint
.... valueCountCount
.... valueDistanceDistance
.... valueDurationDuration
.... valueHumanNameHumanName
.... valueIdentifierIdentifier
.... valueMoneyMoney
.... valuePeriodPeriod
.... valueQuantityQuantity
.... valueRangeRange
.... valueRatioRatio
.... valueRatioRangeRatioRange
.... valueReferenceReference(Any)
.... valueSampledDataSampledData
.... valueSignatureSignature
.... valueTimingTiming
.... valueContactDetailContactDetail
.... valueDataRequirementDataRequirement
.... valueExpressionExpression
.... valueParameterDefinitionParameterDefinition
.... valueRelatedArtifactRelatedArtifact
.... valueTriggerDefinitionTriggerDefinition
.... valueUsageContextUsageContext
.... valueAvailabilityAvailability
.... valueExtendedContactDetailExtendedContactDetail
.... valueDosageDosage
.... valueMetaMeta

doco Documentation for this format

This structure is derived from Extension

Summary

Simple Extension of 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: 2

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*Extensionprofile-mapping
... extension:search 1..1ExtensionThe search string for this mapping
.... extension 0..0
.... url 1..1uri"search"
.... value[x] 0..1stringValue of extension
... extension:profile 1..*ExtensionThe profile that must match this search string
.... extension 0..0
.... url 1..1uri"profile"
.... value[x] 1..1canonical(StructureDefinition)Value of extension
... extension:documentation 0..1ExtensionDocumentation about this particular profile-mapping
.... extension 0..0
.... url 1..1uri"documentation"
.... value[x] 1..1markdownValue of extension

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*Extensionprofile-mapping
... id 0..1idUnique id for inter-element referencing
... Slices for extension 2..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
... extension:search 1..1ExtensionThe search string for this mapping
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"search"
.... value[x] 0..1stringValue of extension
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"profile"
.... value[x] 1..1canonical(StructureDefinition)Value of extension
... extension:documentation 0..1ExtensionDocumentation about this particular profile-mapping
.... id 0..1idUnique id for inter-element referencing
.... extension 0..0
.... url 1..1uri"documentation"
.... value[x] 1..1markdownValue of extension
... url 1..1uri"http://hl7.org/fhir/tools/StructureDefinition/profile-mapping"
... value[x] 0..1Value of extension
.... valueBase64Binarybase64Binary
.... valueBooleanboolean
.... valueCanonicalcanonical(Any)
.... valueCodecode
.... valueDatedate
.... valueDateTimedateTime
.... valueDecimaldecimal
.... valueIdid
.... valueInstantinstant
.... valueIntegerinteger
.... valueInteger64integer64
.... valueMarkdownmarkdown
.... valueOidoid
.... valuePositiveIntpositiveInt
.... valueStringstring
.... valueTimetime
.... valueUnsignedIntunsignedInt
.... valueUriuri
.... valueUrlurl
.... valueUuiduuid
.... valueAddressAddress
.... valueAgeAge
.... valueAnnotationAnnotation
.... valueAttachmentAttachment
.... valueCodeableConceptCodeableConcept
.... valueCodeableReferenceCodeableReference
.... valueCodingCoding
.... valueContactPointContactPoint
.... valueCountCount
.... valueDistanceDistance
.... valueDurationDuration
.... valueHumanNameHumanName
.... valueIdentifierIdentifier
.... valueMoneyMoney
.... valuePeriodPeriod
.... valueQuantityQuantity
.... valueRangeRange
.... valueRatioRatio
.... valueRatioRangeRatioRange
.... valueReferenceReference(Any)
.... valueSampledDataSampledData
.... valueSignatureSignature
.... valueTimingTiming
.... valueContactDetailContactDetail
.... valueDataRequirementDataRequirement
.... valueExpressionExpression
.... valueParameterDefinitionParameterDefinition
.... valueRelatedArtifactRelatedArtifact
.... valueTriggerDefinitionTriggerDefinition
.... valueUsageContextUsageContext
.... valueAvailabilityAvailability
.... valueExtendedContactDetailExtendedContactDetail
.... valueDosageDosage
.... valueMetaMeta

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()