tlq_fhir_models/lib.rs
1//! FHIR data models
2//!
3//! This crate provides strongly-typed Rust structures for FHIR resources.
4//!
5//! # Module Organization
6//!
7//! - `common`: Version-agnostic models that work across FHIR R4, R4B, and R5
8//! - Future: `r4`, `r5` modules for version-specific models
9//!
10//! # Design Philosophy
11//!
12//! - **Version-agnostic core**: Common fields present across all FHIR versions
13//! - **Extensible**: `extensions` field captures version-specific or custom properties
14//! - **Strongly-typed**: Type safety for common operations
15//! - **Flexible**: Can serialize/deserialize to/from JSON
16//! - **Compatible**: Works with existing `serde_json::Value`-based code
17//!
18//! # Example
19//!
20//! ```rust
21//! use tlq_fhir_models::common::{StructureDefinition, StructureDefinitionKind};
22//! use serde_json::json;
23//!
24//! let sd_json = json!({
25//! "resourceType": "StructureDefinition",
26//! "id": "Patient",
27//! "url": "http://hl7.org/fhir/StructureDefinition/Patient",
28//! "version": "4.0.1",
29//! "name": "Patient",
30//! "status": "active",
31//! "kind": "resource",
32//! "abstract": false,
33//! "type": "Patient"
34//! });
35//!
36//! let sd: StructureDefinition = serde_json::from_value(sd_json).unwrap();
37//! assert_eq!(sd.name, "Patient");
38//! assert_eq!(sd.kind, StructureDefinitionKind::Resource);
39//! ```
40
41pub mod common;
42
43// Re-export commonly used types
44pub use common::*;