Logo
The Vocabulary of Tech
Published on

Bloodwork App

Blood tests, tracked over time

About The App

Visualized history of blood test results.

I use it when discussing my test results with doctors.

Note: the numbers below are genericized to protect my privacy.

How to Use

  • Select a subset of the tests using the dropdown.
  • The reference range is bounded by the gray-shaded areas at the top and bottom of each chart.

Problems Solved

Doctors often get blood test results as a text-only printout which looks like this (Google images). The reports have the following problems:

Problem: the patient's previous blood test results are not shown.

Solution: include past results and plot the changes over time.

Problem: typically, the only visual aid provided is to embolden test results that fall outside the reference range.

  1. There is no bolding for outliers that are very close to the reference range boundaries, but not beyond.
  2. This forces the doctor to read each number, or just depend on the limited info conveyed by the bolding.
time series plot of Vitamin D blood test results

Solution: the gray areas on the chart clearly show the boundaries of the reference range, clarifying which outlier test results are near or past the range.

time series plot of Vitamin D blood test results

Note: AFAIK, only Quest Diagnostics lab offers a visualization of changes over time (and only for tests performed by their labs, of course.). This is a recent and very welcome improvement.

Tools and Technical Details

  • Nextjs (CSR, API)
  • Reactjs (Hooks, Context)
  • Intersection Observer API - Lazy-loading (and unloading). Over 100 charts could possibly be selected at once. To ensure the best performance, each chart is rendered only when it is inside (or, during scrolling, grows near to) the browser viewport.
  • Vega - data visualization
  • Arquero (data manipulation)
  • The blood test data I've entered in a spreadsheet on Google Docs. The Nextjs API code fetches it from there.