fhir_path 0.14.1 copy "fhir_path: ^0.14.1" to clipboard
fhir_path: ^0.14.1 copied to clipboard

Model-independent FHIRPath engine — a Dart port of the Java reference. Navigates any FHIR version through the FhirNode contract; bindings are fhir_r4/r5/r6_path.

0.14.1 #

  • Fixed: defineVariable(name, expression) bound the Future returned by evaluating the expression rather than the value it resolved to, because funcDefineVariable did not await it. setDefinedVariable took dynamic, so nothing complained, and the variable compared unequal to everything — the expression simply returned an empty collection. Every use of the two-parameter form was affected; the one-parameter form, which binds the focus, was not
  • A variable bound to a Future is now an error naming the missing await, instead of being answered as an empty collection. That silent fallback is why the bug above read as "this expression matched nothing" rather than as a defect, and why it survived a release

0.14.0 #

  • BREAKING: memberOf now throws PathEngineException when the value set cannot be resolved, instead of returning an empty collection. The spec is explicit ("If the valueset cannot be resolved as a uri to a value set, an error is thrown"), and the old behavior made where(code.memberOf(...)).count() answer a confident 0 that a caller could not distinguish from a genuine none
  • BREAKING: memberOf now asks only whether the code is in the value set, not whether it is also valid in its own code system. A value set enumerating SNOMED concepts is answerable from the enumeration alone, and SNOMED is licensed — the wider question returned false offline for a code the value set plainly lists. The operator form (memberOf(...) as an operation) had both defects and now matches the function form
  • Divergence from the Java reference, taken on the spec's wording: Java's funcMemberOf passes plain validation options

0.13.1 #

  • Example file renamed to fhir_path_example.dart so pub.dev's analyzer recognizes it; no code changes

0.13.0 #

Complete rewrite. Versions up to 0.12.0 were the original petitparser-based FHIRPath library (walkFhirPath). From 0.13.0 the package is the fhir-fli family's standalone, model-independent FHIRPath engine — a new codebase with a new API, developed at fhir-fli/fhir_path. Users of the legacy API should either stay on 0.12.0 or migrate to FHIRPathEngine via a version binding (fhir_r4_path / fhir_r5_path / fhir_r6_path), which is the recommended entry point.

First release of the standalone, model-independent FHIRPath engine, extracted from fhir_r4_path (which is now a thin binding over this package, alongside fhir_r5_path and fhir_r6_path).

  • Architecture: no FHIR model dependency. Data is navigated through the FhirNode reflection contract (package fhir_node); FHIR-version knowledge (type metadata, terminology, value construction) enters through the IWorkerContext / IFhirValueFactory boundary interfaces that each binding implements. A port of the Java reference engine (org.hl7.fhir.core FHIRPathEngine); conformance is verified by the official FHIRPath test suite run in all three bindings (1070 tests each).
  • Curated public API: the barrel exports the engine surface (FHIRPathEngine, ExpressionNode, the boundary interfaces, exceptions, type machinery, FHIRLexer — public because the FHIR Mapping Language parser lexes with it, as in Java). The implementation collaborators are src-internal and not exported.
  • Exceptions: PathEngineException is the catchable root for all expression failures; FHIRLexerException extends it (Java parity via the shared FHIRException root). PathEngineError (an Error) is reserved for programming errors.
  • Java-parity fix: parse(String) rejects trailing tokens ("Premature ExpressionNode termination"), while parseLexer(FHIRLexer) remains the lenient overload for embedded parsing.
  • Performance contract: the engine is deliberately cache-free, like the Java reference — parse once, evaluate many; cache ExpressionNodes in the caller (bindings' WorkerContext layers are the right home for an expression cache). Parsed nodes are tied to the IFhirValueFactory that parsed them.
  • Known pre-1.0 work: several engine methods that exist for the internal collaborator classes are still public on FHIRPathEngine; they will be narrowed before 1.0.
5
likes
160
points
949
downloads

Documentation

API reference

Publisher

verified publisherfhirfli.dev

Weekly Downloads

Model-independent FHIRPath engine — a Dart port of the Java reference. Navigates any FHIR version through the FhirNode contract; bindings are fhir_r4/r5/r6_path.

Homepage
Repository (GitHub)
View/report issues

Topics

#fhir #fhirpath #hl7 #healthcare #interoperability

License

MIT (license)

Dependencies

collection, fhir_node, ucum

More

Packages that depend on fhir_path