Skip to content

feat: detail statistik kesehatan#1034

Merged
affandii06 merged 3 commits into
rilis-devfrom
feat/detail_statistik_kesehatan
May 8, 2026
Merged

feat: detail statistik kesehatan#1034
affandii06 merged 3 commits into
rilis-devfrom
feat/detail_statistik_kesehatan

Conversation

@pandigresik
Copy link
Copy Markdown
Contributor

Pull Request: Feature: Detail Statistik Kesehatan - Halaman Detail Data Presisi Kesehatan

Deskripsi

PR ini menambahkan halaman detail data presisi kesehatan yang memungkinkan pengguna untuk melihat data individual kesehatan berdasarkan filter kategori statistik. Sebelumnya, halaman statistik kesehatan tidak memiliki link detail yang berfungsi (detailLink kosong), sehingga pengguna tidak bisa menelusuri data individual dari agregat statistik. PR ini mengimplementasikan fitur drill-down dari tabel statistik ke detail data per record, mengikuti pola yang sudah ada pada modul data presisi lainnya (Pendidikan, Ketenagakerjaan, dll).

Depedency

https://github.com/OpenSID/API-Database-Gabungan/pull/398

Perubahan yang dilakukan:

  1. Fitur Baru - Controller: Menambahkan method detailData() pada DataPresisiKesehatanController yang menangani request halaman detail data kesehatan, termasuk sanitasi input judul dan pembentukan parameter filter colomn dari filter[tipe] dan filter[nilai]
  2. Fitur Baru - Form Request: Menambahkan DetailDataKesehatanRequest untuk validasi input pada endpoint detail data (judul, filter, filter.tipe, filter.nilai, tipe)
  3. Fitur Baru - View: Menambahkan view baru detail_data.blade.php yang menampilkan DataTable server-side dengan 14 kolom data kesehatan (NIK, No KK, Nama, Jenis Asuransi, Alat Kontrasepsi, Penyakit, Kunjungan Faskes, Rawat Inap, Kunjungan Dokter, Kondisi Fisik, Status Gizi, Tanggal Pengisian, Status Pengisian)
  4. Perbaikan - Controller Statistik: Mengubah StatistikKesehatanController - mengisi detailLink dari url('') (kosong) menjadi url('data-presisi/kesehatan/detail_data') serta menambahkan return type hint \Illuminate\View\View
  5. Perbaikan - View Statistik: Memperbarui kesehatan.blade.php - menambahkan variabel tipeValue dan judulUtama untuk tracking kategori aktif, menambahkan parameter filter[tipe] dan tahun pada URL detail link di kolom Nilai dan Jumlah, serta menghubungkan SEMUA nilai jumlah ke halaman detail (sebelumnya JUMLAH/BELUM MENGISI/TOTAL tidak memiliki link)
  6. Fitur Baru - Route: Menambahkan route GET /kesehatan/detail_data pada routes/web.php dengan middleware permission:datapresisi-kesehatan-read
  7. Refactor - Code Style: Perbaikan indentasi dan formatting pada view statistik kesehatan (dari 4-space indent menjadi tanpa indent untuk konsistensi)

Alasan perubahan:

  • Poin 1: Halaman statistik kesehatan sebelumnya tidak memiliki link detail yang berfungsi (detailLink kosong), sehingga pengguna tidak bisa melihat data individual dari agregat statistik
  • Poin 2: Modul data presisi lainnya (Pendidikan, Ketenagakerjaan, Aktivitas Keagamaan) sudah memiliki fitur detail data, sehingga modul Kesehatan perlu diselaraskan (parity)
  • Poin 3: Penambahan parameter filter[tipe] pada URL detail memungkinkan filtering yang lebih akurat di halaman detail, tidak hanya berdasarkan nilai tetapi juga berdasarkan tipe/kategori statistik
  • Poin 4: Validasi input melalui Form Request (DetailDataKesehatanRequest) meningkatkan keamanan endpoint baru dari input yang tidak diharapkan

Dampak perubahan:

Fungsionalitas: Pengguna dapat mengklik nilai pada tabel statistik kesehatan untuk melihat detail data individual
Konsistensi: Modul kesehatan sekarang memiliki fitur yang sama dengan modul data presisi lainnya
Keamanan: Input divalidasi melalui Form Request dan judul disanitasi dengan htmlspecialchars(strip_tags())
Filtering: Parameter filter[tipe] dan filter[nilai] diteruskan ke API untuk filtering data yang akurat
⚠️ Perhatian: Semua nilai jumlah sekarang memiliki link ke detail (termasuk JUMLAH/BELUM MENGISI/TOTAL), berbeda dari perilaku sebelumnya yang tidak memberikan link pada nilai-nilai tersebut

Masalah Terkait (Related Issue)

https://github.com/OpenSID/API-Database-Gabungan/issues/998

Langkah untuk mereproduksi (Steps to Reproduce)

Sebelum perbaikan (masalah):

  1. Login ke aplikasi dan navigasi ke menu Data Pokok → Data Presisi → Kesehatan
  2. Klik salah satu kategori statistik di sidebar kiri (misal: "Jenis Asuransi")
  3. Perhatikan kolom Nilai dan Jumlah pada tabel statistik
  4. Klik pada nilai jumlah di tabel
  5. ❌ Link tidak mengarah ke halaman detail manapun (detailLink kosong/url('')), atau link tidak membawa parameter filter yang cukup

Setelah perbaikan (fix):

  1. Login ke aplikasi dan navigasi ke menu Data Pokok → Data Presisi → Kesehatan
  2. Klik salah satu kategori statistik di sidebar kiri (misal: "Jenis Asuransi")
  3. Perhatikan kolom Nilai dan Jumlah pada tabel statistik - keduanya sekarang memiliki link
  4. Klik pada nilai jumlah di tabel
  5. ✅ Halaman detail data kesehatan terbuka di tab baru, menampilkan data individual yang difilter berdasarkan kategori dan nilai yang diklik, dengan filter tahun yang diteruskan

Testing pada fitur lain yang terkait:

  • Data Presisi Kesehatan - Halaman Index ✅ Tidak terpengaruh
  • Data Presisi Kesehatan - Halaman Cetak ✅ Tidak terpengaruh
  • Data Presisi Kesehatan - Halaman Detail (existing) ✅ Tidak terpengaruh
  • Statistik Kesehatan - Grafik Bar/Pie ✅ Tidak terpengaruh
  • Statistik Kesehatan - Export Excel ✅ Tidak terpengaruh

Daftar Periksa (Checklist)

  • Saya telah mematuhi aturan penulisan script.
  • Saya telah mengikuti proses review pull request.
  • Saya telah membuat [unit test/integration test] untuk memverifikasi perbaikan
  • Testing manual telah dilakukan di environment development
  • Tidak ada console error atau warning
  • Code sudah di-review oleh [minimal 1 orang]

Teknis Detail

Penjelasan Teknis

Alur data detail statistik kesehatan:

  1. Pengguna membuka halaman Statistik Kesehatan (/statistik-kesehatan)
  2. StatistikKesehatanController::index() merender view dengan detailLink = url('data-presisi/kesehatan/detail_data')
  3. Saat kategori statistik diklik, JavaScript menyimpan tipeValue (ID kategori) dan judulUtama (nama kategori)
  4. Kolom Nilai dan Jumlah pada DataTable menghasilkan link yang membawa parameter: filter[nilai], filter[tipe], tahun, judul, nama, chart-view
  5. Link mengarah ke route data-presisi/kesehatan/detail_data yang ditangani oleh DataPresisiKesehatanController::detailData()
  6. Controller memvalidasi input via DetailDataKesehatanRequest, membentuk string colomn (format: tipe:nilai), dan merender view detail
  7. View detail_data.blade.php melakukan AJAX ke API /api/v1/data-presisi/kesehatan dengan parameter filter[colomn] untuk mendapatkan data yang sudah difilter

