FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions icon

5.4 Resource StructureDefinition - Content

FHIR Infrastructure icon Work GroupMaturity Level: N Normative (from v4.0.0)Security Category: Anonymous Compartments: No defined compartments

A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types.

The StructureDefinition resource describes a structure - a set of data element definitions, and their associated rules of usage. These structure definitions are used to describe both the content defined in the FHIR specification itself - Resources, data types, the underlying infrastructural types, and also are used to describe how these structures are used in implementations. This allows the definitions of the structures to be shared and published through repositories of structure definitions, compared with each other, and used as the basis for code, report and UI generation.

Note that as part of the specification itself, a full set of structure definitions for all resources and data types is published.

  • StructureDefinitions are used by CapabilityStatement instances for specifying how resources are used
  • StructureDefinitions use Value Sets to specify the content of coded elements

Implementers should be familiar with the background and concepts described in Profiling FHIR before working with this resource.

The StructureDefinition resource has a set of metadata that is mostly shared with the Value Set, CapabilityStatement and other infrastructure resources. The metadata describes the structure and helps find the structure when registered in repositories.

url The identifier that is used to identify this structure when it is referenced in a specification, model, design or an instance. This URL is where the structure can be accessed
identifier Other identifiers that are used to identify this structure
version

The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition author and is not expected to be globally unique. There is no expectation that versions can be placed in a lexicographical sequence, so authors are encouraged to populate the StructureDefinition.versionAlgorithm[x] element to enable comparisons. If there is no managed version available, authors can consider using ISO date/time syntax (e.g., "2023-01-01"). This is a business versionId, not a resource version id (see discussion).

Note that there may be multiple resource versions of the structure that have this same identifier. The resource will have updates that create new versions for technical reasons, whereas the stated version number needs to be under the author's control. The version can be appended to the url in a reference to allow a reference to a particular business version of the structure definition with the format [url]|[version].

versionAlgorithm Indicates the mechanism used to compare versions to determine which is more current
name A Computer-ready name (e.g. a token) that identifies the structure - suitable for code generation. Note that this name (and other names relevant for code generation, including element & slice names, codes etc.) may collide with reserved words in the relevant target language, and code generators will need to handle this
title A free text natural language name identifying the structure
status The status of the structure allows filtering of StructureDefinitions that are appropriate for use vs. not. See the Status Codes
experimental This structure was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine usage
date The date this version of the structure was published
publisher Details of the individual or organization who accepts responsibility for publishing the structure. This helps establish the "authority/credibility" of the structure.
contact Contact details to assist a user in finding and communicating with the publisher
description A free text natural language description of the structure and its use
purpose Why this structure was created - what the intent of it is
useContext & Jurisdiction Computable details about purpose and scope of use
copyright Use and/or publishing restrictions
fhirVersion The version of the FHIR specification on which this structure is based. It is not necessary to specify the version, as most StructureDefinitions are valid across multiple versions, and the validity of a structure against a particular version of FHIR can easily be checked by tooling.
type The type the structure describes.
contextType & context For extensions, the types of contexts in which the extension can be used. For further details, see Defining Extensions

Notes:

  • The name and title of the structure are not required to be globally unique, but the name and title should have some scoping information (e.g. AcmeAllergies / Acme Inc. (USA), Allergy List)
  • Multiple keywords may be assigned to the structure. These may either describe the structure, the focus of the structure or both. They are solely to help find the structure by searching for structured concepts
  • The 3 status codes (draft, active, and retired) are the codes that are relevant to structure consumers. Authors may wish to use the authoring-status extension to track the life cycle of a structure as it is prepared

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. StructureDefinition N DomainResource Structural Definition
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
+ Rule: Element paths must be unique unless the structure is a constraint
+ Rule: If the structure is not abstract, then there SHALL be a baseDefinition
+ Rule: If the structure defines an extension then the structure must have context information
+ Rule: A structure must have either a differential, or a snapshot (or both)
+ Rule: If there's a type, its content must match the path name in the first element of a snapshot
+ Rule: All element definitions must have an id
+ Rule: The first element in a snapshot has no type unless model is a logical model.
+ Rule: If the first element in a differential has no "." in the path and it's not a logical model, it has no type
+ Rule: In any snapshot or differential, no requirements on an element without a "." in the path (e.g. the first element)
+ Rule: All element definitions must have unique ids (snapshot)
+ Rule: All element definitions must have unique ids (diff)
+ Rule: Context Invariants can only be used for extensions
+ Rule: FHIR Specification models only use FHIR defined types
+ Rule: Default values can only be specified on specializations
+ Rule: FHIR Specification models never have default values
+ Rule: No slice name on root
+ Rule: If there's a base definition, there must be a derivation
+ Warning: Elements in Resources must have a min cardinality or 0 or 1 and a max cardinality of 1 or *

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
Interfaces Implemented: CanonicalResource
... url ΣC 1..1 uri Canonical identifier for this structure definition, represented as a URI (globally unique)
+ Warning: URL should not contain | or # - these characters make processing canonical references problematic
... identifier Σ 0..* Identifier Additional identifier for the structure definition

... version Σ 0..1 string Business version of the structure definition
... versionAlgorithm[x] ΣTU 0..1 How to compare versions
Binding: Version Algorithm (Extensible)
.... versionAlgorithmString string
.... versionAlgorithmCoding Coding
... name ΣC 1..1 string Name for this structure definition (computer friendly)
... title ΣT 0..1 string Name for this structure definition (human friendly)
... status ?!Σ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (Required)
... experimental Σ 0..1 boolean For testing only - never for real usage
... date Σ 0..1 dateTime Date last changed
... publisher ΣT 0..1 string Name of the publisher/steward (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher

... description T 0..1 markdown Natural language description of the structure definition
... useContext ΣTU 0..* UsageContext The context that the content is intended to support

... jurisdiction ΣXD 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable)
Binding: Jurisdiction ValueSet (Extensible)

... purpose T 0..1 markdown Why this structure definition is defined
... copyright T 0..1 markdown Use and/or publishing restrictions
... copyrightLabel TTU 0..1 string Copyright holder and year(s)
... keyword ΣXD 0..* Coding Assist with indexing and finding
Binding: Structure Definition Use Codes / Keywords (Extensible)

... fhirVersion Σ 0..1 code FHIR Version this StructureDefinition targets
Binding: FHIRVersion (Required)
... mapping C 0..* BackboneElement External specification that the content is mapped to
+ Rule: Must have at least a name or a uri (or both)

.... identity 1..1 id Internal id when this mapping is used
.... uri C 0..1 uri Identifies what this mapping refers to
.... name C 0..1 string Names what this mapping refers to
.... comment 0..1 string Versions, Issues, Scope limitations etc
... kind ΣC 1..1 code primitive-type | complex-type | resource | logical
Binding: Structure Definition Kind (Required)
... abstract ΣC 1..1 boolean Whether the structure is abstract
... context ΣC 0..* BackboneElement If an extension, where it can be used in instances

.... type Σ 1..1 code fhirpath | element | extension
Binding: Extension Context Type (Required)
.... expression Σ 1..1 string Where the extension can be used in instances
... contextInvariant ΣC 0..* string FHIRPath invariants - when the extension can be used

... type ΣC 1..1 uri Type defined or constrained by this structure
Binding: All FHIR Types (Extensible)
... baseDefinition ΣC 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from
... derivation ΣC 0..1 code specialization | constraint - How relates to base definition
Binding: Type Derivation Rule (Required)
... snapshot C 0..1 BackboneElement Snapshot view of the structure
+ Rule: Each element definition in a snapshot must have a formal definition and cardinalities, unless model is a logical model
+ Rule: All snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
+ Rule: For CodeableReference elements, target profiles must be listed on the CodeableReference, not the CodeableReference.reference
+ Rule: For CodeableReference elements, bindings must be listed on the CodeableReference, not the CodeableReference.concept
+ Guideline: The root element of a profile should not have mustSupport = true
+ Rule: All snapshot elements must have a base definition
.... element C 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)
+ Rule: provide either a binding reference or a description (or both)
+ Rule: If there are no discriminators, there must be a definition

