This page is part of the FHIR Specification (v5.0.0-snapshot3: R5 Snapshot #3, to support Connectathon 32). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2
FHIR Infrastructure Work Group | Maturity Level: N | Normative (from v4.0.0) | Security Category: Anonymous | Compartments: Not linked to any 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.
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 when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure author manually and the value should be a timestamp. 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 |
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:
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
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 label, code or 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 | Σ | 1..1 | uri | Canonical identifier for this structure definition, represented as a URI (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the structure definition |
version | Σ | 0..1 | string | Business version of the structure definition |
versionAlgorithm[x] | Σ | 0..1 | How to compare versions 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 PublicationStatus (Required) |
experimental | Σ | 0..1 | boolean | For testing purposes, not 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 | Σ | 0..* | CodeableConcept | Intended jurisdiction for structure definition (if applicable) 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 | T | 0..1 | string | Copyright holder and year(s) |
keyword | ΣXD | 0..* | Coding | Assist with indexing and finding Structure Definition Use Codes / Keywords (Extensible) |
fhirVersion | Σ | 0..1 | code | FHIR Version this StructureDefinition targets 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 | Σ | 1..1 | code | primitive-type | complex-type | resource | logical StructureDefinitionKind (Required) |
abstract | Σ | 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 ExtensionContextType (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 All FHIR Types (Extensible) |
baseDefinition | ΣC | 0..1 | canonical(StructureDefinition) | Definition that this type is constrained/specialized from |
derivation | Σ | 0..1 | code | specialization | constraint - How relates to base definition TypeDerivationRule (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 | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) | |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<StructureDefinition xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure definition --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 1..1 Name for this structure definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[code]"/><!-- 0..1 FHIR Version this StructureDefinition targets --> <mapping> <!-- 0..* External specification that the content is mapped to --> <identity value="[id]"/><!-- 1..1 Internal id when this mapping is used --> <uri value="[uri]"/><!-- I 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- I 0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. --> </mapping> <kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- 1..1 Whether the structure is abstract --> <context> <!-- I 0..* If an extension, where it can be used in instances --> <type value="[code]"/><!-- 1..1 fhirpath | element | extension --> <expression value="[string]"/><!-- 1..1 Where the extension can be used in instances --> </context> <contextInvariant value="[string]"/><!-- I 0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!-- I 1..1 Type defined or constrained by this structure --> <baseDefinition><!-- I 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- I 0..1 Snapshot view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!-- I 0..1 Differential view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{ "resourceType" : "StructureDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // R! Canonical identifier for this structure definition, represented as a URI (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the structure definition "version" : "<string>", // Business version of the structure definition // versionAlgorithm[x]: How to compare versions. One of these 2: "versionAlgorithmString" : "<string>", "versionAlgorithmCoding" : { Coding }, "name" : "<string>", // I R! Name for this structure definition (computer friendly) "title" : "<string>", // Name for this structure definition (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date last changed "publisher" : "<string>", // Name of the publisher/steward (organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "description" : "<markdown>", // Natural language description of the structure definition "useContext" : [{ UsageContext }], // The context that the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable) "purpose" : "<markdown>", // Why this structure definition is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "copyrightLabel" : "<string>", // Copyright holder and year(s) "keyword" : [{ Coding }], // Assist with indexing and finding "fhirVersion" : "<code>", // FHIR Version this StructureDefinition targets "mapping" : [{ // External specification that the content is mapped to "identity" : "<id>", // R! Internal id when this mapping is used "uri" : "<uri>", // I Identifies what this mapping refers to "name" : "<string>", // I Names what this mapping refers to "comment" : "<string>" // Versions, Issues, Scope limitations etc. }], "kind" : "<code>", // R! primitive-type | complex-type | resource | logical "abstract" : <boolean>, // R! Whether the structure is abstract "context" : [{ // I If an extension, where it can be used in instances "type" : "<code>", // R! fhirpath | element | extension "expression" : "<string>" // R! Where the extension can be used in instances }], "contextInvariant" : ["<string>"], // I FHIRPath invariants - when the extension can be used "type" : "<uri>", // I R! Type defined or constrained by this structure "baseDefinition" : "<canonical(StructureDefinition)>", // I Definition that this type is constrained/specialized from "derivation" : "<code>", // specialization | constraint - How relates to base definition "snapshot" : { // I Snapshot view of the structure "element" : [{ ElementDefinition }] // I R! Definition of elements in the resource (if no StructureDefinition) }, "differential" : { // I Differential view of the structure "element" : [{ ElementDefinition }] // R! Definition of elements in the resource (if no StructureDefinition) } }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:StructureDefinition; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:StructureDefinition.url [ uri ]; # 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition # StructureDefinition.versionAlgorithm[x] : 0..1 How to compare versions. One of these 2 fhir:StructureDefinition.versionAlgorithmString [ string ] fhir:StructureDefinition.versionAlgorithmCoding [ Coding ] fhir:StructureDefinition.name [ string ]; # 1..1 I Name for this structure definition (computer friendly) fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly) fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date last changed fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable) fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureDefinition.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s) fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Assist with indexing and finding fhir:StructureDefinition.fhirVersion [ code ]; # 0..1 FHIR Version this StructureDefinition targets fhir:StructureDefinition.mapping [ # 0..* External specification that the content is mapped to fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 I Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 I Names what this mapping refers to fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc. ], ...; fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Whether the structure is abstract fhir:StructureDefinition.context [ # 0..* I If an extension, where it can be used in instances fhir:StructureDefinition.context.type [ code ]; # 1..1 fhirpath | element | extension fhir:StructureDefinition.context.expression [ string ]; # 1..1 Where the extension can be used in instances ], ...; fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* I FHIRPath invariants - when the extension can be used fhir:StructureDefinition.type [ uri ]; # 1..1 I Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ canonical(StructureDefinition) ]; # 0..1 I Definition that this type is constrained/specialized from fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definition fhir:StructureDefinition.snapshot [ # 0..1 I Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 I Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes since R4
StructureDefinition | |
StructureDefinition.versionAlgorithm[x] |
|
StructureDefinition.copyrightLabel |
|
StructureDefinition.type |
|
See the Full Difference for further information
This analysis is available as XML or JSON.
See R3 <--> R4 Conversion Maps (status = 206 tests that all execute ok. 4 fail round-trip testing and 206 r3 resources are invalid (0 errors).)
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
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 label, code or 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 | Σ | 1..1 | uri | Canonical identifier for this structure definition, represented as a URI (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the structure definition |
version | Σ | 0..1 | string | Business version of the structure definition |
versionAlgorithm[x] | Σ | 0..1 | How to compare versions 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 PublicationStatus (Required) |
experimental | Σ | 0..1 | boolean | For testing purposes, not 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 | Σ | 0..* | CodeableConcept | Intended jurisdiction for structure definition (if applicable) 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 | T | 0..1 | string | Copyright holder and year(s) |
keyword | ΣXD | 0..* | Coding | Assist with indexing and finding Structure Definition Use Codes / Keywords (Extensible) |
fhirVersion | Σ | 0..1 | code | FHIR Version this StructureDefinition targets 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 | Σ | 1..1 | code | primitive-type | complex-type | resource | logical StructureDefinitionKind (Required) |
abstract | Σ | 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 ExtensionContextType (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 All FHIR Types (Extensible) |
baseDefinition | ΣC | 0..1 | canonical(StructureDefinition) | Definition that this type is constrained/specialized from |
derivation | Σ | 0..1 | code | specialization | constraint - How relates to base definition TypeDerivationRule (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 | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) | |
Documentation for this format |
See the Extensions for this resource
XML Template
<StructureDefinition xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure definition --> <versionAlgorithm[x]><!-- 0..1 string|Coding How to compare versions --></versionAlgorithm[x]> <name value="[string]"/><!-- I 1..1 Name for this structure definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher/steward (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[code]"/><!-- 0..1 FHIR Version this StructureDefinition targets --> <mapping> <!-- 0..* External specification that the content is mapped to --> <identity value="[id]"/><!-- 1..1 Internal id when this mapping is used --> <uri value="[uri]"/><!-- I 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- I 0..1 Names what this mapping refers to --> <comment value="[string]"/><!-- 0..1 Versions, Issues, Scope limitations etc. --> </mapping> <kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical --> <abstract value="[boolean]"/><!-- 1..1 Whether the structure is abstract --> <context> <!-- I 0..* If an extension, where it can be used in instances --> <type value="[code]"/><!-- 1..1 fhirpath | element | extension --> <expression value="[string]"/><!-- 1..1 Where the extension can be used in instances --> </context> <contextInvariant value="[string]"/><!-- I 0..* FHIRPath invariants - when the extension can be used --> <type value="[uri]"/><!-- I 1..1 Type defined or constrained by this structure --> <baseDefinition><!-- I 0..1 canonical(StructureDefinition) Definition that this type is constrained/specialized from --></baseDefinition> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- I 0..1 Snapshot view of the structure --> <element><!-- I 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!-- I 0..1 Differential view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </differential> </StructureDefinition>
JSON Template
{ "resourceType" : "StructureDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // R! Canonical identifier for this structure definition, represented as a URI (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the structure definition "version" : "<string>", // Business version of the structure definition // versionAlgorithm[x]: How to compare versions. One of these 2: "versionAlgorithmString" : "<string>", "versionAlgorithmCoding" : { Coding }, "name" : "<string>", // I R! Name for this structure definition (computer friendly) "title" : "<string>", // Name for this structure definition (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date last changed "publisher" : "<string>", // Name of the publisher/steward (organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "description" : "<markdown>", // Natural language description of the structure definition "useContext" : [{ UsageContext }], // The context that the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable) "purpose" : "<markdown>", // Why this structure definition is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "copyrightLabel" : "<string>", // Copyright holder and year(s) "keyword" : [{ Coding }], // Assist with indexing and finding "fhirVersion" : "<code>", // FHIR Version this StructureDefinition targets "mapping" : [{ // External specification that the content is mapped to "identity" : "<id>", // R! Internal id when this mapping is used "uri" : "<uri>", // I Identifies what this mapping refers to "name" : "<string>", // I Names what this mapping refers to "comment" : "<string>" // Versions, Issues, Scope limitations etc. }], "kind" : "<code>", // R! primitive-type | complex-type | resource | logical "abstract" : <boolean>, // R! Whether the structure is abstract "context" : [{ // I If an extension, where it can be used in instances "type" : "<code>", // R! fhirpath | element | extension "expression" : "<string>" // R! Where the extension can be used in instances }], "contextInvariant" : ["<string>"], // I FHIRPath invariants - when the extension can be used "type" : "<uri>", // I R! Type defined or constrained by this structure "baseDefinition" : "<canonical(StructureDefinition)>", // I Definition that this type is constrained/specialized from "derivation" : "<code>", // specialization | constraint - How relates to base definition "snapshot" : { // I Snapshot view of the structure "element" : [{ ElementDefinition }] // I R! Definition of elements in the resource (if no StructureDefinition) }, "differential" : { // I Differential view of the structure "element" : [{ ElementDefinition }] // R! Definition of elements in the resource (if no StructureDefinition) } }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:StructureDefinition; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:StructureDefinition.url [ uri ]; # 1..1 Canonical identifier for this structure definition, represented as a URI (globally unique) fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition # StructureDefinition.versionAlgorithm[x] : 0..1 How to compare versions. One of these 2 fhir:StructureDefinition.versionAlgorithmString [ string ] fhir:StructureDefinition.versionAlgorithmCoding [ Coding ] fhir:StructureDefinition.name [ string ]; # 1..1 I Name for this structure definition (computer friendly) fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly) fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date last changed fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable) fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:StructureDefinition.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s) fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Assist with indexing and finding fhir:StructureDefinition.fhirVersion [ code ]; # 0..1 FHIR Version this StructureDefinition targets fhir:StructureDefinition.mapping [ # 0..* External specification that the content is mapped to fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Internal id when this mapping is used fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 I Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 I Names what this mapping refers to fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Versions, Issues, Scope limitations etc. ], ...; fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Whether the structure is abstract fhir:StructureDefinition.context [ # 0..* I If an extension, where it can be used in instances fhir:StructureDefinition.context.type [ code ]; # 1..1 fhirpath | element | extension fhir:StructureDefinition.context.expression [ string ]; # 1..1 Where the extension can be used in instances ], ...; fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* I FHIRPath invariants - when the extension can be used fhir:StructureDefinition.type [ uri ]; # 1..1 I Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ canonical(StructureDefinition) ]; # 0..1 I Definition that this type is constrained/specialized from fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definition fhir:StructureDefinition.snapshot [ # 0..1 I Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* I Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 I Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes since Release 4
StructureDefinition | |
StructureDefinition.versionAlgorithm[x] |
|
StructureDefinition.copyrightLabel |
|
StructureDefinition.type |
|
See the Full Difference for further information
This analysis is available as XML or JSON.
See R3 <--> R4 Conversion Maps (status = 206 tests that all execute ok. 4 fail round-trip testing and 206 r3 resources are invalid (0 errors).)
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis
Path | Definition | Type | Reference |
---|---|---|---|
StructureDefinition.versionAlgorithm[x] | Indicates the mechanism used to compare versions to determine which is more current. | Extensible | VersionAlgorithm |
StructureDefinition.status | The lifecycle status of an artifact. | Required | PublicationStatus |
StructureDefinition.jurisdiction | 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 while the codes for "supra-national" regions are from UN Standard country or area codes for statistical use (M49) . | Extensible | JurisdictionValueSet |
StructureDefinition.keyword | Structure Definition Use Codes / Keywords | Extensible | DefinitionUseCodes (a valid code from Structure Definition Use Codes / Keywords ) |
StructureDefinition.fhirVersion | All published FHIR Versions. | Required | FHIRVersion |
StructureDefinition.kind | Defines the type of structure that a definition is describing. | Required | StructureDefinitionKind |
StructureDefinition.context.type | How an extension context is interpreted. | Required | ExtensionContextType |
StructureDefinition.type | All FHIR types | Extensible | FHIRTypes (a valid code from All FHIR Types) |
StructureDefinition.derivation | How a type relates to its baseDefinition. | Required | TypeDerivationRule |
UniqueKey | Level | Location | Description | Expression |
cnl-0 | Warning | (base) | Name should be usable as an identifier for the module by machine processing applications such as code generation | name.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){1,254}') |
sdf-1 | Rule | (base) | Element paths must be unique unless the structure is a constraint | derivation = 'constraint' or snapshot.element.select(path).isDistinct() |
sdf-15a | Rule | (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() |
sdf-2 | Rule | StructureDefinition.mapping | Must have at least a name or a uri (or both) | name.exists() or uri.exists() |
sdf-3 | Rule | StructureDefinition.snapshot | Each 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()) |
sdf-4 | Rule | (base) | If the structure is not abstract, then there SHALL be a baseDefinition | abstract = true or baseDefinition.exists() |
sdf-5 | Rule | (base) | If the structure defines an extension then the structure must have context information | type != 'Extension' or derivation = 'specialization' or (context.exists()) |
sdf-6 | Rule | (base) | A structure must have either a differential, or a snapshot (or both) | snapshot.exists() or differential.exists() |
sdf-8 | Rule | StructureDefinition.snapshot | All 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&'.')) |
sdf-8b | Rule | StructureDefinition.snapshot | All snapshot elements must have a base definition | element.all(base.exists()) |
sdf-9 | Rule | (base) | In any snapshot or differential, no label, code or requirements on an element without a "." in the path (e.g. the first element) | children().element.where(path.contains('.').not()).label.empty() and children().element.where(path.contains('.').not()).code.empty() and children().element.where(path.contains('.').not()).requirements.empty() |
sdf-10 | Rule | StructureDefinition.snapshot.element | provide either a binding reference or a description (or both) | binding.empty() or binding.valueSet.exists() or binding.description.exists() |
sdf-11 | Rule | (base) | If there's a type, its content must match the path name in the first element of a snapshot | kind != 'logical' implies snapshot.empty() or snapshot.element.first().path = type |
sdf-14 | Rule | (base) | All element definitions must have an id | snapshot.element.all(id.exists()) and differential.element.all(id.exists()) |
sdf-15 | Rule | (base) | The first element in a snapshot has no type unless model is a logical model. | kind!='logical' implies snapshot.element.first().type.empty() |
sdf-16 | Rule | (base) | All element definitions must have unique ids (snapshot) | snapshot.element.all(id.exists()) and snapshot.element.id.trace('ids').isDistinct() |
sdf-17 | Rule | (base) | All element definitions must have unique ids (diff) | differential.element.all(id.exists()) and differential.element.id.trace('ids').isDistinct() |
sdf-18 | Rule | (base) | Context Invariants can only be used for extensions | contextInvariant.exists() implies type = 'Extension' |
sdf-19 | Rule | (base) | FHIR Specification models only use FHIR defined types | url.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]+$')) |
sdf-20 | Rule | StructureDefinition.differential | No slicing on the root element | element.where(path.contains('.').not()).slicing.empty() |
sdf-21 | Rule | (base) | Default values can only be specified on specializations | differential.element.defaultValue.exists() implies (derivation = 'specialization') |
sdf-22 | Rule | (base) | FHIR Specification models never have default values | url.startsWith('http://hl7.org/fhir/StructureDefinition') implies (snapshot.element.defaultValue.empty() and differential.element.defaultValue.empty()) |
sdf-23 | Rule | (base) | No slice name on root | (snapshot | differential).element.all(path.contains('.').not() implies sliceName.empty()) |
sdf-24 | Rule | StructureDefinition.snapshot | For CodeableReference elements, target profiles must be listed on the CodeableReference, not the CodeableReference.reference | element.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() |
sdf-25 | Rule | StructureDefinition.snapshot | For CodeableReference elements, bindings must be listed on the CodeableReference, not the CodeableReference.concept | element.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() |
sdf-26 | Guideline | StructureDefinition.snapshot | The root element of a profile should not have mustSupport = true | snapshot.where(element[0].mustSupport='true').exists().not() This is (only) a best practice guideline because:
|
sdf-27 | Rule | (base) | If there's a base definition, there must be a derivation | baseDefinition.exists() implies derivation.exists() |
sdf-28 | Rule | StructureDefinition.snapshot.element | If there are no discriminators, there must be a definition | slicing.exists().not() or (slicing.discriminator.exists() or slicing.description.exists()) |
sdf-29 | Warning | (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 (specialization = 'derivation')) implies differential.element.where((min != 0 and min != 1) or (max != '1' and max != '*')).empty() |
sdf-8a | Rule | StructureDefinition.differential | 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 | (%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('\\..*','')&'.'))) |
element.path
provides the overall structure.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 profiling a resource and only one type is specified, the name of the element is changed to include the type instead of '[x]'.as
operator.
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:
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Quantity", "name": "Quantity", "kind": "complex-type", "abstract" : false, "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element" }
{ "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" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Patient", "name": "Patient", "kind": "resource", "abstract" : false, "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/clinicaldocument", "name": "Clinical Document Profile for Composition", "kind": "resource", "type": "Composition", "abstract" : false, "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Composition" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Extension", "name": "Extension", "kind": "complex-type", "abstract" : false, "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element" }
{ "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" }
{ "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, "abstract" : false, "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race" }
{ "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" }
{ "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" }
{ "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 | Formal URL: http://clinicaltrials.gov |
Workflow Pattern | Formal URL: http://hl7.org/fhir/workflow |
CDISC Define XML 2.0 metadata standard | Formal URL: http://www.cdisc.org/define-xml |
FHIR Consent Mapping | Formal URL: http://hl7.org/fhir/consent |
Mapping to NCPDP SCRIPT 10.6 | Formal URL: http://ncpdp.org/SCRIPT10_6 |
FiveWs Pattern Mapping | Formal URL: http://hl7.org/fhir/fivews |
BRIDG 5.1 Mapping | Formal URL: https://bridgmodel.nci.nih.gov |
FHIR Composition | Formal URL: http://hl7.org/fhir/composition |
IHE Structured Data Capture | Formal URL: http://siframework.org/ihe-sdc-profile |
Canadian Dental Association eclaims standard | Formal URL: http://www.cda-adc.ca/en/services/cdanet/ |
SNOMED CT Concept Domain Binding | 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:
|
R3-ReferalRequest Mapping | Formal URL: http://hl7.org/fhir/rr |
HL7 v2 Mapping | Formal URL: http://hl7.org/v2 |
RIM Mapping | Formal URL: http://hl7.org/v3 |
ISO/IEEE 11073-10207 | Formal URL: urn:iso:std:iso:11073:10207 |
ISO 11179 | 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. |
IDMP Mapping | Formal URL: https://en.wikipedia.org/wiki/Identification_of_medicinal_products |
Mapping to Quality Improvement Domain Analysis Model | Formal URL: http://hl7.org/qidam |
Interface Pattern | Formal URL: http://hl7.org/fhir/interface |
DICOM Tag Mapping | Formal URL: http://nema.org/dicom |
MDMI Referent Index Mapping | Formal URL: http://github.com/MDMI/ReferentIndexContent |
V3 Pharmacy Dispense RMIM | Formal URL: http://www.hl7.org/v3/PORX_RM020070UV |
ISBT 128 Codes | Formal URL: https://www.isbt128.org/uri/ |
Equivalent CAP Code | Formal URL: http://cap.org/ecc |
CDA (R2) | Formal URL: http://hl7.org/v3/cda |
Quality Improvement and Clinical Knowledge (QUICK) | Formal URL: http://siframework.org/cqf |
FHIR DocumentReference | Formal URL: http://hl7.org/fhir/documentreference |
ISO/IEEE 11073-10201 | Formal URL: urn:iso:std:iso:11073:10201 |
Canadian Pharmacy Association eclaims standard | Formal URL: http://www.pharmacists.ca/ |
UDI Mapping | 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 | Formal URL: http://www.healthit.gov/quality-data-model |
XDS metadata equivalent | Formal URL: https://profiles.ihe.net/ITI/HIE-Whitepaper |
FHIR AuditEvent Mapping | Formal URL: http://hl7.org/fhir/auditevent |
IHE Data Element Exchange (DEX) | Formal URL: http://ihe.net/data-element-exchange |
SNOMED CT Attribute Binding | 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:
|
W3C PROV | 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 . 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 | Formal URL: http://hl7.org/orim |
LOINC code for the element | Formal URL: http://loinc.org |
vCard Mapping | Formal URL: http://w3.org/vcard |
Open EHR Archetype Mapping | Formal URL: http://openehr.org |
ServD | Formal URL: http://www.omg.org/spec/ServD/1.0/ |
FHIR Provenance Mapping | Formal URL: http://hl7.org/fhir/provenance |
iCalendar | 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:
Search parameters for 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 as CodeableConcept) | 30 Resources |
context-quantity | quantity | A quantity- or range-valued use context assigned to the structure definition | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as 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 | 30 Resources |
derivation | token | specialization | constraint - How relates to base definition | StructureDefinition.derivation | |
description | string | The description of the structure definition | StructureDefinition.description | 28 Resources |
experimental | token | For testing purposes, not 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 | 28 Resources |
jurisdiction | token | Intended jurisdiction for the structure definition | StructureDefinition.jurisdiction | 26 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 | 26 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 | 30 Resources |
status | token | The current status of the structure definition | StructureDefinition.status | 34 Resources |
title | string | The human-friendly name of the structure definition | StructureDefinition.title | 27 Resources |
type | uri | Type defined or constrained by this structure | StructureDefinition.type | |
url | uri | The uri that identifies the structure definition | StructureDefinition.url | 33 Resources |
valueset | reference | A vocabulary binding reference | StructureDefinition.snapshot.element.binding.valueSet (ValueSet) | |
version | token | The business version of the structure definition | StructureDefinition.version | 30 Resources |