finds.dev← search

// the find

microsoft/FHIR-Converter

★ 518 · Liquid · MIT · updated Jun 2026

Conversion utility to translate legacy data formats into FHIR

A Microsoft-backed tool for converting between healthcare data formats — HL7v2, C-CDA, and FHIR — using Liquid templates on a .NET runtime. Shipped as a containerized REST API. The target audience is healthcare IT teams dealing with the inevitable reality that most hospital systems still speak HL7v2 and someone needs to bridge that to FHIR.

The template-based approach is the right call: Liquid templates are human-editable without a rebuild, and Azure Storage integration means teams can version and swap custom templates at runtime without redeploying the container. The sample data is genuinely extensive — hundreds of real-world HL7v2 message variants (ADT, ORM, ORU, SIU, VXU, MDM) that you can actually use to test your templates rather than inventing synthetic fixtures. Format coverage is broad: HL7v2, C-CDA, JSON-to-FHIR, and STU3-to-R4 in one service is a real operational consolidation. Microsoft's backing means this tracks the HL7 community's official 2-to-FHIR mapping project, so the default templates have a standards basis rather than being one team's best guess.

The templates target HL7 v2.8 but most live production systems are on v2.3, v2.4, or v2.5, and the README essentially tells you to figure out the differences yourself — those differences are not minor. The FHIR-to-HL7v2 direction is still marked Preview and shouldn't be trusted for production round-tripping. Azure-first deployment (default to Azure Container Apps, custom templates in Azure Blob Storage) is friction if you're on-prem or on another cloud; nothing is technically preventing other deployments but the docs path assumes Azure. Debugging mapping errors through Liquid templates is painful: when a field is silently dropped or a CodeableConcept maps wrong, you're reading through nested partials and custom filter implementations to find it, and the post-processor that runs after template execution adds another layer of 'unexpected results' to chase.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →