← All posts

FHIR and Blue Button JSON viewer: read your health records as tables

By Firebird Systems, the makers of HealthViewer · Published October 23, 2026 · Last reviewed October 23, 2026

FHIR is the format health systems and insurers use to hand records to apps. It is complete and precise, and it is unreadable: a single cholesterol result is forty lines of nested codes, and a year of claims is a file you scroll for minutes without finding a date.

This viewer reads the file and lays it out as tables, one per kind of record: lab results, vital signs, conditions, medications, allergies, immunizations, visits, claims and coverage. Every row opens to show the JSON it came from, so nothing is hidden behind the summary, and each table downloads as a spreadsheet.

It runs entirely in your browser. The file is read on your own device and nothing is sent to us or anyone else.

What it reads

It reads FHIR R4, which current systems send, and the older DSTU2 and STU3 shapes where they differ in a field it shows. It doesn’t read C-CDA, the XML “continuity of care” document many portals offer instead; if you drop one, it says so.

Where FHIR JSON comes from

What the tables show

SectionFromColumns
Lab resultsObservation (laboratory)Date, test, value, unit, reference range, flag, status
Vital signsObservation (vital-signs)Date, measurement, value, unit; blood pressure as one reading
Other observationsSurveys, social history and the likeDate, observation, value, category
ConditionsConditionOnset, condition, clinical status, verification, recorded
MedicationsMedicationRequest, MedicationStatement, MedicationDispenseDate, medication, dosage, status, prescribed or dispensed
AllergiesAllergyIntoleranceRecorded, substance, reaction, criticality, status
ImmunizationsImmunizationDate, vaccine, status, lot
ProceduresProcedureDate, procedure, status, performed by
VisitsEncounterDate, type, reason, where, status
ReportsDiagnosticReportDate, report, category, conclusion, number of results
DocumentsDocumentReferenceDate, type, description, format
ClaimsExplanationOfBenefitDate, claim type, provider, diagnoses, services or drugs, billed, paid
CoverageCoverageStart, plan, payer, status, member ID
ProvidersPractitioner, Organization, LocationKind, name, detail
OtherAnything elseDate, type, summary

Names are shown as the record printed them, so a test can read “Glucose [Mass/volume] in Blood” rather than “Glucose”. Claims show Medicare’s claim types in words (a “PDE” claim is a Part D prescription fill), and a diagnosis or drug code is shown with its meaning where the file includes it. Most Blue Button files give ICD-10 and NDC codes without one; looking a code up is the next step.

Each section is sorted newest first. The filter box narrows the table to rows that contain what you type; the download always has the whole section.

When the file is only part of the record

An API answers a search one page at a time. If the file you have is one page, its Bundle says there are more, and the viewer tells you so. The app that made the file can usually fetch the rest.

Why a viewer and not an app

Reading the file is the first step. Keeping the record is the second: the next download repeats most of this one, a test has a different name at every lab, and the results that matter are spread across portals.

The HealthViewer app imports the lab results and vital signs from a FHIR file, or pulls them straight from Epic and Cerner portals, matches each test across sources and charts it over time. Its medication list reads the prescription fills in a Medicare Blue Button claims file. Everything stays in an encrypted file on your own disk. The first week is free.

Privacy

Your file never leaves your device. The viewer is part of this page: once the page has loaded, nothing else is fetched, and what you paste or drop is read in the browser tab and forgotten when you close it. There is no upload, no account and no analytics on what you view. If you want to check, open your browser’s network panel before you choose the file: nothing is sent.