FHIR and Blue Button JSON viewer: read your health records as tables
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.
Or paste the JSON
What it reads
- A FHIR Bundle, the usual shape of a download or an API response, including a search result page and Bundles inside Bundles.
- A single resource, such as one Observation.
- An array of resources, or NDJSON (one resource per line), the format of bulk exports.
- Several files at once. Choose them together and they are shown as one record.
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
- Medicare’s Blue Button API. Medicare gives your Part A, B and D claims to apps you authorize, as FHIR ExplanationOfBenefit records. Some of those apps let you save the raw file.
- Your insurer’s patient access API. US health plans in Medicare Advantage, Medicaid and the ACA marketplaces have to offer your claims the same way, most of them in the same CARIN Blue Button format.
- Your health system, through an app. Epic, Oracle Health (Cerner) and most other portals hand out records over SMART on FHIR to apps you sign in to. The MyChart guide walks through it.
- Apple Health. An Apple Health export holds a
clinical-recordsfolder of FHIR JSON files, one per record. Drop several here to read them, or use the Apple Health export tool, which reads the whole export at once.
What the tables show
| Section | From | Columns |
|---|---|---|
| Lab results | Observation (laboratory) | Date, test, value, unit, reference range, flag, status |
| Vital signs | Observation (vital-signs) | Date, measurement, value, unit; blood pressure as one reading |
| Other observations | Surveys, social history and the like | Date, observation, value, category |
| Conditions | Condition | Onset, condition, clinical status, verification, recorded |
| Medications | MedicationRequest, MedicationStatement, MedicationDispense | Date, medication, dosage, status, prescribed or dispensed |
| Allergies | AllergyIntolerance | Recorded, substance, reaction, criticality, status |
| Immunizations | Immunization | Date, vaccine, status, lot |
| Procedures | Procedure | Date, procedure, status, performed by |
| Visits | Encounter | Date, type, reason, where, status |
| Reports | DiagnosticReport | Date, report, category, conclusion, number of results |
| Documents | DocumentReference | Date, type, description, format |
| Claims | ExplanationOfBenefit | Date, claim type, provider, diagnoses, services or drugs, billed, paid |
| Coverage | Coverage | Start, plan, payer, status, member ID |
| Providers | Practitioner, Organization, Location | Kind, name, detail |
| Other | Anything else | Date, 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.