MIF_E31231313/Android/flutter_app/lib/services/classification_service.dart

86 lines
2.2 KiB
Dart

class ClassificationService {
// =========================
// KLASIFIKASI UMUM (Z-SCORE)
// =========================
String classify(double zScore) {
if (zScore < -3) return 'Severe';
if (zScore < -2) return 'Moderate';
if (zScore <= 2) return 'Normal';
if (zScore <= 3) return 'Overweight';
return 'Obese';
}
// =========================
// BB/U (BERAT BADAN MENURUT UMUR)
// =========================
String interpretWeightForAge(double zScore) {
if (zScore < -3) {
return 'Gizi buruk (berat badan sangat kurang)';
}
if (zScore < -2) {
return 'Gizi kurang (underweight)';
}
if (zScore > 2) {
return 'Berat badan lebih dari standar usia';
}
return 'Berat badan sesuai dengan standar usia';
}
// =========================
// TB/U (TINGGI BADAN MENURUT UMUR)
// =========================
String interpretHeightForAge(double zScore) {
if (zScore < -3) {
return 'Sangat pendek (stunting berat)';
}
if (zScore < -2) {
return 'Pendek (stunting)';
}
if (zScore < -1) {
return 'Tinggi badan sedikit di bawah standar';
}
return 'Tinggi badan sesuai dengan standar usia';
}
// =========================
// BB/TB (BERAT BADAN MENURUT TINGGI)
// =========================
String interpretWeightForHeight(double zScore) {
if (zScore < -3) {
return 'Gizi buruk (wasting berat)';
}
if (zScore < -2) {
return 'Gizi kurang (wasting)';
}
if (zScore <= 2) {
return 'Status gizi normal';
}
if (zScore <= 3) {
return 'Berisiko gizi lebih';
}
return 'Obesitas';
}
// =========================
// KESIMPULAN AKHIR (SMART ANALYSIS)
// =========================
String buildConclusion({
required double bbU,
required double tbU,
required double bbTb,
}) {
final masalah = <String>[];
if (bbU < -2) masalah.add('berat badan kurang');
if (tbU < -2) masalah.add('stunting');
if (bbTb < -2) masalah.add('wasting');
if (bbTb > 2) masalah.add('gizi lebih');
if (masalah.isEmpty) {
return 'Status gizi anak normal berdasarkan indikator WHO.';
}
return 'Anak mengalami ${masalah.join(', ')}.';
}
}