# MedData โ€” Sistem Pendataan Obat Puskesmas Aplikasi web untuk pencatatan, pengelolaan, dan monitoring obat di Puskesmas. Dilengkapi dengan manajemen resep, laporan, monitoring kadaluarsa, dan dashboard interaktif. ![Laravel](https://img.shields.io/badge/Laravel-12-red?logo=laravel) ![PHP](https://img.shields.io/badge/PHP-8.2+-blue?logo=php) ![MySQL](https://img.shields.io/badge/MySQL-8.0+-orange?logo=mysql) ![Tests](https://img.shields.io/badge/Tests-159%20passed-brightgreen?logo=phpunit) --- ## ๐Ÿ“‹ Fitur Utama ### ๐Ÿ  Dashboard - Statistik: total jenis obat, obat masuk/keluar bulan ini, obat mendekati kadaluarsa - Grafik tren harian obat masuk vs keluar (filter per bulan/tahun) - Pie chart distribusi obat masuk (top 5) - Notifikasi real-time obat mendekati kadaluarsa ### ๐Ÿ“ฅ Obat Masuk - CRUD lengkap data penerimaan obat - Field: nama obat, kode batch, kategori, satuan, supplier, stok, harga, tanggal penerimaan & kadaluarsa - Search dan filter status stok (tersedia/habis) - Chart distribusi obat per bulan ### ๐Ÿ“ค Obat Keluar - Pencatatan pengeluaran obat terhubung ke data obat masuk - Pemotongan stok otomatis saat pengeluaran, pemulihan saat dihapus - Validasi stok tidak boleh melebihi yang tersedia - Filter berdasarkan status, tujuan pemakaian, barcode ### ๐Ÿ“ Resep - Pembuatan resep oleh Dokter (multi-item per resep) - Stok obat otomatis berkurang saat resep dibuat - Alur status: `proses` โ†’ `selesai` / `dibatalkan` (dikonfirmasi Apoteker) - Update status resep sekaligus memperbarui status Obat Keluar terkait - No. resep otomatis: `RSP-YYYYMMDD-NNNN` ### โฐ Monitoring Kadaluarsa - Tampilan obat yang sudah/mendekati kadaluarsa (โ‰ค 60 hari) - Filter: Semua, Sudah Kadaluarsa, Awas (โ‰ค 30 hari), Waspada (โ‰ค 60 hari) - Badge status berwarna (Aman / Waspada / Awas) ### ๐Ÿ“Š Laporan - Laporan obat masuk dan keluar - Filter berdasarkan jenis dan rentang tanggal - Export ke **PDF** (DomPDF) dan **Excel** (Maatwebsite) ### ๐Ÿ—‚๏ธ Master Data - Manajemen Kategori Obat - Manajemen Satuan Obat ### ๐Ÿ‘ค Profil - Update profil: nama, email, NIP, gender, nomor telepon, divisi, jabatan, alamat - Ubah password - Upload foto profil --- ## ๐Ÿ” Sistem Peran (Role) | Role | Akses | |------|-------| | **Dokter** | Buat/edit/hapus Resep | | **Apoteker** | Obat Masuk, Obat Keluar, konfirmasi status Resep, Laporan, Master Data | | **Semua** | Dashboard, Monitoring Kadaluarsa, lihat Resep, Profil | --- ## ๐Ÿ› ๏ธ Tech Stack | Komponen | Teknologi | |----------|-----------| | Backend | Laravel 12, PHP 8.2+ | | Frontend | Blade Templates, Tailwind CSS v4, Alpine.js | | Grafik | Chart.js | | Database | MySQL 8.0+ | | Export | DomPDF, Maatwebsite Excel | | Testing | PHPUnit (159 tests) | --- ## โš™๏ธ Instalasi ### Prasyarat - PHP โ‰ฅ 8.2 - Composer - Node.js โ‰ฅ 18 - MySQL โ‰ฅ 8.0 ### Langkah Instalasi ```bash # 1. Clone repository git clone cd pencatatanobat # 2. Install dependencies composer install npm install # 3. Konfigurasi environment cp .env.example .env php artisan key:generate ``` **4. Konfigurasi database di `.env`:** ```env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=pencatatanobat DB_USERNAME=root DB_PASSWORD= ``` ```bash # 5. Migrasi & seeder php artisan migrate --seed # 6. Build assets npm run build # 7. Jalankan server php artisan serve ``` Akses aplikasi di `http://127.0.0.1:8000` --- ## ๐Ÿ”‘ Akun Default | Email | Password | Role | |-------|----------|------| | `dokter@dokter.com` | `password` | Dokter | | `admin@admin.com` | `password` | Apoteker | | `superadmin@meddata.com` | `password` | Superadmin | --- ## ๐Ÿงช Testing Aplikasi memiliki **159 test** (unit + feature) yang mencakup semua controller dan model utama. ```bash # Jalankan semua test php artisan test # Hanya unit test php artisan test --testsuite=Unit # Hanya feature test php artisan test --testsuite=Feature ``` > **Catatan:** Test menggunakan SQLite in-memory via custom `DatabaseTestCase` untuk menghindari konflik dengan migrasi MySQL-specific. --- ## ๐Ÿ“ Struktur Direktori ``` pencatatanobat/ โ”œโ”€โ”€ app/ โ”‚ โ”œโ”€โ”€ Exports/ # Export Excel (Maatwebsite) โ”‚ โ”œโ”€โ”€ Http/ โ”‚ โ”‚ โ”œโ”€โ”€ Controllers/ # DashboardController, ObatMasuk, ObatKeluar, โ”‚ โ”‚ โ”‚ # Resep, Kadaluarsa, Laporan, Kategori, Satuan โ”‚ โ”‚ โ””โ”€โ”€ Middleware/ โ”‚ โ”‚ โ””โ”€โ”€ CheckRole.php # Middleware role-based access โ”‚ โ””โ”€โ”€ Models/ # User, ObatMasuk, ObatKeluar, Resep, โ”‚ # ResepItem, Kategori, Satuan โ”œโ”€โ”€ database/ โ”‚ โ”œโ”€โ”€ migrations/ # Migrasi MySQL โ”‚ โ”œโ”€โ”€ migrations/safe/ # Migrasi SQLite-compatible (untuk testing) โ”‚ โ””โ”€โ”€ seeders/ โ”œโ”€โ”€ resources/views/ โ”‚ โ”œโ”€โ”€ dashboard/ โ”‚ โ”œโ”€โ”€ obat-masuk/ โ”‚ โ”œโ”€โ”€ obat-keluar/ โ”‚ โ”œโ”€โ”€ resep/ โ”‚ โ”œโ”€โ”€ kadaluarsa/ โ”‚ โ”œโ”€โ”€ laporan/ โ”‚ โ”œโ”€โ”€ kategori/ โ”‚ โ”œโ”€โ”€ satuan/ โ”‚ โ””โ”€โ”€ layouts/ โ”œโ”€โ”€ routes/ โ”‚ โ””โ”€โ”€ web.php โ””โ”€โ”€ tests/ โ”œโ”€โ”€ DatabaseTestCase.php # Base class dengan SQLite-compatible schema โ”œโ”€โ”€ Unit/ # Model unit tests โ””โ”€โ”€ Feature/ # Controller feature tests ``` --- ## ๐ŸŽจ Skema Warna | Komponen | Hex | |----------|-----| | Sidebar | `#4A538F` | | Background Konten | `#F4F6FF` | | Teks Utama | `#2F347A` | | Badge Aman | `#1F9254` | | Badge Waspada | `#B78103` | | Badge Awas | `#C0392B` | --- ## ๐Ÿ“ Lisensi Proyek ini dikembangkan untuk keperluan internal Puskesmas Doko.