This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Difference between revisions of "201605 Workflow"

From HL7Wiki
Jump to navigation Jump to search
 
(5 intermediate revisions by 2 users not shown)
Line 16: Line 16:
  
 
==Expected participants==
 
==Expected participants==
<!-- List of the individuals and/or organizations that have indicated a desire to attend the connectathon and implement this track -->
+
; Ron Shapiro: QVera
TBD
+
; Pascal Pfiffner: Boston Children's Hospital
 +
; Angus Millar: NETHA
 +
; Nikolai Schwertner: Boston Children's Hospital
 +
; Rik Smithies: NProgram
 +
; Keith Boone: GE Healthcare
  
==Roles==
+
== Use Case ==  
<!-- Roles are sets of functionality (generally defined by a Conformance resource) that a single system can take on -->
+
It's time for our patient to get his annual physical exam. 
===Submitter===
+
#Rik will create a Task for the Patient to schedule the prework as part of his care plan.
<!-- Provide a description of the capabilities this role will have within the connectathon -->
+
#Patrick will ask the Patient to select the Laboratory which will perform his results.  The patient will select a lab (e.g., Acme Labs), and Patrick will create a new task, #containing the Laboratory Order as input, and assign that task to Acme labs to perform.
 +
#Angus will monitor the task list for tasks assigned to Acme lab, perform the test, produce the results, and attach them as the output of the lab task, marking that task as complete.
 +
#Ron will monitor all tasks to track what is happening.
  
The actor that creates the referral
+
=== Refinement before Lunch ===
 +
#Rik is going to create a care plan containing a diagnostic order for the patient.
 +
#Pascal is going to read the care plan.  His system will see the diagnostic order as an activity.
 +
##Creates a Task whose '''subject''' is Diagnostic Order, and is '''for''' the patient
 +
##Creates a subtask referencing that task where input.name = 'test to be scheduled' and input.valueReference = the diagnostic order
 +
##Creates a subtask referencing that task where input.name = 'test to be performed' and input.valueReference = the diagnostic order, in the
 +
#The patient schedules the test.
 +
##Pascals software makes the 'test to be scheduled' task as done, and sets output.name to 'scheduled appointment' and output.valueReference to an appointment containing the date which the test will be performed.
 +
##It also marks the 'test to be performed' task is marked ready
 +
#The lab (Angus) sees that the test is ready -- at this stage we have to deal with specimen collection, but to simplify
 +
#When the lab sees that the test is ready, it will
 +
##Create a Specimen Resource as an input
 +
##Create a Diagnostic Result Resource as an Output
 +
##Mark the test to be performed task as 'done'
  
===Recipient===
+
== Track Stream ==
 +
