79 lines
2.3 KiB
Dart
79 lines
2.3 KiB
Dart
class StuntingData {
|
|
final int? id;
|
|
final int anakId;
|
|
final int? perkembanganId;
|
|
final DateTime tanggalPemeriksaan;
|
|
final String usia;
|
|
final double tinggiBadan;
|
|
final double beratBadan;
|
|
final String status;
|
|
final String? catatan;
|
|
final String? gender;
|
|
final String? namaPasien;
|
|
final double? lingkarKepala;
|
|
|
|
StuntingData({
|
|
this.id,
|
|
required this.anakId,
|
|
this.perkembanganId,
|
|
required this.tanggalPemeriksaan,
|
|
required this.usia,
|
|
required this.tinggiBadan,
|
|
required this.beratBadan,
|
|
required this.status,
|
|
this.catatan,
|
|
this.gender,
|
|
this.namaPasien,
|
|
this.lingkarKepala,
|
|
});
|
|
|
|
factory StuntingData.fromJson(Map<String, dynamic> json) {
|
|
// Helper untuk parsing integer yang bisa berupa string atau int
|
|
int? parseIntValue(dynamic value) {
|
|
if (value == null) return null;
|
|
if (value is int) return value;
|
|
if (value is String) {
|
|
try {
|
|
return int.parse(value);
|
|
} catch (e) {
|
|
print('Error parsing int value: $e');
|
|
return null;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
return StuntingData(
|
|
id: parseIntValue(json['id']),
|
|
anakId: parseIntValue(json['anak_id']) ?? 0,
|
|
perkembanganId: parseIntValue(json['perkembangan_id']),
|
|
tanggalPemeriksaan: json['tanggal'] != null ? DateTime.parse(json['tanggal']) : DateTime.now(),
|
|
usia: json['usia'] ?? '',
|
|
tinggiBadan: json['tinggi_badan'] != null ? double.parse(json['tinggi_badan'].toString()) : 0.0,
|
|
beratBadan: json['berat_badan'] != null ? double.parse(json['berat_badan'].toString()) : 0.0,
|
|
status: json['status'] ?? 'Normal',
|
|
catatan: json['catatan'],
|
|
gender: json['gender'] ?? 'L',
|
|
namaPasien: json['nama_pasien'] ?? json['nama_anak'],
|
|
lingkarKepala: json['lingkar_kepala'] != null ? double.parse(json['lingkar_kepala'].toString()) : null,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'id': id,
|
|
'anak_id': anakId,
|
|
'perkembangan_id': perkembanganId,
|
|
'tanggal': tanggalPemeriksaan.toIso8601String().split('T')[0],
|
|
'usia': usia,
|
|
'tinggi_badan': tinggiBadan,
|
|
'berat_badan': beratBadan,
|
|
'status': status,
|
|
'catatan': catatan,
|
|
'gender': gender,
|
|
'nama_pasien': namaPasien,
|
|
'lingkar_kepala': lingkarKepala,
|
|
};
|
|
}
|
|
}
|