octofhir_fhir_model/
lib.rs

1//! Core FHIR model abstractions and ModelProvider trait
2//!
3//! This crate provides the foundational types and traits for FHIR model integration
4//! with FHIRPath engines. It serves as an intermediate dependency to break circular
5//! dependencies between FHIRPath implementations and FHIR schema libraries.
6//!
7//! # Architecture
8//!
9//! The crate is designed around the `ModelProvider` trait, which abstracts access
10//! to FHIR model information including:
11//!
12//! - Type reflection and metadata
13//! - Structure definitions and conformance validation
14//! - Constraint definitions and evaluation
15//! - Reference resolution capabilities
16//!
17//! # Example
18//!
19//! ```rust
20//! use octofhir_fhir_model::{TypeInfo, EmptyModelProvider, ModelProvider};
21//!
22//! // Create type info for a FHIR type
23//! let type_info = TypeInfo::system_type("Patient".to_string(), true);
24//! println!("Patient type: {:?}", type_info);
25//!
26//! // Use empty model provider for testing
27//! let provider = EmptyModelProvider::default();
28//! println!("Provider: {:?}", provider);
29//! ```
30
31#![warn(missing_docs)]
32
33pub mod error;
34pub mod evaluation;
35pub mod evaluator;
36pub mod fhir_traits;
37pub mod provider;
38pub mod terminology;
39
40// Re-export core types
41pub use error::{ModelError, Result};
42pub use evaluation::{
43    EvaluationResult, IntoEvaluationResult, TypeInfoResult, convert_value_to_evaluation_result,
44};
45pub use evaluator::{
46    CompiledExpression, ErrorSeverity, FhirPathConstraint, FhirPathEvaluator,
47    FhirPathEvaluatorFactory, ValidationError, ValidationProvider, ValidationResult,
48    ValidationWarning, Variables,
49};
50pub use fhir_traits::{
51    BackboneElement, ChoiceElement, FhirPrimitive, FhirReference, FhirResourceMetadata, ToFhirJson,
52};
53pub use provider::{
54    ElementInfo, EmptyModelProvider, FhirVersion, LiteModelProvider, ModelProvider, TypeInfo,
55};
56pub use terminology::{
57    ConnectionStatus, EquivalenceLevel, ExpansionParameter, ExpansionParameters,
58    NoOpTerminologyProvider, TerminologyProvider, TranslationResult, TranslationTarget,
59    ValueSetConcept, ValueSetExpansion,
60};
61
62#[cfg(feature = "http-client")]
63pub use terminology::HttpTerminologyProvider;
64
65/// Version information for this crate
66pub const VERSION: &str = env!("CARGO_PKG_VERSION");
67
68/// Crate name
69pub const CRATE_NAME: &str = env!("CARGO_PKG_NAME");