Releases: aehrc/pathling
Server v1.0.0
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
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-runor 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/pathlingSee the Kubernetes deployment documentation for configuration examples.
Helm Chart for Server Cache v1.0.0
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-Matchheaders - Cache-Control aware – Respects
no-cache,no-store, andprivatedirectives, passing these responses through uncached - Gzip compression – Compresses responses to reduce bandwidth
- Configurable backend – Set
PATHLING_HOSTandPATHLING_PORTenvironment 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-cacheSee the Caching documentation for configuration details.
v9.2.0
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
ResourceTypesutility 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
.lintrconfiguration for R code linting
Dependency updates
- Updated
bulk-exportversion from 1.0.3 to 1.0.4 - Added
fhir-authdependency (1.0.0)
New contributors
- @fhnaumann made their first contribution in #2482
Full changelog: v9.1.0...v9.2.0
v9.1.0
What's Changed
New features
- Implement SQL on FHIR
repeatdirective for recursive traversal of nested structures by @piotrszul in #2516 - Implement
toQuantity()andconvertsToQuantity()FHIRPath functions with UCUM unit conversion support by @piotrszul in #2514
Bug fixes
- Fix
getResourceKey()returning versioned IDs that don't matchgetReferenceKey()(#2519) by @johngrimes in #2520
Security updates
- Bump ch.qos.logback:logback-core from 1.5.18 to 1.5.19 (CVE-2025-11226) by @dependabot in #2506
Other changes
- Migrate to uv and Bun for dependency management by @johngrimes in #2515
Full Changelog: v9.0.0...v9.1.0
v9.0.0
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).valuewithcollection: true - Refactored decimal handling to use consistent representation across all collection types
- Fixed decimal string output to use plain format (avoiding exponential notation)
- Resolves issue with extracting decimal values from collections using
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
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]"
- Improved error message when users attempt to select FHIR choice elements without using
🔧 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
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
What's Changed
Security updates
- Remove commons-lang (CVE-2025-48924)
- Update Derby to 10.16.1.1 (CVE-2022-46337)
Full Changelog: v8.0.0...v8.0.1
v8.0.0
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