Files
lis/htdocs/README.md
T
2026-08-02 05:31:32 +07:00

326 lines
8.2 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=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:
```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" --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:
```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
```
Jika upload pernah gagal dengan HTTP `524`, gunakan chunk lebih kecil dan retry lebih banyak:
```bash
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:
```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.