use xportrs::{Column, ColumnData, Dataset, Xpt};
fn main() -> xportrs::Result<()> {
let dataset = Dataset::new(
"AE", vec![
Column::new(
"USUBJID",
ColumnData::String(vec![
Some("STUDY01-001".into()),
Some("STUDY01-002".into()),
Some("STUDY01-003".into()),
]),
),
Column::new("AESEQ", ColumnData::I64(vec![Some(1), Some(1), Some(2)])),
Column::new(
"AETERM",
ColumnData::String(vec![
Some("Headache".into()),
Some("Nausea".into()),
Some("Fatigue".into()),
]),
),
Column::new(
"AESTDY",
ColumnData::F64(vec![Some(15.0), Some(22.0), Some(8.0)]),
),
],
)?;
println!("Created dataset: {}", dataset.domain_code());
println!("Rows: {}", dataset.nrows());
println!("Columns: {}", dataset.ncols());
let output_path = "target/ae_simple.xpt";
let files = Xpt::writer(dataset).finalize()?.write_path(output_path)?;
println!("\nWrote {} file(s):", files.len());
for path in &files {
println!(" - {}", path.display());
}
Ok(())
}