I need any suggestions to help with messy patient problem lists. We have a multispecialty group that has many providers adding problems for patients. Some don't put end dates so the patient has had an acute sinus infection for 4+ years, some don't remove an unspecified code when they have an accurate diagnosis after testing, some put duplicate diagnosis in. Providers won't remove a diagnosis they didnt enter. Our preloading was iffy from the start. These lists are a mess and we are not getting good provider response to clean them up. Is there any reports, processes, workflows, or anything else that can make this easier or faster than 1 or 2 people working through all these charts?
Please, any and all suggestions would be welcomed.
The first thing you should probably do is set up some custom problem lists that have the acute and one-time use diagnoses set with end dates by default. If your providers have trouble signing documents in a timely manner, you may need to make this default end date a lengthy one (we use 4 weeks for all of ours) because you could end up with the diagnosis falling off before the document is signed. The only way this will work, though, is if your providers actually use the custom problem list.
I don't think there are any reports with CPS that will pull what you need on this issue. We would have to create custom reports; however, I'm not sure how good the report would be at finding your problematic patients. The providers' nurses could work on cleaning these acute problems off by managing the problem list when the patient comes in.
I have built custom problem forms that have end dates for all acute diagnosis and Vcodes. They don't use them anymore. They also quit using the custom problem lists when we upgraded to CPS 11 because if they needed to search for a problem not on the list, it was very difficult to find. They switched to the Smart List at GEs recommendation.
We have made quite a bit of progress by telling providers we were going to share the problem lists with patients at previsit check-in and having patients help us by crossing off problems that are no longer active. This gets providers thinking about cleaning up lists. If a patient crosses a problem off we let the MA remove it for providers when rooming a patient and have the providers validate that before signing it. Messy problem lists are embarrassing, but shining light on that is about the only way to get people working on it.
Is anyone allowing coders to help clean up the lists? They know what should and shouldn't be there, and they are reading the documentation to make sure it matches the diagnosis and charges so it makes sense that they might be able to help, but I wasn't sure what the implications of that were.
Just a thought, if you are on CPS 11 there is a MEL_REMOVE_PROBLEM() function. You could write a function that will create a yes/no popup for users with job title "Physician" is the start date is more than a year ago and ask whether the provider wants to keep the problem, if they do, remove the problem and re-add it with start day today, if not just remove it. Its probably a lot of popups at first but it would force providers to do something about the list.
I am not very good at MEL, can you give me an idea on the function? These all sound like good ideas.
I didn't test this, and I am not currently on CPS 11, but I do have a demo database for reference, so this is what I was thinking. It should do basically what I said. I know there is a mel_change_problem() function but in my early testing it doesnt really seem to do what it says it should, but I havent seen any issues with these two. Sorry if it has mistakes in it i wrote it kind of quickly -
{!fn ForceProbUpdate(probs){
//check user jobtitle, and problem list isnt blank
if (USER_JOBTITLE() <> "Physician") or (probs == "") then return "" else "" endif
//continue for physicians, create array for probs
local hold = getfield(probs,"|","")
local tmp
for i = 1, i <=size(hold), i = i + 1 do
//sub array for each problem
tmp = getfield(hold,"^","")
//check if older than 365 days
if (durationdays(tmp[5],str(._TODAYSDATE))>365 then
//if true then pop up and action for yes and else for no
if useryesno("The following problem has been on the problem list for more than a year." + hret + hret + tmp[2] + " " + tmp[3] + hret + hret + "Select Yes to Keep this problem, Select No to remove it") == "Yes" then
MEL_REMOVE_PROBLEM(tmp[9],"","","")
MEL_ADD_PROBLEM(tmp[1],tmp[2],tmp[3],str(._TODAYSDATE),"",tmp[4],"","")
else
MEL_REMOVE_PROBLEM(tmp[9],"","","")
endif
endif
endfor
}}{!ForceProbUpdate(PROB_AFTER("delimited"))}
Thank you!