316 lines
7.9 KiB
Markdown
316 lines
7.9 KiB
Markdown
# 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](http://10.10.123.218/manual.pdf)
|
|
|
|
## Fitur
|
|
- Pengelolaan data sampel laboratorium
|
|
- Pengolahan dan analisis hasil tes
|
|
- Pembuatan laporan otomatis
|
|
- Integrasi dengan perangkat laboratorium (optional)
|
|
|
|
## Instalasi
|
|
1. Clone repository ini ke sistem lokal Anda:
|
|
```bash
|
|
git clone https://git.rssa.top/dwi_vendor/lis/repository.git
|
|
```
|
|
2. Masuk ke dalam folder proyek:
|
|
```bash
|
|
cd repository
|
|
```
|
|
3. Instal dependensi yang diperlukan:
|
|
```bash
|
|
composer install
|
|
```
|
|
|
|
4. Konfigurasi `.env` sesuai dengan kebutuhan aplikasi Anda.
|
|
5. Jalankan server aplikasi:
|
|
```bash
|
|
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:
|
|
|
|
```text
|
|
10.10.123.218 -> pg_dump dari 10.10.123.193 -> upload .backup ke duidev.com
|
|
```
|
|
|
|
Alur restore:
|
|
|
|
```text
|
|
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`:
|
|
|
|
```env
|
|
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=5242880
|
|
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:
|
|
|
|
```bash
|
|
php artisan config:clear
|
|
```
|
|
|
|
### Password PostgreSQL Tanpa Prompt
|
|
|
|
Buat file `~/.pgpass` pada user Linux yang menjalankan cron:
|
|
|
|
```text
|
|
10.10.123.193:5002:lismikro:lismikro:PASSWORD_DATABASE
|
|
```
|
|
|
|
Lalu amankan permission-nya:
|
|
|
|
```bash
|
|
chmod 600 ~/.pgpass
|
|
```
|
|
|
|
### Script Backup Harian
|
|
|
|
Contoh file `/home/mikro/project/backup.sh`:
|
|
|
|
```bash
|
|
#!/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"
|
|
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:
|
|
|
|
```bash
|
|
chmod +x /home/mikro/project/backup.sh
|
|
```
|
|
|
|
### Crontab
|
|
|
|
Jalankan backup setiap hari jam `23:59`:
|
|
|
|
```cron
|
|
59 23 * * * /home/mikro/project/backup.sh >> /home/mikro/project/backup.log 2>&1
|
|
```
|
|
|
|
Lihat log:
|
|
|
|
```bash
|
|
tail -n 100 /home/mikro/project/backup.log
|
|
```
|
|
|
|
### Upload Manual
|
|
|
|
Jika sudah memiliki file `.backup` dan ingin mengirim ulang ke cloud:
|
|
|
|
```bash
|
|
cd /home/mikro/project/htdocs
|
|
php artisan backup:upload-file /home/mikro/project/backups/lismikro_YYYY-MM-DD_HH-MM-SS.backup
|
|
```
|
|
|
|
### Download Backup Terbaru
|
|
|
|
Untuk download saja tanpa restore:
|
|
|
|
```bash
|
|
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`.
|
|
|
|
```bash
|
|
cd /home/mikro/project/htdocs
|
|
php artisan backup:restore-latest
|
|
```
|
|
|
|
Jika ingin langsung restore tanpa pertanyaan konfirmasi:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
php artisan register-api:export 2026-08-01 --pretty
|
|
```
|
|
|
|
Simpan hasil ke file:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```json
|
|
{
|
|
"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:
|
|
|
|
```bash
|
|
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`:
|
|
|
|
```bash
|
|
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json
|
|
```
|
|
|
|
Kirim ke endpoint tertentu:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --delay=500
|
|
```
|
|
|
|
Berhenti jika ada request gagal:
|
|
|
|
```bash
|
|
php artisan register-api:send-export /home/mikro/project/export-register-api-2026-08-01.json --stop-on-error
|
|
```
|
|
|
|
Contoh alur lengkap:
|
|
|
|
```bash
|
|
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.
|