... differential C 0..1 BackboneElement Differential view of the structure
+ Rule: No slicing on the root element
+ Rule: In any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models
.... element C 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition)


doco Documentation for this format icon

See the Extensions for this resource

 

Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis

Path ValueSet Type Documentation
StructureDefinition.versionAlgorithm[x] VersionAlgorithm Extensible

Indicates the mechanism used to compare versions to determine which is more current.

StructureDefinition.status PublicationStatus Required

The lifecycle status of an artifact.

StructureDefinition.jurisdiction JurisdictionValueSet Extensible

This value set defines a base set of codes for country, country subdivision and region for indicating where a resource is intended to be used.

Note: The codes for countries and country subdivisions are taken from ISO 3166 icon while the codes for "supra-national" regions are from UN Standard country or area codes for statistical use (M49) icon.

StructureDefinition.keyword DefinitionUseCodes (a valid code from Structure Definition Use Codes / Keywords icon) Extensible

Structure Definition Use Codes / Keywords

StructureDefinition.fhirVersion FHIRVersion Required

All published FHIR Versions.

StructureDefinition.kind StructureDefinitionKind Required

Defines the type of structure that a definition is describing.

StructureDefinition.context.type ExtensionContextType Required

How an extension context is interpreted.

StructureDefinition.type FHIRTypes (a valid code from All FHIR Types) Extensible

All FHIR types

StructureDefinition.derivation TypeDerivationRule Required

How a type relates to its baseDefinition.

UniqueKeyLevelLocationDescriptionExpression
img cnl-0Warning (base)Name should be usable as an identifier for the module by machine processing applications such as code generationname.exists() implies name.matches('^[A-Z]([A-Za-z0-9_]){1,254}$')
img sdf-1Rule (base)Element paths must be unique unless the structure is a constraintderivation = 'constraint' or snapshot.element.select(path).isDistinct()
img cnl-1Warning StructureDefinition.urlURL should not contain | or # - these characters make processing canonical references problematicexists() implies matches('^[^|# ]+$')
img sdf-15aRule (base)If the first element in a differential has no "." in the path and it's not a logical model, it has no type(kind!='logical' and differential.element.first().path.contains('.').not()) implies differential.element.first().type.empty()
img sdf-2Rule StructureDefinition.mappingMust have at least a name or a uri (or both)name.exists() or uri.exists()
img sdf-3Rule StructureDefinition.snapshotEach element definition in a snapshot must have a formal definition and cardinalities, unless model is a logical model%resource.kind = 'logical' or element.all(definition.exists() and min.exists() and max.exists())
img sdf-4Rule (base)If the structure is not abstract, then there SHALL be a baseDefinitionabstract = true or baseDefinition.exists()
img sdf-5Rule (base)If the structure defines an extension then the structure must have context informationtype != 'Extension' or base != 'http://hl7.org/fhir/StructureDefinition/Extension' or derivation = 'specialization' or (context.exists())
img sdf-6Rule (base)A structure must have either a differential, or a snapshot (or both)snapshot.exists() or differential.exists()
img sdf-8Rule StructureDefinition.snapshotAll snapshot elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models(%resource.kind = 'logical' or element.first().path = %resource.type) and element.tail().all(path.startsWith(%resource.snapshot.element.first().path&'.'))
img sdf-20Rule StructureDefinition.differentialNo slicing on the root elementelement.where(path.contains('.').not()).slicing.empty()
img sdf-21Rule (base)Default values can only be specified on specializationsdifferential.element.defaultValue.exists() implies (derivation = 'specialization')
img sdf-22Rule (base)FHIR Specification models never have default valuesurl.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty())
img sdf-23Rule (base)No slice name on root(snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty())
img sdf-24Rule StructureDefinition.snapshotFor CodeableReference elements, target profiles must be listed on the CodeableReference, not the CodeableReference.referenceelement.where(type.where(code='Reference').exists() and path.endsWith('.reference') and type.targetProfile.exists() and (path.substring(0,$this.path.length()-10) in %context.element.where(type.where(code='CodeableReference').exists()).path)).exists().not()
img sdf-25Rule StructureDefinition.snapshotFor CodeableReference elements, bindings must be listed on the CodeableReference, not the CodeableReference.conceptelement.where(type.where(code='CodeableConcept').exists() and path.endsWith('.concept') and binding.exists() and (path.substring(0,$this.path.length()-8) in %context.element.where(type.where(code='CodeableReference').exists()).path)).exists().not()
img sdf-26Guideline StructureDefinition.snapshotThe root element of a profile should not have mustSupport = true$this.where(element[0].mustSupport='true').exists().not()
This is (only) a best practice guideline because:

