The UK and Europe
A free HL7 and FHIR integration engine for European hospitals
Perfuse connects the hospital's systems (patient administration, laboratory, radiology, PACS, document registries) over HL7 v2, FHIR, DICOM and IHE. It is free under Apache 2.0, runs on your own servers so the data never leaves them, and takes over your Mirth Connect channels.
Also in Deutsch · Français · Nederlands
Why now
Mirth Connect is no longer free. Your interfaces still have to run.
From version 4.6 (March 2025) Mirth Connect is sold under a commercial licence. Many European hospitals run the last open-source release, which no longer gets fixes, or one of its forks. Perfuse is a different engine, not a fork, and it was built to make leaving easy and safe.
Your channels come with you
Perfuse reads channel exports from Mirth 4.5.2, the Open Integration Engine and BridgeLink, runs their JavaScript unchanged, and can export back: each of those servers accepts the channel files Perfuse writes.
Proved on your own traffic
Shadow mode runs a channel beside the live engine on real messages and compares every output, before anything is switched over.
One file, no Java
One program for Linux, Windows or macOS, on Intel or Arm. It holds 45 MB of memory at rest, against Mirth's 383 MB on the same machine.
Free, and stays free
Apache 2.0: use it, change it, run it for others. No licence fee and no paid edition.
Built for Europe
What European sites need, in the engine itself
Data that stays put
It runs inside your network. If you host
it in the cloud, -residency eea (or uk, ch) refuses any connector outside the
region you allow.
GDPR and UK GDPR
Find everything held about a person in every store, give them a copy, and erase it with a second administrator's approval. Legal holds are respected, and the record of processing (Article 30) is produced from the channels.
37 national patient numbers
The NHS number, CHI, KVNR, BSN, the French INS, codice fiscale, the Nordic personal numbers and more. Each is checked by its check digit, so a mistyped number never links two people.
National code systems
SNOMED CT national editions in the country's language, ICD-10-GM and OPS, CIM-10 FR, the UK's ICD-10 and OPCS-4, WHO ICD-10 and ICD-11.
IHE document sharing
An XDS.b registry and repository, an XCA gateway, MHD, PIXm, PDQm and XDM, tested against the NIST XDS Toolkit. Plus the International Patient Summary.
Twelve languages
The console and the manual in English, German, French, Dutch, Spanish, Italian, Portuguese, Polish, Swedish, Danish, Norwegian and Finnish.
Tested against national profiles
UK Core, FR Core and ISiK, with the results published
Perfuse turned national sample HL7 v2 messages into FHIR, and the official HL7 validator checked every resource against each country's profiles. Each failure has a reason, and the reasons are listed.
| Guide | Messages | Resources passing | What is left |
|---|---|---|---|
| UK Core STU2 2.0.2 | NHS Wales' published v2 examples | 185 of 187 | A US race code in one sample; one terminology-server error |
| FR Core 2.2.0 | ANS's PAM-FR and document examples | 138 of 156 | Encounters from messages with no admission date or visit number |
| ISiK Basismodul 4.0.3 | Invented German messages | 18 of 47; 42 of 47 with the hospital's own script | What ISiK requires and v2 does not carry, such as the contact level and the hospital's IKNR, which the hospital adds |
| Nictiz nl-core (zib 2020) | Invented Dutch messages | 12 of 24; 18 of 24 with the hospital's own script | Codes the terminology server could not check against Dutch SNOMED CT reference sets |
| HL7 Europe Hospital Discharge Report 1.0.0 | The ADT messages among all sets | 68 of 69 | A US race code in one Welsh sample |
| HL7 Europe Laboratory Report 2.1.0 | The lab results among all three sets | 106 of 426 | The guide's report is a document a sender assembles; most sample results name no performer or time |
These checks covered the conversion from v2 to FHIR, not a certification. The runs also found and fixed real problems in Perfuse: German code systems, insurance numbers left under their OIDs, practitioners' name types, procedures not converted, Dutch family names sent in parts. What a profile needs and a message cannot say, a hospital adds with a script of its own on the FHIR destination; Perfuse does not guess it. Those fixes are on the main branch and will be in the next release. Every result and how to run it.
Plainly
What is not done yet
- No hospital runs Perfuse in production yet. If you want to be the first, we would like to hear from you, and shadow mode lets you try it on your own traffic without risk.
- The translations were made by machine and have not been reviewed by native speakers.
- Not certified anywhere: no gematik confirmation for ISiK, no national agency approval. The results above are our own runs of the official tools, published so anyone can repeat them.
- The hosting templates for Frankfurt, Ireland and London have been planned against a real AWS account but never applied. The draft data processing agreement has not been read by a lawyer.
- Support comes from the BioDream team, through GitHub.
Try it on your own channels
Run perfuse explain on a Mirth export, or open the public test server with invented data.