STU 3 Candidate

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

4.7 Resource Protocol - Content

FHIR Infrastructure Work GroupMaturity Level: 0Compartments: Device

A definition of behaviors to be taken in particular circumstances, often including conditions, options and other decision points.

4.7.1 Scope and Usage

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)

4.7.2 Boundaries and Relationships

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.

4.7.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Protocol ΣDomainResourceContextual set of behaviors
... identifier Σ0..*IdentifierUnique Id for this particular protocol
... title Σ0..1stringName of protocol
... status ?! Σ1..1codedraft | testing | review | active | withdrawn | superseded
ProtocolStatus (Required)
... type ?! Σ1..1codecondition | device | drug | study
ProtocolType (Required)
... subject ?! Σ0..1Reference(Condition | Device | Medication)What does protocol deal with?
... group ?! Σ0..1Reference(Group)To whom does Protocol apply?
... purpose Σ1..1stringWhen is protocol to be used?
... author Σ0..1Reference(Organization)Who wrote protocol?
... step Σ0..*BackboneElementWhat's done as part of protocol
.... name Σ0..1stringLabel for step
.... description Σ0..1stringHuman description of activity
.... duration Σ0..1DurationHow long does step last?
.... precondition ?! ΣI0..1BackboneElementRules prior to execution
Only one of condition, intersection, union or exclude may be present
..... description Σ0..1stringDescription of condition
..... condition Σ I0..1BackboneElementCondition evaluated
...... type Σ1..1CodeableConceptObservation / test / assertion
...... value[x] Σ1..1Value needed to satisfy condition
....... valueCodeableConceptCodeableConcept
....... valueBooleanboolean
....... valueQuantitySimpleQuantity
....... valueRangeRange
..... intersection Σ I0..*see preconditionAnd conditions
..... union Σ I0..*see preconditionOr conditions
..... exclude Σ I0..*see preconditionNot conditions
.... exit ?! Σ0..1see preconditionRules prior to completion
.... firstActivity ?! Σ0..1uriFirst activity within timepoint
.... activity ?! Σ0..*BackboneElementActivities that occur within timepoint
..... alternative ?! Σ0..*uriWhat can be done instead?
..... component Σ0..*BackboneElementActivities that are part of this activity
...... sequence ?! Σ0..1integerOrder of occurrence
...... activity Σ1..1uriComponent activity
..... following ?! Σ0..*uriWhat happens next
..... wait ?! Σ0..1DurationPause before start
..... detail ?! Σ1..1BackboneElementDetails of activity
...... category Σ0..1codediet | drug | encounter | observation +
ActivityDefinitionCategory (Required)
...... code Σ0..1CodeableConceptDetail type of activity
...... timing[x] Σ0..1When activity is to occur
....... timingCodeableConceptCodeableConcept
....... timingTimingTiming
...... location Σ0..1Reference(Location)Where it should happen
...... performer Σ0..*Reference(Practitioner | Organization | RelatedPerson | Patient)Who's responsible?
...... product Σ0..1Reference(Medication | Substance)What's administered/supplied
...... quantity Σ0..1SimpleQuantityHow much is administered/consumed/supplied
...... description Σ0..1stringExtra info on activity occurrence
.... next Σ0..*BackboneElementWhat happens next?
..... description Σ0..1stringDescription of what happens next
..... reference Σ0..1uriId of following step
..... condition Σ0..1see preconditionCondition in which next step is executed

doco Documentation for this format

UML Diagram

