The problem
Hospitals store every scan, result and report as a file for a person to read. Little of it arrives as data that a computer can use.
A result can be a photo of a screen, a fax or a PDF. Other results arrive with local codes, different units or no patient number.
We cannot use real patient data. This simulation has sending systems and synthetic patients. One program turns their files into data. We call it the assembler.
Read the story of one patient first. Then the four outcomes. Then what the tool does about each.
One patient, file by file
The four outcomes
The simulator writes the true values to a hidden answer key. The assembler never sees this key. The score counts how many true values are in the assembled data.
Each true fact ends in one of four outcomes.
Against the answer key, the assembler produced wrong values.
The percentages reflect how this simulation was built. They show the mechanism, not a measured rate at any hospital.
What the tool does about it
Each feature addresses one cause of the gap. The numbers come from the simulated case.
Missing-result alert
The clinician sees at once which expected results never arrived. One example is a faxed troponin that no system received.
Origin of each document
The clinician sees who sent each document and through which connection. The record also shows the format and the repairs that the assembler applied.
Code and unit conversion on arrival
The clinician sees each lab result with the hospital's own code and unit. The assembler converts local codes, units and decimal commas on arrival.
Input formats: HL7v2, EDIFACT and GP exports. Target code system: LOINC.
Patient matching across organisations
The clinician sees results from other organisations in the correct patient record. The assembler matches on BSN, then hospital number, then name and birth date. A file without a match waits in the To file list.
Values from images and PDFs
The clinician sees values that exist only in an image or a PDF. Each value stays Unverified until a clinician checks it against the source.
Echo screen captures: OCR. PDF reports: pattern matching. A DICOM SR gives values without OCR.
Request a missing result
The clinician asks the sender for a missing result from inside the record. The request goes through the sender's connection or through a one-time upload link.
Management overview by sender
A manager sees how many results each sender delivers as data. The overview counts the four outcomes per sender and per department.
Research export
A researcher gets a data set without patient identity. The export replaces each patient by a pseudonym, shifts the dates per patient and checks the output for leaks.
The export runs in the browser. DICOM de-identification runs in the Python build.
Two problems, two owners
The gap shows up in two places, and each has a different owner.
Care between organisations. Results from a neighbouring hospital or regional lab arrive with different codes and units, sometimes without a patient number, sometimes by fax. Doctors re-type, re-check or miss them. The Dutch exchange law (the Wegiz) is in force. Its rules for exchanging the patient summary now follow the dates of the EU's European Health Data Space (EHDS). The dates are 2029 for patient summaries and 2031 for lab results and images.
Research and AI. Researchers need thousands of cases as data. Key measurements sit inside images and PDFs, scanners discard raw data, and every study repeats the same manual export. European rules (the EHDS) are starting to require that this reuse is possible.
The prototype asks one question: which of the two problems costs more in practice? The answer decides what to build next.
Limits
- All data is synthetic. Every person, value and organisation is invented. BSNs pass the 11-proof check but belong to no one.
- The percentages follow from the simulation settings. We chose how often results are faxed or lack a BSN.
- Not a medical device and not a product.
- Formats are realistic in shape and simplified in detail.
- OCR readings are pinned. A reference file stores the readings of the reference build for each image, so every machine assembles the same case.
- OCR has clean input here. The echo screen captures use clean fonts and real captures are messier, so real recovery would be lower. Even here, Tesseract misreads "cm" as "¢m" and fails on some values.
- The model shows the shape of the problem. It uses public information about a typical Dutch academic hospital, not the real data flows of any hospital.