Thirty years of test results, discharge summaries, ultrasound reports — printed by clinics that no longer exist, in countries you no longer live in, in languages your current doctor does not read.
Epicrisis Companion turns that box into an archive on your own computer. Every value exactly as it was printed, in the language it was printed in, next to the reference range printed beside it, one click from the original page.
You run it for yourself, then for your father, then for your grandmother — one instance, one archive per person, and the archives never touch.
The same program, three different reasons to open it.
The appointment is in an hour and the doctor asks how long your haemoglobin has been at that level. Three years — and here are the eleven measurements, in the units each of the three laboratories used.
Fifteen years of glycated haemoglobin in one line: before it was found, the two years it was bad, the year treatment started, and every year since. The picture no single form contains, and the one every endocrinologist asks for.
Her archive is small, on paper, in the language of another decade, and nobody but the family will ever type it up. Twenty documents are still twenty documents you can hand over as a chart instead of a plastic bag.
All of it is the built-in demo: three archives of people who do not exist, drawn as scanned forms in five languages and then transcribed, checked and indexed for real — without a single model call and without anything leaving the machine. Drag the strip, or use the buttons. Click a picture to open it whole.
Most of the work in this program is refusing to be helpful.
Models misread pages. So the archive does not trust its own reading.
Read and in daily use in Russian, Ukrainian, English, Spanish and Greek — including Greek capitals that lose their accents, headings spaced o u t like this, and tables printed sideways.
For one page, yes — and it will read it better than any rule. For an archive it is a different job, and the difference is structural rather than a matter of prompting.
| A model reading your files | Epicrisis | |
|---|---|---|
| Scale | Thousands of pages do not fit in a context window | Read once, stored, indexed; the whole archive answers in milliseconds |
| Repeatability | Ask twice, get two answers | The reading is a file on your disk; tomorrow's answer is today's |
| Provenance | A number in a chat | Every value carries its file, page and date, and links to the scan |
| Your corrections | Die with the conversation | Stored apart from the model's output, keyed to the printed line, reapplied after every re-read |
| Catching mistakes | You have to notice | Deterministic checks find them; a second, different model reads again and disagreements are shown |
| Units and specimens | Quietly converted, quietly merged | Never converted; split by unit and by specimen |
| Vocabulary | Regrouped differently every time | One vocabulary, approved once, in five languages |
| Several people | One pile | One archive per person, one index file each, by construction |
| With no model at all | Nothing works | Search, charts, index, checks and the whole dashboard |
Two real archives on one machine, kept by the people whose archives they are.
Whose they are is nobody's business, and nothing from them appears here: every picture on
this page comes from epicrisis demo, which invents its own people.
The whole design assumes the machine is yours and the network is not.
127.0.0.1 only. From anywhere else, through an SSH tunnel.data/ and can be deleted and rebuilt from scratch.unlock returns a pass good for four hours; every tool refuses without it; lock ends it early. The secret behind that code is generated on your server, read once into your phone, and never travels through a conversation.
Python 3.14 and uv.
git clone https://github.com/bermana-net/epicrisis && cd epicrisis
uv sync
uv run epicrisis demo --into /tmp/demo # three invented archives, no model called
uv run epicrisis serve --data-dir /tmp/demo/data
That demo is everything on this page: three lives that never happened — Vera, her father Anders, her grandmother Zoya — drawn as scanned forms in five languages, transcribed, checked and indexed for real, with not one call leaving your machine.
Then, when you are ready:
uv run epicrisis sources add ~/scans --owner "Your name"
uv run epicrisis update # inventory → classify → extract → validate → index
uv run epicrisis serve
Epicrisis is not a medical device. It is not for diagnosis, treatment or any clinical decision. It stores and shows what your documents say; it does not interpret them, does not decide what is normal, and does not advise.
A transcription from a scan can be wrong. That is why every value in this program is one click from the page it came from — and why the page, not the program, is the authority.