Order lifecycle
As described in Order Status and Lifecycle, each lab testing modality has the following format:[HIGH-LEVEL STATUS].[TEST MODALITY].[LOW-LEVEL STATUS]
For walk-in orders, the possible low-level statuses are:
ordered: Junction received the order 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 Junction’s system for the order but does not have a scheduled date.appointment_scheduled: An appointment was scheduled or rescheduled for the order.appointment_cancelled: The appointment was cancelled by the patient, Junction, or your Team.partial_results: The laboratory has started making partial results available.redraw_available: The result has been marked as final but is missing biomarker results due to lab error.completed: The laboratory processed the blood sample and final results are available.sample_error: The collected sample was unprocessable by the lab.cancelled: The order was cancelled by the patient, Junction, or your Team.
Possible state transitions for walk-in 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 Junction Dashboard.Appointment lifecycle
Each appointment has both a currentstatus and a normalized event_status. The events array contains the history of normalized appointment events.
Appointment status
The appointment object’sstatus describes its current scheduling or provider state:
Appointment event status
The appointment object’sevent_status and each events[].status use normalized lifecycle values:
Not every provider produces every status. Treat both enums as non-exhaustive and handle unknown values gracefully.
The Finite State Machine that defines the possible transitions for the appointment statuses described above is illustrated in the following diagram.
Common walk-in appointment event-status transitions.
Scheduling appointments before a requisition has been created
This feature is available upon request. To enable, please get in touch with your Customer Success Manager.
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.The Appointment starts with the
reserved status.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 will be skipped.2
Waiting for Requisition Creation
The requisition is being created asynchronously.
3
Requisition has been created
The requisition has now been created.
- The Order will move through the
requisition_created,appointment_pendingandappointment_scheduledOrder statuses in quick succession. - The Appointment will move to the
confirmedstatus automatically, which corresponds to thescheduledappointment event.
labtest.order.updated events, one each for the three Order status transitions. You will also receive a labtest.appointment.updated event for the Appointment status transition.Cancelling an appointment
If an Appointment is cancelled before a requisition has been created:- The Appointment will move to the
cancelledstatus; and - There is no change to the Order, which will remain in the
orderedstatus.
- The Appointment will move to the
cancelledstatus; and - The Order will move from the
appointment_pendingorappointment_scheduledstatus to theappointment_cancelledstatus.
Auto-cancellation of appointments without requisition
In cases where appointments can be scheduled before a requisition has been created, the appointment will be automatically cancelled by Junction if the following happens:- More than 8 hours have passed since the order was created, and no requisition has been received.
- There are fewer than 2 hours until the appointment start time, and no requisition has been received.
The 8-hour auto-cancellation rule does not apply to scheduled orders. Scheduled orders are fulfilled on their
activate_by date, so Junction does not cancel their appointments based solely on the fact that more than 8 hours have passed since order creation without a requisition.Arizona scheduling
This feature is available upon request. To enable, please get in touch with your Customer Success Manager.
API Journey
1
Creating an appointment
You create an Appointment for an Order to an Arizona PSC.The Appointment starts with the
reserved status.2
Waiting for Appointment Confirmation
The appointment is being created asynchronously.
3
Appointment has been created
The appointment has now been created.
- The Order will move through the
appointment_pendingandappointment_scheduledOrder statuses in quick succession. - The Appointment will move to the
confirmedstatus automatically, which corresponds to thescheduledappointment event.
labtest.appointment.updated event for the Appointment status transition. You will also receive two labtest.order.updated events, one each for the two Order status transitions.Arizona Scheduling uses separate Order and Appointment lifecycles. Appointment status changes are delivered through
labtest.appointment.updated. The Order status updates for appointment_pending and appointment_scheduled are emitted only after Sonora Quest confirms the appointment. If you use this feature, make sure your webhook endpoint is subscribed to appointment-level events.Appointment Booking Failure
If we are unable to book the Appointment asynchronously, then:- The Appointment will move to the
cancelledstatus. - Junction will send a
labtest.appointment.updatedevent for the cancelled Appointment. - There is no change to the Order, which will remain in its last status.