213 lines
4.6 KiB
Markdown
213 lines
4.6 KiB
Markdown
# MyLIS Flutter
|
|
|
|
MyLIS Flutter adalah aplikasi pendamping untuk Laravel LIS lokal. Aplikasi ini fokus pada akses mobile/desktop untuk login, dashboard Early Warning Sistem, daftar pemeriksaan, detail pemeriksaan, dan pengisian expertise per template DLP.
|
|
|
|
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.
|