It is bad practice to set the root element of a profile to 'mustSupport' as mustSupport should always be determined by the element referencing a type. The designer of a StructureDefinition cannot know all circumstances in which a type or profile might be used

img sdf-27Rule (base)If there's a base definition, there must be a derivation baseDefinition.exists() implies derivation.exists()
img sdf-28Rule StructureDefinition.snapshot.elementIf there are no discriminators, there must be a definitionslicing.exists().not() or (slicing.discriminator.exists() or slicing.description.exists())
img sdf-8bRule StructureDefinition.snapshotAll snapshot elements must have a base definitionelement.all(base.exists())
img sdf-9Rule (base)In any snapshot or differential, no requirements on an element without a "." in the path (e.g. the first element)children().element.where(path.contains('.').not()).requirements.empty()
img sdf-10Rule StructureDefinition.snapshot.elementprovide either a binding reference or a description (or both)binding.empty() or binding.valueSet.exists() or binding.description.exists()
img sdf-11Rule (base)If there's a type, its content must match the path name in the first element of a snapshotkind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type
img sdf-14Rule (base)All element definitions must have an idsnapshot.element.all(id.exists()) and differential.element.all(id.exists())
img sdf-15Rule (base)The first element in a snapshot has no type unless model is a logical model.kind!='logical' implies snapshot.element.first().type.empty()
img sdf-16Rule (base)All element definitions must have unique ids (snapshot)snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct()
img sdf-17Rule (base)All element definitions must have unique ids (diff)differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct()
img sdf-18Rule (base)Context Invariants can only be used for extensionscontextInvariant.exists() implies type = 'Extension'
img sdf-19Rule (base)FHIR Specification models only use FHIR defined typesurl.startsWith('http://hl7.org/fhir/StructureDefinition') implies (differential | snapshot).element.type.code.all(matches('^[a-zA-Z0-9]+$') or matches('^http:\\/\\/hl7\\.org\\/fhirpath\\/System\\.[A-Z][A-Za-z]+$'))
img sdf-29Warning (base)Elements in Resources must have a min cardinality or 0 or 1 and a max cardinality of 1 or *((kind in 'resource' | 'complex-type') and (derivation = 'specialization')) implies differential.element.where((min != 0 and min != 1) or (max != '1' and max != '*')).empty()
img sdf-8aRule StructureDefinition.differentialIn any differential, all the elements must start with the StructureDefinition's specified type for non-logical models, or with the same type name for logical models(%resource.kind = 'logical' or element.first().path.startsWith(%resource.type)) and (element.tail().empty() or element.tail().all(path.startsWith(%resource.differential.element.first().path.replaceMatches('\\..*','')&'.')))

  • A structure is represented as a flat list of elements. The element.path provides the overall structure.
  • Differentials in constraints need only specify elements that they are making rules about. Other elements can be inferred as defined in the base resource
  • Elements specified in the differential (and all elements in the snapshot) must be ordered as such:
    • Elements from the baseDefinition appear before new elements in a StructureDefinition with derivation 'specialization'
    • Elements must be in the same order as the baseDefinition, and child elements appear in depth-first order.
    • Unsliced descendants of sliced elements appear before slices
  • element.short, element.formal, element.comments and element.mapping provide the specific definition for the field in a specific context.
  • element.type is used to specify which types may be used for this element. If there is more than one type, the element offers a choice of types and must have a name that terminates in "[x]". (Note: when substituting [x] with a specific data type, always capitalize the first letter. Choice types are always camel-case. Ex: "effectiveDateTime" is correct, "effectivedateTime" is NOT correct.)
  • When using XPath to define constraints about the relationship between the contents of the narrative and the contents of the data elements, the element against which the rule is expressed is the one against which the error or warning will be reported by a validator.
  • When expression constraints are placed on elements that offer a choice of types, the expression has to select the type to which it applies using the FHIRPath as operator.
  • The condition element is used to assert that a constraint defined on another element affects the allowed cardinality of this element.

