use std::time::{SystemTime, UNIX_EPOCH}; /// A single patient record as it appears in the sync pipeline. #[derive(Debug, Clone)] pub struct PatientRecord { pub patient_id: u64, pub mrn: String, pub first_name: String, pub last_name: String, pub dob: i64, // Unix timestamp pub record_type: String, pub payload: Vec, } /// Configuration for the load generator. #[derive(Debug, Clone)] pub struct LoadConfig { pub patient_count: usize, pub seed: u64, pub records_per_batch: usize, } impl Default for LoadConfig { fn default() -> Self { Self { patient_count: 10_000, seed: 42, records_per_batch: 500, } } } /// Deterministic PRNG (xorshift64) so runs are reproducible. struct XorShift64 { state: u64, } impl XorShift64 { fn new(seed: u64) -> Self { let mut state = seed; if state == 0 { state = 0x9E3779B97F4A7C15; } Self { state } } fn next(&mut self) -> u64 { let mut x = self.state; x ^= x << 13; x ^= x >> 7; x ^= x << 17; self.state = x; x } } const FIRST_NAMES: &[&str] = &["John", "Jane", "Robert", "Maria", "Wei", "Aisha", "Carlos", "Yuki", "Fatima", "Liam"]; const LAST_NAMES: &[&str] = &["Smith", "Garcia", "Chen", "Nakamura", "Patel", "Okafor", "Vasquez", "Hassan", "Reyes", "Tanaka"]; const RECORD_TYPES: &[&str] = &["ADT", "ORM", "ORU", "SIU", "MDM"]; /// Generate `patient_count` deterministic patient records. pub fn generate_patients(cfg: &Load