Perubahan penting pada view statistik:

  • Variabel tipeValue dan judulUtama ditambahkan untuk menyimpan state kategori aktif secara global di scope JavaScript
  • Kolom Jumlah sekarang mengirim filter[tipe] (sebelumnya tidak ada) dan tahun (sebelumnya tidak ada) ke halaman detail
  • Kolom Nilai sudah mengirim filter[tipe], tahun, nama, dan chart-view sebelumnya, kini menggunakan variabel judulUtama dan tipeValue yang di-cache alih-alih query DOM berulang

Konfigurasi yang berubah

Tidak ada perubahan konfigurasi

Dependencies yang ditambahkan

Tidak ada dependencies baru

Testing

Manual Testing

  • Navigasi ke Statistik Kesehatan, pilih kategori, klik link Jumlah - halaman detail terbuka dengan data yang sesuai
  • Navigasi ke Statistik Kesehatan, pilih kategori, klik link Nilai - halaman detail terbuka dengan data yang sesuai
  • Di halaman detail, ubah filter tahun - data ter-refresh sesuai tahun yang dipilih
  • Di halaman detail, verifikasi kolom DataTable: NO, NIK, NOMOR KK, NAMA, JNS ASURANSI, JNS PENGGUNAAN ALAT KONTRASEPSI, JNS PENYAKIT YANG DIDERITA, KUNJUNGAN KE FASKES DALAM 1 TAHUN, RAWAT INAP DALAM 1 TAHUN, KUNJUNGAN KE DOKTER DALAM 1 TAHUN, KONDISI FISIK SEJAK LAHIR, STATUS GIZI BALITA, TANGGAL PENGISIAN, STATUS PENGISIAN
  • Verifikasi pagination dan sorting berfungsi di halaman detail
  • Verifikasi search berfungsi di halaman detail
  • Akses halaman detail secara langsung tanpa parameter - tidak error
  • Akses halaman detail dengan parameter filter yang tidak valid - divalidasi oleh Form Request
  • Verifikasi bahwa halaman statistik kesehatan (grafik, pie chart, export excel) masih berfungsi normal
  • Verifikasi bahwa halaman index dan cetak data presisi kesehatan masih berfungsi normal
  • Testing dengan user yang tidak memiliki permission datapresisi-kesehatan-read - harus di-block

Automated Testing

  • Unit Test - DetailDataKesehatanRequest validation rules
  • Feature Test - DataPresisiKesehatanController::detailData() response
  • Feature Test - Route data-presisi/kesehatan/detail_data accessible with correct permission
  • Feature Test - Route data-presisi/kesehatan/detail_data blocked without permission

Screenshots / Video

simplescreenrecorder-2026-05-06_16.35.23.mp4

Sebelum:

  • Kolom Jumlah pada tabel statistik kesehatan tidak memiliki link yang berfungsi (detailLink kosong)
  • Tidak ada halaman detail data individual kesehatan

Sesudah:

  • Kolom Nilai dan Jumlah memiliki link yang membuka halaman detail data kesehatan di tab baru
  • Halaman detail menampilkan DataTable server-side dengan data individual yang difilter berdasarkan kategori dan nilai

Breaking Changes

Tidak ada

Migration Guide

Tidak diperlukan

References


Catatan tambahan: Implementasi ini mengikuti pola yang sudah ada pada modul Data Presisi lainnya (Ketenagakerjaan, Pendidikan, Aktivitas Keagamaan). Perhatikan bahwa kolom Jumlah sekarang memberikan link untuk SEMUA nilai termasuk JUMLAH/BELUM MENGISI/TOTAL, berbeda dari perilaku sebelumnya. Jika ini tidak diinginkan, perlu ditambahkan kondisi pengecekan kembali.

@pandigresik pandigresik requested a review from affandii06 May 6, 2026 09:51
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1034

