fhir_path 0.14.0
fhir_path: ^0.14.0 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.0 #
- BREAKING:
memberOfnow throwsPathEngineExceptionwhen 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 madewhere(code.memberOf(...)).count()answer a confident0that a caller could not distinguish from a genuine none - BREAKING:
memberOfnow 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 returnedfalseoffline 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
funcMemberOfpasses plain validation options
0.13.1 #
- Example file renamed to
fhir_path_example.dartso 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 toFHIRPathEnginevia 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
FhirNodereflection contract (packagefhir_node); FHIR-version knowledge (type metadata, terminology, value construction) enters through theIWorkerContext/IFhirValueFactoryboundary 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 aresrc-internal and not exported. - Exceptions:
PathEngineExceptionis the catchable root for all expression failures;FHIRLexerExceptionextends it (Java parity via the shared FHIRException root).PathEngineError(anError) is reserved for programming errors. - Java-parity fix:
parse(String)rejects trailing tokens ("Premature ExpressionNode termination"), whileparseLexer(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 theIFhirValueFactorythat 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.