July 2, 2008 at 4:57 pm
Disclaimer: I still feel like a newbie so please go easy.
I extracted the TSQL code out of our database that another programmer used to figure out the age of a patient.
age_calc = cast(
case
when (datediff(dd,vsm040.bth_ts, vpm300.adm_ts) >= 365) then
convert(integer,(datediff(dd,vsm040.bth_ts, vpm300.adm_ts) / 365.25))
else
datediff(dd,vsm040.bth_ts, vpm300.adm_ts) / 365.25
end as int(4))
The above code works fine and gives me an age. When I tried to copy this code to get the length of stay for an inpatient under 150 days I keep getting a syntax error. Here is the code I'm trying to use....
los = cast(
case
when (DateDiff(dd,vpm300.adm_ts, Isnull(vpm300.dschrg_ts,getdate()) < 150) then
convert(integer,(DateDiff(day,vpm300.adm_ts, Isnull(vpm300.dschrg_ts,getdate())))
else
'0'
end as int(4))
The error I'm getting is....
Server: Msg 170, Level 15, State 1, Line 24
Line 24: Incorrect syntax near '<'.
Line 24 is the same line as ".....< 150....."
bth_ts = birthdate
adm_ts = admission date and time
dschrg_ts = discharge date and time
When I use the line....
DateDiff(dd,vpm300.adm_ts, Isnull(vpm300.dschrg_ts,getdate()))
...I get a valid length of stay but I'm trying not to include a length of stay on recurring accounts (outpatient accounts) that discharge after 365 days. I picked 150 out of the air but I know we've had a few 60-70 day stays in the last year.
Thanks in advance,
John
July 2, 2008 at 5:30 pm
select
case when DateDiff(dd,vpm300.adm_ts, Isnull(vpm300.dschrg_ts,getdate())) < 150
then
DateDiff(day, vpm300.adm_ts, Isnull(vpm300.dschrg_ts, getdate()))
else 0
end
from vpm300
You don't need to cast to an int. DateDiff() returns an int. Not sure how "not to include a length of stay on recurring accounts" fits in.
July 2, 2008 at 10:41 pm
That may have worked. I'll check it for sure tomorrow. I just didn't get why copying previous code that worked doesn't work....I'm not looking for an answer why right now because I think yours worked and that's all I'm going for....a working report.
Not sure how "not to include a length of stay on recurring accounts" fits in.
We have different patient types setup in our system. My report is pulling up recurring accounts with a length of stay of 365 days but I don't want that coming up in the column. I only want accounts with the type of Inpatient to have a length of stay show up > 0 where as all other types should have a LOS of 0. Using the " < 150 " (and the ELSE part of that statement) would keep recurring accounts LOS at 0.
Not sure if that made sense but anyway.....thanks for the reply.
John
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy