Tutorial Lengkap: Setup Struk Digital & Integrasi WhatsApp Receipt untuk Faskes
N
Kembali ke Blog

Tutorial Lengkap: Setup Struk Digital & Integrasi WhatsApp Receipt untuk Faskes

Tutorial
Nugroho Setiawan 17 Jul 2026 7 min baca 1,572 kata 120 views
Pelajari panduan komprehensif untuk mengimplementasikan struk digital dan integrasi resi pembayaran via WhatsApp pada fasilitas kesehatan Anda. Tingkatkan efisiensi operasional, kepuasan pasien, dan kepatuhan terhadap standar data medis dengan solusi modern ini. Artikel ini menyajikan langkah-langkah teknis dan praktis yang bisa langsung Anda terapkan.

Dalam era digitalisasi yang semakin pesat, fasilitas kesehatan (Faskes) dihadapkan pada tuntutan untuk terus berinovasi demi meningkatkan kualitas layanan dan efisiensi operasional. Salah satu area yang seringkali masih mengandalkan proses manual adalah pencetakan struk pembayaran. Bayangkan antrean pasien yang panjang di kasir, tumpukan kertas struk yang harus diarsipkan, atau bahkan risiko kehilangan dokumen penting. Praktik ini tidak hanya memakan waktu dan sumber daya, namun juga berdampak pada lingkungan serta pengalaman pasien. Berdasarkan data internal kami, rata-rata sebuah klinik besar dapat mencetak lebih dari 5.000 struk per bulan, yang jika dikonversi ke biaya kertas dan tinta, bisa mencapai jutaan rupiah per tahun. Lebih dari itu, kepuasan pasien modern sangat bergantung pada kemudahan akses informasi dan layanan yang cepat. Artikel ini akan memandu Anda secara mendalam tentang cara mengimplementasikan struk digital serta mengintegrasikannya dengan WhatsApp Business API, sebuah solusi transformatif yang mampu mengatasi berbagai tantangan tersebut. Kami akan membahas konsep dasar, arsitektur teknis, contoh kode nyata, penanganan error, hingga praktik terbaik, memastikan Anda memiliki peta jalan yang jelas untuk modernisasi layanan Faskes.

Konsep Dasar Struk Digital dan Integrasi WhatsApp di Faskes

Struk digital adalah representasi elektronik dari bukti transaksi pembayaran yang biasanya dicetak di atas kertas. Dalam konteks fasilitas kesehatan, ini berarti pasien akan menerima bukti pembayaran layanan medis, pembelian obat, atau tindakan lainnya dalam format digital, umumnya berupa PDF atau pesan teks terstruktur. Manfaatnya sangat beragam: efisiensi biaya operasional karena mengurangi penggunaan kertas, tinta, dan biaya penyimpanan fisik; peningkatan kepuasan pasien yang dapat mengakses struk kapan saja melalui perangkat mereka; serta kemudahan dalam pencarian dan audit data keuangan. Selain itu, struk digital mendukung inisiatif keberlanjutan lingkungan dengan mengurangi jejak karbon.

Integrasi dengan WhatsApp Business API membuka dimensi baru dalam pengiriman struk digital. WhatsApp, dengan lebih dari 2 miliar pengguna aktif secara global, termasuk mayoritas masyarakat Indonesia, menawarkan kanal komunikasi yang sangat efektif dan personal. WhatsApp Business API memungkinkan Faskes untuk mengirim pesan terstruktur, termasuk struk digital, secara otomatis dan real-time setelah transaksi selesai. Ini bukan sekadar mengirim PDF via chat biasa, melainkan menggunakan template pesan yang telah disetujui sebelumnya oleh WhatsApp, memastikan pesan bersifat informatif dan non-promosional sesuai kebijakan mereka. Keuntungan utamanya adalah kecepatan pengiriman, jangkauan luas, dan tingkat keterbukaan pesan yang sangat tinggi dibandingkan email atau SMS tradisional, yang seringkali terlewatkan oleh pasien. Pasien dapat dengan mudah menyimpan struk di ponsel mereka atau meneruskannya jika diperlukan.

Penting untuk memahami bahwa implementasi ini harus mematuhi regulasi yang berlaku di Indonesia. Salah satunya adalah Peraturan Menteri Kesehatan (PMK) Nomor 24 Tahun 2022 tentang Rekam Medis. Meskipun struk pembayaran bukan bagian inti dari rekam medis elektronik (RME), data transaksi yang terkait harus dikelola dengan prinsip kerahasiaan dan keamanan data pasien. Selain itu, Undang-Undang Perlindungan Data Pribadi (UU PDP) menjadi landasan utama dalam menjaga privasi informasi pasien. Faskes wajib mendapatkan persetujuan (consent) eksplisit dari pasien sebelum mengirimkan informasi apa pun, termasuk struk digital, melalui WhatsApp. Ini dapat diintegrasikan dalam proses pendaftaran atau persetujuan tindakan medis.