Protocol (DomainResource)A unique identifier for the protocol instanceidentifier : Identifier [0..*]Name of protocoltitle : string [0..1]The status of the protocol (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Protocol (Strength=Required)ProtocolStatus! »A code that classifies the general type of context to which these behavior definitions apply. This is used for searching, sorting and display purposes (this element modifies the meaning of other elements)type : code [1..1] « High-level categorization of the protocol (Strength=Required)ProtocolType! »What does protocol deal with? (this element modifies the meaning of other elements)subject : Reference [0..1] « Condition|Device|Medication »To whom does Protocol apply? (this element modifies the meaning of other elements)group : Reference [0..1] « Group »When is protocol to be used?purpose : string [1..1]Who wrote protocol?author : Reference [0..1] « Organization »StepLabel for stepname : string [0..1]Human description of activitydescription : string [0..1]How long does step last?duration : Quantity(Duration) [0..1]First activity within timepoint (this element modifies the meaning of other elements)firstActivity : uri [0..1]PreconditionHuman-readable description of the conditiondescription : string [0..1]ConditionThe type of observation, test or other assertion being evaluated by the conditiontype : CodeableConcept [1..1]Indicates what value the observation/test/assertion must have in order for the condition to be considered to be satisfiedvalue[x] : Type [1..1] « CodeableConcept|boolean|Quantity(SimpleQuantity)| Range »ActivityWhat can be done instead? (this element modifies the meaning of other elements)alternative : uri [0..*]What happens next (this element modifies the meaning of other elements)following : uri [0..*]Indicates the length of time to wait between the conditions being satisfied for the activity to start and the actual start of the activity (this element modifies the meaning of other elements)wait : Quantity(Duration) [0..1]ComponentOrder of occurrence (this element modifies the meaning of other elements)sequence : integer [0..1]Component activityactivity : uri [1..1]DetailHigh-level categorization of the type of activitycategory : code [0..1] « High-level categorization of the type of activity in a protocol. (Strength=Required)ActivityDefinitionCategory! »Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encountercode : CodeableConcept [0..1]The period, timing or frequency upon which the described activity is to occurtiming[x] : Type [0..1] « CodeableConcept|Timing »Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etclocation : Reference [0..1] « Location »Identifies who's expected to be involved in the activityperformer : Reference [0..*] « Practitioner|Organization| RelatedPerson|Patient »Identifies the food, drug or other product being consumed or supplied in the activityproduct : Reference [0..1] « Medication|Substance »Identifies the quantity expected to be consumed at once (per dose, per meal, etc.)quantity : Quantity(SimpleQuantity) [0..1]This provides a textual description of constraints on the activity occurrence, including relation to other activities. It may also include objectives, pre-conditions and end-conditions. Finally, it may convey specifics about the activity such as body site, method, route, etcdescription : string [0..1]NextDescription of what happens nextdescription : string [0..1]Id of following stepreference : uri [0..1]Defines the name/value pair that must hold for the condition to be metcondition[0..1]Lists a set of conditions that must all be metintersection[0..*]Lists alternative conditions, at least one of must be metunion[0..*]Lists conditions of which none must be metexclude[0..*]Rules prior to execution (this element modifies the meaning of other elements)precondition[0..1]Indicates the conditions that must be met for activities that are part of this time point to terminate (this element modifies the meaning of other elements)exit[0..1]Activities that are part of this activitycomponent[0..*]Information about the nature of the activity, including type, timing and other qualifiers (this element modifies the meaning of other elements)detail[1..1]Activities that occur within timepoint (this element modifies the meaning of other elements)activity[0..*]Condition in which next step is executedcondition[0..1]What happens next?next[0..*]What's done as part of protocolstep[0..*]

XML Template

<Protocol xmlns="http://hl7.org/fhir"> doco
 <!-- 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

{doco
  "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

NameFlagsCard.TypeDescription & Constraintsdoco
.. Protocol ΣDomainResourceContextual set of behaviors
... identifier Σ0..*IdentifierUnique Id for this particular protocol
... title Σ0..1stringName of protocol
... status ?! Σ1..1codedraft | testing | review | active | withdrawn | superseded
ProtocolStatus (Required)
... type ?! Σ1..1codecondition | device | drug | study
ProtocolType (Required)
... subject ?! Σ0..1Reference(Condition | Device | Medication)What does protocol deal with?
... group ?! Σ0..1Reference(Group)To whom does Protocol apply?
... purpose Σ1..1stringWhen is protocol to be used?
... author Σ0..1Reference(Organization)Who wrote protocol?
... step Σ0..*BackboneElementWhat's done as part of protocol
.... name Σ0..1stringLabel for step
.... description Σ0..1stringHuman description of activity
.... duration Σ0..1DurationHow long does step last?
.... precondition ?! ΣI0..1BackboneElementRules prior to execution
Only one of condition, intersection, union or exclude may be present
..... description Σ0..1stringDescription of condition
..... condition Σ I0..1BackboneElementCondition evaluated
...... type Σ1..1CodeableConceptObservation / test / assertion
...... value[x] Σ1..1Value needed to satisfy condition
....... valueCodeableConceptCodeableConcept
....... valueBooleanboolean
....... valueQuantitySimpleQuantity
....... valueRangeRange
..... intersection Σ I0..*see preconditionAnd conditions
..... union Σ I0..*see preconditionOr conditions
..... exclude Σ I0..*see preconditionNot conditions
.... exit ?! Σ0..1see preconditionRules prior to completion
.... firstActivity ?! Σ0..1uriFirst activity within timepoint
.... activity ?! Σ0..*BackboneElementActivities that occur within timepoint
..... alternative ?! Σ0..*uriWhat can be done instead?
..... component Σ0..*BackboneElementActivities that are part of this activity
...... sequence ?! Σ0..1integerOrder of occurrence
...... activity Σ1..1uriComponent activity
..... following ?! Σ0..*uriWhat happens next
..... wait ?! Σ0..1DurationPause before start
..... detail ?! Σ1..1BackboneElementDetails of activity
...... category Σ0..1codediet | drug | encounter | observation +
ActivityDefinitionCategory (Required)
...... code Σ0..1CodeableConceptDetail type of activity
...... timing[x] Σ0..1When activity is to occur
....... timingCodeableConceptCodeableConcept
....... timingTimingTiming
...... location Σ0..1Reference(Location)Where it should happen
...... performer Σ0..*Reference(Practitioner | Organization | RelatedPerson | Patient)Who's responsible?
...... product Σ0..1Reference(Medication | Substance)What's administered/supplied
...... quantity Σ0..1SimpleQuantityHow much is administered/consumed/supplied
...... description Σ0..1stringExtra info on activity occurrence
.... next Σ0..*BackboneElementWhat happens next?
..... description Σ0..1stringDescription of what happens next
..... reference Σ0..1uriId of following step
..... condition Σ0..1see preconditionCondition in which next step is executed

doco Documentation for this format

UML Diagram

Protocol (DomainResource)A unique identifier for the protocol instanceidentifier : Identifier [0..*]Name of protocoltitle : string [0..1]The status of the protocol (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Protocol (Strength=Required)ProtocolStatus! »A code that classifies the general type of context to which these behavior definitions apply. This is used for searching, sorting and display purposes (this element modifies the meaning of other elements)type : code [1..1] « High-level categorization of the protocol (Strength=Required)ProtocolType! »What does protocol deal with? (this element modifies the meaning of other elements)subject : Reference [0..1] « Condition|Device|Medication »To whom does Protocol apply? (this element modifies the meaning of other elements)group : Reference [0..1] « Group »When is protocol to be used?purpose : string [1..1]Who wrote protocol?author : Reference [0..1] « Organization »StepLabel for stepname : string [0..1]Human description of activitydescription : string [0..1]How long does step last?duration : Quantity(Duration) [0..1]First activity within timepoint (this element modifies the meaning of other elements)firstActivity : uri [0..1]PreconditionHuman-readable description of the conditiondescription : string [0..1]ConditionThe type of observation, test or other assertion being evaluated by the conditiontype : CodeableConcept [1..1]Indicates what value the observation/test/assertion must have in order for the condition to be considered to be satisfiedvalue[x] : Type [1..1] « CodeableConcept|boolean|Quantity(SimpleQuantity)| Range »ActivityWhat can be done instead? (this element modifies the meaning of other elements)alternative : uri [0..*]What happens next (this element modifies the meaning of other elements)following : uri [0..*]Indicates the length of time to wait between the conditions being satisfied for the activity to start and the actual start of the activity (this element modifies the meaning of other elements)wait : Quantity(Duration) [0..1]ComponentOrder of occurrence (this element modifies the meaning of other elements)sequence : integer [0..1]Component activityactivity : uri [1..1]DetailHigh-level categorization of the type of activitycategory : code [0..1] « High-level categorization of the type of activity in a protocol. (Strength=Required)ActivityDefinitionCategory! »Detailed description of the type of activity; e.g. What lab test, what procedure, what kind of encountercode : CodeableConcept [0..1]The period, timing or frequency upon which the described activity is to occurtiming[x] : Type [0..1] « CodeableConcept|Timing »Identifies the facility where the activity will occur; e.g. home, hospital, specific clinic, etclocation : Reference [0..1] « Location »Identifies who's expected to be involved in the activityperformer : Reference [0..*] « Practitioner|Organization| RelatedPerson|Patient »Identifies the food, drug or other product being consumed or supplied in the activityproduct : Reference [0..1] « Medication|Substance »Identifies the quantity expected to be consumed at once (per dose, per meal, etc.)quantity : Quantity(SimpleQuantity) [0..1]This provides a textual description of constraints on the activity occurrence, including relation to other activities. It may also include objectives, pre-conditions and end-conditions. Finally, it may convey specifics about the activity such as body site, method, route, etcdescription : string [0..1]NextDescription of what happens nextdescription : string [0..1]Id of following stepreference : uri [0..1]Defines the name/value pair that must hold for the condition to be metcondition[0..1]Lists a set of conditions that must all be metintersection[0..*]Lists alternative conditions, at least one of must be metunion[0..*]Lists conditions of which none must be metexclude[0..*]Rules prior to execution (this element modifies the meaning of other elements)precondition[0..1]Indicates the conditions that must be met for activities that are part of this time point to terminate (this element modifies the meaning of other elements)exit[0..1]Activities that are part of this activitycomponent[0..*]Information about the nature of the activity, including type, timing and other qualifiers (this element modifies the meaning of other elements)detail[1..1]Activities that occur within timepoint (this element modifies the meaning of other elements)activity[0..*]Condition in which next step is executedcondition[0..1]What happens next?next[0..*]What's done as part of protocolstep[0..*]

XML Template

<Protocol xmlns="http://hl7.org/fhir"> doco
 <!-- 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

{doco
  "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

4.7.3.1 Terminology Bindings

PathDefinitionTypeReference
Protocol.status The lifecycle status of a ProtocolRequiredProtocolStatus
Protocol.type High-level categorization of the protocolRequiredProtocolType
Protocol.step.precondition.condition.type Type of observation used as basis for conditional execution of one or more activitiesUnknownNo details provided yet
Protocol.step.activity.detail.category High-level categorization of the type of activity in a protocol.RequiredActivityDefinitionCategory
Protocol.step.activity.detail.code Detailed type of planned activity; e.g. CBCUnknownNo details provided yet
Protocol.step.activity.detail.timing[x] Code describing the timing of an activity; e.g. BID, QDUnknownNo details provided yet

4.7.3.2 Constraints

  • ptl-1: On Protocol.step.precondition: Only one of condition, intersection, union or exclude may be present (expression on Protocol.step.precondition: )

4.7.4 Search Parameters

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionPaths
identifiertokenThe unique id for a particular protocolProtocol.identifier
subjectreferenceProtocols with specified subjectProtocol.subject
(Medication, Condition, Device)