This page is part of the FHIR Specification (v1.8.0: STU 3 Draft). 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: 2 | 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 profile 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 |
name | A free text natural language name identifying the structure |
publisher | Details of the individual or organization who accepts responsibility for publishing the structure. This helps establish the "authority/credibility" of the structure. |
telecom | 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 |
requirements | The Scope and Usage that this structure was created to meet |
code | A set of terms from external terminologies that may be used to assist with indexing and searching of profiles |
status | The status of the structure allows filtering of profiles 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 to be used for genuine usage |
date | The date this version of the structure was published |
fhirVersion | The version of the FHIR specification on which this structure is based. It is not necessary to specify the version, as most profiles are valid across multiple versions, and the validity of a structure against a particular version of FHIR can easily be checked by tooling. |
type | todo |
contextType | todo |
context | todo |
Notes:
This resource is referenced by CapabilityStatement, ImplementationGuide, MessageDefinition and OperationDefinition
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
StructureDefinition | I | DomainResource | Structural Definition In any snapshot or differential, no label, code or requirements on the an element without a "." in the path (e.g. the first element) Custom types can only be used in logical models All element definitions must have unique ids (snapshot) Context Invariants can only be used for extensions All element definitions must have unique ids (diff) element.base cannot appear if there is no base on the structure definition If there's a type, its content must match the path name in the first element of a snapshot All element definitions must have an id Element paths must be unique unless the structure is a constraint If the structure describes a base Resource or Type, the URL has to start with "http://hl7.org/fhir/StructureDefinition/" and the tail must match the id A structure must have either a differential, or a snapshot (or both) If the structure defines an extension then the structure must have context information If the structure is not abstract, then there SHALL be a baseDefinition | |
url | Σ | 1..1 | uri | Logical uri to reference this structure definition (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the structure definition |
version | Σ | 0..1 | string | Business version of the structure definition |
name | Σ | 1..1 | string | Name for this structure definition (Computer friendly) |
title | Σ | 0..1 | string | Name for this structure definition (Human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired PublicationStatus (Required) |
experimental | ?!Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
date | Σ | 0..1 | dateTime | Date this was last changed |
description | 0..1 | markdown | Natural language description of the structure definition | |
useContext | Σ | 0..* | UsageContext | Content intends to support these contexts |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for structure definition (if applicable) Jurisdiction ValueSet (Extensible) |
purpose | 0..1 | markdown | Why this structure definition is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
keyword | Σ | 0..* | Coding | Assist with indexing and finding Structure Definition Codes (Example) |
fhirVersion | Σ | 0..1 | id | FHIR Version this StructureDefinition targets |
mapping | I | 0..* | BackboneElement | External specification that the content is mapped to Must have at least a name or a uri (or both) |
identity | 1..1 | id | Internal id when this mapping is used | |
uri | I | 0..1 | uri | Identifies what this mapping refers to |
name | I | 0..1 | string | Names what this mapping refers to |
comments | 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 |
contextType | ΣI | 0..1 | code | resource | datatype | extension ExtensionContext (Required) |
context | ΣI | 0..* | string | Where the extension can be used in instances |
contextInvariant | ΣI | 0..* | string | FluentPath invariants - when the extension can be used |
type | ΣI | 1..1 | code | Type defined or constrained by this structure FHIRDefinedType (Extensible) |
baseDefinition | ΣI | 0..1 | uri | Definition that this type is constrained/specialized from |
derivation | ΣI | 0..1 | code | specialization | constraint - How relates to base definition TypeDerivationRule (Required) |
snapshot | I | 0..1 | BackboneElement | Snapshot view of the structure The first element in a snapshot has no type In any snapshot, all the elements must be in the specified type Each element definition in a snapshot must have a formal definition and cardinalities |
element | I | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) |
differential | I | 0..1 | BackboneElement | Differential view of the structure If the first element in a differential has no "." in the path, it has no type No slicing on the root element In any differential, all the elements must be in the specified type |
element | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) | |
Documentation for this format |
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 Logical uri to reference this structure definition (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure definition --> <name value="[string]"/><!-- 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 --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext Content intends to support these contexts --></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 --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[id]"/><!-- 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]"/><!-- 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- 0..1 Names what this mapping refers to --> <comments 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 --> <contextType value="[code]"/><!-- 0..1 resource | datatype | extension --> <context value="[string]"/><!-- 0..* Where the extension can be used in instances --> <contextInvariant value="[string]"/><!-- 0..* FluentPath invariants - when the extension can be used --> <type value="[code]"/><!-- 1..1 Type defined or constrained by this structure --> <baseDefinition value="[uri]"/><!-- 0..1 Definition that this type is constrained/specialized from --> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- 0..1 Snapshot view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!-- 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! Logical uri to reference this structure definition (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the structure definition "version" : "<string>", // Business version of the structure definition "name" : "<string>", // R! Name for this structure definition (Computer friendly) "title" : "<string>", // Name for this structure definition (Human friendly) "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "date" : "<dateTime>", // Date this was last changed "description" : "<markdown>", // Natural language description of the structure definition "useContext" : [{ UsageContext }], // Content intends to support these contexts "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable) "purpose" : "<markdown>", // Why this structure definition is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "keyword" : [{ Coding }], // Assist with indexing and finding "fhirVersion" : "<id>", // 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>", // C? Identifies what this mapping refers to "name" : "<string>", // C? Names what this mapping refers to "comments" : "<string>" // Versions, Issues, Scope limitations etc. }], "kind" : "<code>", // R! primitive-type | complex-type | resource | logical "abstract" : <boolean>, // R! Whether the structure is abstract "contextType" : "<code>", // C? resource | datatype | extension "context" : ["<string>"], // C? Where the extension can be used in instances "contextInvariant" : ["<string>"], // C? FluentPath invariants - when the extension can be used "type" : "<code>", // C? R! Type defined or constrained by this structure "baseDefinition" : "<uri>", // C? Definition that this type is constrained/specialized from "derivation" : "<code>", // C? specialization | constraint - How relates to base definition "snapshot" : { // C? Snapshot view of the structure "element" : [{ ElementDefinition }] // C? R! Definition of elements in the resource (if no StructureDefinition) }, "differential" : { // C? 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 Logical uri to reference this structure definition (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 fhir:StructureDefinition.name [ string ]; # 1..1 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 fhir:StructureDefinition.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts 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.keyword [ Coding ], ... ; # 0..* Assist with indexing and finding fhir:StructureDefinition.fhirVersion [ id ]; # 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 Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Names what this mapping refers to fhir:StructureDefinition.mapping.comments [ 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.contextType [ code ]; # 0..1 resource | datatype | extension fhir:StructureDefinition.context [ string ], ... ; # 0..* Where the extension can be used in instances fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FluentPath invariants - when the extension can be used fhir:StructureDefinition.type [ code ]; # 1..1 Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ uri ]; # 0..1 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 Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes since DSTU2
StructureDefinition | |
StructureDefinition |
Min Cardinality changed from 1 to 0 Max Cardinality changed from 1 to * |
StructureDefinition.title | added Element |
StructureDefinition.status | Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status |
StructureDefinition.experimental | Now marked as Modifier |
StructureDefinition.contact | Type changed from BackboneElement to ContactDetail |
StructureDefinition.description | Type changed from string to markdown |
StructureDefinition.useContext |
Type changed from CodeableConcept to UsageContext Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible) |
StructureDefinition.jurisdiction | added Element |
StructureDefinition.purpose | added Element |
StructureDefinition.copyright | Type changed from string to markdown |
StructureDefinition.keyword | added Element |
StructureDefinition.contextInvariant | added Element |
StructureDefinition.type |
Renamed from constrainedType to type Min Cardinality changed from 0 to 1 Change binding strength from required to extensible |
StructureDefinition.baseDefinition | Renamed from base to baseDefinition |
StructureDefinition.derivation | added Element |
StructureDefinition.display | deleted |
StructureDefinition.contact.name | deleted |
StructureDefinition.contact.telecom | deleted |
StructureDefinition.requirements | deleted |
StructureDefinition.code | deleted |
See the Full Difference for further information
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
StructureDefinition | I | DomainResource | Structural Definition In any snapshot or differential, no label, code or requirements on the an element without a "." in the path (e.g. the first element) Custom types can only be used in logical models All element definitions must have unique ids (snapshot) Context Invariants can only be used for extensions All element definitions must have unique ids (diff) element.base cannot appear if there is no base on the structure definition If there's a type, its content must match the path name in the first element of a snapshot All element definitions must have an id Element paths must be unique unless the structure is a constraint If the structure describes a base Resource or Type, the URL has to start with "http://hl7.org/fhir/StructureDefinition/" and the tail must match the id A structure must have either a differential, or a snapshot (or both) If the structure defines an extension then the structure must have context information If the structure is not abstract, then there SHALL be a baseDefinition | |
url | Σ | 1..1 | uri | Logical uri to reference this structure definition (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the structure definition |
version | Σ | 0..1 | string | Business version of the structure definition |
name | Σ | 1..1 | string | Name for this structure definition (Computer friendly) |
title | Σ | 0..1 | string | Name for this structure definition (Human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired PublicationStatus (Required) |
experimental | ?!Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
date | Σ | 0..1 | dateTime | Date this was last changed |
description | 0..1 | markdown | Natural language description of the structure definition | |
useContext | Σ | 0..* | UsageContext | Content intends to support these contexts |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for structure definition (if applicable) Jurisdiction ValueSet (Extensible) |
purpose | 0..1 | markdown | Why this structure definition is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
keyword | Σ | 0..* | Coding | Assist with indexing and finding Structure Definition Codes (Example) |
fhirVersion | Σ | 0..1 | id | FHIR Version this StructureDefinition targets |
mapping | I | 0..* | BackboneElement | External specification that the content is mapped to Must have at least a name or a uri (or both) |
identity | 1..1 | id | Internal id when this mapping is used | |
uri | I | 0..1 | uri | Identifies what this mapping refers to |
name | I | 0..1 | string | Names what this mapping refers to |
comments | 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 |
contextType | ΣI | 0..1 | code | resource | datatype | extension ExtensionContext (Required) |
context | ΣI | 0..* | string | Where the extension can be used in instances |
contextInvariant | ΣI | 0..* | string | FluentPath invariants - when the extension can be used |
type | ΣI | 1..1 | code | Type defined or constrained by this structure FHIRDefinedType (Extensible) |
baseDefinition | ΣI | 0..1 | uri | Definition that this type is constrained/specialized from |
derivation | ΣI | 0..1 | code | specialization | constraint - How relates to base definition TypeDerivationRule (Required) |
snapshot | I | 0..1 | BackboneElement | Snapshot view of the structure The first element in a snapshot has no type In any snapshot, all the elements must be in the specified type Each element definition in a snapshot must have a formal definition and cardinalities |
element | I | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) |
differential | I | 0..1 | BackboneElement | Differential view of the structure If the first element in a differential has no "." in the path, it has no type No slicing on the root element In any differential, all the elements must be in the specified type |
element | 1..* | ElementDefinition | Definition of elements in the resource (if no StructureDefinition) | |
Documentation for this format |
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 Logical uri to reference this structure definition (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the structure definition --> <name value="[string]"/><!-- 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 --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition --> <useContext><!-- 0..* UsageContext Content intends to support these contexts --></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 --> <keyword><!-- 0..* Coding Assist with indexing and finding --></keyword> <fhirVersion value="[id]"/><!-- 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]"/><!-- 0..1 Identifies what this mapping refers to --> <name value="[string]"/><!-- 0..1 Names what this mapping refers to --> <comments 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 --> <contextType value="[code]"/><!-- 0..1 resource | datatype | extension --> <context value="[string]"/><!-- 0..* Where the extension can be used in instances --> <contextInvariant value="[string]"/><!-- 0..* FluentPath invariants - when the extension can be used --> <type value="[code]"/><!-- 1..1 Type defined or constrained by this structure --> <baseDefinition value="[uri]"/><!-- 0..1 Definition that this type is constrained/specialized from --> <derivation value="[code]"/><!-- 0..1 specialization | constraint - How relates to base definition --> <snapshot> <!-- 0..1 Snapshot view of the structure --> <element><!-- 1..* ElementDefinition Definition of elements in the resource (if no StructureDefinition) --></element> </snapshot> <differential> <!-- 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! Logical uri to reference this structure definition (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the structure definition "version" : "<string>", // Business version of the structure definition "name" : "<string>", // R! Name for this structure definition (Computer friendly) "title" : "<string>", // Name for this structure definition (Human friendly) "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "date" : "<dateTime>", // Date this was last changed "description" : "<markdown>", // Natural language description of the structure definition "useContext" : [{ UsageContext }], // Content intends to support these contexts "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable) "purpose" : "<markdown>", // Why this structure definition is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "keyword" : [{ Coding }], // Assist with indexing and finding "fhirVersion" : "<id>", // 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>", // C? Identifies what this mapping refers to "name" : "<string>", // C? Names what this mapping refers to "comments" : "<string>" // Versions, Issues, Scope limitations etc. }], "kind" : "<code>", // R! primitive-type | complex-type | resource | logical "abstract" : <boolean>, // R! Whether the structure is abstract "contextType" : "<code>", // C? resource | datatype | extension "context" : ["<string>"], // C? Where the extension can be used in instances "contextInvariant" : ["<string>"], // C? FluentPath invariants - when the extension can be used "type" : "<code>", // C? R! Type defined or constrained by this structure "baseDefinition" : "<uri>", // C? Definition that this type is constrained/specialized from "derivation" : "<code>", // C? specialization | constraint - How relates to base definition "snapshot" : { // C? Snapshot view of the structure "element" : [{ ElementDefinition }] // C? R! Definition of elements in the resource (if no StructureDefinition) }, "differential" : { // C? 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 Logical uri to reference this structure definition (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 fhir:StructureDefinition.name [ string ]; # 1..1 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 fhir:StructureDefinition.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts 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.keyword [ Coding ], ... ; # 0..* Assist with indexing and finding fhir:StructureDefinition.fhirVersion [ id ]; # 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 Identifies what this mapping refers to fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Names what this mapping refers to fhir:StructureDefinition.mapping.comments [ 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.contextType [ code ]; # 0..1 resource | datatype | extension fhir:StructureDefinition.context [ string ], ... ; # 0..* Where the extension can be used in instances fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FluentPath invariants - when the extension can be used fhir:StructureDefinition.type [ code ]; # 1..1 Type defined or constrained by this structure fhir:StructureDefinition.baseDefinition [ uri ]; # 0..1 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 Snapshot view of the structure fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; fhir:StructureDefinition.differential [ # 0..1 Differential view of the structure fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Definition of elements in the resource (if no StructureDefinition) ]; ]
Changes since DSTU2
StructureDefinition | |
StructureDefinition |
Min Cardinality changed from 1 to 0 Max Cardinality changed from 1 to * |
StructureDefinition.title | added Element |
StructureDefinition.status | Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status |
StructureDefinition.experimental | Now marked as Modifier |
StructureDefinition.contact | Type changed from BackboneElement to ContactDetail |
StructureDefinition.description | Type changed from string to markdown |
StructureDefinition.useContext |
Type changed from CodeableConcept to UsageContext Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible) |
StructureDefinition.jurisdiction | added Element |
StructureDefinition.purpose | added Element |
StructureDefinition.copyright | Type changed from string to markdown |
StructureDefinition.keyword | added Element |
StructureDefinition.contextInvariant | added Element |
StructureDefinition.type |
Renamed from constrainedType to type Min Cardinality changed from 0 to 1 Change binding strength from required to extensible |
StructureDefinition.baseDefinition | Renamed from base to baseDefinition |
StructureDefinition.derivation | added Element |
StructureDefinition.display | deleted |
StructureDefinition.contact.name | deleted |
StructureDefinition.contact.telecom | deleted |
StructureDefinition.requirements | deleted |
StructureDefinition.code | deleted |
See the Full Difference for further information
Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle), JSON-LD (for RDF as JSON-LD),
Path | Definition | Type | Reference |
---|---|---|---|
StructureDefinition.status | The lifecycle status of a Value Set or Concept Map. | Required | PublicationStatus |
StructureDefinition.jurisdiction | Countries and regions within which this artifact is targeted for use | Extensible | Jurisdiction ValueSet |
StructureDefinition.keyword | Codes for the meaning of the defined structure (SNOMED CT and LOINC codes, as an example). | Example | Structure Definition Codes |
StructureDefinition.kind | Defines the type of structure that a definition is describing. | Required | StructureDefinitionKind |
StructureDefinition.contextType | How an extension context is interpreted. | Required | ExtensionContext |
StructureDefinition.type | Either a resource or a data type, including logical model types | Extensible | FHIRDefinedType |
StructureDefinition.derivation | How a type relates to it's baseDefinition. | Required | TypeDerivationRule |
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]".
When profiling a resource, and only one type is specified, the names of element is changed to include the type instead of '[x]'.is
operator .
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
, constrainedType
, base
, and url
,
using this basic pattern:
{ "url": the identity of this structure definition, "kind": (datatype | resource), "type": the type being constrained (if it's a constraint) "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": "datatype", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Money", "name": "Money", "kind": "datatype", "type": "Quantity", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Patient", "name": "Patient", "kind": "resource", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/daf-patient", "name": "U.S. Data Access Framework (DAF) Patient Profile", "kind": "resource", "type": "Patient", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Patient" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/Extension", "name": "Extension", "kind": "datatype", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element" }
{ "resourceType": "StructureDefinition", "url": "http://hl7.org/fhir/StructureDefinition/us-core-race", "name": "A category of humans sharing history, origin or nationality", "kind": "datatype", "type": "Extension", "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": "datatype", "type": "Extension", "baseDefinition": "http://hl7.org/fhir/StructureDefinition/us-core-race" }
On this list, structure definitions of type 1, 3, and 5 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 (constrainedType is not null), 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:
http://ncpdp.org/SCRIPT10_6 | Mapping to NCPDP SCRIPT 10.6 |
http://snomed.info/conceptdomain | SNOMED CT Concept Domain Binding |
http://hl7.org/v2 | HL7 v2 Mapping |
http://hl7.org/v3 | RIM Mapping |
http://metadata-standards.org/11179/ | ISO 11179 |
http://snomed.info/sct | SNOMED CT Attribute Binding |
http://nema.org/dicom | DICOM Tag Mapping |
http://github.com/MDMI/ReferentIndexContent | MDMI Referent Index |
http://ihe.net/xds | XDS metadata equivalent |
http://hl7.org/v3/cda | CDA (R2) |
http://www.w3.org/ns/prov | W3C PROV |
http://loinc.org | LOINC code for the element |
http://w3.org/vcard | vCard Mapping |
http://openehr.org | Open EHR Archetype Mapping |
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 can be useful when
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 | Paths | In Common |
abstract | token | Whether the structure is abstract | StructureDefinition.abstract | |
base | uri | Definition that this type is constrained/specialized from | StructureDefinition.baseDefinition | |
base-path | token | Path that identifies the base element | StructureDefinition.snapshot.element.base.path, StructureDefinition.differential.element.base.path | |
context-type | token | resource | datatype | extension | StructureDefinition.contextType | |
date | date | The structure definition publication date | StructureDefinition.date | |
derivation | token | specialization | constraint - How relates to base definition | StructureDefinition.derivation | |
description | string | Text search against the description of the structure definition | StructureDefinition.description | |
experimental | token | If for testing purposes, not real usage | StructureDefinition.experimental | |
ext-context | string | Where the extension can be used in instances | StructureDefinition.context | |
identifier | token | External identifiers for the structure definition | StructureDefinition.identifier | |
jurisdiction | token | Intended jurisdiction for structure definition | StructureDefinition.jurisdiction | |
keyword | token | A code for the profile | StructureDefinition.keyword | |
kind | token | primitive-type | complex-type | resource | logical | StructureDefinition.kind | |
name | string | Name of the structure definition | StructureDefinition.name | |
path | token | A path that is constrained in the profile | StructureDefinition.snapshot.element.path, StructureDefinition.differential.element.path | |
publisher | string | Name of the publisher of the structure definition | StructureDefinition.publisher | |
status | token | The current status of the structure definition | StructureDefinition.status | |
title | string | Text search against the title of the structure definition | StructureDefinition.title | |
type | token | Type defined or constrained by this structure | StructureDefinition.type | |
url | uri | The uri that identifies the structure definition | StructureDefinition.url | |
valueset | reference | A vocabulary binding reference | StructureDefinition.snapshot.element.binding.valueSet[x] (ValueSet) | |
version | token | The version identifier of the structure definition | StructureDefinition.version |