Task
A task to be performed.
- Schema
- Usage
- Relationships
- Background and Context
- Referenced By
Elements
Name | Required | Type | Description |
---|---|---|---|
identifier | Identifier[] | Task Instance Identifier DetailsThe business identifier for this task. | |
instantiatesCanonical | canonical | Formal definition of task DetailsThe URL pointing to a *FHIR*-defined protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task. | |
instantiatesUri | uri | Formal definition of task DetailsThe URL pointing to an *externally* maintained protocol, guideline, orderset or other definition that is adhered to in whole or in part by this Task. | |
basedOn | Reference<Resource>[] | Request fulfilled by this task DetailsBasedOn refers to a higher-level authorization that triggered the creation of the task. It references a "request" resource such as a ServiceRequest, MedicationRequest, ServiceRequest, CarePlan, etc. which is distinct from the "request" resource the task is seeking to fulfill. This latter resource is referenced by FocusOn. For example, based on a ServiceRequest (= BasedOn), a task is created to fulfill a procedureRequest ( = FocusOn ) to collect a specimen from a patient. | |
groupIdentifier | Identifier | Requisition or grouper id DetailsAn identifier that links together multiple tasks and other requests that were created in the same context. | |
partOf | Reference<Task>[] | Composite task DetailsTask that this particular task is part of. This should usually be 0..1. | |
status | ✓ | code | draft | requested | received | accepted | + DetailsThe current status of the task. |
statusReason | CodeableConcept | Reason for current status DetailsAn explanation as to why this task is held, failed, was refused, etc. This applies to the current status. Look at the history of the task to see reasons for past statuses. | |
businessStatus | CodeableConcept | E.g. "Specimen collected", "IV prepped" DetailsContains business-specific nuances of the business state. | |
intent | ✓ | code | unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option DetailsIndicates the "level" of actionability associated with the Task, i.e. i+R[9]Cs this a proposed task, a planned task, an actionable task, etc. This element is immutable. Proposed tasks, planned tasks, etc. must be distinct instances. In most cases, Tasks will have an intent of "order". |
priority | code | routine | urgent | asap | stat DetailsIndicates how quickly the Task should be addressed with respect to other requests. | |
code | CodeableConcept | Task Type DetailsA name or code (or both) briefly describing what the task involves. The title (eg "My Tasks", "Outstanding Tasks for Patient X") should go into the code. | |
description | string | Human-readable explanation of task DetailsA free-text description of what is to be performed. | |
focus | Reference<Resource> | What task is acting on DetailsThe request being actioned or the resource being manipulated by this task. If multiple resources need to be manipulated, use sub-tasks. (This ensures that status can be tracked independently for each referenced resource.). | |
for | Reference<Resource> | Beneficiary of the Task DetailsThe entity who benefits from the performance of the service specified in the task (e.g., the patient). | |
encounter | Reference<Encounter> | Healthcare event during which this task originated DetailsThe healthcare event (e.g. a patient and healthcare provider interaction) during which this task was created. | |
executionPeriod | Period | Start and end time of execution DetailsIdentifies 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). | |
authoredOn | dateTime | Task Creation Date DetailsThe date and time this task was created. | |
lastModified | dateTime | Task Last Modified Date DetailsThe date and time of last modification to this task. | |
requester | Reference< Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson > | Who is asking for task to be done DetailsThe creator of the task. | |
performerType | CodeableConcept[] | Requested performer DetailsThe kind of participant that should perform the task. | |
owner | Reference< Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson > | Responsible individual DetailsIndividual organization or Device currently responsible for task execution. Tasks may be created with an owner not yet identified. | |
location | Reference<Location> | Where task occurs DetailsPrincipal physical location where the this task is performed. | |
reasonCode | CodeableConcept | Why task is needed DetailsA description or code indicating why this task needs to be performed. This should only be included if there is no focus or if it differs from the reason indicated on the focus. | |
reasonReference | Reference<Resource> | Why task is needed DetailsA resource reference indicating why this task needs to be performed. Tasks might be justified based on an Observation, a Condition, a past or planned procedure, etc. This should only be included if there is no focus or if it differs from the reason indicated on the focus. Use the CodeableConcept text element in `Task.reasonCode` if the data is free (uncoded) text. | |
insurance | Reference<Coverage | ClaimResponse>[] | Associated insurance coverage DetailsInsurance plans, coverage extensions, pre-authorizations and/or pre-determinations that may be relevant to the Task. | |
note | Annotation[] | Comments made about the task DetailsFree-text information captured about the task as it progresses. | |
relevantHistory | Reference<Provenance>[] | Key events in history of the Task DetailsLinks 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 task. This element does not point to the Provenance associated with the *current* version of the resource - as it would be created after this version existed. The Provenance for the current version can be retrieved with a _revinclude. | |
restriction | TaskRestriction | Constraints on fulfillment tasks DetailsIf 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 actioned. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
repetitions | positiveInt | How many times to repeat DetailsIndicates the number of times the requested action should occur. | |
period | Period | When fulfillment sought DetailsOver what time-period is fulfillment sought. Note that period.high is the due date representing the time by which the task should be completed. | |
recipient | Reference< Patient | Practitioner | PractitionerRole | RelatedPerson | Group | Organization >[] | For whom is fulfillment sought? DetailsFor requests that are targeted to more than on potential recipient/target, for whom is fulfillment sought? | |
input | TaskInput[] | Information used to perform task DetailsAdditional information that may be needed in the execution of the task. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
type | ✓ | CodeableConcept | Label for the input DetailsA code or description indicating how the input is intended to be used as part of the task execution. If referencing a BPMN workflow or Protocol, the "system" is the URL for the workflow definition and the code is the "name" of the required input. |
value[x] | ✓ | base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference<>, SampledData, Signature, Timing, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage, Meta | Content to use in performing the task DetailsThe value of the input parameter as a basic type. |
output | TaskOutput[] | Information produced as part of task DetailsOutputs produced by the Task. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
type | ✓ | CodeableConcept | Label for output DetailsThe name of the Output parameter. |
value[x] | ✓ | base64Binary, boolean, canonical, code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, Reference<>, SampledData, Signature, Timing, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage, Meta | Result of output DetailsThe value of the Output parameter as a basic type. |
Search Parameters
Name | Type | Description | Expression |
---|---|---|---|
authored-on | date | Search by creation date | Task.authoredOn |
based-on | reference | Search by requests this task is based on | Task.basedOn |
business-status | token | Search by business status | Task.businessStatus |
code | token | Search by task code | Task.code |
encounter | reference | Search by encounter | Task.encounter |
focus | reference | Search by task focus | Task.focus |
group-identifier | token | Search by group identifier | Task.groupIdentifier |
identifier | token | Search for a task instance by its business identifier | Task.identifier |
intent | token | Search by task intent | Task.intent |
modified | date | Search by last modification date | Task.lastModified |
owner | reference | Search by task owner | Task.owner |
part-of | reference | Search by task this task is part of | Task.partOf |
patient | reference | Search by patient | Task.for.where(resolve() is Patient) |
performer | token | Search by recommended type of performer (e.g., Requester, Performer, Scheduler). | Task.performerType |
period | date | Search by period Task is/was underway | Task.executionPeriod |
priority | token | Search by task priority | Task.priority |
requester | reference | Search by task requester | Task.requester |
status | token | Search by task status | Task.status |
subject | reference | Search by subject | Task.for |
due-date | date | Search by period Task is/was due | Task.restriction.period |
priority-order | number | Numeric priority order for resource types using http://hl7.org/fhir/ValueSet/request-priority | iif(priority = 'stat', 50, iif(priority = 'asap', 40, iif(priority = 'urgent', 30, iif(priority = 'routine', 20, 10)))) |
Inherited Elements
Name | Required | Type | Description |
---|---|---|---|
id | string | Logical id of this artifact DetailsThe logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. The only time that a resource does not have an id is when it is being submitted to the server using a create operation. | |
meta | Meta | Metadata about the resource DetailsThe metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. | |
implicitRules | uri | A set of rules under which this content was created DetailsA reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of it's narrative along with other profiles, value sets, etc. | |
language | code | Language of the resource content DetailsThe base language in which the resource is written. Language is provided to support indexing and accessibility (typically, services such as text to speech use the language tag). The html language tag in the narrative applies to the narrative. The language tag on the resource may be used to specify the language of other presentations generated from the data in the resource. Not all the content has to be in the base language. The Resource.language should not be assumed to apply to the narrative automatically. If a language is specified, it should it also be specified on the div element in the html (see rules in HTML5 for information about the relationship between xml:lang and the html lang attribute). | |
text | Narrative | Text summary of the resource, for human interpretation DetailsA human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. Contained resources do not have narrative. Resources that are not contained SHOULD have a narrative. In some cases, a resource may only have text with little or no additional discrete data (as long as all minOccurs=1 elements are satisfied). This may be necessary for data from legacy systems where information is captured as a "text blob" or where text is additionally entered raw or narrated and encoded information is added later. | |
contained | Resource[] | Contained, inline Resources DetailsThese resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. This should never be done when the content can be identified properly, as once identification is lost, it is extremely difficult (and context dependent) to restore it again. Contained resources may have profiles and tags In their meta elements, but SHALL NOT have security labels. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored DetailsMay be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. |
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.
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.
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.
Using Tasks in a RESTful context
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.
Tasks State Machine
Tasks start in a Created 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 (Created, 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.
Note: Currently, task pre-requisites can be represented using Task's
description
element or the RequestGroup 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 .