[https://chat.fhir.org/#narrow/stream/workflow/subject/Connectathon Our Track Stream ]
  
The person or organization that received the referral
 
 
===Grader===
 
 
The person who prioritizes the  referral for urgency
 
 
===Scheduling Clerk===
 
 
The person that makes the appointment for the person to  attend
 
 
===Services Registry===
 
 
A system that knows what services are available at what institutions to assist a referrer to find the correct place to send the referral. It implements queries against a [http://hl7.org/fhir/healthcareservice.html healthcareservice] resource
 
 
==Architecture==
 
 
Describe the architecture here - where all tasks are created on the server where the referral is tobe processed. Discuss that there can be other architectures - eg a centralized 'referral manager' server.
 
 
==Scenarios==
 
<!-- What will be the actions performed by participants? -->
 
 
 
===1. Find place to send referral to===
 
 
 
:Action: The Submitter makes queries against the Service Registry to locate a suitable location to send the referral to.
 
:Precondition: There is a server acting in the role of a Service Registry exposing queries that enable  the submitter to locate the service type they need. For the sake of this scenario it is assumed that there will be an organization that meets the needs of the referral (ie that the registry has suitable Organization resources).
 
:Success Criteria: A suitable organization is located
 
:Bonus point: A client is developer that can update the registry, adding new services to it.
 
 
===2. Create Referral===
 
 
 
:Action: The submitter creates a referral on the referral server. This will involved creating [http://hl7-fhir.github.io/referralrequest.html referralRequest] and a [http://hl7-fhir.github.io/task.html task] resource that refers to it
 
:Precondition: There is a server established as the 'referral manager' - that can maintain Task and ReferralRequest resources
 
:Success Criteria: The workflow resources (Task, ReferralRequest) are successfully created
 
:Bonus point: The client that creates the referral can also query for the current status of the referral.
 
 
 
'''Notes'''
 
Against the target server Create a ReferralRequest resource, then a Task resource with the Task.owner pointing to an organization, Task.concerning referring to the patient and the  Task.subject referring to the  ReferralRequest. The task.status will be 'created'
 
 
===3. Receive Referral ===
 
 
 
:Action: The recipient of the referral indicates whether the referral has been accepted by the service.
 
:Precondition: The resources (Task / ReferralRequest) exist and are locatable
 
:Success Criteria: The client is able to view the current status of the referral
 
:Bonus point: The service and the client can have a 'conversation' to clarify aspects of the referral - eg to supply incomplete data.
 
 
 
'''Notes'''
 
* The recipient of the referral  assigns the task to a grader (by setting the owner  to a practitioner ) &  sets the status to ready
 
* Mostly this step is checking that required information is present and that the referral is appropriate - eg that the service can process this referral type.
 
* The task could be located by a direct query against Task or the server could expose a specific operation
 
* query needs to be  all referralrequest tasks for this organization in the created state
 
 
===4. Grade Referral===
 
 
 
:Action: The Grader assigns the Task to a Practitioner or Organization for grading (assigning priority).
 
:Precondition: The required resources exist and can be located by the Grader
 
:Success Criteria: The Task status is updated
 
:Bonus point: The client is notified of the status change in some way
 
:Bonus point: The referral is rejected and the submitter notified with the reason
 
 
 
'''Notes'''
 
* Practitioner locates referrals assigned to them in a 'ready' state. Could locate by direct query against task or use an operation
 
* Accept: change owner to the scheduling department (another organization)
 
* Reject: change status to 'failed'. Assign owner to the initial creator (the GP)
 
 
===5. Create Appointment===
 
 
:Action: An appointment is created for the patient to be seen by the Organization to which the referral was assigned in the previous step
 
:Precondition: A server accessible to submitter and processor is able to support Appointment resources
 
:Success Criteria: The appointment is created
 
:Bonus point: The submitter is notified
 
:Bonus point: The patient is notified
 
:Bonus point: The patient can 'negotiate' with the service over the appointment time
 
 
 
'''Notes'''
 
*Scheduling department (Organization) create appointment
 
*query is all tasks where the subject is a referralrequest and owner is that organization and state changes to completed - because we assume that the purpose of the task was to arrange an appointment for a patient.
 
* Could create a new task for the outpatient clinic (where the appointment is to be) - with task.input set to the appointment
 
  
 
==TestScript(s)==
 
==TestScript(s)==

Latest revision as of 17:08, 7 May 2016


Workflow

Submitting WG/Project/Implementer Group

FHIR Infrastructure, Patient Care, Patient Administration

Justification

Workflow is a primary focus of the upcoming release. A number of new approaches are being proposed and they need to be tested

Proposed Track Lead

See Connectathon_Track_Lead_Responsibilities Keith Boone (keith.boone@ge.com) Skype: kwboone

Expected participants

Ron Shapiro
QVera
Pascal Pfiffner
Boston Children's Hospital
Angus Millar
NETHA
Nikolai Schwertner
Boston Children's Hospital
Rik Smithies
NProgram
Keith Boone
GE Healthcare

Use Case

It's time for our patient to get his annual physical exam.

  1. Rik will create a Task for the Patient to schedule the prework as part of his care plan.
  2. Patrick will ask the Patient to select the Laboratory which will perform his results. The patient will select a lab (e.g., Acme Labs), and Patrick will create a new task, #containing the Laboratory Order as input, and assign that task to Acme labs to perform.
  3. Angus will monitor the task list for tasks assigned to Acme lab, perform the test, produce the results, and attach them as the output of the lab task, marking that task as complete.
  4. Ron will monitor all tasks to track what is happening.

Refinement before Lunch

  1. Rik is going to create a care plan containing a diagnostic order for the patient.
  2. Pascal is going to read the care plan. His system will see the diagnostic order as an activity.
    1. Creates a Task whose subject is Diagnostic Order, and is for the patient
    2. Creates a subtask referencing that task where input.name = 'test to be scheduled' and input.valueReference = the diagnostic order
    3. Creates a subtask referencing that task where input.name = 'test to be performed' and input.valueReference = the diagnostic order, in the
  3. The patient schedules the test.
    1. Pascals software makes the 'test to be scheduled' task as done, and sets output.name to 'scheduled appointment' and output.valueReference to an appointment containing the date which the test will be performed.
    2. It also marks the 'test to be performed' task is marked ready
  4. The lab (Angus) sees that the test is ready -- at this stage we have to deal with specimen collection, but to simplify
  5. When the lab sees that the test is ready, it will
    1. Create a Specimen Resource as an input
    2. Create a Diagnostic Result Resource as an Output
    3. Mark the test to be performed task as 'done'

Track Stream

Our Track Stream


TestScript(s)