R6 Ballot (2nd Draft)

Publish-box (todo)

12.1 Resource Task - Content

Orders and Observations icon Work GroupMaturity Level: 3 Trial UseSecurity Category: Not Classified Compartments: Patient

A task to be performed as a part of a workflow and the related informations like inputs, outputs and execution progress. While very simple workflows can be implemented with Request alone, most workflows would require a Task (explicit or contained) as a means to track the execution data (i.e. inputs, outputs, status). Please refer to the workflow page for more details.

A task resource describes an activity that can be performed and tracks the state of completion of that activity. It is a representation that an activity should be or has been initiated, and eventually, represents the successful or unsuccessful completion of that activity.

Concretely the Task resource could be used in FHIR to serve different purposes like:

  • operationalizing a Request (but could exists without a Request)
  • communicate between Filler and Placer
  • tracking of business status (i.e. collection of specimen, dispense of medication, procedure scheduled)
  • communicate the results of the execution (e.g. via .output)

Note that there are a variety of processes associated with making and processing orders. Some orders may be handled immediately by automated systems but most require real-world actions by one or more humans. Some orders can only be processed when other real-world actions happen, such as a patient presenting themselves so that the action to be performed can actually be performed. Often these real-world dependencies are only implicit in the order details.

In a RESTful context, a server functions as a repository of tasks. The server itself, or other agents are expected to monitor task activity and initiate appropriate actions to ensure task completion, updating the status of the task as it proceeds through its various stages of completion. These agents can be coordinated, following well choreographed business logic to ensure that tasks are completed. Task management may also be centrally controlled using some form of a workflow engine, in which case, the workflow engine itself may update and maintain the task resources in the server, and through its orchestration activities ensure that tasks are completed. The task resource enables either model of task management yet provides a consistent view of the status of tasks being executed in support of healthcare workflows.

The assignment of tasks into categories by type of task, type of performer and task status enable the server to function as a queue of work items. This queue can be polled or subscribed to by various agents, enabling automation of workflows in FHIR using existing search and subscription mechanisms. Owners, requesters, other agents (e.g. workflow managers) can thus be ready to initiate the next steps in a complex workflow.

Note to Implementers: Currently, task pre-requisites can be represented using Task's `description` element or the RequestOrchestration resource. We are seeking input from the implementer community in evaluating whether there is need for adding another mechanism to this resource for this purpose.

Feedback here icon.

Task spans both intent and event and tracks the execution through to completion. A Task is a workflow step such as cancelling an order, fulfilling an order, signing an order, merging a set of records, admitting a patient. In contrast, Procedures are actions that are intended to result in a physical or mental change to or for the subject (for example, surgery, physiotherapy, training, counseling). A Task resource often exists in parallel with clinical resources. For example, a Task could request fulfillment of a ServiceRequest ordering a Procedure that would result in a Procedure, Observation, DiagnosticReport, ImagingStudy or similar resource. Another example would be a Task that requests fulfillment of a CommunicationRequest to be performed between various actors.

As stated above, the task resource tracks the state of a task, enabling systems to ensure that tasks are completed. This information is kept separate from the operational details necessary to complete the task, as those details vary across and even within workflows. That detail is expected to be carried in the referenced `focus` of the task.

Tasks may have named inputs and outputs. Inputs represent information that may or must be present in order for a task to complete. Outputs represent intermediate or final results produced by a task. For example, in a task supporting reading of radiology image, the inputs might include both the imaging study to be read, as well as relevant prior images. Outputs could represent radiology measurements as well as the Radiologist's diagnostic report.

Inputs and outputs are tracked by the task because workflow management activity may automate the transfer of outputs from one task to inputs to a subsequent task.

To facilitate the integration of off the shelf workflow applications with FHIR, the task resource may reference a definition. This definition can represent a description of the workflow activity to be performed, using a standard workflow description language such as BPEL, BPMN, or XPDL, a workflow definition such as those defined in IHE profiles, or even simple written instructions explaining a process to be performed.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Task TU DomainResource A task to be performed
+ Rule: Task.restriction is only allowed if the Task is seeking fulfillment and a focus is specified.
+ Rule: Last modified date must be greater than or equal to authored-on date.

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..* Identifier Task Instance Identifier

... instantiatesCanonical Σ 0..1 canonical(ActivityDefinition) Formal definition of task
... instantiatesUri Σ 0..1 uri Formal definition of task
... basedOn Σ 0..* Reference(Any) Request fulfilled by this task

... groupIdentifier Σ 0..1 Identifier Requisition or grouper id
... partOf Σ 0..* Reference(Task) Composite task

... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: Task Status (Required)
... statusReason Σ 0..1 CodeableReference() Reason for current status
Binding: Task Status Reason (Example)
... businessStatus Σ 0..1 CodeableConcept E.g. "Specimen collected", "IV prepped"
Binding: TaskBusinessStatus (Example)
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: Task Intent (Required)
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (Required)
... doNotPerform ?!Σ 0..1 boolean True if Task is prohibiting action
... code ΣC 0..1 CodeableConcept Task Type
Binding: Task Codes (Example)
... description Σ 0..1 markdown Human-readable explanation of task
... focus ΣC 0..1 Reference(Any) What task is acting on
... for Σ 0..1 Reference(Any) Beneficiary of the Task
... encounter Σ 0..1 Reference(Encounter) Healthcare event during which this task originated
... requestedPeriod Σ 0..1 Period When the task should be performed
... executionPeriod Σ 0..1 Period Start and end time of execution
... authoredOn C 0..1 dateTime Task Creation Date
... lastModified ΣC 0..1 dateTime Task Last Modified Date
... requester Σ 0..1 Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson) Who is asking for task to be done
... requestedPerformer 0..* CodeableReference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson) Who should perform Task
Binding: Procedure Performer Role Codes (Preferred)

... owner Σ 0..1 Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Responsible individual
... performer Σ 0..* BackboneElement Who or what performed the task

.... function Σ 0..1 CodeableConcept Type of performance
Binding: TaskPerformerFunctionCode (Example)
.... actor Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Who performed the task
... location Σ 0..1 Reference(Location) Where task occurs
... reason 0..* CodeableReference(Any) Why task is needed
Binding: TaskReason (Example)

... insurance 0..* Reference(Coverage | ClaimResponse) Associated insurance coverage

... note 0..* Annotation Comments made about the task

... relevantHistory 0..* Reference(Provenance) Key events in history of the Task

... restriction C 0..1 BackboneElement Constraints on fulfillment tasks
.... repetitions 0..1 positiveInt How many times to repeat
.... period 0..1 Period When fulfillment is sought
.... recipient 0..* Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Group | Organization) For whom is fulfillment sought?

... input 0..* BackboneElement Information used to perform task

.... type 1..1 CodeableConcept Label for the input
Binding: TaskInputParameterType (Example)
.... value[x] 1..1 * Content to use in performing the task
... output 0..* BackboneElement Information produced as part of task

.... type 1..1 CodeableConcept Label for output
Binding: TaskOutputParameterType (Example)
.... value[x] 1..1 * Result of output

doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

