Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
puru85
Helper II
Helper II

Calculating Wait Time for Outpatients

Hi Experts,

I need assistance with calculating the wait time for outpatients in Power BI.

My dataset consists of two tables:

Appointment: Contains details about scheduled appointments, including the appointment time.
OutpatientVisit: Captures information on outpatient visits, including timestamps for 'Checked In' and 'Consult Start' statuses.

Requirement:

I need to calculate the wait time for outpatients based on the following logic:

Wait Time =
IF (
OutpatientVisit.VisitTime (VisitStatus = 'Checked In') < Appointment.AppointmentTime,
OutpatientVisit.VisitTime (VisitStatus = 'Consult Start') - Appointment.AppointmentTime,
OutpatientVisit.VisitTime (VisitStatus = 'Consult Start') - OutpatientVisit.VisitTime (VisitStatus = 'Checked In')
)


I achieved this by creating a calculated column in the OutpatientVisit table, named WaitTime_1.
However, I need to update the DAX formula to handle cases where an outpatient ID is not found in the Appointment table. In such cases, I want to calculate the wait time as:


OutpatientVisit.VisitTime (VisitStatus = 'Consult Start') - OutpatientVisit.VisitTime (VisitStatus = 'Checked In')

How can I achieve this in Power BI using DAX? I am open to using either a calculated column.

Attached is the  PBIX file.
Waittime.pbix

Thank you for your help!

2 ACCEPTED SOLUTIONS
Moetazzahran
Resolver II
Resolver II

Hello @puru85 , 
You can use this measure to accomedate the additional condition you need.

WaitTime =
VAR AppointmentTime =
MAXX (
RELATEDTABLE(Appointment),
Appointment[AppointmentTime]
)

VAR CheckedInTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Checked In",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
)

VAR ConsultStartTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Consult Start",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
)


RETURN
SWITCH(TRUE(),
ISBLANK(AppointmentTime),
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
CheckedInTime < AppointmentTime,
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE)
)

Moetazzahran_1-1718577772304.png

 


 


The Highlight for this measure that it can I used 
ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
Which applies the correct filter context for the last condition you required. 

If this solves your issue, please accept it as a solution. 

You Kudos will be greatly appreciated.

View solution in original post

Hello @puru85 , 
I believe if you need the desired result you can try this out as a calculated column.

WaitTime_calcc =
VAR AppointmentTime =
MAXX (
RELATEDTABLE(Appointment),
Appointment[AppointmentTime]
)

VAR CheckedInTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Checked In",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientID],OutpatientVisit[VisitDate])
)

VAR ConsultStartTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Consult Start",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientID],OutpatientVisit[VisitDate])
)


RETURN
SWITCH(TRUE(),
ISBLANK(RELATED(Appointment[OupatientIDAndDate]))&&OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
CheckedInTime < AppointmentTime&&OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE)
,BLANK()
)

If it works, please accept it as a solution and your Kudos is much appreciated. 
Thank you

View solution in original post

3 REPLIES 3
puru85
Helper II
Helper II

@Moetazzahran Thank you very much.

It works perfectly in measure, but not as calculated column.  When tried in calculated column, the results are not expected. Please help!!

Hello @puru85 , 
I believe if you need the desired result you can try this out as a calculated column.

WaitTime_calcc =
VAR AppointmentTime =
MAXX (
RELATEDTABLE(Appointment),
Appointment[AppointmentTime]
)

VAR CheckedInTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Checked In",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientID],OutpatientVisit[VisitDate])
)

VAR ConsultStartTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Consult Start",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientID],OutpatientVisit[VisitDate])
)


RETURN
SWITCH(TRUE(),
ISBLANK(RELATED(Appointment[OupatientIDAndDate]))&&OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
CheckedInTime < AppointmentTime&&OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
OutpatientVisit[VisitStatus]="Consult Start",
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE)
,BLANK()
)

If it works, please accept it as a solution and your Kudos is much appreciated. 
Thank you
Moetazzahran
Resolver II
Resolver II

Hello @puru85 , 
You can use this measure to accomedate the additional condition you need.

WaitTime =
VAR AppointmentTime =
MAXX (
RELATEDTABLE(Appointment),
Appointment[AppointmentTime]
)

VAR CheckedInTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Checked In",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
)

VAR ConsultStartTime =
CALCULATE (
MAX (OutpatientVisit[VisitTime]),
OutpatientVisit[VisitStatus] = "Consult Start",ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
)


RETURN
SWITCH(TRUE(),
ISBLANK(AppointmentTime),
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
CheckedInTime < AppointmentTime,
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE),
DATEDIFF(CheckedInTime,ConsultStartTime,MINUTE)
)

Moetazzahran_1-1718577772304.png

 


 


The Highlight for this measure that it can I used 
ALLEXCEPT(OutpatientVisit,OutpatientVisit[OupatientIDAndDate],OutpatientVisit[VisitDate])
Which applies the correct filter context for the last condition you required. 

If this solves your issue, please accept it as a solution. 

You Kudos will be greatly appreciated.

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.