Koppeltaal 2.0 Implementation Guide (Full Documentation)
0.16.2 - ci-build NL

Koppeltaal 2.0 Implementation Guide (Full Documentation) - Local Development build (v0.16.2) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: KT2_Task

Official URL: http://koppeltaal.nl/fhir/StructureDefinition/KT2Task Version: 0.16.2
Draft as of 2023-01-24 Computable Name: KT2_Task

Copyright/Legal: VZVZ

The Task resource represents an eHealth activity that has been assigned to a specific patient. It tracks the lifecycle of patient assignments, from initial creation through completion, and may include subtasks for complex multi-step interventions. Tasks are created based on ActivityDefinition resources and managed throughout their execution within the Koppeltaal ecosystem.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task C 0..* Task A task to be performed
Constraints: inv-1
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... instantiatesCanonical Σ 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... partOf Σ 0..* Reference(KT2_Task) Composite task
... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: TaskStatus (required): The current status of the task.
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: TaskIntent (required): Distinguishes whether the task is a proposal, plan or full order.
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.
Fixed Value: routine
... code Σ 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... for Σ 1..1 Reference(KT2_Patient) Beneficiary of the Task
... requester Σ 0..1 Reference(KT2_Practitioner) Who is asking for task to be done
... owner Σ 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Task.status Base required TaskStatus 📍4.0.1 FHIR Std.
Task.intent Base required TaskIntent 📍4.0.1 FHIR Std.
Task.priority Base required Request priority 📍4.0.1 FHIR Std.
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG
Task.input.type Base example Not State Unknown
Task.output.type Base example Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error Task If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Task If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Task If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Task If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Task A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
inv-1 error Task Last modified date must be greater than or equal to authored-on date. lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn

This structure is derived from Task

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task 0..* Task A task to be performed
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... identifier 1..* Identifier Task Instance Identifier
... instantiatesCanonical 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... basedOn 0..0 Request fulfilled by this task
... groupIdentifier 0..0 Requisition or grouper id
... partOf 0..* Reference(KT2_Task) Composite task
... statusReason 0..0 Reason for current status
... businessStatus 0..0 E.g. "Specimen collected", "IV prepped"
... priority 0..1 code routine | urgent | asap | stat
Fixed Value: routine
... code 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... focus 0..0 What task is acting on
... for 1..1 Reference(KT2_Patient) Beneficiary of the Task
... encounter 0..0 Healthcare event during which this task originated
... requester 0..1 Reference(KT2_Practitioner) Who is asking for task to be done
... performerType 0..0 Requested performer
... owner 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual
... location 0..0 Where task occurs
... reasonCode 0..0 Why task is needed
... reasonReference 0..0 Why task is needed
... insurance 0..0 Associated insurance coverage
... note 0..0 Comments made about the task
... relevantHistory 0..0 Key events in history of the Task
... restriction 0..0 Constraints on fulfillment tasks
... input 0..0 Information used to perform task
... output 0..0 Information produced as part of task

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task C 0..* Task A task to be performed
Constraints: inv-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 1..* Identifier Task Instance Identifier
... instantiatesCanonical Σ 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... partOf Σ 0..* Reference(KT2_Task) Composite task
... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: TaskStatus (required): The current status of the task.
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: TaskIntent (required): Distinguishes whether the task is a proposal, plan or full order.
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.
Fixed Value: routine
... code Σ 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... description Σ 0..1 string Human-readable explanation of task
... for Σ 1..1 Reference(KT2_Patient) Beneficiary of the Task
... 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(KT2_Practitioner) Who is asking for task to be done
... owner Σ 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Task.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Task.status Base required TaskStatus 📍4.0.1 FHIR Std.
Task.intent Base required TaskIntent 📍4.0.1 FHIR Std.
Task.priority Base required Request priority 📍4.0.1 FHIR Std.
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG
Task.input.type Base example Not State Unknown
Task.output.type Base example Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error Task If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Task If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Task If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Task If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Task A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
inv-1 error Task Last modified date must be greater than or equal to authored-on date. lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task C 0..* Task A task to be performed
Constraints: inv-1
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... instantiatesCanonical Σ 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... partOf Σ 0..* Reference(KT2_Task) Composite task
... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: TaskStatus (required): The current status of the task.
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: TaskIntent (required): Distinguishes whether the task is a proposal, plan or full order.
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.
Fixed Value: routine
... code Σ 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... for Σ 1..1 Reference(KT2_Patient) Beneficiary of the Task
... requester Σ 0..1 Reference(KT2_Practitioner) Who is asking for task to be done
... owner Σ 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Task.status Base required TaskStatus 📍4.0.1 FHIR Std.
Task.intent Base required TaskIntent 📍4.0.1 FHIR Std.
Task.priority Base required Request priority 📍4.0.1 FHIR Std.
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG
Task.input.type Base example Not State Unknown
Task.output.type Base example Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error Task If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Task If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Task If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Task If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Task A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
inv-1 error Task Last modified date must be greater than or equal to authored-on date. lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn

Differential View

This structure is derived from Task

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task 0..* Task A task to be performed
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... identifier 1..* Identifier Task Instance Identifier
... instantiatesCanonical 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... basedOn 0..0 Request fulfilled by this task
... groupIdentifier 0..0 Requisition or grouper id
... partOf 0..* Reference(KT2_Task) Composite task
... statusReason 0..0 Reason for current status
... businessStatus 0..0 E.g. "Specimen collected", "IV prepped"
... priority 0..1 code routine | urgent | asap | stat
Fixed Value: routine
... code 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... focus 0..0 What task is acting on
... for 1..1 Reference(KT2_Patient) Beneficiary of the Task
... encounter 0..0 Healthcare event during which this task originated
... requester 0..1 Reference(KT2_Practitioner) Who is asking for task to be done
... performerType 0..0 Requested performer
... owner 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual
... location 0..0 Where task occurs
... reasonCode 0..0 Why task is needed
... reasonReference 0..0 Why task is needed
... insurance 0..0 Associated insurance coverage
... note 0..0 Comments made about the task
... relevantHistory 0..0 Key events in history of the Task
... restriction 0..0 Constraints on fulfillment tasks
... input 0..0 Information used to perform task
... output 0..0 Information produced as part of task

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Task C 0..* Task A task to be performed
Constraints: inv-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:resource-origin 0..1 Reference(KT2_Device) Extension
URL: http://koppeltaal.nl/fhir/StructureDefinition/resource-origin
.... extension:instantiates 0..* Reference(KT2_ActivityDefinition) Reference to ActivityDefinition
URL: http://vzvz.nl/fhir/StructureDefinition/instantiates
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 1..* Identifier Task Instance Identifier
... instantiatesCanonical Σ 0..1 canonical(KT2_ActivityDefinition) Formal definition of task
... partOf Σ 0..* Reference(KT2_Task) Composite task
... status ?!Σ 1..1 code draft | requested | received | accepted | +
Binding: TaskStatus (required): The current status of the task.
... intent Σ 1..1 code unknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: TaskIntent (required): Distinguishes whether the task is a proposal, plan or full order.
... priority 0..1 code routine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.
Fixed Value: routine
... code Σ 0..1 CodeableConcept Task Type
Binding: Koppeltaal Task Code (preferred)
... description Σ 0..1 string Human-readable explanation of task
... for Σ 1..1 Reference(KT2_Patient) Beneficiary of the Task
... 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(KT2_Practitioner) Who is asking for task to be done
... owner Σ 1..1 Reference(KT2_CareTeam | KT2_Patient | KT2_Practitioner | KT2_RelatedPerson) Responsible individual

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Task.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Task.status Base required TaskStatus 📍4.0.1 FHIR Std.
Task.intent Base required TaskIntent 📍4.0.1 FHIR Std.
Task.priority Base required Request priority 📍4.0.1 FHIR Std.
Task.code Base preferred Koppeltaal Task Code 📦0.16.2 This IG
Task.input.type Base example Not State Unknown
Task.output.type Base example Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error Task If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Task If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Task If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Task If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Task A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
inv-1 error Task Last modified date must be greater than or equal to authored-on date. lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Reference to ActivityDefinition

