build_data

Function build_data 

pub fn build_data(
    rows: impl IntoIterator<Item = DataRow>,
) -> Result<Data, DataError>
Expand description

Build a Data object from an iterator of DataRows

This function handles all the complex assembly logic:

  • Groups rows by subject ID
  • Splits into occasions at EVID=4 boundaries
  • Converts rows to events via DataRow::into_events()
  • Builds covariates from row covariate data

ยงExample

use pharmsol::data::parser::{DataRow, build_data};

let rows = vec![
    // Subject 1, Occasion 0
    DataRow::builder("pt1", 0.0)
        .evid(1).dose(100.0).input(1).build(),
    DataRow::builder("pt1", 1.0)
        .evid(0).out(50.0).outeq(1).build(),
    // Subject 1, Occasion 1 (EVID=4 starts new occasion)
    DataRow::builder("pt1", 24.0)
        .evid(4).dose(100.0).input(1).build(),
    DataRow::builder("pt1", 25.0)
        .evid(0).out(48.0).outeq(1).build(),
    // Subject 2
    DataRow::builder("pt2", 0.0)
        .evid(1).dose(50.0).input(1).build(),
];

let data = build_data(rows).unwrap();
assert_eq!(data.subjects().len(), 2);