What's New
This page summarizes the major changes in each release of FHIR4DS.
Version 0.0.2
April 2026
Version 0.0.2 focuses on reaching full spec compliance, enhancing performance through architectural optimizations and a new C++ extension, and hardening security.
Highlights
- Near-Full Spec Conformance: Achieved 99.8% conformance across CQL, DQM, FHIRPath, and ViewDefinition test suites, resolving over 150 identified gaps.
- 69.5x Performance Boost: Evaluation speed has increased significantly due to a hybrid C++/Python execution model and optimized metadata caching.
- DuckDB v1.5.2 Integration: Fully stabilized on the latest DuckDB version, including optimized WASM builds for browser-side execution.
- Standardized Conformance Logging: A new unified logging framework provides detailed pass/fail reporting across all engine components.
Performance Improvements
- Registry Caching:
MeasureEvaluatornow caches FHIR schemas and profile registries, eliminating redundant 1.5MB allocations per evaluation call. - Audit Deduplication: Optimized "Full" audit mode to automatically deduplicate Cartesian product results generated by complex LEFT JOINs in retrieve CTEs.
- C++ Extension Parity: Reached 100% feature parity between the Python UDFs and the high-performance C++ extension, allowing for hybrid execution that combines C++ speed with Python's flexibility.
Security Fixes
- JSON Injection Remediation: Fixed critical JSON injection vulnerabilities in the C++ evaluator's
type()andwidth_string()functions. - Thread Safety: Added synchronization locks to singleton registries and cache stores (
profile_registry,fhir_loader,variable_store) to prevent race conditions in multi-threaded environments. - ReDoS Protection: Implemented guards on maximum regex lengths to prevent Regular Expression Denial of Service attacks in string manipulation logic.
Enhancements
CQL Translator
- Point-to-Interval Promotion: Added automatic promotion of point operands to degenerate intervals (e.g.,
[x, x]) forStartsSameandEndsSameoperators to ensure spec-compliant temporal comparisons. - Distinct List Aggregates: Added support for standard aggregates (
Sum,Min,Max,Avg) on distinct list literals. - Clinical UDF Macros: Externalized clinical logic into structured DuckDB macros for better maintainability.
FHIRPath Engine
- Cross-Namespace Equivalence: Updated
TypeInfoto correctly treat FHIR primitive types and their System equivalents as the same type per FHIRPath §5.1. - Conversion Function Flexibility: Support for both functional and member invocation forms for
convertsToXfunctions (e.g.,convertsToBoolean(v)andv.convertsToBoolean()). - Semantic Temporal Validation: Added strict validation for calendar dates and times, including month day limits and leap year checks.
DQM & ViewDefinition
- Enhanced Narratives: Improved narrative generation for population results when detailed evidence capture is disabled.
- ViewDef String Escaping: Updated the SQL generator to correctly handle backslashes and single quotes within FHIRPath strings in ViewDefinitions.
Infrastructure & Tooling
- Centralized Logging: Added a new unified logging framework that tracks pass rates and failure details across all subprojects.
- Build-Time Auto-Discovery: Improved the build system to auto-discover DuckDB versions and wheel names, ensuring smoother Pyodide package installations.
- Benchmarking Submodule: Added
tests/data/dqm-content-qicore-2026as a git submodule to provide a standard set of 2026 QI Core measures for benchmarking.
Bug Fixes
- CQL: Fixed circular definition handling (QA-019) which previously caused
RecursionErrorin complex libraries. - CQL: Fixed
Count(distinct(defRef))producing invalid SQL when referencing non-existent columns. - FHIRPath: Resolved a regression in
DateTime > Datecomparisons. - FHIRPath: Fixed type compatibility logic in equality operators to correctly return
emptyfor incompatible types per §6.1.1. - ViewDefinition: Fixed a regression in time boundary generation where an unnecessary 'T' prefix was occasionally added.
API Changes
- Version Bump: The
fhir4ds,fhir4ds.cql,fhir4ds.fhirpath, andfhir4ds.viewdefpackages have all been bumped to version0.0.2. - WASM Assets: Updated the required WASM assets; integrations must now use the
0.0.2translator wheel.
Version 0.0.1
Initial Release - Early 2026
The initial release established the foundation for the FHIR4DS engine.
- Unified Interface: Provided a single entry point for CQL, FHIRPath, and ViewDefinition execution.
- DuckDB Integration: Implemented the first set of Python-based UDFs for FHIR logic.
- Initial WASM Support: Demonstrated browser-side clinical reasoning using Pyodide and DuckDB-WASM.