The At-Home Phlebotomy orders are composed of two different lifecycles, the Order lifecycle and the appointment lifecycle, detailed in the following sections.

Order Lifecycle

As discussed in Lab Test Lifecycle - Statuses, each lab testing modality has the following format [HIGH-LEVEL STATUS].[TEST MODALITY].[LOW-LEVEL STATUS] For each modality, there can be multiple low-level status, for At Home Phlebotomy the possible low-level status are:
  • ordered: Vital received the order, stored it into our system, and started processing it asynchronously.
  • requisition_created: An order requisition form was validated and created with the partner laboratory, making the order available to be carried out.
  • requisition_bypassed: An order requisition form wasn’t created when the order was placed with us because it already existed.
  • appointment_pending: An appointment was placed in Vital’s system for the order, but doesn’t have a scheduled date.
  • appointment_scheduled: An appointment was scheduled or rescheduled for the order.
  • draw_completed: The phlebotomy appointment was completed and the blood was drawn successfuly.
  • appointment_cancelled: The appointment was cancelled, by either the patient, Vital or you.
  • partial_results: The laboratory has started making partial results available.
  • completed: The laboratory processed the blood sample and final results are available.
  • cancelled: The order was cancelled by either the patient, Vital or you.
The Finite State Machine that defines the possible transitions for the low-level statuses described above is illustrated in the following diagram.

Possible state transitions for the At-Home Phlebotomy Order low-level statuses.


In sandbox, there is no async transition from the ordered state to the requisition_created state, this must be manually triggered via the Vital Dashboard.

Appointment Lifecycle

The appointment lifecycle is separate from the order lifecyle, and it corresponds to a single appointment. The possible status are defined as follows:
  • pending: An appointment was placed in the system, and is pending updates from the phlebotomy service.
  • reserved: The time slot has been reserved for the appointment, but the scheduling confirmation is waiting on the creation of order requisition.
  • scheduled: The appointment has been scheduled or rescheduled.
  • in-progress: The phlebotomist is in their way to the patient address.
  • cancelled: The appointment was cancelled by either the patient, Vital or you.
  • completed: The phlebotomy appointment was completed and the blood was drawn successfuly
The Finite State Machine that defines the possible transitions for the appointment statuses described above is illustrated in the following diagram.

Possible state transitions for the At-Home Phlebotomy Appointment statuses.

The events are related to a single appointment. An order can have multiple existing appointments in Vital system, although only one appointment will be considered active and returned when using the GET Appointment endpoint.

Scheduling Appointments Before A Requisition Has Been Created

This feature is in closed beta.Interested in this feature? Get in touch with your Customer Success Manager.
When this feature is enabled on your Team, you can create an At-Home Phlebotomy appointment even before the requisition has been created for the corresponding Order (i.e., reaching the requisition_created status). This allows you to build an experience that can order the lab test and book an appointment consecutively, without having to wait on the asynchronous requisition creation process that may take an indeterminate amount of time.

API Journey

1

Creating an appointment

You create an Appointment for an Order which does not yet have a requisition.For an Appointment Ready Tier service, the Appointment starts with the pending status and immediately moves to the reserved status.For an Appointment Request Tier service, the Appointment starts with the pending status. Once the service has penciled in the time slot, the Appointment moves to the reserved status — if the order requisition still has not yet been created by then.
If the order requisition has been created on or before the time slot confirmation, the Appointment moves directly to the confirmed status. The reserved status would be skipped.
2

Waiting for Requisition Creation

The requisition is being created asynchronously.
3

Requisition has been created

The requisition has now been created.For all types of Appointments:
  1. The Order will move through the requisition_created and appointment_pending Order statuses in quick succession.
You will receive two labtest.order.updated events, one each for the two status transitions.For all Appointment Ready Tier Appointments and all the penciled Appointment Request Tier Appointments:
  1. The Order will move further to the appointment_scheduled Order status in quick succession.
  2. The Appointment will move to the confirmed status automatically, which corresponds to the scheduled appointment event.
You will additionally receive a labtest.order.updated event and a labtest.appointment.updated event for the status transition.

Cancelling An Appointment

If an Appointment is cancelled before a requisition has been created:
  • The Appointment will move to the cancelled status; and
  • There is no change to the Order, which will remain in the ordered status.
If an Appointment is cancelled after a requisition has been created:
  1. The Appointment will move to the cancelled status; and
  2. The Order will move from the appointment_pending or appointment_scheduled status to the appointment_cancelled status.