Repository navigation
Real-report accuracy, FHIR export, one-command demo, privacy page - #4
Merged
Merged
Conversation
Checked every row of five real sample reports (88 rows) by hand against the PDFs. Four values were wrong, including a positive SARS-CoV-2 result read as "NOT DETECTED" from the reference column, and creatinine, five differential percentages, HbA1c and body weight mapped to the wrong LOINC codes. - extract: split value+flag and value+unit glued by one space, strip "See Note" lines and site codes, read paired Component/Result columns, normalise "> OR =" ranges - mapping: a curated stage for the names real reports print most, with the printed unit deciding between a fraction and a count; blood and serum only, so urine rows continue down the cascade - expected.json pins all 88 rows; the extractor must match exactly Offline: 81 rows map correctly, none wrong, 7 left for review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GET /api/observations/{patient}/fhir returns every row, and the Record
screen downloads it. A value travels in the unit of the range it was
judged against; a row awaiting review goes out as preliminary with the
printed name and no code. The download is audited.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What is stored, what is encrypted, what can leave the server and who can see a record, each line describing existing backend behaviour. Linked from the landing page and sign-in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A name needed two letters in a row, so a potassium printed as "K" and an HbA1c printed as "A1C" vanished from the report without a trace. Also adds the HGB, HCT, PLT, A1C and hyphenated LDL spellings to the curated table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docker compose up --build starts Mongo, Redis, the API, the worker and the built frontend behind nginx, generates its own keys into a volume, and reads six generated reports through the real pipeline. CI runs it and pulls the FHIR export through the proxy. The sample reports now name a fictional patient. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It looked for the value "18" anywhere in the log, and a hex database id contains it about once in several runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Reading real reports. Every row of five real Quest and LabCorp sample reports (88 rows) was checked by hand against the PDF and pinned in
expected.json.KandA1Cwere dropped without a trace. They are rows now.FHIR export.
GET /api/observations/{patient}/fhirreturns the whole record as a FHIR R4 bundle, and the Record screen downloads it. A value travels in the unit of the range it was judged against; a row awaiting review goes outpreliminarywith the printed name and no code. The download is audited.One-command demo.
docker compose up --buildstarts everything, generates its own keys into a volume, and reads six generated reports through the real pipeline. A new CI job runs it and pulls the export through the nginx proxy.Privacy page.
/privacystates what is stored, what is encrypted, what can leave the server and who can see a record. Each line describes existing backend behaviour.Housekeeping. The sample-report generator names a fictional patient, and
backend/results.xmlis no longer tracked.Testing
docker compose upitself was not run locally; thedemoCI job is its first run.🤖 Generated with Claude Code