#include #include #include "../../ffi/medicallib.h" int main(void) { float bmi = 0.0f; if (medicallib_bmi(70.0f, 1.75f, &bmi) != ML_OK) { fprintf(stderr, "BMI error\n"); return 1; } printf("BMI: %.2f\n", bmi); MLPatient* p = ml_patient_new("ffi-01"); if (!p) { fprintf(stderr, "patient new failed\n"); return 1; } ml_patient_update(p, 0.5f); char* sum = ml_patient_summary(p); if (sum) { printf("%s\n", sum); ml_string_free(sum); } MLBloodstreamMetrics blood = {0}; if (ml_patient_bloodstream_metrics(p, &blood) == ML_OK) { printf("Bloodstream: perfusion=%u metabolic=%u oncotic=%.1f mmHg lymph=%.2f mL/min RBC young/mature/senescent=%.0f/%.0f/%.0f%% hif=%.2f iron=%.0f mg\n", (unsigned)blood.perfusion_state, (unsigned)blood.metabolic_state, blood.oncotic_pressure_mm_hg, blood.lymphatic_return_ml_min, blood.rbc_young_fraction * 100.0f, blood.rbc_mature_fraction * 100.0f, blood.rbc_senescent_fraction * 100.0f, blood.hif_activation, blood.iron_store_mg); } MLBladderMetrics bladder = {0}; if (ml_patient_bladder_metrics(p, &bladder) == ML_OK) { printf("Bladder: phase=%u urgency=%.0f%% guard=%.0f%% hold=%.0f%%\n", (unsigned)bladder.phase, bladder.urgency * 100.0f, bladder.guarding_reflex_gain * 100.0f, bladder.voluntary_hold_fraction * 100.0f); } char* h = ml_patient_organ_summary(p, ML_ORGAN_HEART); if (h) { printf("%s\n", h); ml_string_free(h); } ml_patient_free(p); return 0; }