Carbon is coming along well. We are still finishing up the final touches on getting user authentication and user data synced up. It’s harder than you might imagine. However, that is an (obviously) vital piece of what we are building.
Today I want to touch on something that we’ve been working on in the background, HealthcareOS. Yes, that is still a thing and we are continuing to push forward on it!
I want to talk about data. And more specifically numerical data, yeah we’re going to talk about numbers. Don’t worry math-fearers, no math required.
When we work with numbers in an application it is usually for one of two purposes. To report on them or to gain insights from them.
Computers are really really good at processing lots of numbers and displaying them. Think of an excel spreadsheet. It’s very easy to compile all of these numbers and it’s even (fairly) easy to display them intuitively. When we look at reporting dashboards (Google Analytics, Gecko Board) we’re looking to see a lot of data fairly quickly. How many users? How much time? How much money? When? Reporting dashboards have been able to present these answers quickly for a while now.
The other purpose of working with numbers in an app is for gaining insights. It’s not important how much money you’ve made in the last month if you can’t compare it to the month before and see sales are declining or increasing. This insight is way more important to a business owner than the exact dollars and cents number of profit last month (though of course, that is still important). This is much more difficult to do for a computer because the computer or system has to be told what is important and how to display that information. It’s not enough to just list the number. We have to display something to indicate sales went down. Usually, we do this through an arrow, a color change, or a trend line. These small visualizations help a user glean insight from the number with a much lower cognitive load. They don’t have to do the math of subtracting the previous month’s sales with last month’s if the system already tells them that it’s less and how much less.
These two purposes (reporting and insights) make up what we call data visualization or data vis for short.
It’s no secret that healthcare is full of numbers. Lab reports, vital signs, timelines, and financial information make up just some of that data. And all of them are vastly different. This makes the problem of data vis in an EHR quite complex.
Take a look at the following screenshot:
As you can see this is a sample blood test that includes a Lipid panel, CBC, T3, Iron, Free T4, TSH, and CMP. For now, we’ll focus on the lipid panel at the top. My guess is that unless you’re familiar with all of the information on this page, you probably just glanced over the information (I know I did when I first looked at it).
This page is a type of data vis. It is taking numeric data and reporting on it by showing you the results (Result column) and even giving some insight by clarifying what the range is (Reference Range column) and if the result is low or high (Flag column).
However, most of us, clinicians included, would look at this and say it is a very poor user experience. For one thing, a user has to look at the result then look to the range and make a calculation in their head as to how high or low that result is. Is this a bad thing? Probably not. And I would venture a guess that many clinicians have the more common pieces of information memorized. However, if there are many items that are high or low then that could be a high cognitive load task to understand the complete picture (especially if you have to read 10 or 15 of these per day).
The bigger problem with this page, however, is the context. A single report like this doesn’t include the context of that patient. There are many details surrounding a patient that could influence and impact the results on this report. Age, sex, medications, chronic conditions, recent injuries or illness, recent procedures, and more can all make these results good or bad. And more importantly, they can impact the next steps a clinician needs to take. Do they need to prescribe new medication? Do they need to stop medication? Are more tests necessary?
All of these considerations get very deep into that “insights” column of our EHR. Many EHRs don’t display lab results exactly like the above paper but they’re pretty close.
Let’s take a look at how we might improve this:
In our above design example, we’ve done a few things.
While this may “look” better, is it truly a better solution? No, it’s not. For one thing, the reference range changes for each result making the “placement” of the tick mark nearly meaningless. Because these results need to be analyzed together, it’s important that they flow well. Our HDL tick mark is farther to the right than the Triglycerides tick mark even though it is a lower number. And our LDL tick mark is the furthest left even though it is a larger value than HDL. Furthermore, this doesn’t give us the insight of whether the result is high or low. We could argue that the grey bar helps indicate “normal” range but that isn’t necessarily intuitive or quick to get.
So let’s say that we want to still visually ID these results. Certainly having bigger text and the blue tick marks makes for an quicker to decipher list than the example.
In our second example, we’ve left aligned the results and used more closely standardized gap measurements. While they’re not 100% the same they are much closer. Further, we’ve placed all the important reference text above the scale to help save some horizontal space and make some of the numbers larger.
Is this perfect? No. We’re still missing the “range” and the High or Low indicator. Neither of these options is outside the normal range, so what do we do then? Also, should we have a way for a user to manipulate the scale of these lines? Should one be able to zoom into the Triglycerides scale to be able to see the tenth markers on the scale?
As you can see, this is an ongoing exploration. I think that by helping visualize this data appropriately clinicians will spend less time deciphering the results and more time acting on them. I am also curious to see how these may interact with a timeline. Especially when overlaid with prescriptions or procedures.
What do you think? Which option works better? What could be done to improve them?
It’s all exploration still to be done and I’m excited to keep working on it.
Until next week, ✌️