Skip to main content

June 2026 Feature Updates

· 6 min read
Ralph Parkison
Haste Health maintainer

June was dominated by two new engines landing side by side: HL7v2/MLLP message ingestion through a template-driven FHIR Converter, and a SQL on FHIR ViewDefinition runtime. Both picked up their own admin/analytics UI by month end, and FHIRPath grew new built-ins to support them.

Backend Changes

HL7v2 ingestion and the FHIR Converter engine

  • The hl7v2 crate matured quickly: an explicit structure definition, sub-component and nested-field parsing fixes, primitive From impls, FHIR model parsing, serialization back to wire format, and null-handling fixes found while running real messages through the pipeline.
  • A new fhir-converter crate became the conversion engine, experimenting with both minijinja and Liquid templating and settling on Jinja-style templates with partial support, plus dedicated FHIRPath and HL7v2 filters and reflection-driven fhir_type generation to keep templates aligned with the generated FHIR model.
  • An MLLP agent and listener were stood up and plugged into a new hl7v2 CLI command, with a custom hl7v2_parse operation and HL7v2 StructureDefinition added to the FHIR server and frontend artifacts regenerated to match.
  • Deserialization in fhir-model was hardened along the way to absorb the loosely structured data produced by conversion (empty strings, empty structs, vector edge cases).
  • PRs: #713, #714, #715, #716, #717, #718, #719, #720, #721, #722, #723, #724, #725, #726, #727, #728, #729, #730, #731, #732, #733, #734, #735, #736, #737, #738.

SQL on FHIR: a ViewDefinition execution engine

  • ViewDefinition landed as a first-class resource with a run operation wired into the custom operations middleware, moved into its own standalone sql-on-fhir crate.
  • The projection engine grew column/select/forEach/forEachOrNull handling, cartesian products for repeating elements, null propagation, type inference, where-clause filtering, constants, and support for views that repeat over nested ViewDefinitions.
  • CSV output formatting and primitive conversion were built out, and task execution moved away from spawning a task per row for better throughput.
  • The run operation now supports JSON and NDJSON output in addition to CSV, including dedicated output writers in sql-on-fhir and format selection in the shared frontend components package.
  • PRs: #739, #740, #741, #744, #745, #746, #747, #748, #752, #753, #754, #755, #756, #757, #758, #759, #760, #761, #766.

Product and UX

Analytics: a ViewDefinition editor

  • Shipped the first cut of a ViewDefinition editor in the admin app's Analytics views, backed by a new sql-on-fhir component package (initially prototyped as fhir-on-sql), with a follow-up pass exploring alternate projection layouts.
  • Frontend FHIR types and generated ops were regenerated to pick up ViewDefinition and the HL7v2 additions.
  • Late in the month, the editor and artifacts were aligned to migrated ViewDefinition typing so generated backend/frontend models and artifact loading stayed in sync.
  • PRs: #749, #750, #751, #767.

Platform and Runtime

  • FHIRPath gained getReferenceKey and getResourceKey built-ins so views can resolve and dedupe on references, plus a shared FHIRPath/rule-engine config builder used across fhirpath, sql-on-fhir, and x-fhir-query.
  • Type-choice serialization and deserialization were fixed up in fhir-model to correctly round-trip value[x]-style fields.
  • Parameter handling was simplified across the server: URL building in fhir-client, the search parameter resolver, OIDC token routes, project selection, and artifact loading were all trimmed down.
  • Server and worker startup moved to typed config loading (TOML + HASTE_ environment overlays) using Figment, replacing ad-hoc environment variable reads and unifying configuration paths across commands.
  • Deployment and local runtime wiring were updated to match nested config keys (HASTE_REPO.*, HASTE_SEARCH.*) in compose and CI paths.
  • PRs: #742, #762, #763, #764, #765, #768, #769.

Artifacts, Tooling, and Maintenance

  • Dependency maintenance included bumping multer in the frontend, a SonarQube workflow version bump, and a couple of version bumps for the fhir-converter crate.
  • Auth docs got a round of URL corrections across the authorization code, client credentials, refresh token, and SMART on FHIR pages.
  • PRs: #743.