' SPDX-FileCopyrightText: 2025 Bram Wesselo ' ' SPDX-License-Identifier: EUPL-1.2 @startuml overview-task-negotiation-1-2-3 skinparam roundcorner 20 skinparam defaultFontName Arial autonumber !pragma teoz true box Care Provider 2 #acd1e9 actor "Practitioner" as Practitioner1 participant "Care Plan Contributor" as CPC1 #LightGray end box box Care Provider 1 #e8d0a9 participant "Care Plan Service" as CPS #Gray end box box Care Provider 3 #c1dad6 participant "Care Plan Contributor" as CPC2 #LightGray participant "Task manager" as EHR2 actor "Practitioner" as Practitioner2 end box activate Practitioner1 Practitioner1 -> CPC1 : Start Request\nreferral & CPC1 -> CPS : Find/select CarePlan CPC1 -> CPS : Create Task\n referring Request,\n Condition and CarePlan\n (if any) & CPS -> CPS : Update CareTeam, CarePlan\n and Subscriptions CPS -> CPC2 : Notify Task created & CPC2 -> EHR2 : Notify Task created & note right EHR2 #WhiteSmoke Actions in gray are optional end note autonumber 10 "0" EHR2 -[#DarkSlateGray]> EHR2 : evaluate Task:\n (required data,\n capacity, etc) & EHR2 -[#DarkSlateGray]> CPC2 : Need more information & CPC2 -[#DarkSlateGray]> CPS : Create (sub-)Task2: do \n Questionnaire 'required data' & CPS -[#DarkSlateGray]> CPC1 : Notify Task2 created & CPC1 -[#DarkSlateGray]> Practitioner1 : Present Questionnaire\n(prefill data from EHR) Practitioner1 -[#DarkSlateGray]> CPC1 : Complete\n QuestionnaireResponse & CPC1 -[#DarkSlateGray]> CPS : Update Task2: Add\n QuestionnaireResponse & CPS -[#DarkSlateGray]> CPC2 : Notify Task2 update & CPC2 -[#DarkSlateGray]> EHR2 : Notify Task2 update autonumber 20 EHR2 -> EHR2 : evaluate Task:\n status 'received' & EHR2 -> CPC2 : Notify Task update & CPC2 -> CPS : Update Task: \n status 'received' & CPS -> CPC1 : Notify Task update & CPC1 -> Practitioner1 : Your order has been received EHR2 -> Practitioner2 : put Task in \nworkitem-list deactivate Practitioner1 == waiting for Practitioner to accept == autonumber 30 Practitioner2 -> EHR2 : Task accepted activate Practitioner2 & EHR2 -> CPC2 : Task accepted & CPC2 -> CPS : Update Task: status accepted CPS -> CPS : Update CareTeam, CarePlan & CPS -> CPC1 : Notify Task update & CPC1 -[#DarkSlateGray]> Practitioner1 : Notify Practitioner ' autonumber 40 "0" ' Practitioner2 -[#DarkSlateGray]> EHR2 : Need patient\n contact details ' & EHR2 -[#DarkSlateGray]> CPC2 : Get patient contact details ' & CPC2 -[#DarkSlateGray]> CPS : Get CareTeam for\n url Care Provider 2 ' CPC2 -[#DarkSlateGray]> CPC1 : Get Patient details ' CPC1 -[#DarkSlateGray]-> CPC2 : Patient details ' & CPC2 -[#DarkSlateGray]-> EHR2 : Patient details ' & EHR2 -[#DarkSlateGray]-> Practitioner2 : present Patient details == waiting for Practitioner to start == autonumber 50 Practitioner2 -> EHR2 : starting Task & EHR2 -> CPC2 : Task in-progress & CPC2 -> CPS : Update Task: status in-progress & CPS -> CPC1 : Notify Task update & CPC1 -[#DarkSlateGray]> Practitioner1 : Notify Practitioner == waiting for Practitioner to finish == autonumber 60 Practitioner2 -> EHR2 : completing Task & EHR2 -> CPC2 : Task is done & CPC2 -> CPS : Update Task: status complete & CPS -> CPC1 : Notify Task update & CPC1 -[#DarkSlateGray]> Practitioner1 : Notify Practitioner deactivate Practitioner2 @enduml