Add AgeAtEncounterNBR to Encounter Views
Reviewers Wanted
This is an open call for reviews of this new feature. Please provide any feedback by 7/19/2019.
Description
Age calculations can be deceptively difficult. These columns add a canonical reference for the patient's age at the time of the encounter. Specifically, the instant the encounter began.
Implementation
The following calculates the patient's age:
datediff(YEAR, ptn.BirthDTS, ad.AppointmentDTS) - (
case
when dateadd(YEAR, datediff(YEAR, ptn.BirthDTS, ad.AppointmentDTS), ptn.BirthDTS ) > ad.AppointmentDTS then 1
else 0
end)
The calculation needs to be slightly complex due to how datediff
will naively calculate year deltas as discrete intervals.
The first part (datediff(YEAR, ptn.BirthDTS, ad.AppointmentDTS)
) takes the difference between the year values of time 0 and time 1 without accounting for other components of the DATETIME
. This may overstate the age if the appointment occurred before the patient's annual birth date: select datediff(YEAR, '2000-07-01', '2010-06-01') == 10
, even though the patient would still be considered 9 by human interpretation.
The second part corrects this issue by subtracting one year from the first result if the encounter date is before the birth date.