Skip to content

Releases: aehrc/pathling

Server v1.0.0

21 Jan 06:13
server-v1.0.0
ab2c23c

Choose a tag to compare

This is the first release of the redesigned Pathling server—a FHIR R4 analytics server built on Apache Spark that accepts data from multiple sources, stores it in an optimised data warehouse, and exposes powerful query and export capabilities.

Highlights

SQL on FHIR

Full support for the SQL on FHIR specification, replacing the previous $aggregate and $extract operations with a standards-based approach. ViewDefinitionscreated for Pathling will work on any SQL on FHIR compliant system.

  • $viewdefinition-run – execute ViewDefinitions synchronously for interactive exploration
  • $viewdefinition-export – run views asynchronously and export to NDJSON, CSV, or Parquet

Bulk data operations

  • $import – load FHIR data from S3, HDFS, or local filesystem in NDJSON or Parquet format
  • $import-pnp – synchronise directly from FHIR servers that support bulk export
  • $export – extract data using the FHIR Bulk Data Access specification (system, patient, and group-level)

CRUD and search

  • Full CRUD operations on FHIR resources
  • FHIRPath-based search for expressive filtering

Web interface

A built-in administration interface for browsing resources, executing ViewDefinitions, and managing bulk operations. Served directly by the server with no additional deployment required.

Deployment

  • Docker: docker run -p 8080:8080 ghcr.io/aehrc/pathling:1
  • Kubernetes: Helm chart supporting single-node and cluster deployments

Documentation

See the server documentation for details on all operations and configuration options.

Read the announcement blog post for more background.

Helm Chart for Server v2.0.0

21 Jan 20:41
helm-server-v2.0.0
a3285a5

Choose a tag to compare

This release accompanies the new Pathling server (v1.0.0), featuring a ground-up redesign with SQL on FHIR support, a web-based administration interface, and comprehensive bulk data operations.

What's new

  • SQL on FHIR support – Execute ViewDefinitions interactively with $viewdefinition-run or export results at scale with $viewdefinition-export
  • Bulk data operations – Import data from S3, HDFS or local filesystem; synchronise with remote FHIR servers via $import-pnp; export using the FHIR Bulk Data Access specification
  • Web administration interface – Browse resources, execute ViewDefinitions, and manage bulk operations through a built-in React UI
  • FHIRPath search – Query resources using FHIRPath expressions instead of standard FHIR search parameters

Chart features

  • Startup, liveness and readiness probes via Spring Boot Actuator
  • Services for FHIR API, Actuator management, Spark UI, driver and block manager endpoints
  • Spark Kubernetes cluster manager support with service account, role and role binding
  • Configurable resource requests/limits, volumes, image pull secrets, tolerations, affinity, and security context
  • Secret configuration for sensitive values

Installation

helm repo add pathling https://pathling.csiro.au/helm
helm repo update
helm install pathling pathling/pathling

See the Kubernetes deployment documentation for configuration examples.

Helm Chart for Server Cache v1.0.0

21 Jan 20:41
helm-cache-v1.0.0
a3285a5

Choose a tag to compare

A Varnish-based frontend cache optimised for use with Pathling Server. This chart deploys an intermediate HTTP cache that reduces load on the Pathling server and improves response times for
repeated queries.

Features

  • ETag-based revalidation – Caches responses and revalidates with Pathling when clients send If-None-Match headers
  • Cache-Control aware – Respects no-cache, no-store, and private directives, passing these responses through uncached
  • Gzip compression – Compresses responses to reduce bandwidth
  • Configurable backend – Set PATHLING_HOST and PATHLING_PORT environment variables to point to your Pathling server

Installation

helm repo add pathling https://pathling.csiro.au/helm
helm repo update
helm install pathling-cache pathling/pathling-cache

See the Caching documentation for configuration details.

v9.2.0

20 Jan 02:23
v9.2.0
1eff2a0

Choose a tag to compare

What's changed

ViewDefinition resource support

The encoders module now supports ViewDefinition as a custom resource type from the SQL on FHIR specification. This includes:

  • A new ResourceTypes utility class for resource type validation that supports custom resource types
  • A HAPI FHIR resource class for ViewDefinition, allowing HAPI to recognise and parse ViewDefinition resources

Write operation details

All data sink write methods (ndjson(), parquet(), delta(), tables()) now return a WriteDetails object containing information about the files that were written. This is useful
for downstream processing and logging.

This change affects both the Java library API and the Python library.

Authentication library

The terminology module now includes the fhir-auth library (1.0.0) for enhanced authentication capabilities when connecting to terminology servers.

Code quality infrastructure

New tooling has been added to enforce consistent code formatting:

  • Spotless Maven plugin for automatic Java code formatting with Google Java Format
  • Checkstyle Maven plugin for code style checking
  • Updated Python packaging to use pyproject.toml
  • Added .lintr configuration for R code linting

Dependency updates

  • Updated bulk-export version from 1.0.3 to 1.0.4
  • Added fhir-auth dependency (1.0.0)

New contributors

Full changelog: v9.1.0...v9.2.0

v9.1.0