Secara praktis, alur kerjanya akan seperti ini: ketika pasien selesai melakukan pembayaran di kasir, sistem Point of Sale (POS) atau SIMRS/SIM Klinik akan mencatat transaksi tersebut. Informasi transaksi ini kemudian diproses oleh sebuah layanan integrasi yang akan memformatnya menjadi struk digital (misalnya PDF) dan mengirimkannya melalui WhatsApp Business API ke nomor pasien yang telah terdaftar dan memberikan persetujuan. Proses ini terjadi dalam hitungan detik, memberikan pengalaman yang seamless bagi pasien dan mengurangi beban kerja staf administrasi. Contoh konkret dapat dilihat pada modul pembayaran di SIMRS yang terintegrasi dengan apotek atau laboratorium. Setelah pembayaran obat atau pemeriksaan lab, struk digital akan langsung terkirim, memudahkan pasien dalam melacak pengeluaran kesehatan mereka.

Arsitektur dan Implementasi Teknis

Implementasi struk digital dan integrasi WhatsApp Receipt memerlukan perencanaan arsitektur yang matang untuk memastikan skalabilitas, keamanan, dan keandalan. Komponen utama yang terlibat meliputi: SIMRS/SIM Klinik yang Ada, Layanan Integrasi (Integration Service), dan WhatsApp Business API. SIMRS atau SIM Klinik Anda (misalnya yang dibangun menggunakan Laravel 11.x untuk backend dan Vue.js untuk frontend, didukung oleh database PostgreSQL 16) akan menjadi sumber data transaksi pembayaran. Sistem ini perlu memiliki endpoint API yang aman untuk mengirimkan data transaksi ke layanan integrasi.

Layanan Integrasi adalah komponen kunci yang bertindak sebagai jembatan antara SIMRS/SIM Klinik dengan WhatsApp Business API. Layanan ini dapat dikembangkan menggunakan teknologi modern seperti Node.js 20 LTS dengan framework Express.js atau Python dengan Flask/Django. Fungsinya meliputi: menerima data transaksi dari SIMRS, memvalidasi data, menghasilkan struk digital (misalnya dalam format PDF menggunakan library seperti `html-pdf` untuk Node.js atau `WeasyPrint` untuk Python), mengunggah PDF ke penyimpanan objek yang aman (misalnya AWS S3 atau Google Cloud Storage) jika diperlukan, dan memanggil WhatsApp Business API untuk mengirim pesan. Layanan ini juga bertanggung jawab untuk menangani otentikasi (misalnya menggunakan JSON Web Tokens atau OAuth 2.0) dan enkripsi data (TLS 1.2+ untuk komunikasi antar layanan).

WhatsApp Business API adalah antarmuka yang disediakan oleh Meta untuk memungkinkan bisnis berkomunikasi dengan pelanggan dalam skala besar. Untuk integrasi ini, Anda akan menggunakan Cloud API yang di-host oleh Meta, sehingga Anda tidak perlu mengelola server WhatsApp sendiri. Anda perlu membuat akun WhatsApp Business Platform, mendaftarkan nomor telepon bisnis, dan mendapatkan token akses permanen. Komunikasi dengan WhatsApp Business API dilakukan melalui HTTP POST requests, mengirimkan payload JSON yang berisi detail pesan, nomor penerima, dan ID template pesan. Penting untuk menggunakan template pesan yang telah disetujui sebelumnya oleh WhatsApp untuk pengiriman struk digital, guna memastikan kepatuhan terhadap kebijakan mereka dan menghindari pemblokiran.

Alur data umumnya sebagai berikut: 1) SIMRS/SIM Klinik memproses pembayaran dan memicu event. 2) Event ini mengirimkan data transaksi (misalnya, ID transaksi, detail pasien, item layanan, total biaya) ke endpoint API di Layanan Integrasi. 3) Layanan Integrasi menerima data, memverifikasi, kemudian membuat file PDF struk digital. 4) Layanan Integrasi mengunggah PDF ke cloud storage (opsional, jika struk perlu diakses melalui URL). 5) Layanan Integrasi memanggil WhatsApp Business API dengan menggunakan template pesan yang sesuai, menyertakan URL PDF (jika ada) atau detail transaksi sebagai variabel dinamis. 6) WhatsApp Business API mengirimkan pesan ke pasien. 7) WhatsApp juga mengirimkan webhook status pengiriman kembali ke Layanan Integrasi, yang dapat digunakan untuk monitoring dan logging. Seluruh proses ini harus dirancang dengan mempertimbangkan standar interoperabilitas seperti FHIR R4 jika ada niat untuk menghubungkan data transaksi dengan ekosistem SatuSehat di masa depan, meskipun untuk struk pembayaran langsung mungkin tidak selalu menjadi prioritas utama.

Contoh Kode Implementasi WhatsApp Receipt

Bagian ini akan menyajikan contoh kode konkret untuk mengimplementasikan pengiriman struk digital melalui WhatsApp Business API. Kita akan menggunakan Node.js dengan Express.js untuk layanan integrasi backend dan fokus pada bagaimana memanggil API WhatsApp serta struktur template pesan.

Endpoint Pengiriman Struk Digital (Node.js/Express.js)

Berikut adalah contoh endpoint di layanan integrasi Anda yang menerima data transaksi dari SIMRS dan memicu pengiriman pesan WhatsApp. Kita asumsikan Anda telah menginstal `express` dan `axios` (`npm install express axios`).

const express = require('express');const axios = require('axios');const app = express();const PORT = process.env.PORT || 3000;app.use(express.json());const WA_BUSINESS_API_URL = 'https://graph.facebook.com/v19.0/';const WA_PHONE_NUMBER_ID = 'YOUR_WA_PHONE_NUMBER_ID'; // Ganti dengan ID nomor telepon WA Andaconst WA_ACCESS_TOKEN = 'YOUR_WA_ACCESS_TOKEN'; // Ganti dengan token akses permanen WA Anda// Endpoint untuk menerima data transaksi dan mengirim struk digitalapp.post('/api/send-digital-receipt', async (req, res) => {    const { patientName, patientPhoneNumber, transactionId, totalAmount, serviceDetails, transactionDate, receiptPdfUrl } = req.body;    if (!patientName || !patientPhoneNumber || !transactionId || !totalAmount || !serviceDetails || !transactionDate) {        return res.status(400).json({ success: false, message: 'Data transaksi tidak lengkap.' });    }    // Format nomor telepon ke standar internasional (misal: +6281234567890)    const formattedPhoneNumber = patientPhoneNumber.startsWith('+') ? patientPhoneNumber : `+${patientPhoneNumber}`;    try {        const response = await axios.post(            `${WA_BUSINESS_API_URL}${WA_PHONE_NUMBER_ID}/messages`,            {                messaging_product: 'whatsapp',                to: formattedPhoneNumber,                type: 'template',                template: {                    name: 'faskes_digital_receipt', // Nama template yang disetujui WhatsApp                    language: { code: 'id' },                    components: [                        {                            type: 'header',                            parameters: [                                {                                    type: 'document',                                    document: {                                        link: receiptPdfUrl || 'https://example.com/default-receipt.pdf', // URL PDF struk jika ada                                        filename: `Struk_${transactionId}.pdf`                                    }                                }                            ]                        },                        {                            type: 'body',                            parameters: [                                { type: 'text', text: patientName },                                { type: 'text', text: transactionId },                                { type: 'text', text: totalAmount },                                { type: 'text', text: transactionDate },                                { type: 'text', text: serviceDetails.join(', ') }                            ]                        }                    ]                }            },            {                headers: {                    'Authorization': `Bearer ${WA_ACCESS_TOKEN}`,                    'Content-Type': 'application/json'                }            }        );        if (response.data && response.data.messages && response.data.messages.length > 0) {            console.log(`Struk digital untuk ${patientName} berhasil dikirim. Message ID: ${response.data.messages[0].id}`);            return res.status(200).json({ success: true, message: 'Struk digital berhasil dikirim.', whatsappMessageId: response.data.messages[0].id });        } else {            console.error('Gagal mengirim struk digital: Respon tidak valid.', response.data);            return res.status(500).json({ success: false, message: 'Gagal mengirim struk digital: Respon API tidak valid.' });        }    } catch (error) {        console.error('Error saat mengirim struk digital:', error.response ? error.response.data : error.message);        return res.status(500).json({ success: false, message: 'Gagal mengirim struk digital.', error: error.response ? error.response.data : error.message });    }});app.listen(PORT, () => {    console.log(`Integration Service berjalan di port ${PORT}`);});

Kode di atas mendefinisikan sebuah endpoint POST `/api/send-digital-receipt` yang menerima data transaksi. Kemudian, ia memformat nomor telepon dan membuat panggilan API ke WhatsApp Business API untuk mengirim template pesan. Variabel seperti `WA_PHONE_NUMBER_ID` dan `WA_ACCESS_TOKEN` harus diganti dengan kredensial akun WhatsApp Business Anda. Parameter `template.name` sangat krusial; ini harus sesuai persis dengan nama template yang telah Anda daftarkan dan disetujui oleh WhatsApp. Parameter `components` digunakan untuk mengisi variabel dinamis di dalam template pesan Anda. Untuk bagian header, kita bisa menyertakan dokumen PDF struk yang telah diunggah ke cloud storage.

Contoh Struktur Template Pesan WhatsApp

Template pesan WhatsApp harus disetujui oleh Meta sebelum dapat digunakan. Berikut adalah contoh template JSON yang Anda kirimkan ke WhatsApp Business Platform untuk persetujuan. Template ini akan memiliki header berupa dokumen (PDF) dan body dengan variabel dinamis.

{  
Terakhir diperbarui 19 Jul 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!