LIS (Laboratory Information System)
Laboratory Information System (LIS) adalah sistem yang digunakan untuk mengelola informasi terkait dengan laboratorium, mulai dari manajemen data sampel, hasil tes, hingga laporan dan pengolahan data terkait laboratorium.
Developer
Aplikasi ini dikembangkan oleh tim pengembang dari CV. Swandhana.
Alamat: Jl. Lamandau 18A, Bunulrejo, Blimbing, Malang
Nomor Telepon (WA): 081359108565
Manual Book
Untuk panduan pengguna atau manual book dari LIS, dapat diunduh melalui link berikut: Download Manual Book
Fitur
- Pengelolaan data sampel laboratorium
- Pengolahan dan analisis hasil tes
- Pembuatan laporan otomatis
- Integrasi dengan perangkat laboratorium (optional)
Instalasi
-
Clone repository ini ke sistem lokal Anda:
git clone https://git.rssa.top/dwi_vendor/lis/repository.git -
Masuk ke dalam folder proyek:
cd repository -
Instal dependensi yang diperlukan:
composer install -
Konfigurasi
.envsesuai dengan kebutuhan aplikasi Anda. -
Jalankan server aplikasi:
php artisan serve
Teknologi yang Digunakan
- Laravel (PHP Framework)
- MySQL (Database)
- Bootstrap (Frontend)
- jQuery (Frontend)
Backup Database ke Cloud
Backup database dijalankan dari server production 10.10.123.218. Database yang di-backup berada di server PostgreSQL 10.10.123.193, lalu file hasil backup .backup dikirim secara bertahap/chunked ke https://duidev.com sebagai cadangan cloud.
Alur backup:
10.10.123.218 -> pg_dump dari 10.10.123.193 -> upload .backup ke duidev.com
Alur restore:
10.10.123.218 -> download backup terbaru dari duidev.com -> pg_restore ke 10.10.123.193
Konfigurasi Server Production
Tambahkan konfigurasi berikut di file .env server production 10.10.123.218:
CLOUD_BACKUP_API_URL=https://duidev.com
CLOUD_BACKUP_API_TOKEN=isi_token_rahasia_yang_sama_dengan_duidev
CLOUD_BACKUP_NAME=lismikro
CLOUD_BACKUP_CHUNK_SIZE=1048576
CLOUD_BACKUP_DB_HOST=10.10.123.193
CLOUD_BACKUP_DB_PORT=5002
CLOUD_BACKUP_DB_DATABASE=lismikro
CLOUD_BACKUP_DB_USERNAME=lismikro
CLOUD_BACKUP_DB_PASSWORD=
Jika password PostgreSQL sudah disimpan di .pgpass, CLOUD_BACKUP_DB_PASSWORD boleh dikosongkan.
Setelah mengubah .env, jalankan:
php artisan config:clear
Password PostgreSQL Tanpa Prompt
Buat file ~/.pgpass pada user Linux yang menjalankan cron:
10.10.123.193:5002:lismikro:lismikro:PASSWORD_DATABASE
Lalu amankan permission-nya:
chmod 600 ~/.pgpass
Script Backup Harian
Contoh file /home/mikro/project/backup.sh:
#!/bin/bash
echo "===== Backup mulai: $(date '+%Y-%m-%d %H:%M:%S') ====="
BACKUP_DIR="/home/mikro/project/backups"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILE="$BACKUP_DIR/lismikro_$DATE.backup"
mkdir -p "$BACKUP_DIR"
pg_dump -h 10.10.123.193 -p 5002 -U lismikro -d lismikro -F c -v -f "$FILE"
STATUS=$?
if [ $STATUS -eq 0 ]; then
echo "Backup berhasil: $FILE"
cd /home/mikro/project/htdocs
php artisan backup:upload-file "$FILE" --retries=10 --retry-delay=15 --timeout=300
UPLOAD_STATUS=$?
if [ $UPLOAD_STATUS -eq 0 ]; then
echo "Upload cloud berhasil"
else
echo "Upload cloud gagal dengan status: $UPLOAD_STATUS"
fi
find "$BACKUP_DIR" -type f -name "lismikro_*.backup" -mtime +2 -delete
else
echo "Backup gagal dengan status: $STATUS"
fi
echo "===== Backup selesai: $(date '+%Y-%m-%d %H:%M:%S') ====="
echo ""
Aktifkan script:
chmod +x /home/mikro/project/backup.sh
Crontab
Jalankan backup setiap hari jam 23:59:
59 23 * * * /home/mikro/project/backup.sh >> /home/mikro/project/backup.log 2>&1
Lihat log:
tail -n 100 /home/mikro/project/backup.log
Upload Manual
Jika sudah memiliki file .backup dan ingin mengirim ulang ke cloud:
cd /home/mikro/project/htdocs
php artisan backup:upload-file /home/mikro/project/backups/lismikro_YYYY-MM-DD_HH-MM-SS.backup
Jika upload pernah gagal dengan HTTP 524, gunakan chunk lebih kecil dan retry lebih banyak:
php artisan backup:upload-file /home/mikro/project/backups/lismikro_YYYY-MM-DD_HH-MM-SS.backup \
--chunk-size=1048576 \
--retries=10 \
--retry-delay=15 \
--timeout=300
Download Backup Terbaru
Untuk download saja tanpa restore:
cd /home/mikro/project/htdocs
php artisan backup:restore-latest --download-only
Restore Penuh ke Database
Restore dijalankan dari server production 10.10.123.218 dan target database adalah 10.10.123.193.
cd /home/mikro/project/htdocs
php artisan backup:restore-latest
Jika ingin langsung restore tanpa pertanyaan konfirmasi:
php artisan backup:restore-latest --yes
Perintah restore memakai pg_restore --clean --if-exists --no-owner secara default. Pastikan pg_restore tersedia di server production.
Export Reverse Payload registerApi
Perintah ini menarik data dari tabel periksa berdasarkan tanggal tertentu, lalu mengubahnya kembali menjadi JSON dengan key yang sama seperti payload awal registerApi.
Contoh export berdasarkan tanggal daftar:
php artisan register-api:export 2026-08-01 --pretty
Simpan hasil ke file:
php artisan register-api:export 2026-08-01 --pretty --output=/home/mikro/project/export-register-api-2026-08-01.json
Secara default filter memakai kolom daftar. Jika ingin memakai tanggal lain:
php artisan register-api:export 2026-08-01 --column=tanggalregis --pretty
php artisan register-api:export 2026-08-01 --column=tanggalsampel --pretty
Format JSON yang dihasilkan:
{
"tanggal": "2026-08-01",
"filter_column": "daftar",
"total": 1,
"data": [
{
"norm": "RM001",
"nama": "Nama Pasien",
"alamat": "Alamat Pasien",
"kota": "Kota",
"tgllahir": "1990-01-01",
"nohap": "0000000000",
"kelamin": "L",
"urgensi": "Elective",
"beratbadan": "0",
"nik": "0",
"nobpjs": "0",
"drpeminta": "Dokter Peminta",
"asalpasien": "Rawat Jalan",
"diagnosa": "Diagnosa",
"statusbayar": null,
"nomor_lab": "ORDER001",
"jenispembayaran": "UMM",
"klinisi": "Dokter Peminta",
"jenispemeriksaan": "Jenis Pemeriksaan",
"spesimen": "Sputum",
"kodespesimen": "SPT",
"pengambilan": null,
"keteranganrujukan": "RSSA Malang",
"namarspengirim": "RSSA Malang",
"tanggalregis": "2026-08-01",
"tanggalsampel": "2026-08-01",
"asalpengirim": null
}
]
}
Simulasi Kirim Data Seperti SIMRS
Setelah file JSON dibuat dari register-api:export, data dapat dikirim ulang ke endpoint registerApi seolah-olah berasal dari SIMRS.
Tes tanpa mengirim data:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --dry-run
Kirim ke endpoint default dari APP_URL/registerpasien:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json
Kirim ke endpoint tertentu:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json \
--url=http://10.10.123.218/registerpasien
Batasi pengiriman untuk uji coba:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --limit=5
Tambahkan jeda antar request, misalnya 500 milidetik:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --delay=500
Berhenti jika ada request gagal:
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --stop-on-error
Contoh alur lengkap:
php artisan register-api:export 2026-08-01 --pretty --output=/home/mikro/project/export-register-api-2026-08-01.json
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --url=http://10.10.123.218/registerpasien
Kontribusi
Jika Anda ingin berkontribusi pada proyek ini, silakan buat pull request atau issue terkait.
Lisensi
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file LICENSE untuk informasi lebih lanjut.