helios-sof 0.2.2

This crate provides a complete implementation of the SQL-on-FHIR specification for Rust, enabling the transformation of FHIR resources into tabular data using declarative ViewDefinitions. It supports all major FHIR versions (R4, R4B, R5, R6) through a version-agnostic abstraction layer.
Documentation
[package]
name = "helios-sof"
version.workspace = true
edition.workspace = true
description = "This crate provides a complete implementation of the SQL-on-FHIR specification for Rust, enabling the transformation of FHIR resources into tabular data using declarative ViewDefinitions. It supports all major FHIR versions (R4, R4B, R5, R6) through a version-agnostic abstraction layer."
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage = "https://github.com/HeliosSoftware/hfs/tree/main/crates/sof"
readme = "README.md"
keywords = ["helios-software", "hl7", "fhir", "helios-fhir-server", "sql-on-fhir"]

[[bin]]
name = "sof-server"
path = "src/server.rs"

[[bin]]
name = "sof-cli"
path = "src/cli.rs"

[features]
default = ["R4"]
R4 = ["helios-fhir/R4", "helios-fhirpath/R4"]
R4B = ["helios-fhir/R4B", "helios-fhirpath/R4B"]
R5 = ["helios-fhir/R5", "helios-fhirpath/R5"]
R6 = ["helios-fhir/R6", "helios-fhirpath/R6"]

# OpenTelemetry OTLP trace export (heavy deps; opt-in for production images)
otel = ["helios-observability/otel"]

[dependencies]
clap = { version = "4.0", features = ["derive", "env"] }
tokio = { version = "1.0", features = ["full"] }
helios-fhir = { path = "../fhir", version = "0.2.2", default-features = false }
helios-observability = { path = "../observability", version = "0.2.2" }
helios-fhirpath = { path = "../fhirpath", version = "0.2.2", default-features = false }
helios-fhirpath-support = { path = "../fhirpath-support", version = "0.2.2" }
serde = { workspace = true }
# `preserve_order` is load-bearing: `lint::lint_view_definition` (#753 ticket
# 03) returns diagnostics ordered by JSON pointer in document order, which
# requires iterating a `serde_json::Map` in the order its keys were parsed
# rather than serde_json's default alphabetical BTreeMap order. Same
# rationale as helios-fhir-validator's own override of this dependency.
serde_json = { workspace = true, features = ["preserve_order"] }
csv = "1.3"
thiserror = "1.0"
anyhow = "1.0"
axum = { version = "0.8", features = ["json", "query"] }
tower = { version = "0.5", features = ["full"] }
tower-http = { version = "0.6", features = ["cors", "trace", "timeout", "compression-full", "decompression-full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
http = "1.0"
mime = "0.3"
chrono = { workspace = true, features = ["serde"] }
reqwest = { version = "0.12", features = ["json"] }
url = "2.5"
# Cross-chunk cache for streaming remote resolve().
# Pinned to MATCH aws-sdk-s3, which pins lru as a non-optional dependency (pulled by
# the optional `s3` feature in helios-persistence/-rest). Keeping the two in the same
# semver range means a single lru version compiles across all feature combinations,
# including `s3` builds. This tracked the SDK's `^0.12` until aws-sdk-s3 1.122.0 moved
# to `^0.16`, so it moves with it; raising it beyond what the SDK pins would compile
# two lru versions whenever `s3` is enabled. The latest lru is 0.18 — bump to it only
# when the SDK does. See ROADMAP.md ("Build & Dependencies").
lru = "0.16"
async-trait = "0.1"
object_store = { version = "0.11", features = ["aws", "gcp", "azure"] }
rayon = "1.8"
arc-swap = "1.6"
parking_lot = "0.12"
arrow = "54.0"
parquet = "54.0"
zip = "2.2"
futures = "0.3"
tokio-stream = "0.1"
bytes = "1.5"
rusqlite = { version = "0.33", features = ["bundled", "serde_json"] }
sqlparser = "0.54"
base64 = "0.22"

[dev-dependencies]
axum-test = "18.0"
flate2 = "1"
tempfile = "3.8"
criterion = { version = "0.5", features = ["html_reports"] }
wiremock = "0.6"

[[bench]]
name = "parallel_processing_bench"
harness = false

[package.metadata.docs.rs]
features = ["R4"]
rustdoc-args = ["--cfg", "docsrs"]