Task (DomainResource)The business identifier for this taskidentifier : Identifier [0..*]The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this TaskinstantiatesCanonical : canonical [0..1] « ActivityDefinition »The URL pointing to an *externally* maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this TaskinstantiatesUri : uri [0..1]BasedOn refers to a higher-level authorization that triggered the creation of the task. It references a "request" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the "request" resource the task is seeking to fulfill. This latter resource is referenced by focus. For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patientbasedOn : Reference [0..*] « Any »A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author. The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc. E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one timegroupIdentifier : Identifier [0..1]Task that this particular task is part ofpartOf : Reference [0..*] « Task »The current status of the task (this element modifies the meaning of other elements)status : code [1..1] « null (Strength=Required)TaskStatus! »An explanation as to why this task is held, failed, was refused, etcstatusReason : CodeableReference [0..1] « ; null (Strength=Example)TaskStatusReason?? »Contains business-specific nuances of the business statebusinessStatus : CodeableConcept [0..1] « null (Strength=Example)TaskBusinessStatus?? »Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etcintent : code [1..1] « null (Strength=Required)TaskIntent! »Indicates how quickly the Task should be addressed with respect to other requestspriority : code [0..1] « The task's priority. (Strength=Required)RequestPriority! »If true indicates that the Task is asking for the specified action to *not* occur (this element modifies the meaning of other elements)doNotPerform : boolean [0..1]A name or code (or both) briefly describing what the task involvescode : CodeableConcept [0..1] « null (Strength=Example)TaskCode?? » « This element has or is affected by some invariantsC »A free-text description of what is to be performeddescription : markdown [0..1]The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this taskfocus : Reference [0..1] « Any » « This element has or is affected by some invariantsC »The entity who benefits from the performance of the service specified in the task (e.g., the patient)for : Reference [0..1] « Any »The healthcare event (e.g. a patient and healthcare provider interaction) during which this task was createdencounter : Reference [0..1] « Encounter »Indicates the start and/or end of the period of time when completion of the task is desired to take placerequestedPeriod : Period [0..1]Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end)executionPeriod : Period [0..1]The date and time this task was createdauthoredOn : dateTime [0..1] « This element has or is affected by some invariantsC »The date and time of last modification to this tasklastModified : dateTime [0..1] « This element has or is affected by some invariantsC »The creator of the taskrequester : Reference [0..1] « Device|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson »The kind of participant or specific participant that should perform the taskrequestedPerformer : CodeableReference [0..*] « Practitioner| PractitionerRole|Organization|CareTeam|HealthcareService| Patient|Device|RelatedPerson; null (Strength=Preferred)ProcedurePerformerRoleCodes? »Party responsible for managing task executionowner : Reference [0..1] « Practitioner|PractitionerRole| Organization|CareTeam|Patient|RelatedPerson »Principal physical location where this task is performedlocation : Reference [0..1] « Location »A description, code, or reference indicating why this task needs to be performedreason : CodeableReference [0..*] « Any; null (Strength=Example)TaskReason?? »Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Taskinsurance : Reference [0..*] « Coverage|ClaimResponse »Free-text information captured about the task as it progressesnote : Annotation [0..*]Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the taskrelevantHistory : Reference [0..*] « Provenance »PerformerA code or description of the performer of the taskfunction : CodeableConcept [0..1] « null (Strength=Example)TaskPerformerFunctionCode?? »The actor or entity who performed the taskactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|CareTeam|Patient|RelatedPerson »RestrictionIndicates the number of times the requested action should occurrepetitions : positiveInt [0..1]The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request. E.g. ServiceRequest.occurance[x]period : Period [0..1]For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought forrecipient : Reference [0..*] « Patient|Practitioner|PractitionerRole| RelatedPerson|Group|Organization »InputA code or description indicating how the input is intended to be used as part of the task executiontype : CodeableConcept [1..1] « null (Strength=Example)TaskInputParameterType?? »The value of the input parameter as a basic typevalue[x] : * [1..1]OutputThe name of the Output parametertype : CodeableConcept [1..1] « null (Strength=Example)TaskOutputParameterType?? »The value of the Output parameter as a basic typevalue[x] : * [1..1]The entity who performed the requested taskperformer[0..*]If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actionedrestriction[0..1]Additional information that may be needed in the execution of the taskinput[0..*]Outputs produced by the Taskoutput[0..*]

XML Template

