Skip to content

v9.4.0#2551

Merged
johngrimes merged 10 commits intomainfrom
release/9.4.0
Feb 17, 2026
Merged

v9.4.0#2551
johngrimes merged 10 commits intomainfrom
release/9.4.0

Conversation

@johngrimes
Copy link
Member

No description provided.

Add a single-resource FHIRPath evaluation method to the library API
that encodes a FHIR resource JSON string into a one-row Spark Dataset,
evaluates a FHIRPath expression, and returns typed results. Includes
support for context expressions and user-defined variables.

Add Python bindings wrapping the Java method via Py4J, and a new Flask
HTTP server (fhirpath-lab-api/) implementing the FHIRPath Lab server
protocol with FHIR Parameters input/output, CORS support, and health
check endpoint.

Includes Dockerfile, Helm chart, GitHub Actions CI workflow, and
documentation.
Extract evaluation logic from PathlingContext into
SingleInstanceEvaluator in the fhirpath module. Strip synthetic
fields (_fid, value_scale, _value_canonicalized, etc.) from
complex type results before JSON serialisation. Wire up typed
variable support for %varName resolution in expressions.
Strip null-valued keys from complex type result dicts before JSON
serialisation in the FHIRPath Lab API, producing cleaner output
for types like Quantity and HumanName.
Move null stripping from the Python parameters layer (where it was
unreachable) into SingleInstanceEvaluator.sanitiseRow() on the Java
side. This ensures Row.json() produces clean JSON before crossing
the Java/Python boundary. Remove the dead _strip_nulls function
from the Python API server.
The string concatenation operator (&) is not implemented. Updated
the + operator description to note it also handles string
concatenation.
Add R binding for evaluating FHIRPath expressions against a single
FHIR resource JSON string, mirroring the Python evaluate_fhirpath()
method. Includes roxygen2 documentation, 7 tests, and a new "Single
resource evaluation" section in the FHIRPath documentation with
examples in all four languages.

Replace Collections.emptyList() with new ArrayList<>() in
SingleInstanceEvaluator to fix reflection access errors with
sparklyr's invoke() in Java 17+.
Addresses CVE-2024-6839, CVE-2024-6844, and CVE-2024-6866 which
were failing the Trivy security scan.
The FHIRPath union operator (|) was fully implemented in
UnionOperator but never registered in the operator resolution
chain. Parsing | threw UnsupportedFhirPathFeatureError, and the
DSL tests that cover it were silently skipped. Adding a UNION
enum constant wires the existing implementation into the parser.
The hadoop-aws package was not needed by any Python test (the bulk
client test uses a localhost mock server). Its 558 MB transitive
dependency (software.amazon.awssdk:bundle) caused Ivy resolution
failures when the JAR was absent from the local Maven cache.
@johngrimes johngrimes self-assigned this Feb 17, 2026
@johngrimes johngrimes added the release Pull request that represents a new release label Feb 17, 2026
@github-project-automation github-project-automation bot moved this to Backlog in Pathling Feb 17, 2026
@johngrimes johngrimes moved this from Backlog to In progress in Pathling Feb 17, 2026
@johngrimes johngrimes merged commit 492fd9e into main Feb 17, 2026
9 of 10 checks passed
@johngrimes johngrimes deleted the release/9.4.0 branch February 17, 2026 22:51
@github-project-automation github-project-automation bot moved this from In progress to Done in Pathling Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Pull request that represents a new release

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant