feat(kesehatan): slim ringkasan kesehatan schema + tambah seeder balita & ibu hamil - bump 0.1.52

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-05 10:31:40 +08:00
parent afe0d9d04b
commit fd2060405f
10 changed files with 760 additions and 159 deletions

View File

@@ -0,0 +1,502 @@
import prisma from "@/lib/prisma";
import { JenisKelaminBalita, StatusStunting } from "@prisma/client";
// Fokus data: proporsi stunting realistis untuk simulasi dashboard
// 10 STUNTING, 7 ALERT, 8 NORMAL dari 25 total
const BALITA_DATA = [
// ===== STUNTING (TB/U < -2 SD dari median WHO) =====
{
id: "balita_001",
nama: "Wayan Aditya Pratama",
nik: "5101014505230001",
tanggalLahir: new Date("2023-05-04"), // 36 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 11.5,
tinggiBadanCm: 83.0, // median 96cm, -2SD ~89cm
namaOrtu: "I Wayan Suardika",
alamat: "Banjar Pudak, Desa Darmasaba",
noHpOrtu: "08123456801",
posyanduId: "cmkanjnmx0006vntz1cn7owpb",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.8 SD. Dalam program PMT (Pemberian Makanan Tambahan). Orang tua sudah mendapat konseling gizi.",
},
{
id: "balita_002",
nama: "Ni Kadek Mira Sari",
nik: "5101014501240002",
tanggalLahir: new Date("2024-01-04"), // 16 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 7.8,
tinggiBadanCm: 70.5, // median ~78cm
namaOrtu: "I Kadek Suartha",
alamat: "Banjar Dahlia, Desa Darmasaba",
noHpOrtu: "08123456802",
posyanduId: "posyandu_dahlia_001",
imunisasiLengkap: false,
giziBaik: false,
pemeriksaanRutin: false,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -3.1 SD. Imunisasi belum lengkap. Ibu bekerja, kunjungan posyandu tidak rutin. Perlu pendampingan kader.",
},
{
id: "balita_003",
nama: "Putu Rian Saputra",
nik: "5101014501220003",
tanggalLahir: new Date("2022-01-04"), // 40 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 12.5,
tinggiBadanCm: 89.0, // median 103cm
namaOrtu: "Ni Putu Sumiati",
alamat: "Banjar Dahlia, Desa Darmasaba",
noHpOrtu: "08123456803",
posyanduId: "posyandu_dahlia_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -3.2 SD. Sudah dirujuk ke Puskesmas Abiansemal 3 untuk pemeriksaan lebih lanjut.",
},
{
id: "balita_004",
nama: "Ni Komang Ayu Lestari",
nik: "5101014507230004",
tanggalLahir: new Date("2023-07-04"), // 22 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 8.2,
tinggiBadanCm: 74.0, // median ~84cm
namaOrtu: "I Komang Sudiarta",
alamat: "Banjar Anggrek, Desa Darmasaba",
noHpOrtu: "08123456804",
posyanduId: "posyandu_anggrek_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.5 SD. Riwayat BBLR (berat lahir rendah) 2.3 kg.",
},
{
id: "balita_005",
nama: "Ketut Agus Pratama",
nik: "5101014507240005",
tanggalLahir: new Date("2024-07-04"), // 10 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 6.9,
tinggiBadanCm: 66.0, // median ~72cm
namaOrtu: "Ni Ketut Sariani",
alamat: "Banjar Kamboja, Desa Darmasaba",
noHpOrtu: "08123456805",
posyanduId: "posyandu_kamboja_001",
imunisasiLengkap: false,
giziBaik: false,
pemeriksaanRutin: false,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.3 SD. Lahir prematur 35 minggu. Keluarga prasejahtera, masuk program PKH.",
},
{
id: "balita_006",
nama: "Ni Made Sinta Dewi",
nik: "5101014507220006",
tanggalLahir: new Date("2022-07-04"), // 34 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 11.0,
tinggiBadanCm: 84.5, // median ~94cm
namaOrtu: "I Made Sudarsana",
alamat: "Banjar Melur, Desa Darmasaba",
noHpOrtu: "08123456806",
posyanduId: "posyandu_melur_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.6 SD. Nafsu makan rendah, sedang dalam pantauan ahli gizi Puskesmas.",
},
{
id: "balita_007",
nama: "Made Dani Putra",
nik: "5101014501250007",
tanggalLahir: new Date("2025-01-04"), // 4 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 5.0,
tinggiBadanCm: 57.0, // median ~63cm
namaOrtu: "Ni Made Suparni",
alamat: "Banjar Kenanga, Desa Darmasaba",
noHpOrtu: "08123456807",
posyanduId: "posyandu_kenanga_001",
imunisasiLengkap: false,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.4 SD. BBLR 2.1 kg, ibu ASI eksklusif. Kunjungan rutin ke posyandu.",
},
{
id: "balita_008",
nama: "Ni Putu Ratna Sari",
nik: "5101014507210008",
tanggalLahir: new Date("2021-07-04"), // 46 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 13.0,
tinggiBadanCm: 92.0, // median ~106cm
namaOrtu: "I Putu Suarjana",
alamat: "Banjar Mawar, Desa Darmasaba",
noHpOrtu: "08123456808",
posyanduId: "posyandu_mawar_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.9 SD. Sudah 6 bulan dalam program intervensi stunting desa.",
},
{
id: "balita_009",
nama: "Gede Yoga Pratama",
nik: "5101014505210009",
tanggalLahir: new Date("2021-05-04"), // 48 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 13.5,
tinggiBadanCm: 91.0, // median ~108cm
namaOrtu: "Ni Wayan Suarningsih",
alamat: "Banjar Pudak, Desa Darmasaba",
noHpOrtu: "08123456809",
posyanduId: "cmkanjnmx0006vntz1cn7owpb",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: false,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -3.0 SD. Keluarga baru pindah dari luar desa. Sedang proses pendataan ulang.",
},
{
id: "balita_010",
nama: "Ni Nyoman Sari Utami",
nik: "5101014505230010",
tanggalLahir: new Date("2023-05-04"), // 24 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 9.5,
tinggiBadanCm: 80.0, // median ~87cm
namaOrtu: "I Nyoman Sueca",
alamat: "Banjar Melati, Desa Darmasaba",
noHpOrtu: "08123456810",
posyanduId: "posyandu_melati_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.STUNTING,
catatan: "TB/U -2.2 SD. Batas bawah stunting. Perlu dipantau ketat tiap bulan.",
},
// ===== ALERT (TB/U antara -1 SD dan -2 SD) =====
{
id: "balita_011",
nama: "Wayan Krisna Dewa",
nik: "5101014501240011",
tanggalLahir: new Date("2024-01-04"), // 16 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 9.8,
tinggiBadanCm: 74.0, // median ~78cm, -1SD ~75cm
namaOrtu: "I Wayan Artana",
alamat: "Banjar Mawar, Desa Darmasaba",
noHpOrtu: "08123456811",
posyanduId: "posyandu_mawar_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.5 SD. Perlu pemantauan lebih lanjut, gizi cukup baik.",
},
{
id: "balita_012",
nama: "Ni Wayan Novi Andriani",
nik: "5101014505230012",
tanggalLahir: new Date("2023-05-04"), // 24 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 10.8,
tinggiBadanCm: 83.0, // median ~87cm
namaOrtu: "Ni Wayan Artini",
alamat: "Banjar Melati, Desa Darmasaba",
noHpOrtu: "08123456812",
posyanduId: "posyandu_melati_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.8 SD. Nafsu makan baik, BB naik konsisten.",
},
{
id: "balita_013",
nama: "Putu Deva Mahendra",
nik: "5101014511240013",
tanggalLahir: new Date("2024-11-04"), // 6 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 6.8,
tinggiBadanCm: 63.5, // median ~67cm
namaOrtu: "I Putu Ariana",
alamat: "Banjar Anggrek, Desa Darmasaba",
noHpOrtu: "08123456813",
posyanduId: "posyandu_anggrek_001",
imunisasiLengkap: false,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.6 SD. ASI eksklusif. Jadwal imunisasi DPT ketiga belum terlaksana.",
},
{
id: "balita_014",
nama: "Ni Komang Dewi Lestari",
nik: "5101014501220014",
tanggalLahir: new Date("2022-01-04"), // 40 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 14.0,
tinggiBadanCm: 96.0, // median ~103cm
namaOrtu: "I Komang Wirawan",
alamat: "Banjar Kamboja, Desa Darmasaba",
noHpOrtu: "08123456814",
posyanduId: "posyandu_kamboja_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.4 SD. Konsumsi protein hewani belum cukup, edukasi diberikan.",
},
{
id: "balita_015",
nama: "Made Surya Darma",
nik: "5101014511230015",
tanggalLahir: new Date("2023-11-04"), // 18 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 10.2,
tinggiBadanCm: 76.0, // median ~82cm
namaOrtu: "Ni Made Sudarmi",
alamat: "Banjar Melur, Desa Darmasaba",
noHpOrtu: "08123456815",
posyanduId: "posyandu_melur_001",
imunisasiLengkap: true,
giziBaik: false,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.9 SD. Sedang mendapat PMT (makanan tambahan) dari desa.",
},
{
id: "balita_016",
nama: "Ni Kadek Ayu Purnami",
nik: "5101014505250016",
tanggalLahir: new Date("2025-05-04"), // 0 bulan (baru lahir - 1 bulan)
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 3.5,
tinggiBadanCm: 49.0, // median ~52cm
namaOrtu: "I Kadek Suartha",
alamat: "Banjar Kenanga, Desa Darmasaba",
noHpOrtu: "08123456816",
posyanduId: "posyandu_kenanga_001",
imunisasiLengkap: false,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.7 SD. Bayi baru, lahir 2.8 kg. Dipantau dari awal.",
},
{
id: "balita_017",
nama: "Ketut Bayu Setiawan",
nik: "5101014511220017",
tanggalLahir: new Date("2022-11-04"), // 30 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 13.2,
tinggiBadanCm: 88.0, // median ~93cm
namaOrtu: "Ni Ketut Suarni",
alamat: "Banjar Dahlia, Desa Darmasaba",
noHpOrtu: "08123456817",
posyanduId: "posyandu_dahlia_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.ALERT,
catatan: "TB/U -1.3 SD. Tumbuh kembang membaik dalam 3 bulan terakhir.",
},
// ===== NORMAL =====
{
id: "balita_018",
nama: "Ni Made Intan Permata",
nik: "5101014501240018",
tanggalLahir: new Date("2024-01-04"), // 16 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 10.5,
tinggiBadanCm: 78.0,
namaOrtu: "I Made Sudiarsa",
alamat: "Banjar Mawar, Desa Darmasaba",
noHpOrtu: "08123456818",
posyanduId: "posyandu_mawar_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_019",
nama: "Wayan Arya Nugraha",
nik: "5101014505230019",
tanggalLahir: new Date("2023-05-04"), // 24 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 12.0,
tinggiBadanCm: 87.0,
namaOrtu: "Ni Wayan Suarni",
alamat: "Banjar Pudak, Desa Darmasaba",
noHpOrtu: "08123456819",
posyanduId: "cmkanjnmx0006vntz1cn7owpb",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_020",
nama: "Ni Putu Cantika Dewi",
nik: "5101014501220020",
tanggalLahir: new Date("2022-01-04"), // 40 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 15.5,
tinggiBadanCm: 103.0,
namaOrtu: "I Putu Sudiarta",
alamat: "Banjar Melati, Desa Darmasaba",
noHpOrtu: "08123456820",
posyanduId: "posyandu_melati_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_021",
nama: "Komang Danu Mahesa",
nik: "5101014505250021",
tanggalLahir: new Date("2025-05-04"), // 0 bulan (newborn)
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 3.8,
tinggiBadanCm: 52.0,
namaOrtu: "Ni Komang Artini",
alamat: "Banjar Anggrek, Desa Darmasaba",
noHpOrtu: "08123456821",
posyanduId: "posyandu_anggrek_001",
imunisasiLengkap: false,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_022",
nama: "Ni Nyoman Suka Rani",
nik: "5101014505210022",
tanggalLahir: new Date("2021-05-04"), // 48 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 16.5,
tinggiBadanCm: 105.0,
namaOrtu: "I Nyoman Suarman",
alamat: "Banjar Kamboja, Desa Darmasaba",
noHpOrtu: "08123456822",
posyanduId: "posyandu_kamboja_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_023",
nama: "Made Giri Putra Santosa",
nik: "5101014511240023",
tanggalLahir: new Date("2024-11-04"), // 6 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 8.1,
tinggiBadanCm: 67.5,
namaOrtu: "Ni Made Suciati",
alamat: "Banjar Melur, Desa Darmasaba",
noHpOrtu: "08123456823",
posyanduId: "posyandu_melur_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_024",
nama: "Ni Wayan Arta Yanti",
nik: "5101014511230024",
tanggalLahir: new Date("2023-11-04"), // 18 bulan
jenisKelamin: JenisKelaminBalita.P,
beratBadanKg: 11.0,
tinggiBadanCm: 82.0,
namaOrtu: "I Wayan Suarsa",
alamat: "Banjar Kenanga, Desa Darmasaba",
noHpOrtu: "08123456824",
posyanduId: "posyandu_kenanga_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
{
id: "balita_025",
nama: "Kadek Dika Permana",
nik: "5101014511220025",
tanggalLahir: new Date("2022-11-04"), // 30 bulan
jenisKelamin: JenisKelaminBalita.L,
beratBadanKg: 14.0,
tinggiBadanCm: 93.0,
namaOrtu: "Ni Kadek Suriati",
alamat: "Banjar Dahlia, Desa Darmasaba",
noHpOrtu: "08123456825",
posyanduId: "posyandu_dahlia_001",
imunisasiLengkap: true,
giziBaik: true,
pemeriksaanRutin: true,
statusStunting: StatusStunting.NORMAL,
},
];
export async function seedBalita() {
console.log("🔄 Seeding Balita...");
for (const d of BALITA_DATA) {
await prisma.balita.upsert({
where: { id: d.id },
update: {
nama: d.nama,
nik: d.nik,
tanggalLahir: d.tanggalLahir,
jenisKelamin: d.jenisKelamin,
beratBadanKg: d.beratBadanKg,
tinggiBadanCm: d.tinggiBadanCm,
namaOrtu: d.namaOrtu,
alamat: d.alamat,
noHpOrtu: d.noHpOrtu,
posyanduId: d.posyanduId,
imunisasiLengkap: d.imunisasiLengkap,
giziBaik: d.giziBaik,
pemeriksaanRutin: d.pemeriksaanRutin,
statusStunting: d.statusStunting,
catatan: d.catatan ?? null,
},
create: {
id: d.id,
nama: d.nama,
nik: d.nik,
tanggalLahir: d.tanggalLahir,
jenisKelamin: d.jenisKelamin,
beratBadanKg: d.beratBadanKg,
tinggiBadanCm: d.tinggiBadanCm,
namaOrtu: d.namaOrtu,
alamat: d.alamat,
noHpOrtu: d.noHpOrtu,
posyanduId: d.posyanduId,
imunisasiLengkap: d.imunisasiLengkap,
giziBaik: d.giziBaik,
pemeriksaanRutin: d.pemeriksaanRutin,
statusStunting: d.statusStunting,
catatan: d.catatan ?? null,
},
});
console.log(`✅ Balita seeded: ${d.nama} (${d.statusStunting})`);
}
console.log("🎉 Balita seed selesai");
}