Warning: As of 2023-11-02 the way the ActivityDefinition is referenced has changed!

A Task should refer to the ActivityDefinition it instantiates. This provides the possibility to search for Tasks that instantiate a specific instance of an ActivityDefinition, which in turn can be found based on its publisherId.

Using the element instantiatesCanonical does not allow chaining of the search parameters. Therefore this profile contains an extension instantiates which should hold the reference to the instantiated ActivityDefinition.

The element instantiatesCanonical should not be used for this reference. Receivers of a Task instance can ignore any value in the instantiatesCanonical and should look for the referred ActivityDefinition in the instantiates extension.

KT2_Task.owner

KT2_Task.owner determines which actor is the executor of the respective task.

The RelatedPerson can be assigned as the owner of a task either directly or through a CareTeam.

KT2_Task.partOf

This element is used to indicate the reference of a subtask to the main task. The main task is assigned to the patient through KT2_Task.owner = Reference(KT2_Patient). The subtask is created as follows:

  • KT2_Task.partOf references the main task
  • The KT2_RelatedPerson who assists becomes the Task.owner
  • KT2_Task.for references the Patient of the main task

KT2_Task.code

With the KT2_Task.code element the permission of a KT2_Task can be set to view. The exact meaning of the view permission can differ per application because authorisations in Koppeltaal 2.0 are defined and executed by the applications.

Validation: Task with read-only permissions

A digital intervention with read-only permissions must be related to another task where the owner has write permissions. When a Task with read-only permissions is created (indicated by Task.code = view), the following validations MUST be performed:

Applications MUST validate that:

  • Task.partOf is present
  • Task.partOf contains a reference to a Task where Task.code is absent
  • Task.for is equal to the Task.for of the Task referenced in Task.partOf

If these validations are not met, the Task with read-only permissions MUST NOT be assigned.

Example

Example showing a subtask for the RelatedPerson assigned in the Task of the patient:

{
    "resourceType" : "Task",
    "meta" : {
        "profile" : [
            "http://koppeltaal.nl/fhir/StructureDefinition/KT2Task"
        ]
    },
    "extension" : [
        {
            "url" : "http://vzvz.nl/fhir/StructureDefinition/instantiates",
            "valueReference" : {
                "reference" : "ActivityDefinition/8635519a-3ca5-4dc8-bd07-4ec1e7fefcd5",
                "type" : "ActivityDefinition"
            }
        }
    ],
    "identifier" : [
        {
            "use" : "official",
            "system" : "http:/vzvz.nl/Testtooling",
            "value" : "Vragenlijst${IdentifierValue}"
        }
    ],
    "description" : "Vul de vragenlijst zo goed mogelijk in. Dit kost ongeveer 10 minuten.",
    "partOf" : [{
        "reference" : "Task/1f2f427a-d7fd-4b91-809c-f4607365ce73",
        "type" : "Task"
    }],
    "for" : {
        "reference" : "Patient/810c315e-4720-4253-8369-1011f87691b6",
        "type" : "Patient"
    },
    "intent" : "order",
    "priority" : "routine",
    "code" : {
        "coding" : [
            {
                "system" : "http://vzvz.nl/fhir/CodeSystem/koppeltaal-task-code",
                "code" : "view",
                "display" : "This task can be viewed"
            }
        ]
    },
    "executionPeriod" : {
        "start" : "2024-07-20T08:25:05+02:00"
    },
    "requester" : {
        "reference" : "Practitioner/8849c230-5f03-4aab-83a0-8295dfc6000b",
        "type" : "Practitioner"
    },
    "owner" : {
        "reference" : "RelatedPerson/355651f0-2b28-4bf7-800d-0bbe4d96d793",
        "type" : "RelatedPerson"
    },
    "status" : "ready",
    "authoredOn" : "2024-07-30T08:25:05+02:00",
    "lastModified" : "2024-07-30T09:45:05+02:00"
}