24 Nov 11:40
v9.1.0
3f389cb

Choose a tag to compare

What's Changed

New features

  • Implement SQL on FHIR repeat directive for recursive traversal of nested structures by @piotrszul in #2516
  • Implement toQuantity() and convertsToQuantity() FHIRPath functions with UCUM unit conversion support by @piotrszul in #2514

Bug fixes

  • Fix getResourceKey() returning versioned IDs that don't match getReferenceKey() (#2519) by @johngrimes in #2520

Security updates

Other changes

Full Changelog: v9.0.0...v9.1.0

v9.0.0

28 Oct 00:24
v9.0.0
08b5526

Choose a tag to compare

This major release includes significant infrastructure upgrades, new FHIRPath functionality, and important bug fixes.

Major changes

Infrastructure upgrades (#2496)

  • Upgrade to Apache Spark 4.0.1
  • Upgrade to Java 21
  • Upgrade to Scala 2.13
  • Upgrade to Python 3.9
  • Update git-commit-id-plugin to version 9.0.2 (#2493)

FHIRPath enhancements

  • Implement equality and comparison operations for Quantity types per the FHIRPath specification (#2495)
  • Replace FHIR/Ucum-java with ucumate for improved UCUM performance (#2511)
  • Support for comparing quantities with the same units, including calendar quantities
  • Support for comparing calendar duration quantities ≥ seconds with UCUM time quantities

Delta Lake improvements (#2499 by @MartinBernstorff)

  • Add configurable deletion behaviour when merging Delta tables
  • Enable whenNotMatchedBySourceDelete() to allow Delta Lake state to reflect current FHIR server state
  • New parameter on write.delta() method to control deletion behaviour

Bug fixes

  • Fix ClassCastException when using collection mode with decimal values (#2509)
    • Resolves issue with extracting decimal values from collections using ofType(Quantity).value with collection: true
    • Refactored decimal handling to use consistent representation across all collection types
    • Fixed decimal string output to use plain format (avoiding exponential notation)

Breaking changes

This release includes breaking changes due to the infrastructure upgrades:

  • Minimum Java version is now 21
  • Applications must be compatible with Spark 4.0.1
  • Python applications require Python 3.9 or later

v8.1.0

22 Sep 09:09
v8.1.0
b106848

Choose a tag to compare

This release includes the following changes:

✨ Features

  • Implement comparison for date/time types and correct equality implementation (#2485)
    • Added precision-aware comparison and equality for Date, DateTime and Time types
    • Separated equality (=,!=) from comparison (<,>,<=,>=) operations
    • Corrected equality implementation for non-ordered types (Coding, Boolean)
    • Enabled equality between arrays (non-singular collections) of any two types

🐛 Bug Fixes

  • Fix unclear error message for choice element selection (#2489)
    • Improved error message when users attempt to select FHIR choice elements without using ofType()
    • Changed cryptic "Must have a fhirType or a definition" message to clearer "Selection of mixed collection not supported: [elementName]"

🔧 Dependencies

  • Remove hadoop-aws from default Spark config in Python and R libraries (#2488)
    • Removed automatic inclusion of hadoop-aws dependency in Python and R Spark configurations
    • Fixed trailing comma syntax error in R dependencies

v8.0.2

12 Sep 00:42
v8.0.2
3325274

Choose a tag to compare

This release fixes a problem with the library-runtime package, where the version of Gson being used gets overridden by the version in Spark.

Full Changelog: v8.0.1...v8.0.2

v8.0.1

31 Aug 06:39
v8.0.1
cee0def

Choose a tag to compare

What's Changed

Security updates

Full Changelog: v8.0.0...v8.0.1

v8.0.0

28 Aug 11:28
v8.0.0
1d571ab

Choose a tag to compare

This release features our new SQL on FHIR view runner, a completely reworked and more performant query engine, and many other changes.

As part of this release, we took the decision to significantly change the focus and scope of Pathling with the purpose of rebuilding it around the SQL on FHIR specification.

This will mean that the server implementation will be temporarily removed. It will also mean that the scope of FHIRPath functions will be temporarily reduced to the minimal FHIRPath subset defined within the SQL on FHIR Shareable View Definition specification (with the exception of the terminology functions).

We have released this functionality as version 8, and we have spawned three work streams to build upon this new foundation:

  • Implementation of a new server focused upon the Bulk Data Access IG and the draft SQL
    on FHIR server API. This server will not include the aggregate or extract operations.
  • Expansion of the scope of the FHIRPath implementation to achieve full or close to full coverage of the FHIRPath spec.
  • Implementation of Parquet on FHIR as the new schema for lossless persistence of FHIR data for analytics.

We think that this is the best way to align Pathling to user needs, and also to make sure that the code base is sustainable going forwards.

If you are a current user of the server, aggregate or extract operations, please continue using the v7.x series. We are happy to continue maintaining and accepting contributions to this series as
requested by users, but will be focusing our enhancement efforts on v8.

Major dependency updates

  • Spark 3.5.6
  • HAPI 8.2.1
  • Java 17

Full Changelog: v7.2.0...v8.0.0