@affandii06 affandii06 added this to the M2 OpenKab 2606 milestone May 8, 2026
@habibie11
Copy link
Copy Markdown
Contributor

OK

@affandii06 affandii06 merged commit 2f1e523 into rilis-dev May 8, 2026
@affandii06 affandii06 deleted the feat/detail_statistik_kesehatan branch May 8, 2026 09:13
affandii06 added a commit that referenced this pull request May 22, 2026
* Fix/detail statistik pangan tidak tampil (#989)

* fix: data detail statistik tidak tampil

* fix: perbaikan detail presisi statistik pangan

* fix: perbaikan detail presisi statistik pangan

* Tambahkan test

* hapus

* fix: tambahkan link detail untuk belum mengisi, jumlah dan total agar seragam

* perbaikan judul

* perbaikan filter tahun

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Feat: detail statistik presisi sandang (#1014)

* fix: data detail statistik tidak tampil

* fix: perbaikan detail presisi statistik pangan

* fix: perbaikan detail presisi statistik pangan

* Tambahkan test

* hapus

* fix: tambahkan link detail untuk belum mengisi, jumlah dan total agar seragam

* feat: detail statistik sandang

* perbaikan sesuai rekomendasi AI review

* perbaiki test

* perbaikan judul

* perbaikan test

* perbaikan filter tahun

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request Feat: detail statistik papan (#1016)

* simpan dulu

* feat: detail presisi papan

* tambahkan test

* perbaikan mengikuti rekomendasi AI review

* perbaikan filter tahun

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From feat: detail statistik pendidikan (#1017)

* feat: detail statistik pendidikan

* perbaikan sesuai rekomendasi AI review

* perbaikan test

* perbaikan filter tahun

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From Feat: detail statistik ketenagakeerjaan (#1019)

* simpan dulu

* feat: detail  statistik ketenagakerjaan

* perbaikan filter tahun

* perbaikan filter tahun

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From feat: detail statistik keagamaan (#1020)

* feat: detail statistik keagamaan

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From fix: tinymce pada artikel (#1022)

* fix: tinymce pada artikel

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From fix: error ketika halaman login menampilkan captcha (#1024)

* fix: error ketika halaman login menampilkan captcha

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From Validasi kategori artikel ketika membuat artikel baru (#1027)

* validasi kategori artikel ketika membuat artikel baru

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From Fix: ijinkan upload video pada tinymce (#1029)

* fix: tinymce pada artikel

* fix: ijinkan upload video pada tinymce

* allow tag video

* perbaikan config

* upgrade versi tinymce

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From Perbaiki tekan enter di form kategori membuat refresh halaman (#1028)

* perbaiki tekan enter membuat refresh halaman

* sesuaikan label aksi tertukar di tabel kategori

* perbaiki tombol simpan melalui cursor

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From Validasi kategori artikel ketika membuat artikel cms baru (#1035)

* Validasi kategori artikel ketika membuat artikel cms baru

* test

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Feat/detail statistik jaminan sosial (#1030)

* feat: Detail statistik Jaminan Sosial

* simpan dulu

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From feat: detail statistik kesehatan (#1034)

* feat: detail kesehatan

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From feat: detail statistik seni (#1036)

* feat: detail statistik seni

* perbaikan judul

* tambahkan judul

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From fix: gambar logo desa pada website desa aktif (#1038)

* fix: gambar logo desa pada website desa aktif

* fix: gambar logo desa pada website desa aktif

* ikuti rekomendasi AI review

* perbaiki test

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From fix: perbaikan tampilan website ketika slider belum diisi (#1040)

* fix: perbaikan tampilan website ketika slider belum diisi

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* Merge Pull Request From feat: datatable debounce (#1042)

* feat: datatable debounce

* [ci skip] memutahirkan catatan rilis

---------

Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>

* rilis v2605.0.1

---------

Co-authored-by: ahmad afandi <ahmad.afandi85@gmail.com>
Co-authored-by: Ahmad Affandi <caspianp98@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants