generated/mulrtiple-stacks-of-medical-records-with-clear-e
AI & Agents

Hundreds of lab reports, one conversation

July 16, 20268

A decade of blood draws scattered across four patient portals. Starting the project to collect them all took one paragraph typed into a chat box.

CancerLeukemiaAgentsAIClaudeHealth

I have a lot of lab reports.

That's what six and a half years of leukemia treatment and four years of regular check-ins produces, among other things: hundreds of blood draws, spread across several different MyChart accounts, UW Medicine, and what used to be Seattle Cancer Care Alliance. Every clinic had its own portal, every portal held its own slice of me, and nobody had the whole picture. Including me.

I've wanted to fix that for years. Collect everything, one place, one timeline, queryable. It's exactly the kind of project I'm supposed to be good at. It's data plumbing. I've done data plumbing for banks.

I never started it.

Why projects like this die

Not because the work is hard. Because starting is expensive, and the expense is invisible.

Here's what starting this project actually costs, the traditional way. A weekend, minimum, of research before a single line of code: what patient-access APIs exist and who's required to offer them, what a C-CDA export is and how it differs from FHIR, what HIPAA's right-of-access rules actually entitle me to, which third-party aggregators are real companies versus landing pages, and the small matter of where my Seattle Cancer Care Alliance records even live now, since SCCA stopped existing as an independent entity somewhere along the way.

Every one of those is answerable. None of them is interesting. And the weekend I'd spend answering them is the same weekend I could spend with my kid, so the project goes back on the shelf, where it has lived since roughly 2019.

This is the real shape of most abandoned side projects, I think. We talk about them like we ran out of steam in the middle. Mostly we never got past the research phase, because the research phase is a tax you pay before you know if the project is even viable, and unlike the code, it doesn't feel like building anything.

What starting looked like instead

Two weeks ago I typed one paragraph into Claude. Roughly: I have a long health history with hundreds of lab reports across several MyChart instances, plus UW and Seattle Cancer Care Alliance. I want to collect all of them. What are some possible strategies?

What came back, in about a minute, was the weekend.

Five strategies, correctly ordered by durability. Every Epic/MyChart instance is legally required to expose a SMART-on-FHIR patient-access API under the 21st Century Cures Act. Labs come out of it as structured JSON with LOINC codes and reference ranges. which is what you want if the end state is a queryable database rather than a folder of PDFs. That there's an open-source, self-hosted project (Fasten Health) that already maintains connectors for exactly this. That Apple Health can do a lazier version of the same aggregation. That the truly old records, the pre-portal ones, require formal HIPAA right-of-access requests to each institution's records department, and that the fees for electronic delivery are legally capped.

And one detail that would have cost me an hour on its own: SCCA merged into Fred Hutchinson Cancer Center in 2022. My records requests go to Fred Hutch's records department now. The institution I was going to spend part of my Saturday locating doesn't exist, and the chat just... knew that, and routed around it.

Was every word of it right? I haven't verified all of it yet, and I won't pretend otherwise. Checking is my half of this arrangement, and with medical data I take that half seriously. But as a starting position, it was better than what my weekend of research would have produced, because my weekend would have been assembled from SEO sludge and five-year-old forum posts, and this was assembled from the same sources with something that reads faster than I do.

The tax got repealed

I wrote recently about how agentic coding didn't delete the work, it moved it to the two ends: planning and verifying. This is the same observation from a different angle. The planning end got heavy, yes. But chat made the heavy end cheap to enter. The blank-page cost of starting a new project. the tax you used to pay in research before you could decide whether to commit. has collapsed to describing your problem honestly in a paragraph.

That's a genuinely different economics of starting things. The projects that die on the shelf don't die because we can't build them. They die because the entry fee was a weekend, and weekends are the scarcest thing I have. When the entry fee drops to a conversation, the shelf gets a lot shorter.

What happens next

So the project is finally alive, and it's going to run in public. Over the next while I'll be building the pipeline: pulling from the FHIR endpoints, filing the records requests for the pre-portal years, parsing whatever ancient formats come back, and landing all of it in one place — every blood draw I've had for a decade, keyed by test and date, deduplicated, mine.

There will be code. There will be at least one format from the early 2010s that makes me regret everything. There will be the verification problem, which is the part I'm most interested in writing about: what it means to let an AI help assemble a dataset where the cost of a silent error isn't a bug ticket.

The chat got me started. The finishing is still on me. That trade I'll take every time.

Series
Blood Work

Collecting every blood draw from ten years as a leukemia patient, scattered across ten health systems, into one dataset I own. The access fights, the parsing, the normalizing, and eventually the chart.

  1. Part 1Hundreds of lab reports, one conversation
  2. Part 1Ten years of blood draws, ten health systems, one spreadsheet

Loading discussion…

Written by

Andrew @ CodeLifter

All Posts