helios_subscriptions/lib.rs
1//! FHIR topic-based Subscriptions engine for HFS.
2//!
3//! This crate implements the [FHIR Subscriptions Framework](https://build.fhir.org/subscriptions.html)
4//! for the Helios FHIR Server. It supports topic-based subscriptions across all
5//! FHIR versions (R4, R4B, R5, R6), with R4 using the
6//! [Subscriptions R5 Backport IG](https://build.fhir.org/ig/HL7/fhir-subscription-backport-ig/)
7//! and R4B/R5/R6 using native subscription resources.
8//!
9//! # Architecture
10//!
11//! The subscription system decomposes into five primary concerns:
12//!
13//! - **Topic Registry** — stores `SubscriptionTopic` definitions and evaluates triggers
14//! - **Subscription Manager** — CRUD lifecycle and status tracking for `Subscription` resources
15//! - **Event Evaluator** — matches resource write events against active subscriptions
16//! - **Notification Builder** — constructs version-specific notification bundles
17//! - **Channel Dispatcher** — delivers notifications via rest-hook, WebSocket, etc.
18//!
19//! The [`SubscriptionEngine`] orchestrates all five concerns and is the main
20//! entry point, invoked asynchronously after each resource write.
21
22pub mod channels;
23pub mod config;
24pub mod engine;
25pub mod error;
26pub mod evaluator;
27pub mod event;
28pub mod manager;
29pub mod notification;
30pub mod topics;
31
32// Re-export key types for convenience.
33pub use channels::messaging::MessagingChannel;
34pub use channels::ws_manager::WebSocketManager;
35pub use channels::ws_token::WsBindingTokenManager;
36pub use config::{MessagingSettings, SubscriptionConfig};
37pub use engine::SubscriptionEngine;
38pub use error::SubscriptionError;
39pub use event::{ResourceEvent, ResourceEventType};