The very first element in a snapshot (the one with an element id of just the type name) defines characteristics that apply to the type as a whole. Some of these characteristics affect the constraints that can hold on an element that references the type. For example, if the root element cardinality is 0..1, then an element declared to be of that type cannot have a maximum cardinality greater than 1. (This is often used when defining extensions to indicate that multiple extension repetitions of that type are not allowed within a single element.)

In some cases, there can be redundancy between content defined on the root element and that defined on the StructureDefinition itself. For example, ElementDefinition has 'definition' while StructureDefinition has 'description'. These may have the same content put both places, though technically the 'definition' is text that describes what the type 'means', while 'description' is broader and may talk a bit about what the resource/data type/profile is for, in addition to its meaning.

The base structure definition is used in a number of different ways to support the FHIR specification. The various uses of the StructureDefinition are controlled by the elements kind, type, base, and url, using this basic pattern:

{
  "url": the identity of this structure definition,
  "kind": (primitive-type | complex-type | resource | logical),
  "type": the type being constrained (if it's a constraint)
  "abstract" : {true | false},
  "baseDefinition": the structure definition from which this is derived
}

This list shows a number of examples, with links to real examples for each:

  1. Base definition of a data type (example: Quantity - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Quantity",
      "name": "Quantity",
      "kind": "complex-type",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
    }
    
  2. A constrained data type (example: Money - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Money",
      "name": "Money",
      "kind": "complex-type",
      "type": "Quantity",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity"
    }
    
  3. Base definition of a resource (example: Patient - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Patient",
      "name": "Patient",
      "kind": "resource",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource"
    }
    
  4. Base Extension (a standard data type) (example: Extension - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Extension",
      "name": "Extension",
      "kind": "complex-type",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
    }
    
  5. A defined Extension (example: Extension Data Absent Reason - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
      "name": "Data Absent Reason",
      "kind": "complex-type",
      "type": "Extension",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension"
    }
    
  6. A constraint on a defined extension (no examples currently defined):
    {
      "resourceType": "StructureDefinition",
      "url": "http://example.org/fhir/StructureDefinition/race",
      "name": "Race codes used by institution (a subset of meaningful use codes)",
      "kind": "complex-type",
      "type": "Extension",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
    }
    
  7. A base abstract Resource (see e.g. Resource):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Resource",
      "name": "Resource",
      "kind": "resource",
      "type": "Resource",
      "abstract" : true,
      "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/Base"
    }
    
  8. An interface defined in the base specification (see e.g. CanonicalResource):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/CanonicalResource",
      "name": "CanonicalResource",
      "kind": "resource",
      "type": "CanonicalResource",
      "abstract" : true,
      "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/DomainResource"
    }
    
  9. A logical model (see e.g. Definition):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Definition",
      "name": "Definition",
      "kind": "logical",
      "type": "Definition",
      "abstract" : false,
      "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/Base"
    }
    

