Lakewright solutions / brief
Load HL7 v2 messages into Apache Iceberg for Databricks analytics
HL7 v2 feeds (ADT, ORU, DFT) become queryable Iceberg tables that Databricks reads through Unity Catalog — one row per message, PHI flagged and masked before landing, no interface engine required for the analytical copy.
How does HL7 detection work?
The MSH|^~\& header identifies the format and its delimiters; the message type (ADT^A01, ORU^R01, DFT^P03) routes the domain — ADT/ORU to clinical, DFT/BAR to billing. Segments flatten to columns (patient class, event type, sending facility) per message.
What about PHI?
PID segment fields (name, MRN, DOB) are flagged at scan; approved plans mask or key-hash them at load. The raw message never lands.
The steps
lakewright scan /interfaces/adt-archive lakewright approve plans/adt_feed.plan.yaml lakewright load plans/adt_feed.plan.yaml --rest $CATALOG
FAQ
The question that matters
"Which units had the longest median wait between ED admit and inpatient bed assignment last month?"
Three units stand out, and the ranking changes depending on which question you are really asking.
By median wait the answer is one order; by volume of affected patients it is another — the unit with the worst median handles a fraction of the patients of the unit ranked third, so the total patient-hours lost is greatest in the unit that looks middling on the median. The assistant surfaced both cuts without being asked, because the semantic layer knows that the event timestamps are datetimes and that the unit code is a dimension.
It reasoned correctly about the underlying data because the comments Lakewright generated said what the table is — HL7 v2 ADT, which field carries the event type, that the patient identifiers were hashed at load — instead of leaving it to guess from column names.
Want this run against your data?
We start with a read-only scan and an inventory report — no installation on your systems, nothing leaves your environment. Most engagements produce findings the team didn't know about in the first afternoon.