This page is part of the FHIR Specification (v3.2.0: R4 Ballot 1). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions
Clinical Decision Support Work Group | Maturity Level: 0 | Draft | Compartments: Not linked to any defined compartments |
The ServiceDefinition describes a unit of decision support functionality that is made available as a service, such as immunization modules or drug-drug interaction checking.
This resource is a definition resource from a FHIR workflow perspective - see Workflow, specifically Definition.
The ServiceDefinition defines a module of clinical decision support functionality made available by a decision support service. For example, a service may provide immunization modules, drug-drug interaction checking, or appropriate use assessment.
Each module defines three main features related to its functionality:
Input and output parameters are used to specify any named parameters used by the module. These are typically patient-independent configuration parameters such as an A1C threshold for a diabetes control module, but they may also be used to return calculations performed by the module.
Data requirements are used to specify the set of data that must be provided (or available) to the module in order to achieve a successful evaluation. For example, if the module requires A1C lab results within the last 6 months, or information on bilateral or both left and right amputation at or below the knee.
Triggers are used to advertise when the module should be invoked. On encountering a specific trigger, a clinical application can invoke the modules associated with the trigger using the $evaluate operation. Any data required by the module can be sent as part of the request, and any suggested actions and other output data are returned via the GuidanceResponse resource.
For a more detailed discussion of the evaluation process, refer to the Clinical Decision Support topic in the Clinical Reasoning module.
Note to implementers: The user-facing external clinical decision support use case supported by the ServiceDefinition/$evaluate operation of the Clinical Reasoning module has significant overlap with the functionality provided by the CDS Hooks specification. As part of FHIR Release 4, it is the intention to unify the CDS Hooks specification with the Clinical Reasoning module, ensuring that implementers have a single consistent mechanism to support this use case that meets the requirements of both the Clinical Quality Framework and CDS Hooks communities. Although the functionality in both specifications is conceptually aligned, this unification will likely result in changes to both specifications. The CQF and CDS Hooks project teams are committed to this unification and will work to ensure that the resulting changes have as little impact as possible on current and ongoing implementation efforts, while meeting the needs of both communities. The project team is planning on a workable implementation tested at the connectathon in May of 2017, with a trial ballot following in September 2017, targeting publication as part of the FHIR Release 4 specification.
The ServiceDefinition is similar in structure and purpose to OperationDefinition. However, ServiceDefinition also represents more information about what service is being described than an operation definition supports. This information is critical to the effective use of the resource as part of a decision support service repository, as it enables searching and selection of functionality based on this additional information.
In addition, the way the $evaluate operation of the ServiceDefinition resource is defined enables all decision support services to share a common set of parameters without having to redeclare them for every module, while still supporting service-specific paramters on each module.
This resource is referenced by guidanceresponse
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ServiceDefinition | D | DomainResource | A description of decision support service functionality Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
url | Σ | 0..1 | uri | Logical URI to reference this service definition (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the service definition |
version | Σ | 0..1 | string | Business version of the service definition |
name | Σ | 0..1 | string | Name for this service definition (computer friendly) |
title | Σ | 0..1 | string | Name for this service 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 this was last changed |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
description | 0..1 | markdown | Natural language description of the service definition | |
purpose | 0..1 | markdown | Why this service definition is defined | |
usage | 0..1 | string | Describes the clinical usage of the module | |
approvalDate | 0..1 | date | When the service definition was approved by publisher | |
lastReviewDate | 0..1 | date | When the service definition was last reviewed | |
effectivePeriod | Σ | 0..1 | Period | When the service definition is expected to be used |
useContext | Σ | 0..* | UsageContext | Context the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for service definition (if applicable) Jurisdiction ValueSet (Extensible) |
topic | 0..* | CodeableConcept | E.g. Education, Treatment, Assessment, etc DefinitionTopic (Example) | |
contributor | 0..* | Contributor | A content contributor | |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
relatedArtifact | 0..* | RelatedArtifact | Additional documentation, citations, etc | |
trigger | 0..* | TriggerDefinition | "when" the module should be invoked | |
dataRequirement | 0..* | DataRequirement | What data is used by the module | |
operationDefinition | 0..1 | Reference(OperationDefinition) | Operation to invoke | |
Documentation for this format |
UML Diagram (Legend)
XML Template
<ServiceDefinition xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical URI to reference this service definition (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the service definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the service definition --> <name value="[string]"/><!-- 0..1 Name for this service definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this service 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 this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <description value="[markdown]"/><!-- 0..1 Natural language description of the service definition --> <purpose value="[markdown]"/><!-- 0..1 Why this service definition is defined --> <usage value="[string]"/><!-- 0..1 Describes the clinical usage of the module --> <approvalDate value="[date]"/><!-- 0..1 When the service definition was approved by publisher --> <lastReviewDate value="[date]"/><!-- 0..1 When the service definition was last reviewed --> <effectivePeriod><!-- 0..1 Period When the service definition is expected to be used --></effectivePeriod> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for service definition (if applicable) --></jurisdiction> <topic><!-- 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc --></topic> <contributor><!-- 0..* Contributor A content contributor --></contributor> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <relatedArtifact><!-- 0..* RelatedArtifact Additional documentation, citations, etc --></relatedArtifact> <trigger><!-- 0..* TriggerDefinition "when" the module should be invoked --></trigger> <dataRequirement><!-- 0..* DataRequirement What data is used by the module --></dataRequirement> <operationDefinition><!-- 0..1 Reference(OperationDefinition) Operation to invoke --></operationDefinition> </ServiceDefinition>
JSON Template
{ "resourceType" : "ServiceDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical URI to reference this service definition (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the service definition "version" : "<string>", // Business version of the service definition "name" : "<string>", // Name for this service definition (computer friendly) "title" : "<string>", // Name for this service definition (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "description" : "<markdown>", // Natural language description of the service definition "purpose" : "<markdown>", // Why this service definition is defined "usage" : "<string>", // Describes the clinical usage of the module "approvalDate" : "<date>", // When the service definition was approved by publisher "lastReviewDate" : "<date>", // When the service definition was last reviewed "effectivePeriod" : { Period }, // When the service definition is expected to be used "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for service definition (if applicable) "topic" : [{ CodeableConcept }], // E.g. Education, Treatment, Assessment, etc "contributor" : [{ Contributor }], // A content contributor "contact" : [{ ContactDetail }], // Contact details for the publisher "copyright" : "<markdown>", // Use and/or publishing restrictions "relatedArtifact" : [{ RelatedArtifact }], // Additional documentation, citations, etc "trigger" : [{ TriggerDefinition }], // "when" the module should be invoked "dataRequirement" : [{ DataRequirement }], // What data is used by the module "operationDefinition" : { Reference(OperationDefinition) } // Operation to invoke }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:ServiceDefinition; 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:ServiceDefinition.url [ uri ]; # 0..1 Logical URI to reference this service definition (globally unique) fhir:ServiceDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the service definition fhir:ServiceDefinition.version [ string ]; # 0..1 Business version of the service definition fhir:ServiceDefinition.name [ string ]; # 0..1 Name for this service definition (computer friendly) fhir:ServiceDefinition.title [ string ]; # 0..1 Name for this service definition (human friendly) fhir:ServiceDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:ServiceDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:ServiceDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:ServiceDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:ServiceDefinition.description [ markdown ]; # 0..1 Natural language description of the service definition fhir:ServiceDefinition.purpose [ markdown ]; # 0..1 Why this service definition is defined fhir:ServiceDefinition.usage [ string ]; # 0..1 Describes the clinical usage of the module fhir:ServiceDefinition.approvalDate [ date ]; # 0..1 When the service definition was approved by publisher fhir:ServiceDefinition.lastReviewDate [ date ]; # 0..1 When the service definition was last reviewed fhir:ServiceDefinition.effectivePeriod [ Period ]; # 0..1 When the service definition is expected to be used fhir:ServiceDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:ServiceDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for service definition (if applicable) fhir:ServiceDefinition.topic [ CodeableConcept ], ... ; # 0..* E.g. Education, Treatment, Assessment, etc fhir:ServiceDefinition.contributor [ Contributor ], ... ; # 0..* A content contributor fhir:ServiceDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:ServiceDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:ServiceDefinition.relatedArtifact [ RelatedArtifact ], ... ; # 0..* Additional documentation, citations, etc fhir:ServiceDefinition.trigger [ TriggerDefinition ], ... ; # 0..* "when" the module should be invoked fhir:ServiceDefinition.dataRequirement [ DataRequirement ], ... ; # 0..* What data is used by the module fhir:ServiceDefinition.operationDefinition [ Reference(OperationDefinition) ]; # 0..1 Operation to invoke ]
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ServiceDefinition | D | DomainResource | A description of decision support service functionality Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
url | Σ | 0..1 | uri | Logical URI to reference this service definition (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the service definition |
version | Σ | 0..1 | string | Business version of the service definition |
name | Σ | 0..1 | string | Name for this service definition (computer friendly) |
title | Σ | 0..1 | string | Name for this service 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 this was last changed |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
description | 0..1 | markdown | Natural language description of the service definition | |
purpose | 0..1 | markdown | Why this service definition is defined | |
usage | 0..1 | string | Describes the clinical usage of the module | |
approvalDate | 0..1 | date | When the service definition was approved by publisher | |
lastReviewDate | 0..1 | date | When the service definition was last reviewed | |
effectivePeriod | Σ | 0..1 | Period | When the service definition is expected to be used |
useContext | Σ | 0..* | UsageContext | Context the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for service definition (if applicable) Jurisdiction ValueSet (Extensible) |
topic | 0..* | CodeableConcept | E.g. Education, Treatment, Assessment, etc DefinitionTopic (Example) | |
contributor | 0..* | Contributor | A content contributor | |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
relatedArtifact | 0..* | RelatedArtifact | Additional documentation, citations, etc | |
trigger | 0..* | TriggerDefinition | "when" the module should be invoked | |
dataRequirement | 0..* | DataRequirement | What data is used by the module | |
operationDefinition | 0..1 | Reference(OperationDefinition) | Operation to invoke | |
Documentation for this format |
XML Template
<ServiceDefinition xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical URI to reference this service definition (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the service definition --></identifier> <version value="[string]"/><!-- 0..1 Business version of the service definition --> <name value="[string]"/><!-- 0..1 Name for this service definition (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this service 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 this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <description value="[markdown]"/><!-- 0..1 Natural language description of the service definition --> <purpose value="[markdown]"/><!-- 0..1 Why this service definition is defined --> <usage value="[string]"/><!-- 0..1 Describes the clinical usage of the module --> <approvalDate value="[date]"/><!-- 0..1 When the service definition was approved by publisher --> <lastReviewDate value="[date]"/><!-- 0..1 When the service definition was last reviewed --> <effectivePeriod><!-- 0..1 Period When the service definition is expected to be used --></effectivePeriod> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for service definition (if applicable) --></jurisdiction> <topic><!-- 0..* CodeableConcept E.g. Education, Treatment, Assessment, etc --></topic> <contributor><!-- 0..* Contributor A content contributor --></contributor> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <relatedArtifact><!-- 0..* RelatedArtifact Additional documentation, citations, etc --></relatedArtifact> <trigger><!-- 0..* TriggerDefinition "when" the module should be invoked --></trigger> <dataRequirement><!-- 0..* DataRequirement What data is used by the module --></dataRequirement> <operationDefinition><!-- 0..1 Reference(OperationDefinition) Operation to invoke --></operationDefinition> </ServiceDefinition>
JSON Template
{ "resourceType" : "ServiceDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical URI to reference this service definition (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the service definition "version" : "<string>", // Business version of the service definition "name" : "<string>", // Name for this service definition (computer friendly) "title" : "<string>", // Name for this service definition (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "description" : "<markdown>", // Natural language description of the service definition "purpose" : "<markdown>", // Why this service definition is defined "usage" : "<string>", // Describes the clinical usage of the module "approvalDate" : "<date>", // When the service definition was approved by publisher "lastReviewDate" : "<date>", // When the service definition was last reviewed "effectivePeriod" : { Period }, // When the service definition is expected to be used "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for service definition (if applicable) "topic" : [{ CodeableConcept }], // E.g. Education, Treatment, Assessment, etc "contributor" : [{ Contributor }], // A content contributor "contact" : [{ ContactDetail }], // Contact details for the publisher "copyright" : "<markdown>", // Use and/or publishing restrictions "relatedArtifact" : [{ RelatedArtifact }], // Additional documentation, citations, etc "trigger" : [{ TriggerDefinition }], // "when" the module should be invoked "dataRequirement" : [{ DataRequirement }], // What data is used by the module "operationDefinition" : { Reference(OperationDefinition) } // Operation to invoke }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:ServiceDefinition; 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:ServiceDefinition.url [ uri ]; # 0..1 Logical URI to reference this service definition (globally unique) fhir:ServiceDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the service definition fhir:ServiceDefinition.version [ string ]; # 0..1 Business version of the service definition fhir:ServiceDefinition.name [ string ]; # 0..1 Name for this service definition (computer friendly) fhir:ServiceDefinition.title [ string ]; # 0..1 Name for this service definition (human friendly) fhir:ServiceDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:ServiceDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:ServiceDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:ServiceDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:ServiceDefinition.description [ markdown ]; # 0..1 Natural language description of the service definition fhir:ServiceDefinition.purpose [ markdown ]; # 0..1 Why this service definition is defined fhir:ServiceDefinition.usage [ string ]; # 0..1 Describes the clinical usage of the module fhir:ServiceDefinition.approvalDate [ date ]; # 0..1 When the service definition was approved by publisher fhir:ServiceDefinition.lastReviewDate [ date ]; # 0..1 When the service definition was last reviewed fhir:ServiceDefinition.effectivePeriod [ Period ]; # 0..1 When the service definition is expected to be used fhir:ServiceDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:ServiceDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for service definition (if applicable) fhir:ServiceDefinition.topic [ CodeableConcept ], ... ; # 0..* E.g. Education, Treatment, Assessment, etc fhir:ServiceDefinition.contributor [ Contributor ], ... ; # 0..* A content contributor fhir:ServiceDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:ServiceDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:ServiceDefinition.relatedArtifact [ RelatedArtifact ], ... ; # 0..* Additional documentation, citations, etc fhir:ServiceDefinition.trigger [ TriggerDefinition ], ... ; # 0..* "when" the module should be invoked fhir:ServiceDefinition.dataRequirement [ DataRequirement ], ... ; # 0..* What data is used by the module fhir:ServiceDefinition.operationDefinition [ Reference(OperationDefinition) ]; # 0..1 Operation to invoke ]
Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions & the dependency analysis
Path | Definition | Type | Reference |
---|---|---|---|
ServiceDefinition.status | The lifecycle status of a Value Set or Concept Map. | Required | PublicationStatus |
ServiceDefinition.jurisdiction | Countries and regions within which this artifact is targeted for use | Extensible | Jurisdiction ValueSet |
ServiceDefinition.topic | High-level categorization of the definition, used for searching, sorting, and filtering | Example | DefinitionTopic |
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 |
composed-of | reference | What resource is being referenced | ServiceDefinition.relatedArtifact.where(type='composed-of').resource (Any) | |
date | date | The service definition publication date | ServiceDefinition.date | |
depends-on | reference | What resource is being referenced | ServiceDefinition.relatedArtifact.where(type='depends-on').resource (Any) | |
derived-from | reference | What resource is being referenced | ServiceDefinition.relatedArtifact.where(type='derived-from').resource (Any) | |
description | string | The description of the service definition | ServiceDefinition.description | |
effective | date | The time during which the service definition is intended to be in use | ServiceDefinition.effectivePeriod | |
identifier | token | External identifier for the service definition | ServiceDefinition.identifier | |
jurisdiction | token | Intended jurisdiction for the service definition | ServiceDefinition.jurisdiction | |
name | string | Computationally friendly name of the service definition | ServiceDefinition.name | |
predecessor | reference | What resource is being referenced | ServiceDefinition.relatedArtifact.where(type='predecessor').resource (Any) | |
publisher | string | Name of the publisher of the service definition | ServiceDefinition.publisher | |
status | token | The current status of the service definition | ServiceDefinition.status | |
successor | reference | What resource is being referenced | ServiceDefinition.relatedArtifact.where(type='successor').resource (Any) | |
title | string | The human-friendly name of the service definition | ServiceDefinition.title | |
topic | token | Topics associated with the module | ServiceDefinition.topic | |
url | uri | The uri that identifies the service definition | ServiceDefinition.url | |
version | token | The business version of the service definition | ServiceDefinition.version |