<Task xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier Task Instance Identifier --></identifier>
 <instantiatesCanonical><!-- 0..1 canonical(ActivityDefinition) Formal definition of task --></instantiatesCanonical>
 <instantiatesUri value="[uri]"/><!-- 0..1 Formal definition of task -->
 <basedOn><!-- 0..* Reference(Any) Request fulfilled by this task --></basedOn>
 <groupIdentifier><!-- 0..1 Identifier Requisition or grouper id --></groupIdentifier>
 <partOf><!-- 0..* Reference(Task) Composite task --></partOf>
 <status value="[code]"/><!-- 1..1 draft | requested | received | accepted | + -->
 <statusReason><!-- 0..1 CodeableReference Reason for current status --></statusReason>
 <businessStatus><!-- 0..1 CodeableConcept E.g. "Specimen collected", "IV prepped" --></businessStatus>
 <intent value="[code]"/><!-- 1..1 unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option -->
 <priority value="[code]"/><!-- 0..1 routine | urgent | asap | stat -->
 <doNotPerform value="[boolean]"/><!-- 0..1 True if Task is prohibiting action -->
 <code><!-- I 0..1 CodeableConcept Task Type --></code>
 <description value="[markdown]"/><!-- 0..1 Human-readable explanation of task -->
 <focus><!-- I 0..1 Reference(Any) What task is acting on --></focus>
 <for><!-- 0..1 Reference(Any) Beneficiary of the Task --></for>
 <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this task originated --></encounter>
 <requestedPeriod><!-- 0..1 Period When the task should be performed --></requestedPeriod>
 <executionPeriod><!-- 0..1 Period Start and end time of execution --></executionPeriod>
 <authoredOn value="[dateTime]"/><!-- I 0..1 Task Creation Date -->
 <lastModified value="[dateTime]"/><!-- I 0..1 Task Last Modified Date -->
 <requester><!-- 0..1 Reference(Device|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) Who is asking for task to be done --></requester>
 <requestedPerformer><!-- 0..* CodeableReference(CareTeam|Device|
   HealthcareService|Organization|Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who should perform Task --></requestedPerformer>
 <owner><!-- 0..1 Reference(CareTeam|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) Responsible individual --></owner>
 <performer>  <!-- 0..* Who or what performed the task -->
  <function><!-- 0..1 CodeableConcept Type of performance --></function>
  <actor><!-- 1..1 Reference(CareTeam|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) Who performed the task --></actor>
 </performer>
 <location><!-- 0..1 Reference(Location) Where task occurs --></location>
 <reason><!-- 0..* CodeableReference(Any) Why task is needed --></reason>
 <insurance><!-- 0..* Reference(ClaimResponse|Coverage) Associated insurance coverage --></insurance>
 <note><!-- 0..* Annotation Comments made about the task --></note>
 <relevantHistory><!-- 0..* Reference(Provenance) Key events in history of the Task --></relevantHistory>
 <restriction>  <!-- I 0..1 Constraints on fulfillment tasks -->
  <repetitions value="[positiveInt]"/><!-- 0..1 How many times to repeat -->
  <period><!-- 0..1 Period When fulfillment is sought --></period>
  <recipient><!-- 0..* Reference(Group|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) For whom is fulfillment sought? --></recipient>
 </restriction>
 <input>  <!-- 0..* Information used to perform task -->
  <type><!-- 1..1 CodeableConcept Label for the input --></type>
  <value[x]><!-- 1..1 * Content to use in performing the task --></value[x]>
 </input>
 <output>  <!-- 0..* Information produced as part of task -->
  <type><!-- 1..1 CodeableConcept Label for output --></type>
  <value[x]><!-- 1..1 * Result of output --></value[x]>
 </output>
</Task>

JSON Template

{doco
  "resourceType" : "Task",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // Task Instance Identifier
  "instantiatesCanonical" : "<canonical(ActivityDefinition)>", // Formal definition of task
  "instantiatesUri" : "<uri>", // Formal definition of task
  "basedOn" : [{ Reference(Any) }], // Request fulfilled by this task
  "groupIdentifier" : { Identifier }, // Requisition or grouper id
  "partOf" : [{ Reference(Task) }], // Composite task
  "status" : "<code>", // R!  draft | requested | received | accepted | +
  "statusReason" : { CodeableReference }, // Reason for current status
  "businessStatus" : { CodeableConcept }, // E.g. "Specimen collected", "IV prepped"
  "intent" : "<code>", // R!  unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
  "priority" : "<code>", // routine | urgent | asap | stat
  "doNotPerform" : <boolean>, // True if Task is prohibiting action
  "code" : { CodeableConcept }, // I Task Type
  "description" : "<markdown>", // Human-readable explanation of task
  "focus" : { Reference(Any) }, // I What task is acting on
  "for" : { Reference(Any) }, // Beneficiary of the Task
  "encounter" : { Reference(Encounter) }, // Healthcare event during which this task originated
  "requestedPeriod" : { Period }, // When the task should be performed
  "executionPeriod" : { Period }, // Start and end time of execution
  "authoredOn" : "<dateTime>", // I Task Creation Date
  "lastModified" : "<dateTime>", // I Task Last Modified Date
  "requester" : { Reference(Device|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) }, // Who is asking for task to be done
  "requestedPerformer" : [{ CodeableReference(CareTeam|Device|
   HealthcareService|Organization|Patient|Practitioner|PractitionerRole|
   RelatedPerson) }], // Who should perform Task
  "owner" : { Reference(CareTeam|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) }, // Responsible individual
  "performer" : [{ // Who or what performed the task
    "function" : { CodeableConcept }, // Type of performance
    "actor" : { Reference(CareTeam|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) } // R!  Who performed the task
  }],
  "location" : { Reference(Location) }, // Where task occurs
  "reason" : [{ CodeableReference(Any) }], // Why task is needed
  "insurance" : [{ Reference(ClaimResponse|Coverage) }], // Associated insurance coverage
  "note" : [{ Annotation }], // Comments made about the task
  "relevantHistory" : [{ Reference(Provenance) }], // Key events in history of the Task
  "restriction" : { // I Constraints on fulfillment tasks
    "repetitions" : "<positiveInt>", // How many times to repeat
    "period" : { Period }, // When fulfillment is sought
    "recipient" : [{ Reference(Group|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) }] // For whom is fulfillment sought?
  },
  "input" : [{ // Information used to perform task
    "type" : { CodeableConcept }, // R!  Label for the input
    // value[x]: Content to use in performing the task. One of these 54:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>,
    "valueCanonical" : "<canonical>",
    "valueCode" : "<code>",
    "valueDate" : "<date>",
    "valueDateTime" : "<dateTime>",
    "valueDecimal" : <decimal>,
    "valueId" : "<id>",
    "valueInstant" : "<instant>",
    "valueInteger" : <integer>,
    "valueInteger64" : "<integer64>",
    "valueMarkdown" : "<markdown>",
    "valueOid" : "<oid>",
    "valuePositiveInt" : "<positiveInt>",
    "valueString" : "<string>",
    "valueTime" : "<time>",
    "valueUnsignedInt" : "<unsignedInt>",
    "valueUri" : "<uri>",
    "valueUrl" : "<url>",
    "valueUuid" : "<uuid>",
    "valueAddress" : { Address },
    "valueAge" : { Age },
    "valueAnnotation" : { Annotation },
    "valueAttachment" : { Attachment },
    "valueCodeableConcept" : { CodeableConcept },
    "valueCodeableReference" : { CodeableReference },
    "valueCoding" : { Coding },
    "valueContactPoint" : { ContactPoint },
    "valueCount" : { Count },
    "valueDistance" : { Distance },
    "valueDuration" : { Duration },
    "valueHumanName" : { HumanName },
    "valueIdentifier" : { Identifier },
    "valueMoney" : { Money },
    "valuePeriod" : { Period },
    "valueQuantity" : { Quantity },
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueRatioRange" : { RatioRange },
    "valueReference" : { Reference },
    "valueSampledData" : { SampledData },
    "valueSignature" : { Signature },
    "valueTiming" : { Timing },
    "valueContactDetail" : { ContactDetail },
    "valueDataRequirement" : { DataRequirement },
    "valueExpression" : { Expression },
    "valueParameterDefinition" : { ParameterDefinition },
    "valueRelatedArtifact" : { RelatedArtifact },
    "valueTriggerDefinition" : { TriggerDefinition },
    "valueUsageContext" : { UsageContext },
    "valueAvailability" : { Availability },
    "valueExtendedContactDetail" : { ExtendedContactDetail },
    "valueDosage" : { Dosage },
    "valueMeta" : { Meta },
  }],
  "output" : [{ // Information produced as part of task
    "type" : { CodeableConcept }, // R!  Label for output
    // value[x]: Result of output. One of these 54:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>,
    "valueCanonical" : "<canonical>",
    "valueCode" : "<code>",
    "valueDate" : "<date>",
    "valueDateTime" : "<dateTime>",
    "valueDecimal" : <decimal>,
    "valueId" : "<id>",
    "valueInstant" : "<instant>",
    "valueInteger" : <integer>,
    "valueInteger64" : "<integer64>",
    "valueMarkdown" : "<markdown>",
    "valueOid" : "<oid>",
    "valuePositiveInt" : "<positiveInt>",
    "valueString" : "<string>",
    "valueTime" : "<time>",
    "valueUnsignedInt" : "<unsignedInt>",
    "valueUri" : "<uri>",
    "valueUrl" : "<url>",
    "valueUuid" : "<uuid>",
    "valueAddress" : { Address },
    "valueAge" : { Age },
    "valueAnnotation" : { Annotation },
    "valueAttachment" : { Attachment },
    "valueCodeableConcept" : { CodeableConcept },
    "valueCodeableReference" : { CodeableReference },
    "valueCoding" : { Coding },
    "valueContactPoint" : { ContactPoint },
    "valueCount" : { Count },
    "valueDistance" : { Distance },
    "valueDuration" : { Duration },
    "valueHumanName" : { HumanName },
    "valueIdentifier" : { Identifier },
    "valueMoney" : { Money },
    "valuePeriod" : { Period },
    "valueQuantity" : { Quantity },
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueRatioRange" : { RatioRange },
    "valueReference" : { Reference },
    "valueSampledData" : { SampledData },
    "valueSignature" : { Signature },
    "valueTiming" : { Timing },
    "valueContactDetail" : { ContactDetail },
    "valueDataRequirement" : { DataRequirement },
    "valueExpression" : { Expression },
    "valueParameterDefinition" : { ParameterDefinition },
    "valueRelatedArtifact" : { RelatedArtifact },
    "valueTriggerDefinition" : { TriggerDefinition },
    "valueUsageContext" : { UsageContext },
    "valueAvailability" : { Availability },
    "valueExtendedContactDetail" : { ExtendedContactDetail },
    "valueDosage" : { Dosage },
    "valueMeta" : { Meta },
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Task;
  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:identifier  ( [ Identifier ] ... ) ; # 0..* Task Instance Identifier
  fhir:instantiatesCanonical [ canonical(ActivityDefinition) ] ; # 0..1 Formal definition of task
  fhir:instantiatesUri [ uri ] ; # 0..1 Formal definition of task
  fhir:basedOn  ( [ Reference(Any) ] ... ) ; # 0..* Request fulfilled by this task
  fhir:groupIdentifier [ Identifier ] ; # 0..1 Requisition or grouper id
  fhir:partOf  ( [ Reference(Task) ] ... ) ; # 0..* Composite task
  fhir:status [ code ] ; # 1..1 draft | requested | received | accepted | +
  fhir:statusReason [ CodeableReference ] ; # 0..1 Reason for current status
  fhir:businessStatus [ CodeableConcept ] ; # 0..1 E.g. "Specimen collected", "IV prepped"
  fhir:intent [ code ] ; # 1..1 unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
  fhir:priority [ code ] ; # 0..1 routine | urgent | asap | stat
  fhir:doNotPerform [ boolean ] ; # 0..1 True if Task is prohibiting action
  fhir:code [ CodeableConcept ] ; # 0..1 I Task Type
  fhir:description [ markdown ] ; # 0..1 Human-readable explanation of task
  fhir:focus [ Reference(Any) ] ; # 0..1 I What task is acting on
  fhir:for [ Reference(Any) ] ; # 0..1 Beneficiary of the Task
  fhir:encounter [ Reference(Encounter) ] ; # 0..1 Healthcare event during which this task originated
  fhir:requestedPeriod [ Period ] ; # 0..1 When the task should be performed
  fhir:executionPeriod [ Period ] ; # 0..1 Start and end time of execution
  fhir:authoredOn [ dateTime ] ; # 0..1 I Task Creation Date
  fhir:lastModified [ dateTime ] ; # 0..1 I Task Last Modified Date
  fhir:requester [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Who is asking for task to be done
  fhir:requestedPerformer  ( [ CodeableReference(CareTeam|Device|HealthcareService|Organization|Patient|Practitioner|
  PractitionerRole|RelatedPerson) ] ... ) ; # 0..* Who should perform Task
  fhir:owner [ Reference(CareTeam|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Responsible individual
  fhir:performer ( [ # 0..* Who or what performed the task
    fhir:function [ CodeableConcept ] ; # 0..1 Type of performance
    fhir:actor [ Reference(CareTeam|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 1..1 Who performed the task
  ] ... ) ;
  fhir:location [ Reference(Location) ] ; # 0..1 Where task occurs
  fhir:reason  ( [ CodeableReference(Any) ] ... ) ; # 0..* Why task is needed
  fhir:insurance  ( [ Reference(ClaimResponse|Coverage) ] ... ) ; # 0..* Associated insurance coverage
  fhir:note  ( [ Annotation ] ... ) ; # 0..* Comments made about the task
  fhir:relevantHistory  ( [ Reference(Provenance) ] ... ) ; # 0..* Key events in history of the Task
  fhir:restriction [ # 0..1 I Constraints on fulfillment tasks
    fhir:repetitions [ positiveInt ] ; # 0..1 How many times to repeat
    fhir:period [ Period ] ; # 0..1 When fulfillment is sought
    fhir:recipient  ( [ Reference(Group|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ... ) ; # 0..* For whom is fulfillment sought?
  ] ;
  fhir:input ( [ # 0..* Information used to perform task
    fhir:type [ CodeableConcept ] ; # 1..1 Label for the input
    # value[x] : 1..1 Content to use in performing the task. One of these 54
      fhir:value [  a fhir:base64Binary ; base64Binary ]
      fhir:value [  a fhir:boolean ; boolean ]
      fhir:value [  a fhir:canonical ; canonical ]
      fhir:value [  a fhir:code ; code ]
      fhir:value [  a fhir:date ; date ]
      fhir:value [  a fhir:dateTime ; dateTime ]
      fhir:value [  a fhir:decimal ; decimal ]
      fhir:value [  a fhir:id ; id ]
      fhir:value [  a fhir:instant ; instant ]
      fhir:value [  a fhir:integer ; integer ]
      fhir:value [  a fhir:integer64 ; integer64 ]
      fhir:value [  a fhir:markdown ; markdown ]
      fhir:value [  a fhir:oid ; oid ]
      fhir:value [  a fhir:positiveInt ; positiveInt ]
      fhir:value [  a fhir:string ; string ]
      fhir:value [  a fhir:time ; time ]
      fhir:value [  a fhir:unsignedInt ; unsignedInt ]
      fhir:value [  a fhir:uri ; uri ]
      fhir:value [  a fhir:url ; url ]
      fhir:value [  a fhir:uuid ; uuid ]
      fhir:value [  a fhir:Address ; Address ]
      fhir:value [  a fhir:Age ; Age ]
      fhir:value [  a fhir:Annotation ; Annotation ]
      fhir:value [  a fhir:Attachment ; Attachment ]
      fhir:value [  a fhir:CodeableConcept ; CodeableConcept ]
      fhir:value [  a fhir:CodeableReference ; CodeableReference ]
      fhir:value [  a fhir:Coding ; Coding ]
      fhir:value [  a fhir:ContactPoint ; ContactPoint ]
      fhir:value [  a fhir:Count ; Count ]
      fhir:value [  a fhir:Distance ; Distance ]
      fhir:value [  a fhir:Duration ; Duration ]
      fhir:value [  a fhir:HumanName ; HumanName ]
      fhir:value [  a fhir:Identifier ; Identifier ]
      fhir:value [  a fhir:Money ; Money ]
      fhir:value [  a fhir:Period ; Period ]
      fhir:value [  a fhir:Quantity ; Quantity ]
      fhir:value [  a fhir:Range ; Range ]
      fhir:value [  a fhir:Ratio ; Ratio ]
      fhir:value [  a fhir:RatioRange ; RatioRange ]
      fhir:value [  a fhir:Reference ; Reference ]
      fhir:value [  a fhir:SampledData ; SampledData ]
      fhir:value [  a fhir:Signature ; Signature ]
      fhir:value [  a fhir:Timing ; Timing ]
      fhir:value [  a fhir:ContactDetail ; ContactDetail ]
      fhir:value [  a fhir:DataRequirement ; DataRequirement ]
      fhir:value [  a fhir:Expression ; Expression ]
      fhir:value [  a fhir:ParameterDefinition ; ParameterDefinition ]
      fhir:value [  a fhir:RelatedArtifact ; RelatedArtifact ]
      fhir:value [  a fhir:TriggerDefinition ; TriggerDefinition ]
      fhir:value [  a fhir:UsageContext ; UsageContext ]
      fhir:value [  a fhir:Availability ; Availability ]
      fhir:value [  a fhir:ExtendedContactDetail ; ExtendedContactDetail ]
      fhir:value [  a fhir:Dosage ; Dosage ]
      fhir:value [  a fhir:Meta ; Meta ]
  ] ... ) ;
  fhir:output ( [ # 0..* Information produced as part of task
    fhir:type [ CodeableConcept ] ; # 1..1 Label for output
    # value[x] : 1..1 Result of output. One of these 54
      fhir:value [  a fhir:base64Binary ; base64Binary ]
      fhir:value [  a fhir:boolean ; boolean ]
      fhir:value [  a fhir:canonical ; canonical ]
      fhir:value [  a fhir:code ; code ]
      fhir:value [  a fhir:date ; date ]
      fhir:value [  a fhir:dateTime ; dateTime ]
      fhir:value [  a fhir:decimal ; decimal ]
      fhir:value [  a fhir:id ; id ]
      fhir:value [  a fhir:instant ; instant ]
      fhir:value [  a fhir:integer ; integer ]
      fhir:value [  a fhir:integer64 ; integer64 ]
      fhir:value [  a fhir:markdown ; markdown ]
      fhir:value [  a fhir:oid ; oid ]
      fhir:value [  a fhir:positiveInt ; positiveInt ]
      fhir:value [  a fhir:string ; string ]
      fhir:value [  a fhir:time ; time ]
      fhir:value [  a fhir:unsignedInt ; unsignedInt ]
      fhir:value [  a fhir:uri ; uri ]
      fhir:value [  a fhir:url ; url ]
      fhir:value [  a fhir:uuid ; uuid ]
      fhir:value [  a fhir:Address ; Address ]
      fhir:value [  a fhir:Age ; Age ]
      fhir:value [  a fhir:Annotation ; Annotation ]
      fhir:value [  a fhir:Attachment ; Attachment ]
      fhir:value [  a fhir:CodeableConcept ; CodeableConcept ]
      fhir:value [  a fhir:CodeableReference ; CodeableReference ]
      fhir:value [  a fhir:Coding ; Coding ]
      fhir:value [  a fhir:ContactPoint ; ContactPoint ]
      fhir:value [  a fhir:Count ; Count ]
      fhir:value [  a fhir:Distance ; Distance ]
      fhir:value [  a fhir:Duration ; Duration ]
      fhir:value [  a fhir:HumanName ; HumanName ]
      fhir:value [  a fhir:Identifier ; Identifier ]
      fhir:value [  a fhir:Money ; Money ]
      fhir:value [  a fhir:Period ; Period ]
      fhir:value [  a fhir:Quantity ; Quantity ]
      fhir:value [  a fhir:Range ; Range ]
      fhir:value [  a fhir:Ratio ; Ratio ]
      fhir:value [  a fhir:RatioRange ; RatioRange ]
      fhir:value [  a fhir:Reference ; Reference ]
      fhir:value [  a fhir:SampledData ; SampledData ]
      fhir:value [  a fhir:Signature ; Signature ]
      fhir:value [  a fhir:Timing ; Timing ]
      fhir:value [  a fhir:ContactDetail ; ContactDetail ]
      fhir:value [  a fhir:DataRequirement ; DataRequirement ]
      fhir:value [  a fhir:Expression ; Expression ]
      fhir:value [  a fhir:ParameterDefinition ; ParameterDefinition ]
      fhir:value [  a fhir:RelatedArtifact ; RelatedArtifact ]
      fhir:value [  a fhir:TriggerDefinition ; TriggerDefinition ]
      fhir:value [  a fhir:UsageContext ; UsageContext ]
      fhir:value [  a fhir:Availability ; Availability ]
      fhir:value [  a fhir:ExtendedContactDetail ; ExtendedContactDetail ]
      fhir:value [  a fhir:Dosage ; Dosage ]
      fhir:value [  a fhir:Meta ; Meta ]
  ] ... ) ;
]

Changes from both R4 and R4B

Task
Task.statusReason
  • Type changed from CodeableConcept to CodeableReference
Task.doNotPerform
  • Added Element
Task.description
  • Type changed from string to markdown
Task.requestedPeriod
  • Added Element
Task.requestedPerformer
  • Added Element
Task.owner
  • Type Reference: Removed Target Types HealthcareService, Device
Task.performer
  • Added Element
Task.performer.function
  • Added Element
Task.performer.actor
  • Added Mandatory Element
Task.reason
  • Added Element
Task.input.value[x]
  • Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta
  • Remove Type Contributor
Task.output.value[x]
  • Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta
  • Remove Type Contributor
Task.performerType
  • Deleted (->Task.requestedPerformer)
Task.reasonCode
  • Deleted (-> reason)
Task.reasonReference
  • Deleted (-> reason)

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Task TU DomainResource A task to be performed
+ Rule: Task.restriction is only allowed if the Task is seeking fulfillment and a focus is specified.
+ Rule: Last modified date must be greater than or equal to authored-on date.

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier 0..* Identifier Task Instance Identifier

... instantiatesCanonical Σ 0..1 canonical(ActivityDefinition) Formal definition of task
... instantiatesUri Σ 0..1 uri Formal definition of task
... basedOn Σ 0..* Reference(Any) Request fulfilled by this task

... groupIdentifier Σ 0..1 Identifier Requisition or grouper id
... partOf Σ 0..* Reference(Task) Composite task

... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: Task Status (Required)
... statusReason Σ 0..1 CodeableReference() Reason for current status
Binding: Task Status Reason (Example)
... businessStatus Σ 0..1 CodeableConcept E.g. "Specimen collected", "IV prepped"
Binding: TaskBusinessStatus (Example)
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: Task Intent (Required)
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (Required)
... doNotPerform ?!Σ 0..1 boolean True if Task is prohibiting action
... code ΣC 0..1 CodeableConcept Task Type
Binding: Task Codes (Example)
... description Σ 0..1 markdown Human-readable explanation of task
... focus ΣC 0..1 Reference(Any) What task is acting on
... for Σ 0..1 Reference(Any) Beneficiary of the Task
... encounter Σ 0..1 Reference(Encounter) Healthcare event during which this task originated
... requestedPeriod Σ 0..1 Period When the task should be performed
... executionPeriod Σ 0..1 Period Start and end time of execution
... authoredOn C 0..1 dateTime Task Creation Date
... lastModified ΣC 0..1 dateTime Task Last Modified Date
... requester Σ 0..1 Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson) Who is asking for task to be done
... requestedPerformer 0..* CodeableReference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson) Who should perform Task
Binding: Procedure Performer Role Codes (Preferred)

... owner Σ 0..1 Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Responsible individual
... performer Σ 0..* BackboneElement Who or what performed the task

.... function Σ 0..1 CodeableConcept Type of performance
Binding: TaskPerformerFunctionCode (Example)
.... actor Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Who performed the task
... location Σ 0..1 Reference(Location) Where task occurs
... reason 0..* CodeableReference(Any) Why task is needed
Binding: TaskReason (Example)

... insurance 0..* Reference(Coverage | ClaimResponse) Associated insurance coverage

... note 0..* Annotation Comments made about the task

... relevantHistory 0..* Reference(Provenance) Key events in history of the Task

... restriction C 0..1 BackboneElement Constraints on fulfillment tasks
.... repetitions 0..1 positiveInt How many times to repeat
.... period 0..1 Period When fulfillment is sought
.... recipient 0..* Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Group | Organization) For whom is fulfillment sought?

... input 0..* BackboneElement Information used to perform task

.... type 1..1 CodeableConcept Label for the input
Binding: TaskInputParameterType (Example)
.... value[x] 1..1 * Content to use in performing the task
... output 0..* BackboneElement Information produced as part of task

.... type 1..1 CodeableConcept Label for output
Binding: TaskOutputParameterType (Example)
.... value[x] 1..1 * Result of output

doco Documentation for this format icon

See the Extensions for this resource

UML Diagram (Legend)

Task (DomainResource)The business identifier for this taskidentifier : Identifier [0..*]The URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this TaskinstantiatesCanonical : canonical [0..1] « ActivityDefinition »The URL pointing to an *externally* maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this TaskinstantiatesUri : uri [0..1]BasedOn refers to a higher-level authorization that triggered the creation of the task. It references a "request" resource such as a ServiceRequest, MedicationRequest, CarePlan, etc. which is distinct from the "request" resource the task is seeking to fulfill. This latter resource is referenced by focus. For example, based on a CarePlan (= basedOn), a task is created to fulfill a ServiceRequest ( = focus ) to collect a specimen from a patientbasedOn : Reference [0..*] « Any »A shared identifier common to multiple independent Task and Request instances that were activated/authorized more or less simultaneously by a single author. The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc. E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one timegroupIdentifier : Identifier [0..1]Task that this particular task is part ofpartOf : Reference [0..*] « Task »The current status of the task (this element modifies the meaning of other elements)status : code [1..1] « null (Strength=Required)TaskStatus! »An explanation as to why this task is held, failed, was refused, etcstatusReason : CodeableReference [0..1] « ; null (Strength=Example)TaskStatusReason?? »Contains business-specific nuances of the business statebusinessStatus : CodeableConcept [0..1] « null (Strength=Example)TaskBusinessStatus?? »Indicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etcintent : code [1..1] « null (Strength=Required)TaskIntent! »Indicates how quickly the Task should be addressed with respect to other requestspriority : code [0..1] « The task's priority. (Strength=Required)RequestPriority! »If true indicates that the Task is asking for the specified action to *not* occur (this element modifies the meaning of other elements)doNotPerform : boolean [0..1]A name or code (or both) briefly describing what the task involvescode : CodeableConcept [0..1] « null (Strength=Example)TaskCode?? » « This element has or is affected by some invariantsC »A free-text description of what is to be performeddescription : markdown [0..1]The request being fulfilled or the resource being manipulated (changed, suspended, etc.) by this taskfocus : Reference [0..1] « Any » « This element has or is affected by some invariantsC »The entity who benefits from the performance of the service specified in the task (e.g., the patient)for : Reference [0..1] « Any »The healthcare event (e.g. a patient and healthcare provider interaction) during which this task was createdencounter : Reference [0..1] « Encounter »Indicates the start and/or end of the period of time when completion of the task is desired to take placerequestedPeriod : Period [0..1]Identifies the time action was first taken against the task (start) and/or the time final action was taken against the task prior to marking it as completed (end)executionPeriod : Period [0..1]The date and time this task was createdauthoredOn : dateTime [0..1] « This element has or is affected by some invariantsC »The date and time of last modification to this tasklastModified : dateTime [0..1] « This element has or is affected by some invariantsC »The creator of the taskrequester : Reference [0..1] « Device|Organization|Patient| Practitioner|PractitionerRole|RelatedPerson »The kind of participant or specific participant that should perform the taskrequestedPerformer : CodeableReference [0..*] « Practitioner| PractitionerRole|Organization|CareTeam|HealthcareService| Patient|Device|RelatedPerson; null (Strength=Preferred)ProcedurePerformerRoleCodes? »Party responsible for managing task executionowner : Reference [0..1] « Practitioner|PractitionerRole| Organization|CareTeam|Patient|RelatedPerson »Principal physical location where this task is performedlocation : Reference [0..1] « Location »A description, code, or reference indicating why this task needs to be performedreason : CodeableReference [0..*] « Any; null (Strength=Example)TaskReason?? »Insurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Taskinsurance : Reference [0..*] « Coverage|ClaimResponse »Free-text information captured about the task as it progressesnote : Annotation [0..*]Links to Provenance records for past versions of this Task that identify key state transitions or updates that are likely to be relevant to a user looking at the current version of the taskrelevantHistory : Reference [0..*] « Provenance »PerformerA code or description of the performer of the taskfunction : CodeableConcept [0..1] « null (Strength=Example)TaskPerformerFunctionCode?? »The actor or entity who performed the taskactor : Reference [1..1] « Practitioner|PractitionerRole| Organization|CareTeam|Patient|RelatedPerson »RestrictionIndicates the number of times the requested action should occurrepetitions : positiveInt [0..1]The time-period for which fulfillment is sought. This must fall within the overall time period authorized in the referenced request. E.g. ServiceRequest.occurance[x]period : Period [0..1]For requests that are targeted to more than one potential recipient/target, to identify who is fulfillment is sought forrecipient : Reference [0..*] « Patient|Practitioner|PractitionerRole| RelatedPerson|Group|Organization »InputA code or description indicating how the input is intended to be used as part of the task executiontype : CodeableConcept [1..1] « null (Strength=Example)TaskInputParameterType?? »The value of the input parameter as a basic typevalue[x] : * [1..1]OutputThe name of the Output parametertype : CodeableConcept [1..1] « null (Strength=Example)TaskOutputParameterType?? »The value of the Output parameter as a basic typevalue[x] : * [1..1]The entity who performed the requested taskperformer[0..*]If the Task.focus is a request resource and the task is seeking fulfillment (i.e. is asking for the request to be actioned), this element identifies any limitations on what parts of the referenced request should be actionedrestriction[0..1]Additional information that may be needed in the execution of the taskinput[0..*]Outputs produced by the Taskoutput[0..*]

XML Template

<Task xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier Task Instance Identifier --></identifier>
 <instantiatesCanonical><!-- 0..1 canonical(ActivityDefinition) Formal definition of task --></instantiatesCanonical>
 <instantiatesUri value="[uri]"/><!-- 0..1 Formal definition of task -->
 <basedOn><!-- 0..* Reference(Any) Request fulfilled by this task --></basedOn>
 <groupIdentifier><!-- 0..1 Identifier Requisition or grouper id --></groupIdentifier>
 <partOf><!-- 0..* Reference(Task) Composite task --></partOf>
 <status value="[code]"/><!-- 1..1 draft | requested | received | accepted | + -->
 <statusReason><!-- 0..1 CodeableReference Reason for current status --></statusReason>
 <businessStatus><!-- 0..1 CodeableConcept E.g. "Specimen collected", "IV prepped" --></businessStatus>
 <intent value="[code]"/><!-- 1..1 unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option -->
 <priority value="[code]"/><!-- 0..1 routine | urgent | asap | stat -->
 <doNotPerform value="[boolean]"/><!-- 0..1 True if Task is prohibiting action -->
 <code><!-- I 0..1 CodeableConcept Task Type --></code>
 <description value="[markdown]"/><!-- 0..1 Human-readable explanation of task -->
 <focus><!-- I 0..1 Reference(Any) What task is acting on --></focus>
 <for><!-- 0..1 Reference(Any) Beneficiary of the Task --></for>
 <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this task originated --></encounter>
 <requestedPeriod><!-- 0..1 Period When the task should be performed --></requestedPeriod>
 <executionPeriod><!-- 0..1 Period Start and end time of execution --></executionPeriod>
 <authoredOn value="[dateTime]"/><!-- I 0..1 Task Creation Date -->
 <lastModified value="[dateTime]"/><!-- I 0..1 Task Last Modified Date -->
 <requester><!-- 0..1 Reference(Device|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) Who is asking for task to be done --></requester>
 <requestedPerformer><!-- 0..* CodeableReference(CareTeam|Device|
   HealthcareService|Organization|Patient|Practitioner|PractitionerRole|
   RelatedPerson) Who should perform Task --></requestedPerformer>
 <owner><!-- 0..1 Reference(CareTeam|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) Responsible individual --></owner>
 <performer>  <!-- 0..* Who or what performed the task -->
  <function><!-- 0..1 CodeableConcept Type of performance --></function>
  <actor><!-- 1..1 Reference(CareTeam|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) Who performed the task --></actor>
 </performer>
 <location><!-- 0..1 Reference(Location) Where task occurs --></location>
 <reason><!-- 0..* CodeableReference(Any) Why task is needed --></reason>
 <insurance><!-- 0..* Reference(ClaimResponse|Coverage) Associated insurance coverage --></insurance>
 <note><!-- 0..* Annotation Comments made about the task --></note>
 <relevantHistory><!-- 0..* Reference(Provenance) Key events in history of the Task --></relevantHistory>
 <restriction>  <!-- I 0..1 Constraints on fulfillment tasks -->
  <repetitions value="[positiveInt]"/><!-- 0..1 How many times to repeat -->
  <period><!-- 0..1 Period When fulfillment is sought --></period>
  <recipient><!-- 0..* Reference(Group|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) For whom is fulfillment sought? --></recipient>
 </restriction>
 <input>  <!-- 0..* Information used to perform task -->
  <type><!-- 1..1 CodeableConcept Label for the input --></type>
  <value[x]><!-- 1..1 * Content to use in performing the task --></value[x]>
 </input>
 <output>  <!-- 0..* Information produced as part of task -->
  <type><!-- 1..1 CodeableConcept Label for output --></type>
  <value[x]><!-- 1..1 * Result of output --></value[x]>
 </output>
</Task>

JSON Template

{doco
  "resourceType" : "Task",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // Task Instance Identifier
  "instantiatesCanonical" : "<canonical(ActivityDefinition)>", // Formal definition of task
  "instantiatesUri" : "<uri>", // Formal definition of task
  "basedOn" : [{ Reference(Any) }], // Request fulfilled by this task
  "groupIdentifier" : { Identifier }, // Requisition or grouper id
  "partOf" : [{ Reference(Task) }], // Composite task
  "status" : "<code>", // R!  draft | requested | received | accepted | +
  "statusReason" : { CodeableReference }, // Reason for current status
  "businessStatus" : { CodeableConcept }, // E.g. "Specimen collected", "IV prepped"
  "intent" : "<code>", // R!  unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
  "priority" : "<code>", // routine | urgent | asap | stat
  "doNotPerform" : <boolean>, // True if Task is prohibiting action
  "code" : { CodeableConcept }, // I Task Type
  "description" : "<markdown>", // Human-readable explanation of task
  "focus" : { Reference(Any) }, // I What task is acting on
  "for" : { Reference(Any) }, // Beneficiary of the Task
  "encounter" : { Reference(Encounter) }, // Healthcare event during which this task originated
  "requestedPeriod" : { Period }, // When the task should be performed
  "executionPeriod" : { Period }, // Start and end time of execution
  "authoredOn" : "<dateTime>", // I Task Creation Date
  "lastModified" : "<dateTime>", // I Task Last Modified Date
  "requester" : { Reference(Device|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) }, // Who is asking for task to be done
  "requestedPerformer" : [{ CodeableReference(CareTeam|Device|
   HealthcareService|Organization|Patient|Practitioner|PractitionerRole|
   RelatedPerson) }], // Who should perform Task
  "owner" : { Reference(CareTeam|Organization|Patient|Practitioner|
   PractitionerRole|RelatedPerson) }, // Responsible individual
  "performer" : [{ // Who or what performed the task
    "function" : { CodeableConcept }, // Type of performance
    "actor" : { Reference(CareTeam|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) } // R!  Who performed the task
  }],
  "location" : { Reference(Location) }, // Where task occurs
  "reason" : [{ CodeableReference(Any) }], // Why task is needed
  "insurance" : [{ Reference(ClaimResponse|Coverage) }], // Associated insurance coverage
  "note" : [{ Annotation }], // Comments made about the task
  "relevantHistory" : [{ Reference(Provenance) }], // Key events in history of the Task
  "restriction" : { // I Constraints on fulfillment tasks
    "repetitions" : "<positiveInt>", // How many times to repeat
    "period" : { Period }, // When fulfillment is sought
    "recipient" : [{ Reference(Group|Organization|Patient|Practitioner|
    PractitionerRole|RelatedPerson) }] // For whom is fulfillment sought?
  },
  "input" : [{ // Information used to perform task
    "type" : { CodeableConcept }, // R!  Label for the input
    // value[x]: Content to use in performing the task. One of these 54:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>,
    "valueCanonical" : "<canonical>",
    "valueCode" : "<code>",
    "valueDate" : "<date>",
    "valueDateTime" : "<dateTime>",
    "valueDecimal" : <decimal>,
    "valueId" : "<id>",
    "valueInstant" : "<instant>",
    "valueInteger" : <integer>,
    "valueInteger64" : "<integer64>",
    "valueMarkdown" : "<markdown>",
    "valueOid" : "<oid>",
    "valuePositiveInt" : "<positiveInt>",
    "valueString" : "<string>",
    "valueTime" : "<time>",
    "valueUnsignedInt" : "<unsignedInt>",
    "valueUri" : "<uri>",
    "valueUrl" : "<url>",
    "valueUuid" : "<uuid>",
    "valueAddress" : { Address },
    "valueAge" : { Age },
    "valueAnnotation" : { Annotation },
    "valueAttachment" : { Attachment },
    "valueCodeableConcept" : { CodeableConcept },
    "valueCodeableReference" : { CodeableReference },
    "valueCoding" : { Coding },
    "valueContactPoint" : { ContactPoint },
    "valueCount" : { Count },
    "valueDistance" : { Distance },
    "valueDuration" : { Duration },
    "valueHumanName" : { HumanName },
    "valueIdentifier" : { Identifier },
    "valueMoney" : { Money },
    "valuePeriod" : { Period },
    "valueQuantity" : { Quantity },
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueRatioRange" : { RatioRange },
    "valueReference" : { Reference },
    "valueSampledData" : { SampledData },
    "valueSignature" : { Signature },
    "valueTiming" : { Timing },
    "valueContactDetail" : { ContactDetail },
    "valueDataRequirement" : { DataRequirement },
    "valueExpression" : { Expression },
    "valueParameterDefinition" : { ParameterDefinition },
    "valueRelatedArtifact" : { RelatedArtifact },
    "valueTriggerDefinition" : { TriggerDefinition },
    "valueUsageContext" : { UsageContext },
    "valueAvailability" : { Availability },
    "valueExtendedContactDetail" : { ExtendedContactDetail },
    "valueDosage" : { Dosage },
    "valueMeta" : { Meta },
  }],
  "output" : [{ // Information produced as part of task
    "type" : { CodeableConcept }, // R!  Label for output
    // value[x]: Result of output. One of these 54:
    "valueBase64Binary" : "<base64Binary>"
    "valueBoolean" : <boolean>,
    "valueCanonical" : "<canonical>",
    "valueCode" : "<code>",
    "valueDate" : "<date>",
    "valueDateTime" : "<dateTime>",
    "valueDecimal" : <decimal>,
    "valueId" : "<id>",
    "valueInstant" : "<instant>",
    "valueInteger" : <integer>,
    "valueInteger64" : "<integer64>",
    "valueMarkdown" : "<markdown>",
    "valueOid" : "<oid>",
    "valuePositiveInt" : "<positiveInt>",
    "valueString" : "<string>",
    "valueTime" : "<time>",
    "valueUnsignedInt" : "<unsignedInt>",
    "valueUri" : "<uri>",
    "valueUrl" : "<url>",
    "valueUuid" : "<uuid>",
    "valueAddress" : { Address },
    "valueAge" : { Age },
    "valueAnnotation" : { Annotation },
    "valueAttachment" : { Attachment },
    "valueCodeableConcept" : { CodeableConcept },
    "valueCodeableReference" : { CodeableReference },
    "valueCoding" : { Coding },
    "valueContactPoint" : { ContactPoint },
    "valueCount" : { Count },
    "valueDistance" : { Distance },
    "valueDuration" : { Duration },
    "valueHumanName" : { HumanName },
    "valueIdentifier" : { Identifier },
    "valueMoney" : { Money },
    "valuePeriod" : { Period },
    "valueQuantity" : { Quantity },
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueRatioRange" : { RatioRange },
    "valueReference" : { Reference },
    "valueSampledData" : { SampledData },
    "valueSignature" : { Signature },
    "valueTiming" : { Timing },
    "valueContactDetail" : { ContactDetail },
    "valueDataRequirement" : { DataRequirement },
    "valueExpression" : { Expression },
    "valueParameterDefinition" : { ParameterDefinition },
    "valueRelatedArtifact" : { RelatedArtifact },
    "valueTriggerDefinition" : { TriggerDefinition },
    "valueUsageContext" : { UsageContext },
    "valueAvailability" : { Availability },
    "valueExtendedContactDetail" : { ExtendedContactDetail },
    "valueDosage" : { Dosage },
    "valueMeta" : { Meta },
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Task;
  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:identifier  ( [ Identifier ] ... ) ; # 0..* Task Instance Identifier
  fhir:instantiatesCanonical [ canonical(ActivityDefinition) ] ; # 0..1 Formal definition of task
  fhir:instantiatesUri [ uri ] ; # 0..1 Formal definition of task
  fhir:basedOn  ( [ Reference(Any) ] ... ) ; # 0..* Request fulfilled by this task
  fhir:groupIdentifier [ Identifier ] ; # 0..1 Requisition or grouper id
  fhir:partOf  ( [ Reference(Task) ] ... ) ; # 0..* Composite task
  fhir:status [ code ] ; # 1..1 draft | requested | received | accepted | +
  fhir:statusReason [ CodeableReference ] ; # 0..1 Reason for current status
  fhir:businessStatus [ CodeableConcept ] ; # 0..1 E.g. "Specimen collected", "IV prepped"
  fhir:intent [ code ] ; # 1..1 unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
  fhir:priority [ code ] ; # 0..1 routine | urgent | asap | stat
  fhir:doNotPerform [ boolean ] ; # 0..1 True if Task is prohibiting action
  fhir:code [ CodeableConcept ] ; # 0..1 I Task Type
  fhir:description [ markdown ] ; # 0..1 Human-readable explanation of task
  fhir:focus [ Reference(Any) ] ; # 0..1 I What task is acting on
  fhir:for [ Reference(Any) ] ; # 0..1 Beneficiary of the Task
  fhir:encounter [ Reference(Encounter) ] ; # 0..1 Healthcare event during which this task originated
  fhir:requestedPeriod [ Period ] ; # 0..1 When the task should be performed
  fhir:executionPeriod [ Period ] ; # 0..1 Start and end time of execution
  fhir:authoredOn [ dateTime ] ; # 0..1 I Task Creation Date
  fhir:lastModified [ dateTime ] ; # 0..1 I Task Last Modified Date
  fhir:requester [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Who is asking for task to be done
  fhir:requestedPerformer  ( [ CodeableReference(CareTeam|Device|HealthcareService|Organization|Patient|Practitioner|
  PractitionerRole|RelatedPerson) ] ... ) ; # 0..* Who should perform Task
  fhir:owner [ Reference(CareTeam|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 Responsible individual
  fhir:performer ( [ # 0..* Who or what performed the task
    fhir:function [ CodeableConcept ] ; # 0..1 Type of performance
    fhir:actor [ Reference(CareTeam|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 1..1 Who performed the task
  ] ... ) ;
  fhir:location [ Reference(Location) ] ; # 0..1 Where task occurs
  fhir:reason  ( [ CodeableReference(Any) ] ... ) ; # 0..* Why task is needed
  fhir:insurance  ( [ Reference(ClaimResponse|Coverage) ] ... ) ; # 0..* Associated insurance coverage
  fhir:note  ( [ Annotation ] ... ) ; # 0..* Comments made about the task
  fhir:relevantHistory  ( [ Reference(Provenance) ] ... ) ; # 0..* Key events in history of the Task
  fhir:restriction [ # 0..1 I Constraints on fulfillment tasks
    fhir:repetitions [ positiveInt ] ; # 0..1 How many times to repeat
    fhir:period [ Period ] ; # 0..1 When fulfillment is sought
    fhir:recipient  ( [ Reference(Group|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ... ) ; # 0..* For whom is fulfillment sought?
  ] ;
  fhir:input ( [ # 0..* Information used to perform task
    fhir:type [ CodeableConcept ] ; # 1..1 Label for the input
    # value[x] : 1..1 Content to use in performing the task. One of these 54
      fhir:value [  a fhir:base64Binary ; base64Binary ]
      fhir:value [  a fhir:boolean ; boolean ]
      fhir:value [  a fhir:canonical ; canonical ]
      fhir:value [  a fhir:code ; code ]
      fhir:value [  a fhir:date ; date ]
      fhir:value [  a fhir:dateTime ; dateTime ]
      fhir:value [  a fhir:decimal ; decimal ]
      fhir:value [  a fhir:id ; id ]
      fhir:value [  a fhir:instant ; instant ]
      fhir:value [  a fhir:integer ; integer ]
      fhir:value [  a fhir:integer64 ; integer64 ]
      fhir:value [  a fhir:markdown ; markdown ]
      fhir:value [  a fhir:oid ; oid ]
      fhir:value [  a fhir:positiveInt ; positiveInt ]
      fhir:value [  a fhir:string ; string ]
      fhir:value [  a fhir:time ; time ]
      fhir:value [  a fhir:unsignedInt ; unsignedInt ]
      fhir:value [  a fhir:uri ; uri ]
      fhir:value [  a fhir:url ; url ]
      fhir:value [  a fhir:uuid ; uuid ]
      fhir:value [  a fhir:Address ; Address ]
      fhir:value [  a fhir:Age ; Age ]
      fhir:value [  a fhir:Annotation ; Annotation ]
      fhir:value [  a fhir:Attachment ; Attachment ]
      fhir:value [  a fhir:CodeableConcept ; CodeableConcept ]
      fhir:value [  a fhir:CodeableReference ; CodeableReference ]
      fhir:value [  a fhir:Coding ; Coding ]
      fhir:value [  a fhir:ContactPoint ; ContactPoint ]
      fhir:value [  a fhir:Count ; Count ]
      fhir:value [  a fhir:Distance ; Distance ]
      fhir:value [  a fhir:Duration ; Duration ]
      fhir:value [  a fhir:HumanName ; HumanName ]
      fhir:value [  a fhir:Identifier ; Identifier ]
      fhir:value [  a fhir:Money ; Money ]
      fhir:value [  a fhir:Period ; Period ]
      fhir:value [  a fhir:Quantity ; Quantity ]
      fhir:value [  a fhir:Range ; Range ]
      fhir:value [  a fhir:Ratio ; Ratio ]
      fhir:value [  a fhir:RatioRange ; RatioRange ]
      fhir:value [  a fhir:Reference ; Reference ]
      fhir:value [  a fhir:SampledData ; SampledData ]
      fhir:value [  a fhir:Signature ; Signature ]
      fhir:value [  a fhir:Timing ; Timing ]
      fhir:value [  a fhir:ContactDetail ; ContactDetail ]
      fhir:value [  a fhir:DataRequirement ; DataRequirement ]
      fhir:value [  a fhir:Expression ; Expression ]
      fhir:value [  a fhir:ParameterDefinition ; ParameterDefinition ]
      fhir:value [  a fhir:RelatedArtifact ; RelatedArtifact ]
      fhir:value [  a fhir:TriggerDefinition ; TriggerDefinition ]
      fhir:value [  a fhir:UsageContext ; UsageContext ]
      fhir:value [  a fhir:Availability ; Availability ]
      fhir:value [  a fhir:ExtendedContactDetail ; ExtendedContactDetail ]
      fhir:value [  a fhir:Dosage ; Dosage ]
      fhir:value [  a fhir:Meta ; Meta ]
  ] ... ) ;
  fhir:output ( [ # 0..* Information produced as part of task
    fhir:type [ CodeableConcept ] ; # 1..1 Label for output
    # value[x] : 1..1 Result of output. One of these 54
      fhir:value [  a fhir:base64Binary ; base64Binary ]
      fhir:value [  a fhir:boolean ; boolean ]
      fhir:value [  a fhir:canonical ; canonical ]
      fhir:value [  a fhir:code ; code ]
      fhir:value [  a fhir:date ; date ]
      fhir:value [  a fhir:dateTime ; dateTime ]
      fhir:value [  a fhir:decimal ; decimal ]
      fhir:value [  a fhir:id ; id ]
      fhir:value [  a fhir:instant ; instant ]
      fhir:value [  a fhir:integer ; integer ]
      fhir:value [  a fhir:integer64 ; integer64 ]
      fhir:value [  a fhir:markdown ; markdown ]
      fhir:value [  a fhir:oid ; oid ]
      fhir:value [  a fhir:positiveInt ; positiveInt ]
      fhir:value [  a fhir:string ; string ]
      fhir:value [  a fhir:time ; time ]
      fhir:value [  a fhir:unsignedInt ; unsignedInt ]
      fhir:value [  a fhir:uri ; uri ]
      fhir:value [  a fhir:url ; url ]
      fhir:value [  a fhir:uuid ; uuid ]
      fhir:value [  a fhir:Address ; Address ]
      fhir:value [  a fhir:Age ; Age ]
      fhir:value [  a fhir:Annotation ; Annotation ]
      fhir:value [  a fhir:Attachment ; Attachment ]
      fhir:value [  a fhir:CodeableConcept ; CodeableConcept ]
      fhir:value [  a fhir:CodeableReference ; CodeableReference ]
      fhir:value [  a fhir:Coding ; Coding ]
      fhir:value [  a fhir:ContactPoint ; ContactPoint ]
      fhir:value [  a fhir:Count ; Count ]
      fhir:value [  a fhir:Distance ; Distance ]
      fhir:value [  a fhir:Duration ; Duration ]
      fhir:value [  a fhir:HumanName ; HumanName ]
      fhir:value [  a fhir:Identifier ; Identifier ]
      fhir:value [  a fhir:Money ; Money ]
      fhir:value [  a fhir:Period ; Period ]
      fhir:value [  a fhir:Quantity ; Quantity ]
      fhir:value [  a fhir:Range ; Range ]
      fhir:value [  a fhir:Ratio ; Ratio ]
      fhir:value [  a fhir:RatioRange ; RatioRange ]
      fhir:value [  a fhir:Reference ; Reference ]
      fhir:value [  a fhir:SampledData ; SampledData ]
      fhir:value [  a fhir:Signature ; Signature ]
      fhir:value [  a fhir:Timing ; Timing ]
      fhir:value [  a fhir:ContactDetail ; ContactDetail ]
      fhir:value [  a fhir:DataRequirement ; DataRequirement ]
      fhir:value [  a fhir:Expression ; Expression ]
      fhir:value [  a fhir:ParameterDefinition ; ParameterDefinition ]
      fhir:value [  a fhir:RelatedArtifact ; RelatedArtifact ]
      fhir:value [  a fhir:TriggerDefinition ; TriggerDefinition ]
      fhir:value [  a fhir:UsageContext ; UsageContext ]
      fhir:value [  a fhir:Availability ; Availability ]
      fhir:value [  a fhir:ExtendedContactDetail ; ExtendedContactDetail ]
      fhir:value [  a fhir:Dosage ; Dosage ]
      fhir:value [  a fhir:Meta ; Meta ]
  ] ... ) ;
]

Changes from both R4 and R4B

Task
Task.statusReason
  • Type changed from CodeableConcept to CodeableReference
Task.doNotPerform
  • Added Element
Task.description
  • Type changed from string to markdown
Task.requestedPeriod
  • Added Element
Task.requestedPerformer
  • Added Element
Task.owner
  • Type Reference: Removed Target Types HealthcareService, Device
Task.performer
  • Added Element
Task.performer.function
  • Added Element
Task.performer.actor
  • Added Mandatory Element
Task.reason
  • Added Element
Task.input.value[x]
  • Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta
  • Remove Type Contributor
Task.output.value[x]
  • Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta
  • Remove Type Contributor
Task.performerType
  • Deleted (->Task.requestedPerformer)
Task.reasonCode
  • Deleted (-> reason)
Task.reasonReference
  • Deleted (-> reason)

See the Full Difference for further information

This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.

 

Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis

Path ValueSet Type Documentation
Task.status TaskStatus Required

The current status of the task.

Task.statusReason TaskStatusReason Example

The current status reason of the task.

Task.businessStatus Example
Task.intent TaskIntent Required

Distinguishes whether the task is a proposal, plan or full order.

Task.priority RequestPriority Required

Identifies the level of importance to be assigned to actioning the request.

Task.code TaskCode (a valid code from Task Codes) Example

Codes indicating the type of action that is expected to be performed

Task.requestedPerformer ProcedurePerformerRoleCodes Preferred

This example value set defines the set of codes that can be used to indicate a role of a procedure performer.

Task.performer.function Example
Task.reason Example
Task.input.type Example
Task.output.type Example

UniqueKeyLevelLocationDescriptionExpression
img tsk-1Rule (base)Task.restriction is only allowed if the Task is seeking fulfillment and a focus is specified.restriction.exists() implies code.coding.where(code='fulfill' and system='http://hl7.org/fhir/CodeSystem/task-code').exists() and focus.exists()
img inv-1Rule (base)Last modified date must be greater than or equal to authored-on date.lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn

While Task can be used to seek fulfillment of other authorizations such as ServiceRequests, MedicationRequests, etc., Task can also be used on its own to solicit action without any prior authorization. However, such requests for action should be tightly time-bound and be satisfied with a single 'event'. I.e. they should ask as a task-list checkbox that can easily be marked as complete. Any action that requires ongoing repeated performance should be captured using a different type of resource, not Task.

Tasks often have titles (eg "My Tasks", "Outstanding Tasks for Patient X") which can be presented in a list. The task title should go into the Task.code as a coded concept and/or text.

Tasks start in a Draft state. Once they have been assigned to an owner they transition to the Ready state, indicating that they are ready to be performed. Once the owner initiates activity on the task, the task transitions to the In Progress state, indicating that work is being performed. Upon normal completion, the task enters the Completed state. If there is a failure during the task execution that prevents the task from being completed, it can also enter a Failed state, indicating an abnormal termination of the task. A task in any non-terminal state may also be Cancelled, representing an abnormal termination of the task due to external forces, rather than an error condition.

Tasks in any non-terminal state (Draft, Ready, In Progress) can be suspended and resumed. When a task is suspended, it is typically resumed in the state it was in when it was originally suspended. Suspending a task suspends all of its children as well. Resuming a task resumes all of its children.

An In-progress task can also be stopped, returning it to a Ready state. This may be in preparation for delegation or reassignment (e.g., because it cannot be completed by the current owner), to restart a task due to a temporary failure (e.g., to reattempt completion of the activity), or in preparation to allow others to claim the task.

The task history allows applications monitoring the state of a workflow to identify tasks that are long running, perhaps stuck in some queue, to enable management activities that could ensure completion. It also enables tracking of task statistics such as wait time, or time in progress, or time to completion, enabling capture of important task metrics in support of optimization and quality improvement.

The following diagram reflects the "typical" state machine for Task. Note that not all states will be supported by all workflows and that some workflows may support additional transitions, including transitions from terminal states (e.g. back to "in-progress" from "failed" or "completed").

Diagram showing typical state machine for the Task resource

Note to Implementers: Currently, task pre-requisites can be represented using Task's `description` element or the RequestOrchestration resource. We are seeking input from the implementer community in evaluating whether there is need for adding another mechanism to this resource for this purpose.

Feedback here icon.

While the intention of a "cancelled" task is that all work authorized by the task should cease, this might not always be possible practice. It is possible that the originally requested action could still be completed and still attached to the Task but this would not change the status of the task. If the placer cancels a task, it signals they no longer care about the outcome of the task.

Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to 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 Search by specific performer. Task.performer.actor
(Practitioner, Organization, CareTeam, Patient, PractitionerRole, RelatedPerson)
authored-on date Search by creation date Task.authoredOn
based-on reference Search by requests this task is based on Task.basedOn
(Any)
business-status token Search by business status Task.businessStatus
code token Search by task code Task.code 21 Resources
encounter reference Search by encounter Task.encounter
(Encounter)
29 Resources
focus reference Search by task focus Task.focus
(Any)
group-identifier token Search by group identifier Task.groupIdentifier
identifier token Search for a task instance by its business identifier Task.identifier 65 Resources
input reference Search by task input Task.input.value.ofType(Reference)
intent token Search by task intent Task.intent
modified date Search by last modification date Task.lastModified
output reference Search by task output Task.output.value.ofType(Reference)
owner reference Search by task owner Task.owner
(Practitioner, Organization, CareTeam, Patient, PractitionerRole, RelatedPerson)
part-of reference Search by task this task is part of Task.partOf
(Task)
patient reference Search by patient Task.for.where(resolve() is Patient)
(Patient)
65 Resources
performer token Search by recommended type of performer (e.g., Requester, Performer, Scheduler). Task.requestedPerformer.concept
period date Search by period Task is/was underway Task.executionPeriod
priority token Search by task priority Task.priority
requestedperformer-reference reference Search by specific requested performer. Task.requestedPerformer.reference
requester reference Search by task requester Task.requester
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
status token Search by task status Task.status
subject reference Search by subject Task.for
(Any)