thaulk said:
We actually created appointment types ; "in room" in hall, in lab, discharged and assigned each their own color scheme and you can track your patient movement that way via your schedule module. We have not attempted to run any reports but I would think their should be away to track each time the appointment type was changed
We use CPS, and we have done the same with our appointment types (Checked In, Being Seen Room 1, Being Seen Room 2, etc.). We also have real-time SSRS reports setup to tell us where a patient is in the clinic and what time he/she entered that status. We do this by using the ActivityLog table. Below is a query that can show you the current appointment status, as well as what time the patient checked in and was moved to a room.
SELECT DISTINCT P.PatientId, P.First, P.Last, T.Name AS ApptType, CAST(A.ApptStart AS DATE) AS ApptStart, CAST(A.ApptStart AS TIME) AS ApptTime,
STAT.Description, MD.ListName, CHECK_IN_TIME.Created AS CHECK_IN_TIME, BEING_SEEN_TIME.Created AS BEING_SEEN_TIME
FROM Appointments A
INNER JOIN PatientProfile P ON A.OwnerId = P.PatientProfileId
INNER JOIN ApptType T ON A.ApptTypeId = T.ApptTypeId
INNER JOIN DoctorFacility MD ON A.ResourceId = MD.DoctorFacilityId
INNER JOIN MedLists STAT ON A.ApptStatusMId = STAT.MedListsId
LEFT OUTER JOIN(
SELECT l.PatientProfileId, CONVERT(VARCHAR(10), l.Created, 101) AS 'ApptDate', l.Created
FROM ActivityLog l
INNER JOIN PatientProfile p ON l.PatientProfileId = p.PatientProfileId
WHERE l.FunctionName='Change Appointment Status' AND l.Value2='Checked In'
) CHECK_IN_TIME ON A.OwnerId = CHECK_IN_TIME.PatientProfileID AND CONVERT(VARCHAR(10), A.ApptStart, 101) = CHECK_IN_TIME.ApptDate
LEFT OUTER JOIN(
SELECT l.PatientProfileId, CONVERT(VARCHAR(10), l.Created, 101) AS 'ApptDate', l.Created
FROM ActivityLog l
INNER JOIN PatientProfile p ON l.PatientProfileId = p.PatientProfileId
WHERE l.FunctionName='Change Appointment Status' AND l.Value2 LIKE 'Being Seen%'
) BEING_SEEN_TIME ON A.OwnerId = BEING_SEEN_TIME.PatientProfileID AND CONVERT(VARCHAR(10), A.ApptStart, 101) = BEING_SEEN_TIME.ApptDate
WHERE A.ApptKind = 1
AND A.Canceled IS NULL
AND T.Name NOT LIKE 'Phone%'
AND CAST(A.ApptStart AS DATE) = CAST(GETDATE() AS DATE)
AND (STAT.Description LIKE 'Being Seen%' OR STAT.Description LIKE '%Check%In%')
ORDER BY T.Name
Posted : August 13, 2014 4:33 am