# Mikrobiology Laboratory Information System (MyLIS) MyLIS Flutter adalah aplikasi pendamping untuk Laravel LIS lokal milik Rumah Sakit Umum Daerah Dr. Saiful Anwar. Aplikasi ini fokus pada akses mobile/desktop untuk login, dashboard Early Warning Sistem, daftar pemeriksaan, detail pemeriksaan, dan pengisian expertise per template DLP. Nama panjang aplikasi: ```text Mikrobiology Laboratory Information System (MyLIS) ``` Pemilik aplikasi: ```text Rumah Sakit Umum Daerah Dr. Saiful Anwar ``` Default URL Laravel lokal: ```text https://lis.swandhana.test/ ``` URL tersebut bisa diganti dari halaman sebelum login. Tersedia tombol `Ping` agar pengguna dapat memastikan server Laravel sudah dapat diakses sebelum login. ## Fitur Utama - Login tanpa register. - Pengaturan URL Laravel dari layar login. - Ping koneksi ke Laravel. - Dashboard dengan menu utama `Early Warning Sistem`. - Daftar pemeriksaan per buku/kategori. - Detail pemeriksaan dengan status dan tombol `Expertise`. - Screen expertise Flutter native, tidak membuka Blade Laravel. - Pemilihan template saat `periksa.dlp` masih kosong. - Penyimpanan draft, preliminary, final, dan kirim ke SPV sesuai role pengguna. - Dukungan build Android, iOS, dan macOS. ## Alur Expertise Jika `periksa.dlp` kosong, aplikasi menampilkan pilihan template. Jika sudah terisi, aplikasi langsung membuka wizard sesuai DLP. Screen DLP yang sudah dibuat: - `CCI` - `Kultur` - `Pewarna Langsung` - `TBC` - `Viral Load` - `IgM IgG Leptospira` - `PCR COVID` Semua wizard memakai pola umum: 1. Data pasien dan petugas. 2. Isian parameter/template sesuai DLP. 3. Tes Kepekaan Antibiotik jika berlaku. 4. Data alat jika berlaku. 5. Isian expertise akhir. Navigasi wizard tidak memakai validasi wajib, sehingga pengguna bebas `Next` dan `Previous`. ## Role dan Tombol Simpan Untuk role supervisor/SPV: - `Save as Draft` - `Save Preliminary result` - `Save Final Result` Untuk role selain supervisor/SPV: - `Save as Draft` - `Save and Send To SPV` - `Kirim SPV Preliminary` Checkbox `Nilai Kritis` tersedia di step akhir dan dikirim ke API saat menyimpan. ## Struktur Folder ```text lib/ app/ app.dart data/ expertise_data.dart providers/ session_provider.dart screens/ dashboard/ examinations/ expertise/ login/ services/ api_client.dart session_store.dart widgets/ common_widgets.dart main.dart ``` Ringkasan: - `main.dart`: entry point aplikasi. - `app/app.dart`: root aplikasi dan registrasi part screen. - `services/api_client.dart`: komunikasi HTTP ke Laravel. - `services/session_store.dart`: penyimpanan token dan base URL. - `providers/session_provider.dart`: pengecekan session awal. - `screens/login`: halaman login, URL Laravel, dan ping. - `screens/dashboard`: dashboard dan Early Warning Sistem. - `screens/examinations`: daftar dan detail pemeriksaan. - `screens/expertise`: semua screen wizard DLP. - `widgets/common_widgets.dart`: komponen UI umum. - `data/expertise_data.dart`: daftar DLP dan label template. ## API Laravel Aplikasi memakai endpoint mobile Laravel dengan prefix: ```text /api/mobile ``` Endpoint utama: - `GET /api/mobile/ping` - `POST /api/mobile/login` - `GET /api/mobile/dashboard` - `GET /api/mobile/early-warning` - `GET /api/mobile/books/{master}/examinations` - `GET /api/mobile/examinations/{id}` - `GET /api/mobile/examinations/{id}/expertise` - `POST /api/mobile/examinations/{id}/expertise/template` - `POST /api/mobile/examinations/{id}/expertise` Controller Laravel berada di: ```text /Users/duidev/htdocs/lis/htdocs/app/Http/Controllers/MobileApiController.php ``` Route API berada di: ```text /Users/duidev/htdocs/lis/htdocs/routes/api.php ``` ## Menjalankan Aplikasi Ambil dependency: ```bash flutter pub get ``` Jalankan di device/simulator: ```bash flutter run ``` Jalankan dengan default URL lain: ```bash flutter run --dart-define=LIS_BASE_URL=https://lis.swandhana.test/ ``` ## Verifikasi Analisis kode Flutter: ```bash flutter analyze ``` Test Flutter: ```bash flutter test ``` Cek route Laravel mobile: ```bash php artisan route:list --path=mobile ``` Cek sintaks controller Laravel: ```bash php -l app/Http/Controllers/MobileApiController.php ``` ## Build Android debug: ```bash flutter build apk --debug ``` iOS debug tanpa code signing: ```bash flutter build ios --debug --no-codesign ``` macOS debug: ```bash flutter build macos --debug ``` Output build yang umum: - Android: `build/app/outputs/flutter-apk/app-debug.apk` - iOS: `build/ios/iphoneos/Runner.app` - macOS: `build/macos/Build/Products/Debug/mylis.app` ## Catatan Lokal - Pastikan Laravel lokal `https://lis.swandhana.test/` aktif. - Pastikan sertifikat lokal dipercaya oleh device/simulator yang dipakai. - Untuk iOS device fisik, build `--no-codesign` tetap perlu signing manual sebelum deploy. - Jangan menjalankan beberapa command Flutter berat secara bersamaan karena bisa berebut file sementara pada folder platform.