On this list, structure definitions of type 1, 3, 5 and 8 - 9 can only be defined by the FHIR specification itself. The other kinds of structure definitions are (or may be) created by the specification but can also be defined by other implementers.

When the structure is a constraint (derivation = constraint), see Extending and Restricting Resources for the rules that apply.

Structures are able to map elements to concepts in other definition systems. Generally, these are used to map the elements to local implementation models, data paths, and concepts. However they are also used to map to other standards and published terminologies. These are the standard URIs used for common targets of the mapping:

Name Details
Logical Mapping Formal URL: http://hl7.org/fhir/logical

These mappings map logical models to their conceptual equivalents in FHIR. One example of their use is to map from the CDA and V2 coded data types to CodeableConcept and Coding so that the validator can validate them on a terminology server

ClinicalTrials.gov Mapping icon Formal URL: http://clinicaltrials.gov
Workflow Pattern icon Formal URL: http://hl7.org/fhir/workflow
CDISC Define XML 2.0 metadata standard icon Formal URL: http://www.cdisc.org/define-xml
FiveWs Pattern Mapping icon Formal URL: http://hl7.org/fhir/fivews
BRIDG 5.1 Mapping icon Formal URL: https://bridgmodel.nci.nih.gov
IDMP Mapping icon Formal URL: https://www.iso.org/obp/ui/#iso:std:iso:11615
R3-ReferalRequest Mapping icon Formal URL: http://hl7.org/fhir/rr
HL7 V2 Mapping icon Formal URL: http://hl7.org/v2
RIM Mapping icon Formal URL: http://hl7.org/v3
MDMI Referent Index Mapping icon Formal URL: http://github.com/MDMI/ReferentIndexContent
ISBT 128 Codes icon Formal URL: https://www.isbt128.org/uri/
Quality Improvement and Clinical Knowledge (QUICK) icon Formal URL: http://siframework.org/cqf
Canadian Pharmacy Association eclaims standard icon Formal URL: http://www.pharmacists.ca/
UDI Mapping icon Formal URL: http://fda.gov/UDI

UDI is a unique numeric or alphanumeric code that consists of two parts: (1) a device identifier (DI), a mandatory, fixed portion of a UDI that identifies the labeler and the specific version or model of a device, and (2) a production identifier (PI), a conditional, variable portion of a UDI that identifies one or more of the following when included on the label of a device: (2a) the lot or batch number within which a device was manufactured; (2b) the serial number of a specific device; (2c) the expiration date of a specific device; (2d) the date a specific device was manufactured; (2e) the distinct identification code required by §1271.290(c) for a human cell, tissue, or cellular and tissue-based product (HCT/P) regulated as a device.

Quality Data Model icon Formal URL: http://www.healthit.gov/quality-data-model
IHE Data Element Exchange (DEX) icon Formal URL: http://ihe.net/data-element-exchange
SNOMED CT Attribute Binding icon Formal URL: http://snomed.org/attributebinding

Attribute bindings link coded data elements in FHIR resources to a corresponding attribute in the SNOMED CT concept model. These bindings help to support:

  • clarifying the intended meaning of the data element
  • Quality checking the alignment between FHIR resource design and any coresponding SNOMED CT concept model
  • Composition and decomposition of data instances by indicating the SNOMED CT concept model attribute whose value may be used to decompose a precoordinated concept into this data element
vCard Mapping icon Formal URL: http://w3.org/vcard
Open EHR Archetype Mapping icon Formal URL: http://openehr.org
ServD icon Formal URL: http://www.omg.org/spec/ServD/1.0/
FHIR Provenance Mapping icon Formal URL: http://hl7.org/fhir/provenance
FHIR Consent Mapping icon Formal URL: http://hl7.org/fhir/consent
Mapping to NCPDP SCRIPT 10.6 icon Formal URL: http://ncpdp.org/SCRIPT10_6
FHIR Composition icon Formal URL: http://hl7.org/fhir/composition
IHE Structured Data Capture icon Formal URL: http://siframework.org/ihe-sdc-profile
IDMP Mapping (Substance) icon Formal URL: https://www.iso.org/obp/ui/#iso:std:iso:11238
Canadian Dental Association eclaims standard icon Formal URL: http://www.cda-adc.ca/en/services/cdanet/
XDS metadata equivalent icon Formal URL: https://profiles.ihe.net/ITI/TF/Volume3
SNOMED CT Concept Domain Binding icon Formal URL: http://snomed.info/conceptdomain

Concept domain bindings link a resource or an element to a set of SNOMED CT concepts that represent the intended semantics of the instances (whether or not SNOMED CT is used to encode that data element). This set of concepts is represented using a SNOMED CT expression constraint. Note that the 'Concept domain binding' may be a superset of the 'value set binding'. These bindings help to support:

  • Quality checking FHIR resources by ensuring that (a) the intended semantics of the instances matches the valid range of the corresponding SNOMED CT attribute, and (b) the intended value set is appropriate for the intended semantics of the instances
  • Semantic checking of data instances by helping to detect potential inconsistencies caused by overlap between the semantics incorporated in two concept domains
ISO/IEEE 11073-10207 icon Formal URL: urn:iso:std:iso:11073:10207
ISO 11179 icon Formal URL: http://metadata-standards.org/11179/

These mappings are included to indicate where properties of the data elements defined by the FHIR specification relate to similar fields in the ISO 11179 specification.

Mapping to Quality Improvement Domain Analysis Model icon Formal URL: http://hl7.org/qidam
Interface Pattern icon Formal URL: http://hl7.org/fhir/interface
V3 Pharmacy Dispense RMIM icon Formal URL: http://www.hl7.org/v3/PORX_RM020070UV
DICOM Tag Mapping icon Formal URL: http://nema.org/dicom
Equivalent CAP Code icon Formal URL: http://cap.org/ecc
CDA (R2) icon Formal URL: http://hl7.org/v3/cda
DICOM Tag Mapping icon Formal URL: https://dicomstandard.org/current
FHIR DocumentReference icon Formal URL: http://hl7.org/fhir/documentreference
ISO/IEEE 11073-10201 icon Formal URL: urn:iso:std:iso:11073:10201
ISO/IEEE 11073-20701: Service oriented medical device exchange architecture and protocol binding icon Formal URL: urn:iso:std:iso:11073:20701
FHIR AuditEvent Mapping icon Formal URL: http://hl7.org/fhir/auditevent
W3C PROV icon Formal URL: http://www.w3.org/ns/prov

The provenance resource is based on known practices in the HL7 implementation space, particularly those found in the v2 EVN segment, the v3 ControlAct Wrapper, the CDA header, and IHE ATNA. The conceptual model underlying the design is the W3C provenance Specification icon . Though the content and format of the resource is designed to meet specific requirements for FHIR, all the parts of the resource are formally mapped to the PROV-O specification, and FHIR resources can be transformed to their W3C PROV equivalent.

Ontological RIM Mapping icon Formal URL: http://hl7.org/orim
LOINC code for the element icon Formal URL: http://loinc.org
iCalendar icon Formal URL: http://ietf.org/rfc/2445

StructureDefinitions are used to define the basic structures of FHIR: data types, resources, extensions, and profiles. The same definition structure can also be used to define any arbitrary structures that are a directed acyclic graph with typed nodes, where the primitive types are those defined by the FHIR specification.

This technique has many uses:

  • Describing any arbitrary content model
  • Describing existing HL7 content models (e.g. v2, CDA) using FHIR
  • Describing common design patterns used in FHIR
  • Defining a content model to support the mapping language

Additional resources are defined by StructureDefinition resources, following these rules:

  • The canonical URL of the definition is in some other canonical space than http://hl7.org/fhir
  • The fhirVersion SHALL be 6.0.0 or a subsequent published version of FHIR
  • The kind SHALL be resource
  • abstract SHALL be false
  • The type SHALL match the canonical URL exactly
  • The baseDefinition SHALL be a direct reference to one of the abstract resources published by this specification (Resource, DomainResource, CanonicalResource or MetadataResource)
  • The derivation SHALL be specialization
  • The root of the element path SHALL be the tail of the canonical URL
  • The root of the element SHOULD be the name assigned by HL7 to the resource

Here is an example with other properties removed:

{
  "resourceType" : "StructureDefinition",
  "url" : "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition",
  "fhirVersion" : "6.0.0",
  "kind" : "resource",
  "abstract" : false,
  "type" : "http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition",
  "baseDefinition" : "http://hl7.org/fhir/StructureDefinition/CanonicalResource",
  "derivation" : "specialization",
  "differential" : {
    "element" : [{
      "path" : "ViewDefinition",
      // snip
    }]
  }
}

Once defined, additional resources are profiled like any other resource.

See general note to balloters about Additional resources

Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

Name Type Description Expression In Common
abstract token Whether the structure is abstract StructureDefinition.abstract
base reference Definition that this type is constrained/specialized from StructureDefinition.baseDefinition
(StructureDefinition)
base-path token Path that identifies the base element StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path
context token A use context assigned to the structure definition (StructureDefinition.useContext.value.ofType(CodeableConcept)) 30 Resources
context-quantity quantity A quantity- or range-valued use context assigned to the structure definition (StructureDefinition.useContext.value.ofType(Quantity)) | (StructureDefinition.useContext.value.ofType(Range)) 30 Resources
context-type TU token A type of use context assigned to the structure definition StructureDefinition.useContext.code 30 Resources
context-type-quantity TU composite A use context type and quantity- or range-based value assigned to the structure definition On StructureDefinition.useContext:
  context-type: code
  context-quantity: value.ofType(Quantity) | value.ofType(Range)
30 Resources
context-type-value TU composite A use context type and value assigned to the structure definition On StructureDefinition.useContext:
  context-type: code
  context: value.ofType(CodeableConcept)
30 Resources
date date The structure definition publication date StructureDefinition.date 31 Resources
derivation token specialization | constraint - How relates to base definition StructureDefinition.derivation
description string The description of the structure definition StructureDefinition.description 29 Resources
experimental token For testing only - never for real usage StructureDefinition.experimental
ext-context composite An extension context assigned to the structure definition On StructureDefinition.context:
  ext-context-type: type
  ext-context-expression: expression
ext-context-expression token An expression of extension context assigned to the structure definition StructureDefinition.context.expression
ext-context-type token A type of extension context assigned to the structure definition StructureDefinition.context.type
identifier token External identifier for the structure definition StructureDefinition.identifier 35 Resources
jurisdiction token Intended jurisdiction for the structure definition StructureDefinition.jurisdiction 27 Resources
keyword XD token A code for the StructureDefinition StructureDefinition.keyword
kind token primitive-type | complex-type | resource | logical StructureDefinition.kind
name string Computationally friendly name of the structure definition StructureDefinition.name 28 Resources
path token A path that is constrained in the StructureDefinition StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path
publisher string Name of the publisher of the structure definition StructureDefinition.publisher 31 Resources
status token The current status of the structure definition StructureDefinition.status 35 Resources
title string The human-friendly name of the structure definition StructureDefinition.title 28 Resources
type uri Type defined or constrained by this structure StructureDefinition.type
url uri The uri that identifies the structure definition StructureDefinition.url 34 Resources
valueset reference A vocabulary binding reference StructureDefinition.snapshot.element.binding.valueSet
(ValueSet)
version token The business version of the structure definition StructureDefinition.version 32 Resources