This page is part of the FHIR Specification (v5.0.0-ballot: R5 Ballot - see ballot notes). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions
FHIR Infrastructure Work Group | Maturity Level: 1 | Trial Use | Security Category: Anonymous | Compartments: Not linked to any defined compartments |
A set of requirements - a list of features or behaviors of designed systems that are necessary to achieve organizational or regulatory goals.
The Requirements Resource a set of statements that are requirements for some design artifact to meet. The requirements resource is intended to meet two principle use cases:
The Requirements Resource is focused on gathering known requirements and providing traceability from solutions to the requirements they are intended to meet.
In any set of requirements, some of them may already be met by preexisting specifications, while others are requirements that must be fulfilled by some specification or design that is created with or subsequent to the requirements. For this reason, requirements can directly identify features of specifications that satisfy the stated requirement, but in most cases, it is expected that the specifications and designs that meet the requirements will provice traceability to the requirement.
Each Requirements resource carries a set of statements about requirements. Each statement has:
Requirements may by referenced from almost any resource by the Requirements Satisfied extension. Generally, this extension will be found in the Canonical Resources but this is not a hard rule.
If requirements are satisfied by an existing specification, they SHOULD reference
a FHIR resource by {url}
or a particular element by {url}#id
,
but the target of a reference does not need to be a resource at all.
The requirements resource carries minimal provenance information - the name of the publisher, and the source of the statements. Additional provenance information should be carried in a Provenance resource.
A number of stakeholders publishing FHIR implementation guides wish to do formal requirements tracing. This resource exists for them.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Requirements | TU | DomainResource | A set of requirements - features of systems that are necessary + Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension Interfaces Implemented: CanonicalResource | |
url | ΣC | 0..1 | uri | Canonical identifier for this Requirements, represented as a URI (globally unique) + Warning: URL should not contain | or # - these characters make processing canonical references problematic |
identifier | Σ | 0..* | Identifier | Additional identifier for the Requirements (business identifier) |
version | Σ | 0..1 | string | Business version of the Requirements |
name | ΣC | 0..1 | string | Name for this Requirements (computer friendly) |
title | Σ | 0..1 | string | Name for this Requirements (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 | Σ | 0..1 | string | Name of the publisher/steward (organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
description | 0..1 | markdown | Natural language description of the actor | |
useContext | ΣTU | 0..* | UsageContext | The context that the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for Requirements (if applicable) Jurisdiction (Extensible) |
purpose | 0..1 | markdown | Why this Requirements is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
copyrightLabel | 0..1 | string | Copyright holder and year(s) | |
derivedFrom | Σ | 0..* | canonical(Requirements) | Other set of Requirements this builds on |
actor | 0..* | canonical(ActorDefinition) | Actor for these requirements | |
statement | 0..* | BackboneElement | Actual statement as markdown | |
key | 1..1 | id | Key that identifies this statement | |
label | 0..1 | string | Short Human label for this statement | |
conformance | 0..* | code | SHALL | SHOULD | MAY | SHOULD-NOT ConformanceExpectation (Required) | |
requirement | 1..1 | markdown | The actual requirement | |
derivedFrom | 0..1 | string | Another statement this clarifies/restricts ([url#]key) | |
satisfiedBy | 0..* | url | Design artifact that satisfies this requirement | |
reference | 0..* | url | External artifact (rule/document etc that) created this requirement | |
source | 0..* | Reference(Practitioner | Organization | CareTeam | Group) | Who asked for this statement | |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<Requirements xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Canonical identifier for this Requirements, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the Requirements (business identifier) --></identifier> <version value="[string]"/><!-- 0..1 Business version of the Requirements --> <name value="[string]"/><!-- I 0..1 Name for this Requirements (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this Requirements (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 actor --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for Requirements (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this Requirements is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <derivedFrom><!-- 0..* canonical(Requirements) Other set of Requirements this builds on --></derivedFrom> <actor><!-- 0..* canonical(ActorDefinition) Actor for these requirements --></actor> <statement> <!-- 0..* Actual statement as markdown --> <key value="[id]"/><!-- 1..1 Key that identifies this statement --> <label value="[string]"/><!-- 0..1 Short Human label for this statement --> <conformance value="[code]"/><!-- 0..* SHALL | SHOULD | MAY | SHOULD-NOT --> <requirement value="[markdown]"/><!-- 1..1 The actual requirement --> <derivedFrom value="[string]"/><!-- 0..1 Another statement this clarifies/restricts ([url#]key) --> <satisfiedBy value="[url]"/><!-- 0..* Design artifact that satisfies this requirement --> <reference value="[url]"/><!-- 0..* External artifact (rule/document etc that) created this requirement --> <source><!-- 0..* Reference(CareTeam|Group|Organization|Practitioner) Who asked for this statement --></source> </statement> </Requirements>
JSON Template
{ "resourceType" : "Requirements", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Canonical identifier for this Requirements, represented as a URI (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the Requirements (business identifier) "version" : "<string>", // Business version of the Requirements "name" : "<string>", // I Name for this Requirements (computer friendly) "title" : "<string>", // Name for this Requirements (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 actor "useContext" : [{ UsageContext }], // The context that the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for Requirements (if applicable) "purpose" : "<markdown>", // Why this Requirements is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "copyrightLabel" : "<string>", // Copyright holder and year(s) "derivedFrom" : ["<canonical(Requirements)>"], // Other set of Requirements this builds on "actor" : ["<canonical(ActorDefinition)>"], // Actor for these requirements "statement" : [{ // Actual statement as markdown "key" : "<id>", // R! Key that identifies this statement "label" : "<string>", // Short Human label for this statement "conformance" : ["<code>"], // SHALL | SHOULD | MAY | SHOULD-NOT "requirement" : "<markdown>", // R! The actual requirement "derivedFrom" : "<string>", // Another statement this clarifies/restricts ([url#]key) "satisfiedBy" : ["<url>"], // Design artifact that satisfies this requirement "reference" : ["<url>"], // External artifact (rule/document etc that) created this requirement "source" : [{ Reference(CareTeam|Group|Organization|Practitioner) }] // Who asked for this statement }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Requirements; 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:Requirements.url [ uri ]; # 0..1 Canonical identifier for this Requirements, represented as a URI (globally unique) fhir:Requirements.identifier [ Identifier ], ... ; # 0..* Additional identifier for the Requirements (business identifier) fhir:Requirements.version [ string ]; # 0..1 Business version of the Requirements fhir:Requirements.name [ string ]; # 0..1 I Name for this Requirements (computer friendly) fhir:Requirements.title [ string ]; # 0..1 Name for this Requirements (human friendly) fhir:Requirements.status [ code ]; # 1..1 draft | active | retired | unknown fhir:Requirements.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:Requirements.date [ dateTime ]; # 0..1 Date last changed fhir:Requirements.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual) fhir:Requirements.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:Requirements.description [ markdown ]; # 0..1 Natural language description of the actor fhir:Requirements.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:Requirements.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for Requirements (if applicable) fhir:Requirements.purpose [ markdown ]; # 0..1 Why this Requirements is defined fhir:Requirements.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:Requirements.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s) fhir:Requirements.derivedFrom [ canonical(Requirements) ], ... ; # 0..* Other set of Requirements this builds on fhir:Requirements.actor [ canonical(ActorDefinition) ], ... ; # 0..* Actor for these requirements fhir:Requirements.statement [ # 0..* Actual statement as markdown fhir:Requirements.statement.key [ id ]; # 1..1 Key that identifies this statement fhir:Requirements.statement.label [ string ]; # 0..1 Short Human label for this statement fhir:Requirements.statement.conformance [ code ], ... ; # 0..* SHALL | SHOULD | MAY | SHOULD-NOT fhir:Requirements.statement.requirement [ markdown ]; # 1..1 The actual requirement fhir:Requirements.statement.derivedFrom [ string ]; # 0..1 Another statement this clarifies/restricts ([url#]key) fhir:Requirements.statement.satisfiedBy [ url ], ... ; # 0..* Design artifact that satisfies this requirement fhir:Requirements.statement.reference [ url ], ... ; # 0..* External artifact (rule/document etc that) created this requirement fhir:Requirements.statement.source [ Reference(CareTeam|Group|Organization|Practitioner) ], ... ; # 0..* Who asked for this statement ], ...; ]
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Requirements | TU | DomainResource | A set of requirements - features of systems that are necessary + Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension Interfaces Implemented: CanonicalResource | |
url | ΣC | 0..1 | uri | Canonical identifier for this Requirements, represented as a URI (globally unique) + Warning: URL should not contain | or # - these characters make processing canonical references problematic |
identifier | Σ | 0..* | Identifier | Additional identifier for the Requirements (business identifier) |
version | Σ | 0..1 | string | Business version of the Requirements |
name | ΣC | 0..1 | string | Name for this Requirements (computer friendly) |
title | Σ | 0..1 | string | Name for this Requirements (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 | Σ | 0..1 | string | Name of the publisher/steward (organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
description | 0..1 | markdown | Natural language description of the actor | |
useContext | ΣTU | 0..* | UsageContext | The context that the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for Requirements (if applicable) Jurisdiction (Extensible) |
purpose | 0..1 | markdown | Why this Requirements is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
copyrightLabel | 0..1 | string | Copyright holder and year(s) | |
derivedFrom | Σ | 0..* | canonical(Requirements) | Other set of Requirements this builds on |
actor | 0..* | canonical(ActorDefinition) | Actor for these requirements | |
statement | 0..* | BackboneElement | Actual statement as markdown | |
key | 1..1 | id | Key that identifies this statement | |
label | 0..1 | string | Short Human label for this statement | |
conformance | 0..* | code | SHALL | SHOULD | MAY | SHOULD-NOT ConformanceExpectation (Required) | |
requirement | 1..1 | markdown | The actual requirement | |
derivedFrom | 0..1 | string | Another statement this clarifies/restricts ([url#]key) | |
satisfiedBy | 0..* | url | Design artifact that satisfies this requirement | |
reference | 0..* | url | External artifact (rule/document etc that) created this requirement | |
source | 0..* | Reference(Practitioner | Organization | CareTeam | Group) | Who asked for this statement | |
Documentation for this format |
See the Extensions for this resource
XML Template
<Requirements xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Canonical identifier for this Requirements, represented as a URI (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the Requirements (business identifier) --></identifier> <version value="[string]"/><!-- 0..1 Business version of the Requirements --> <name value="[string]"/><!-- I 0..1 Name for this Requirements (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this Requirements (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 actor --> <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for Requirements (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this Requirements is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <copyrightLabel value="[string]"/><!-- 0..1 Copyright holder and year(s) --> <derivedFrom><!-- 0..* canonical(Requirements) Other set of Requirements this builds on --></derivedFrom> <actor><!-- 0..* canonical(ActorDefinition) Actor for these requirements --></actor> <statement> <!-- 0..* Actual statement as markdown --> <key value="[id]"/><!-- 1..1 Key that identifies this statement --> <label value="[string]"/><!-- 0..1 Short Human label for this statement --> <conformance value="[code]"/><!-- 0..* SHALL | SHOULD | MAY | SHOULD-NOT --> <requirement value="[markdown]"/><!-- 1..1 The actual requirement --> <derivedFrom value="[string]"/><!-- 0..1 Another statement this clarifies/restricts ([url#]key) --> <satisfiedBy value="[url]"/><!-- 0..* Design artifact that satisfies this requirement --> <reference value="[url]"/><!-- 0..* External artifact (rule/document etc that) created this requirement --> <source><!-- 0..* Reference(CareTeam|Group|Organization|Practitioner) Who asked for this statement --></source> </statement> </Requirements>
JSON Template
{ "resourceType" : "Requirements", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Canonical identifier for this Requirements, represented as a URI (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the Requirements (business identifier) "version" : "<string>", // Business version of the Requirements "name" : "<string>", // I Name for this Requirements (computer friendly) "title" : "<string>", // Name for this Requirements (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 actor "useContext" : [{ UsageContext }], // The context that the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for Requirements (if applicable) "purpose" : "<markdown>", // Why this Requirements is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "copyrightLabel" : "<string>", // Copyright holder and year(s) "derivedFrom" : ["<canonical(Requirements)>"], // Other set of Requirements this builds on "actor" : ["<canonical(ActorDefinition)>"], // Actor for these requirements "statement" : [{ // Actual statement as markdown "key" : "<id>", // R! Key that identifies this statement "label" : "<string>", // Short Human label for this statement "conformance" : ["<code>"], // SHALL | SHOULD | MAY | SHOULD-NOT "requirement" : "<markdown>", // R! The actual requirement "derivedFrom" : "<string>", // Another statement this clarifies/restricts ([url#]key) "satisfiedBy" : ["<url>"], // Design artifact that satisfies this requirement "reference" : ["<url>"], // External artifact (rule/document etc that) created this requirement "source" : [{ Reference(CareTeam|Group|Organization|Practitioner) }] // Who asked for this statement }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:Requirements; 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:Requirements.url [ uri ]; # 0..1 Canonical identifier for this Requirements, represented as a URI (globally unique) fhir:Requirements.identifier [ Identifier ], ... ; # 0..* Additional identifier for the Requirements (business identifier) fhir:Requirements.version [ string ]; # 0..1 Business version of the Requirements fhir:Requirements.name [ string ]; # 0..1 I Name for this Requirements (computer friendly) fhir:Requirements.title [ string ]; # 0..1 Name for this Requirements (human friendly) fhir:Requirements.status [ code ]; # 1..1 draft | active | retired | unknown fhir:Requirements.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:Requirements.date [ dateTime ]; # 0..1 Date last changed fhir:Requirements.publisher [ string ]; # 0..1 Name of the publisher/steward (organization or individual) fhir:Requirements.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:Requirements.description [ markdown ]; # 0..1 Natural language description of the actor fhir:Requirements.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support fhir:Requirements.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for Requirements (if applicable) fhir:Requirements.purpose [ markdown ]; # 0..1 Why this Requirements is defined fhir:Requirements.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:Requirements.copyrightLabel [ string ]; # 0..1 Copyright holder and year(s) fhir:Requirements.derivedFrom [ canonical(Requirements) ], ... ; # 0..* Other set of Requirements this builds on fhir:Requirements.actor [ canonical(ActorDefinition) ], ... ; # 0..* Actor for these requirements fhir:Requirements.statement [ # 0..* Actual statement as markdown fhir:Requirements.statement.key [ id ]; # 1..1 Key that identifies this statement fhir:Requirements.statement.label [ string ]; # 0..1 Short Human label for this statement fhir:Requirements.statement.conformance [ code ], ... ; # 0..* SHALL | SHOULD | MAY | SHOULD-NOT fhir:Requirements.statement.requirement [ markdown ]; # 1..1 The actual requirement fhir:Requirements.statement.derivedFrom [ string ]; # 0..1 Another statement this clarifies/restricts ([url#]key) fhir:Requirements.statement.satisfiedBy [ url ], ... ; # 0..* Design artifact that satisfies this requirement fhir:Requirements.statement.reference [ url ], ... ; # 0..* External artifact (rule/document etc that) created this requirement fhir:Requirements.statement.source [ Reference(CareTeam|Group|Organization|Practitioner) ], ... ; # 0..* Who asked for this statement ], ...; ]
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis
Path | Definition | Type | Reference |
---|---|---|---|
Requirements.status | The lifecycle status of an artifact. | Required | PublicationStatus |
Requirements.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 | Jurisdiction ValueSet |
Requirements.statement.conformance | Description Needed Here | Required | ConformanceExpectation |
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}') |
cnl-1 | Warning | Requirements.url | URL should not contain | or # - these characters make processing canonical references problematic | url.matches('([^|#])*') |
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 |
actor | reference | An actor these requirements are for | Requirements.actor (ActorDefinition) | |
context | token | A use context assigned to the requirements | (Requirements.useContext.value as CodeableConcept) | |
context-quantity | quantity | A quantity- or range-valued use context assigned to the requirements | (Requirements.useContext.value as Quantity) | (Requirements.useContext.value as Range) | |
context-type | token | A type of use context assigned to the requirements | Requirements.useContext.code | |
context-type-quantity | composite | A use context type and quantity- or range-based value assigned to the requirements | On Requirements.useContext: context-type: code context-quantity: value.ofType(Quantity) | value.ofType(Range) | |
context-type-value | composite | A use context type and value assigned to the requirements | On Requirements.useContext: context-type: code context: value.ofType(CodeableConcept) | |
date | date | The requirements publication date | Requirements.date | |
derived-from | reference | The requirements these are derived from | Requirements.derivedFrom (Requirements) | |
description | string | The description of the requirements | Requirements.description | |
identifier | token | External identifier for the requirements | Requirements.identifier | |
jurisdiction | token | Intended jurisdiction for the requirements | Requirements.jurisdiction | |
name | string | Computationally friendly name of the requirements | Requirements.name | |
publisher | string | Name of the publisher of the requirements | Requirements.publisher | |
status | token | The current status of the requirements | Requirements.status | |
title | string | The human-friendly name of the requirements | Requirements.title | |
url | uri | The uri that identifies the requirements | Requirements.url | |
version | token | The business version of the requirements | Requirements.version |