This page is part of the FHIR Specification (v1.4.0: STU 3 Ballot 3). 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: 0 | Compartments: Device |
A definition of behaviors to be taken in particular circumstances, often including conditions, options and other decision points.
This draft resource has been published for Workflow group discussion purposes. It is used to define the set of activities that can be peformed that have relationships in terms of order, pre-conditions etc. see Visit W3Schools For example Visit W3Schools (todo)
Explains how this resource relates to others. Particularly important is to differentiate between appropriate usages for related resources when an implementer might be confused about what to reference when.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Protocol | Σ | DomainResource | Contextual set of behaviors | |
identifier | Σ | 0..* | Identifier | Unique Id for this particular protocol |
title | Σ | 0..1 | string | Name of protocol |
status | ?! Σ | 1..1 | code | draft | testing | review | active | withdrawn | superseded ProtocolStatus (Required) |
type | ?! Σ | 1..1 | code | condition | device | drug | study ProtocolType (Required) |
subject | ?! Σ | 0..1 | Reference(Condition | Device | Medication) | What does protocol deal with? |
group | ?! Σ | 0..1 | Reference(Group) | To whom does Protocol apply? |
purpose | Σ | 1..1 | string | When is protocol to be used? |
author | Σ | 0..1 | Reference(Organization) | Who wrote protocol? |
step | Σ | 0..* | BackboneElement | What's done as part of protocol |
name | Σ | 0..1 | string | Label for step |
description | Σ | 0..1 | string | Human description of activity |
duration | Σ | 0..1 | Duration | How long does step last? |
precondition | ?! ΣI | 0..1 | BackboneElement | Rules prior to execution Only one of condition, intersection, union or exclude may be present |
description | Σ | 0..1 | string | Description of condition |
condition | Σ I | 0..1 | BackboneElement | Condition evaluated |
type | Σ | 1..1 | CodeableConcept | Observation / test / assertion |
value[x] | Σ | 1..1 | Value needed to satisfy condition | |
valueCodeableConcept | CodeableConcept | |||
valueBoolean | boolean | |||
valueQuantity | SimpleQuantity | |||
valueRange | Range | |||
intersection | Σ I | 0..* | see precondition | And conditions |
union | Σ I | 0..* | see precondition | Or conditions |
exclude | Σ I | 0..* | see precondition | Not conditions |
exit | ?! Σ | 0..1 | see precondition | Rules prior to completion |
firstActivity | ?! Σ | 0..1 | uri | First activity within timepoint |
activity | ?! Σ | 0..* | BackboneElement | Activities that occur within timepoint |
alternative | ?! Σ | 0..* | uri | What can be done instead? |
component | Σ | 0..* | BackboneElement | Activities that are part of this activity |
sequence | ?! Σ | 0..1 | integer | Order of occurrence |
activity | Σ | 1..1 | uri | Component activity |
following | ?! Σ | 0..* | uri | What happens next |
wait | ?! Σ | 0..1 | Duration | Pause before start |
detail | ?! Σ | 1..1 | BackboneElement | Details of activity |
category | Σ | 0..1 | code | diet | drug | encounter | observation + ActivityDefinitionCategory (Required) |
code | Σ | 0..1 | CodeableConcept | Detail type of activity |
timing[x] | Σ | 0..1 | When activity is to occur | |
timingCodeableConcept | CodeableConcept | |||
timingTiming | Timing | |||
location | Σ | 0..1 | Reference(Location) | Where it should happen |
performer | Σ | 0..* | Reference(Practitioner | Organization | RelatedPerson | Patient) | Who's responsible? |
product | Σ | 0..1 | Reference(Medication | Substance) | What's administered/supplied |
quantity | Σ | 0..1 | SimpleQuantity | How much is administered/consumed/supplied |
description | Σ | 0..1 | string | Extra info on activity occurrence |
next | Σ | 0..* | BackboneElement | What happens next? |
description | Σ | 0..1 | string | Description of what happens next |
reference | Σ | 0..1 | uri | Id of following step |
condition | Σ | 0..1 | see precondition | Condition in which next step is executed |
Documentation for this format |
UML Diagram
XML Template
<Protocol xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Unique Id for this particular protocol --></identifier> <title value="[string]"/><!-- 0..1 Name of protocol --> <status value="[code]"/><!-- 1..1 draft | testing | review | active | withdrawn | superseded --> <type value="[code]"/><!-- 1..1 condition | device | drug | study --> <subject><!-- 0..1 Reference(Condition|Device|Medication) What does protocol deal with? --></subject> <group><!-- 0..1 Reference(Group) To whom does Protocol apply? --></group> <purpose value="[string]"/><!-- 1..1 When is protocol to be used? --> <author><!-- 0..1 Reference(Organization) Who wrote protocol? --></author> <step> <!-- 0..* What's done as part of protocol --> <name value="[string]"/><!-- 0..1 Label for step --> <description value="[string]"/><!-- 0..1 Human description of activity --> <duration><!-- 0..1 Quantity(Duration) How long does step last? --></duration> <precondition> <!-- 0..1 Rules prior to execution --> <description value="[string]"/><!-- 0..1 Description of condition --> <condition> <!-- 0..1 Condition evaluated --> <type><!-- 1..1 CodeableConcept Observation / test / assertion --></type> <value[x]><!-- 1..1 CodeableConcept|boolean|Quantity(SimpleQuantity)|Range Value needed to satisfy condition --></value[x]> </condition> <intersection><!-- 0..* Content as for Protocol.step.precondition And conditions --></intersection> <union><!-- 0..* Content as for Protocol.step.precondition Or conditions --></union> <exclude><!-- 0..* Content as for Protocol.step.precondition Not conditions --></exclude> </precondition> <exit><!-- 0..1 Content as for Protocol.step.precondition Rules prior to completion --></exit> <firstActivity value="[uri]"/><!-- 0..1 First activity within timepoint --> <activity> <!-- 0..* Activities that occur within timepoint --> <alternative value="[uri]"/><!-- 0..* What can be done instead? --> <component> <!-- 0..* Activities that are part of this activity --> <sequence value="[integer]"/><!-- 0..1 Order of occurrence --> <activity value="[uri]"/><!-- 1..1 Component activity --> </component> <following value="[uri]"/><!-- 0..* What happens next --> <wait><!-- 0..1 Quantity(Duration) Pause before start --></wait> <detail> <!-- 1..1 Details of activity --> <category value="[code]"/><!-- 0..1 diet | drug | encounter | observation + --> <code><!-- 0..1 CodeableConcept Detail type of activity --></code> <timing[x]><!-- 0..1 CodeableConcept|Timing When activity is to occur --></timing[x]> <location><!-- 0..1 Reference(Location) Where it should happen --></location> <performer><!-- 0..* Reference(Practitioner|Organization|RelatedPerson| Patient) Who's responsible? --></performer> <product><!-- 0..1 Reference(Medication|Substance) What's administered/supplied --></product> <quantity><!-- 0..1 Quantity(SimpleQuantity) How much is administered/consumed/supplied --></quantity> <description value="[string]"/><!-- 0..1 Extra info on activity occurrence --> </detail> </activity> <next> <!-- 0..* What happens next? --> <description value="[string]"/><!-- 0..1 Description of what happens next --> <reference value="[uri]"/><!-- 0..1 Id of following step --> <condition><!-- 0..1 Content as for Protocol.step.precondition Condition in which next step is executed --></condition> </next> </step> </Protocol>
JSON Template
{ "resourceType" : "Protocol", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Unique Id for this particular protocol "title" : "<string>", // Name of protocol "status" : "<code>", // R! draft | testing | review | active | withdrawn | superseded "type" : "<code>", // R! condition | device | drug | study "subject" : { Reference(Condition|Device|Medication) }, // What does protocol deal with? "group" : { Reference(Group) }, // To whom does Protocol apply? "purpose" : "<string>", // R! When is protocol to be used? "author" : { Reference(Organization) }, // Who wrote protocol? "step" : [{ // What's done as part of protocol "name" : "<string>", // Label for step "description" : "<string>", // Human description of activity "duration" : { Quantity(Duration) }, // How long does step last? "precondition" : { // Rules prior to execution "description" : "<string>", // Description of condition "condition" : { // C? Condition evaluated "type" : { CodeableConcept }, // R! Observation / test / assertion // value[x]: Value needed to satisfy condition. One of these 4: "valueCodeableConcept" : { CodeableConcept } "valueBoolean" : <boolean> "valueQuantity" : { Quantity(SimpleQuantity) } "valueRange" : { Range } }, "intersection" : [{ Content as for Protocol.step.precondition }], // C? And conditions "union" : [{ Content as for Protocol.step.precondition }], // C? Or conditions "exclude" : [{ Content as for Protocol.step.precondition }] // C? Not conditions }, "exit" : { Content as for Protocol.step.precondition }, // Rules prior to completion "firstActivity" : "<uri>", // First activity within timepoint "activity" : [{ // Activities that occur within timepoint "alternative" : ["<uri>"], // What can be done instead? "component" : [{ // Activities that are part of this activity "sequence" : <integer>, // Order of occurrence "activity" : "<uri>" // R! Component activity }], "following" : ["<uri>"], // What happens next "wait" : { Quantity(Duration) }, // Pause before start "detail" : { // R! Details of activity "category" : "<code>", // diet | drug | encounter | observation + "code" : { CodeableConcept }, // Detail type of activity // timing[x]: When activity is to occur. One of these 2: "timingCodeableConcept" : { CodeableConcept }, "timingTiming" : { Timing }, "location" : { Reference(Location) }, // Where it should happen "performer" : [{ Reference(Practitioner|Organization|RelatedPerson| Patient) }], // Who's responsible? "product" : { Reference(Medication|Substance) }, // What's administered/supplied "quantity" : { Quantity(SimpleQuantity) }, // How much is administered/consumed/supplied "description" : "<string>" // Extra info on activity occurrence } }], "next" : [{ // What happens next? "description" : "<string>", // Description of what happens next "reference" : "<uri>", // Id of following step "condition" : { Content as for Protocol.step.precondition } // Condition in which next step is executed }] }] }
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Protocol | Σ | DomainResource | Contextual set of behaviors | |
identifier | Σ | 0..* | Identifier | Unique Id for this particular protocol |
title | Σ | 0..1 | string | Name of protocol |
status | ?! Σ | 1..1 | code | draft | testing | review | active | withdrawn | superseded ProtocolStatus (Required) |
type | ?! Σ | 1..1 | code | condition | device | drug | study ProtocolType (Required) |
subject | ?! Σ | 0..1 | Reference(Condition | Device | Medication) | What does protocol deal with? |
group | ?! Σ | 0..1 | Reference(Group) | To whom does Protocol apply? |
purpose | Σ | 1..1 | string | When is protocol to be used? |
author | Σ | 0..1 | Reference(Organization) | Who wrote protocol? |
step | Σ | 0..* | BackboneElement | What's done as part of protocol |
name | Σ | 0..1 | string | Label for step |
description | Σ | 0..1 | string | Human description of activity |
duration | Σ | 0..1 | Duration | How long does step last? |
precondition | ?! ΣI | 0..1 | BackboneElement | Rules prior to execution Only one of condition, intersection, union or exclude may be present |
description | Σ | 0..1 | string | Description of condition |
condition | Σ I | 0..1 | BackboneElement | Condition evaluated |
type | Σ | 1..1 | CodeableConcept | Observation / test / assertion |
value[x] | Σ | 1..1 | Value needed to satisfy condition | |
valueCodeableConcept | CodeableConcept | |||
valueBoolean | boolean | |||
valueQuantity | SimpleQuantity | |||
valueRange | Range | |||
intersection | Σ I | 0..* | see precondition | And conditions |
union | Σ I | 0..* | see precondition | Or conditions |
exclude | Σ I | 0..* | see precondition | Not conditions |
exit | ?! Σ | 0..1 | see precondition | Rules prior to completion |
firstActivity | ?! Σ | 0..1 | uri | First activity within timepoint |
activity | ?! Σ | 0..* | BackboneElement | Activities that occur within timepoint |
alternative | ?! Σ | 0..* | uri | What can be done instead? |
component | Σ | 0..* | BackboneElement | Activities that are part of this activity |
sequence | ?! Σ | 0..1 | integer | Order of occurrence |
activity | Σ | 1..1 | uri | Component activity |
following | ?! Σ | 0..* | uri | What happens next |
wait | ?! Σ | 0..1 | Duration | Pause before start |
detail | ?! Σ | 1..1 | BackboneElement | Details of activity |
category | Σ | 0..1 | code | diet | drug | encounter | observation + ActivityDefinitionCategory (Required) |
code | Σ | 0..1 | CodeableConcept | Detail type of activity |
timing[x] | Σ | 0..1 | When activity is to occur | |
timingCodeableConcept | CodeableConcept | |||
timingTiming | Timing | |||
location | Σ | 0..1 | Reference(Location) | Where it should happen |
performer | Σ | 0..* | Reference(Practitioner | Organization | RelatedPerson | Patient) | Who's responsible? |
product | Σ | 0..1 | Reference(Medication | Substance) | What's administered/supplied |
quantity | Σ | 0..1 | SimpleQuantity | How much is administered/consumed/supplied |
description | Σ | 0..1 | string | Extra info on activity occurrence |
next | Σ | 0..* | BackboneElement | What happens next? |
description | Σ | 0..1 | string | Description of what happens next |
reference | Σ | 0..1 | uri | Id of following step |
condition | Σ | 0..1 | see precondition | Condition in which next step is executed |
Documentation for this format |
XML Template
<Protocol xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Unique Id for this particular protocol --></identifier> <title value="[string]"/><!-- 0..1 Name of protocol --> <status value="[code]"/><!-- 1..1 draft | testing | review | active | withdrawn | superseded --> <type value="[code]"/><!-- 1..1 condition | device | drug | study --> <subject><!-- 0..1 Reference(Condition|Device|Medication) What does protocol deal with? --></subject> <group><!-- 0..1 Reference(Group) To whom does Protocol apply? --></group> <purpose value="[string]"/><!-- 1..1 When is protocol to be used? --> <author><!-- 0..1 Reference(Organization) Who wrote protocol? --></author> <step> <!-- 0..* What's done as part of protocol --> <name value="[string]"/><!-- 0..1 Label for step --> <description value="[string]"/><!-- 0..1 Human description of activity --> <duration><!-- 0..1 Quantity(Duration) How long does step last? --></duration> <precondition> <!-- 0..1 Rules prior to execution --> <description value="[string]"/><!-- 0..1 Description of condition --> <condition> <!-- 0..1 Condition evaluated --> <type><!-- 1..1 CodeableConcept Observation / test / assertion --></type> <value[x]><!-- 1..1 CodeableConcept|boolean|Quantity(SimpleQuantity)|Range Value needed to satisfy condition --></value[x]> </condition> <intersection><!-- 0..* Content as for Protocol.step.precondition And conditions --></intersection> <union><!-- 0..* Content as for Protocol.step.precondition Or conditions --></union> <exclude><!-- 0..* Content as for Protocol.step.precondition Not conditions --></exclude> </precondition> <exit><!-- 0..1 Content as for Protocol.step.precondition Rules prior to completion --></exit> <firstActivity value="[uri]"/><!-- 0..1 First activity within timepoint --> <activity> <!-- 0..* Activities that occur within timepoint --> <alternative value="[uri]"/><!-- 0..* What can be done instead? --> <component> <!-- 0..* Activities that are part of this activity --> <sequence value="[integer]"/><!-- 0..1 Order of occurrence --> <activity value="[uri]"/><!-- 1..1 Component activity --> </component> <following value="[uri]"/><!-- 0..* What happens next --> <wait><!-- 0..1 Quantity(Duration) Pause before start --></wait> <detail> <!-- 1..1 Details of activity --> <category value="[code]"/><!-- 0..1 diet | drug | encounter | observation + --> <code><!-- 0..1 CodeableConcept Detail type of activity --></code> <timing[x]><!-- 0..1 CodeableConcept|Timing When activity is to occur --></timing[x]> <location><!-- 0..1 Reference(Location) Where it should happen --></location> <performer><!-- 0..* Reference(Practitioner|Organization|RelatedPerson| Patient) Who's responsible? --></performer> <product><!-- 0..1 Reference(Medication|Substance) What's administered/supplied --></product> <quantity><!-- 0..1 Quantity(SimpleQuantity) How much is administered/consumed/supplied --></quantity> <description value="[string]"/><!-- 0..1 Extra info on activity occurrence --> </detail> </activity> <next> <!-- 0..* What happens next? --> <description value="[string]"/><!-- 0..1 Description of what happens next --> <reference value="[uri]"/><!-- 0..1 Id of following step --> <condition><!-- 0..1 Content as for Protocol.step.precondition Condition in which next step is executed --></condition> </next> </step> </Protocol>
JSON Template
{ "resourceType" : "Protocol", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Unique Id for this particular protocol "title" : "<string>", // Name of protocol "status" : "<code>", // R! draft | testing | review | active | withdrawn | superseded "type" : "<code>", // R! condition | device | drug | study "subject" : { Reference(Condition|Device|Medication) }, // What does protocol deal with? "group" : { Reference(Group) }, // To whom does Protocol apply? "purpose" : "<string>", // R! When is protocol to be used? "author" : { Reference(Organization) }, // Who wrote protocol? "step" : [{ // What's done as part of protocol "name" : "<string>", // Label for step "description" : "<string>", // Human description of activity "duration" : { Quantity(Duration) }, // How long does step last? "precondition" : { // Rules prior to execution "description" : "<string>", // Description of condition "condition" : { // C? Condition evaluated "type" : { CodeableConcept }, // R! Observation / test / assertion // value[x]: Value needed to satisfy condition. One of these 4: "valueCodeableConcept" : { CodeableConcept } "valueBoolean" : <boolean> "valueQuantity" : { Quantity(SimpleQuantity) } "valueRange" : { Range } }, "intersection" : [{ Content as for Protocol.step.precondition }], // C? And conditions "union" : [{ Content as for Protocol.step.precondition }], // C? Or conditions "exclude" : [{ Content as for Protocol.step.precondition }] // C? Not conditions }, "exit" : { Content as for Protocol.step.precondition }, // Rules prior to completion "firstActivity" : "<uri>", // First activity within timepoint "activity" : [{ // Activities that occur within timepoint "alternative" : ["<uri>"], // What can be done instead? "component" : [{ // Activities that are part of this activity "sequence" : <integer>, // Order of occurrence "activity" : "<uri>" // R! Component activity }], "following" : ["<uri>"], // What happens next "wait" : { Quantity(Duration) }, // Pause before start "detail" : { // R! Details of activity "category" : "<code>", // diet | drug | encounter | observation + "code" : { CodeableConcept }, // Detail type of activity // timing[x]: When activity is to occur. One of these 2: "timingCodeableConcept" : { CodeableConcept }, "timingTiming" : { Timing }, "location" : { Reference(Location) }, // Where it should happen "performer" : [{ Reference(Practitioner|Organization|RelatedPerson| Patient) }], // Who's responsible? "product" : { Reference(Medication|Substance) }, // What's administered/supplied "quantity" : { Quantity(SimpleQuantity) }, // How much is administered/consumed/supplied "description" : "<string>" // Extra info on activity occurrence } }], "next" : [{ // What happens next? "description" : "<string>", // Description of what happens next "reference" : "<uri>", // Id of following step "condition" : { Content as for Protocol.step.precondition } // Condition in which next step is executed }] }] }
Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire
Path | Definition | Type | Reference |
---|---|---|---|
Protocol.status | The lifecycle status of a Protocol | Required | ProtocolStatus |
Protocol.type | High-level categorization of the protocol | Required | ProtocolType |
Protocol.step.precondition.condition.type | Type of observation used as basis for conditional execution of one or more activities | Unknown | No details provided yet |
Protocol.step.activity.detail.category | High-level categorization of the type of activity in a protocol. | Required | ActivityDefinitionCategory |
Protocol.step.activity.detail.code | Detailed type of planned activity; e.g. CBC | Unknown | No details provided yet |
Protocol.step.activity.detail.timing[x] | Code describing the timing of an activity; e.g. BID, QD | Unknown | No details provided yet |
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 |
identifier | token | The unique id for a particular protocol | Protocol.identifier |
subject | reference | Protocols with specified subject | Protocol.subject (Medication, Condition, Device) |