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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
surfingjoe
Helper I
Helper I

If based on first date occurrence

Working with Pharmaceutical data.  Trying to determine the first occurrence of a prescription as "New" prescription and all successive orders of that prescription as "refills"

 

Each patient will have a "service start date" and a "service stop date".   Each service range can have multiple fills.

 

A doctor can renew a prescription, we would then assign a new "service start date"

 

I'd like to be able to use an if statement stating that the first start date is a "New" service start and all successive start dates as refills.

 

If this was the AdventureWorks data, then it can be described as wanting to flag the very first customer order for a product as "new order" for that product and if the customer oders more of the same product, then flag it as a "repeat" order for that same product.

 

Bottom line I'd like to create a slicer for only new prescriptions.

 

 

1 ACCEPTED SOLUTION

@surfingjoe

 

Try this for the new column:

 

NewColumn=
VAR _StartDate = CALCULATE ( MIN ( Query1[Start date of service] ), ALLEXCEPT ( Query1, Query1[Product], Query1[Customer] ) )
RETURN
IF( Query1[Start date of service] = _StartDate, "New", "Refill")

 

View solution in original post

9 REPLIES 9
itsmebvk
Continued Contributor
Continued Contributor

@surfingjoe 

 

Create a Calculated column with following code

 

 

Start Date = CALCULATE(MIN(Sheet1[Start]),ALLEXCEPT(Sheet1,Sheet1[Patient ID]))

Create slicer column with following code 

 

 

 

Flag = IF(Sheet1[Start]=Sheet1[Start Date],"Start","Refill")

play around with the attached PBIX.

Not sure if I was clear.  Need first date for each oder per product per customer

So the new column should be perhaps

Start Date = CALCULATE(MIN(Query1[Start date of service]),ALLEXCEPT(Query1,Query1[Part Number]))
 
 
BUT:
However, the above calculated column returns the same start date for all part numbers which is the first start date for all customers and/or products
 
therefore it is not returning a unique start date for the first time a product is ordered for each customer or in my case the first prescription for a specific drug for that customer
itsmebvk
Continued Contributor
Continued Contributor

@surfingjoedid you try to tweak context as follow? 

 

Start Date = CALCULATE(MIN(Sheet1[Start]),ALLEXCEPT(Sheet1,Sheet1[Patient ID],Sheet1[Part Number]))

Thank You that works.

 

however I've an issue with the if statement.  PowerBI is only allowing me to type in measures to do the logical test.  not columns, am I doing something wrong?

@surfingjoe

 

Then

Start Date =
CALCULATE (
    MIN ( Query1[Start date of service] ),
    ALLEXCEPT ( Query1, Query1[Product], Query1[Customer] )
)

should suffice for the start date. You can, within the code for the column, check whether the current row date equals the start date.

@surfingjoe

 

Try this for the new column:

 

NewColumn=
VAR _StartDate = CALCULATE ( MIN ( Query1[Start date of service] ), ALLEXCEPT ( Query1, Query1[Product], Query1[Customer] ) )
RETURN
IF( Query1[Start date of service] = _StartDate, "New", "Refill")

 

That is exactly what I was trying to acheive.  Thank You

Thank you, that definitely gives me the first "start date" for each product for each patient.

 

However now, I'm really going to show my newbieness.  the if statement shown above seems like it should work comparing the row's start date with the new columns start date, however, when I try to write out the if statement, it is only allowing me to type in measures and not actual column names to compare.  

 

What am I doing wrong, just need to create an if statement that compares start date to the new column???

AlB
Super User
Super User

Hi @surfingjoe

 

I guess each  prescription has a unique identifier? Why don't you show a sample of your data model? It would make things much easier for people trying to help. 

You could use an ascending RANKX( ) based on date within each prescription  and assign a "Yes" to the row ranked number  1. Or you can also check whether the date for the current row has the MIN(date) for that prescription.

Helpful resources

Announcements
March Fabric Community Update

Fabric Community Update - March 2024

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

Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.