Cara Setup Tanda Tangan Elektronik Tersertifikasi BSrE untuk SIMRS & E-Office Anda
Pelajari langkah demi langkah implementasi tanda tangan elektronik tersertifikasi BSrE untuk sistem SIMRS, SIM Klinik, dan E-Office Anda. Artikel ini membahas konsep, teknis integrasi API, penanganan error, dan best practices untuk memastikan legalitas serta efisiensi operasional.
Di tengah gelombang transformasi digital yang tak terhindarkan, efisiensi operasional dan legalitas dokumen elektronik menjadi krusial, terutama bagi institusi kesehatan seperti rumah sakit dan klinik, serta kantor yang mengimplementasikan sistem E-Office. Proses penandatanganan dokumen secara manual, yang melibatkan pencetakan, penandatanganan basah, dan pemindaian kembali, tidak hanya memakan waktu dan sumber daya, tetapi juga rentan terhadap risiko pemalsuan dan kehilangan dokumen. Bayangkan ribuan rekam medis elektronik, surat keputusan direktur, atau persetujuan tindakan medis yang harus ditandatangani setiap hari. Tanpa solusi yang tepat, beban administratif akan menumpuk, memperlambat layanan, dan menghambat inovasi. Kepatuhan terhadap regulasi seperti Undang-Undang Informasi dan Transaksi Elektronik (UU ITE) serta Peraturan Menteri Kesehatan (PMK) No. 24 Tahun 2022 tentang Rekam Medis Elektronik menuntut adanya metode penandatanganan yang sah secara hukum dan terjamin keamanannya. Di sinilah peran tanda tangan elektronik tersertifikasi dari Badan Siber dan Sandi Negara (BSrE) menjadi sangat vital. Artikel ini akan memandu Anda secara mendalam, dari konsep dasar hingga implementasi teknis, cara mengintegrasikan tanda tangan elektronik tersertifikasi BSrE ke dalam Sistem Informasi Manajemen Rumah Sakit (SIMRS), Sistem Informasi Manajemen Klinik (SIM Klinik), atau E-Office Anda. Kami akan mengupas tuntas langkah-langkah praktis, contoh kode, dan best practices yang dapat segera Anda terapkan untuk meningkatkan efisiensi, keamanan, dan kepatuhan sistem Anda.
Konsep Dasar Tanda Tangan Elektronik Tersertifikasi BSrE dan Manfaatnya
Tanda Tangan Elektronik Tersertifikasi BSrE adalah tanda tangan elektronik yang dibuat menggunakan sertifikat elektronik yang diterbitkan oleh Penyelenggara Sertifikasi Elektronik (PSrE) yang diakui oleh Kementerian Komunikasi dan Informatika Republik Indonesia, dalam hal ini adalah BSrE sebagai otoritas tunggal di Indonesia. Dasar hukum yang kuat melandasi kekuatan legalitasnya, antara lain UU ITE No. 11 Tahun 2008 sebagaimana telah diubah dengan UU No. 19 Tahun 2016, serta Peraturan Pemerintah (PP) No. 71 Tahun 2019 tentang Penyelenggaraan Sistem dan Transaksi Elektronik. Regulasi ini secara eksplisit menyatakan bahwa tanda tangan elektronik memiliki kekuatan hukum dan akibat hukum yang sah sepanjang memenuhi persyaratan tertentu, yaitu data penanda tangan terasosiasi dengan data tanda tangan, data tanda tangan terkait dengan penanda tangan, dan data tanda tangan dibuat dengan menggunakan perangkat yang berada dalam kendali penanda tangan.
Perbedaan mendasar antara tanda tangan elektronik tersertifikasi BSrE dengan tanda tangan elektronik biasa (non-tersertifikasi) terletak pada jaminan identitas penanda tangan dan integritas dokumen. Tanda tangan non-tersertifikasi, seperti gambar scan tanda tangan atau ketikan nama, tidak memiliki mekanisme kriptografi yang kuat untuk memverifikasi identitas dan mendeteksi perubahan dokumen setelah ditandatangani. Sebaliknya, tanda tangan elektronik tersertifikasi BSrE menggunakan Public Key Infrastructure (PKI) yang memastikan tiga aspek utama: autentikasi (identitas penanda tangan terverifikasi), integritas (dokumen tidak berubah setelah ditandatangani), dan non-penyangkalan (penanda tangan tidak dapat menyangkal telah menandatangani dokumen tersebut). BSrE berperan sebagai Certificate Authority (CA) yang menerbitkan sertifikat elektronik, menjadi jaminan kepercayaan atas validitas tanda tangan tersebut.
Manfaat implementasi tanda tangan elektronik tersertifikasi BSrE bagi SIMRS, SIM Klinik, dan E-Office sangatlah signifikan. Pertama, dari segi legalitas, semua dokumen elektronik yang ditandatangani memiliki kekuatan hukum yang setara dengan tanda tangan basah di atas meterai, sesuai dengan PMK No. 24 Tahun 2022 yang mewajibkan rekam medis elektronik ditandatangani secara elektronik. Ini sangat krusial untuk persetujuan tindakan medis, resep elektronik, resume medis, hingga surat keterangan sakit. Kedua, terjadi peningkatan efisiensi operasional yang drastis. Proses administrasi yang sebelumnya memerlukan pencetakan, pengiriman fisik, penandatanganan, dan pemindaian ulang dapat dipangkas sepenuhnya. Ini menghemat waktu, biaya kertas, tinta, dan ruang penyimpanan fisik.
Ketiga, keamanan dan integritas data jauh lebih terjamin. Mekanisme kriptografi yang digunakan dalam tanda tangan elektronik BSrE melindungi dokumen dari pemalsuan atau modifikasi yang tidak sah. Setiap upaya perubahan pada dokumen setelah ditandatangani akan terdeteksi, sehingga integritas informasi tetap terjaga. Ini sangat penting dalam konteks rekam medis yang bersifat sensitif dan rahasia. Keempat, implementasi ini membantu institusi Anda memenuhi kepatuhan regulasi, khususnya dalam ekosistem SatuSehat yang mendorong digitalisasi layanan kesehatan. Dengan tanda tangan elektronik yang sah, rumah sakit dan klinik dapat lebih mudah mengintegrasikan data rekam medis dan proses administratif lainnya ke dalam platform digital nasional.
Sebagai contoh konkret, dalam SIMRS, proses persetujuan tindakan medis yang seringkali memakan waktu dapat diselesaikan secara instan dengan tanda tangan elektronik oleh dokter dan pasien (jika pasien memiliki sertifikat). Resep elektronik dapat ditandatangani oleh dokter dan langsung dikirim ke farmasi tanpa perlu cetak. Di E-Office, surat keputusan direktur, nota dinas, atau kontrak kerja dapat ditandatangani dari mana saja, mempercepat alur kerja dan pengambilan keputusan. Dengan demikian, tanda tangan elektronik tersertifikasi BSrE bukan hanya sebuah fitur tambahan, melainkan sebuah fondasi esensial untuk operasional digital yang aman, efisien, dan patuh hukum.
Langkah Teknis Implementasi dan Integrasi dengan Sistem Anda
Implementasi tanda tangan elektronik tersertifikasi BSrE memerlukan pendekatan yang terstruktur, dimulai dari persiapan administratif hingga integrasi teknis. Tahap awal adalah pendaftaran dan verifikasi identitas di portal BSrE. Untuk individu, pendaftaran dapat dilakukan melalui aplikasi e-Sign atau portal BSSN Identity, yang melibatkan verifikasi e-KTP dan biometrik untuk memastikan keaslian identitas penanda tangan. Bagi organisasi, prosesnya mungkin melibatkan pendaftaran badan usaha dan pengajuan sertifikat untuk perwakilan yang berwenang. Pemilihan jenis sertifikat, baik personal maupun organisasi, harus disesuaikan dengan kebutuhan dan peran pengguna dalam sistem.
Setelah sertifikat elektronik diperoleh, langkah selanjutnya adalah integrasi dengan API BSrE. BSrE menyediakan antarmuka pemrograman aplikasi (API) RESTful yang memungkinkan sistem eksternal, seperti SIMRS, SIM Klinik, atau E-Office Anda, untuk berinteraksi secara programatik dengan layanan penandatanganan elektronik. Ini berarti Anda tidak perlu membangun infrastruktur PKI dari awal, melainkan cukup memanggil endpoint API yang disediakan. Teknologi yang relevan untuk integrasi ini mencakup bahasa pemrograman seperti PHP (dengan framework Laravel 11.x atau lebih baru), Node.js (dengan framework Express 4.x dan Node 20 LTS atau lebih baru), atau Python (dengan Django atau Flask dan Python 3.10+). Fleksibilitas ini memungkinkan Anda memilih stack teknologi yang paling sesuai dengan lingkungan pengembangan Anda saat ini.
Proses integrasi API BSrE umumnya mengikuti alur berikut: pertama, sistem Anda perlu melakukan autentikasi ke API BSrE untuk mendapatkan token akses. Ini seringkali menggunakan skema OAuth2 atau API Key, yang menjamin bahwa hanya aplikasi yang berwenang yang dapat mengakses layanan. Kedua, dokumen yang akan ditandatangani (umumnya dalam format PDF) perlu diunggah ke API BSrE. Dokumen ini biasanya dikirimkan dalam format base64-encoded untuk memastikan integritas data selama transmisi. Ketiga, sistem Anda memanggil API penandatanganan, menyertakan parameter seperti ID penanda tangan, alasan penandatanganan, lokasi, dan detail visualisasi tanda tangan jika diperlukan (misalnya, koordinat x, y, halaman, lebar, tinggi). Keempat, pengguna yang bersangkutan akan diminta untuk memverifikasi penandatanganan melalui PIN atau OTP yang dikirimkan ke perangkat mereka (misalnya, melalui aplikasi e-Sign), sebagai lapisan keamanan tambahan.
Terakhir, setelah penandatanganan berhasil, API BSrE akan mengembalikan dokumen yang sudah ditandatangani secara elektronik. Dokumen ini kemudian dapat diunduh dan disimpan kembali ke dalam sistem Anda. Untuk memfasilitasi panggilan API, Anda dapat menggunakan berbagai pustaka HTTP client yang tersedia untuk bahasa pemrograman pilihan Anda. Misalnya, untuk PHP, Guzzle HTTP Client sangat populer dan kuat; untuk Node.js, Axios atau Node-fetch adalah pilihan yang sangat baik; sementara untuk Python, pustaka Requests adalah standar de facto. Jika Anda juga perlu menambahkan representasi visual tanda tangan ke dokumen PDF, pustaka seperti TCPDF atau FPDF untuk PHP, pdf-lib untuk Node.js, atau PyPDF2 untuk Python dapat digunakan untuk memanipulasi file PDF sebelum atau sesudah penandatanganan. Pastikan infrastruktur server Anda memiliki konektivitas internet yang stabil dan mampu menangani volume transaksi yang diharapkan untuk memastikan kelancaran operasional.
Contoh Kode Integrasi API BSrE
Bagian ini akan menyajikan contoh kode konkret untuk mengintegrasikan API BSrE, khususnya dalam skenario pengiriman dokumen PDF untuk ditandatangani. Kami akan menggunakan contoh dalam PHP (dengan asumsi framework Laravel) dan Node.js (dengan Express), yang merupakan teknologi umum dalam pengembangan SIMRS atau E-Office.
Contoh Kode 1: Mengirim Dokumen PDF untuk Ditandatangani (PHP/Laravel)
Dalam contoh ini, kita akan menggunakan Guzzle HTTP Client untuk memanggil API BSrE. Pastikan Anda telah menginstal Guzzle (`composer require guzzlehttp/guzzle`).
<?php namespace App\{Http}\{Controllers}; use Illuminate\Http\Request; use GuzzleHttp\Client; use Illuminate\Support\Facades\Log; class BsreSignatureController extends Controller { public function signDocument(Request $request) { $client = new Client(); $accessToken = env('BSRE_ACCESS_TOKEN'); // Ambil dari env atau cache $signerId = '84572910-abcd-efgh-ijkl-1234567890ab'; // ID Penanda Tangan dari BSrE $filePath = storage_path('app/documents/surat_keputusan.pdf'); if (!file_exists($filePath)) { return response()->json(['message' => 'File not found'], 404); } $documentContent = file_get_contents($filePath); $documentBase64 = base64_encode($documentContent); try { $response = $client->post('https://api.bsre.go.id/v1/sign/pdf', [ 'headers' => [ 'Authorization' => 'Bearer ' . $accessToken, 'Content-Type' => 'application/json', 'Accept' => 'application/json' ], 'json' => [ 'document_base64' => $documentBase64, 'document_name' => 'surat_keputusan_2024.pdf', 'signer_id' => $signerId, 'reason' => 'Persetujuan Dokumen Internal', 'location' => 'Jakarta', 'signature_type' => 'visible', // atau 'invisible' 'page_number' => 1, 'x_coordinate' => 100, 'y_coordinate' => 100, 'width' => 150, 'height' => 50 ] ]); $body = json_decode($response->getBody()->getContents(), true); if ($response->getStatusCode() === 200 && isset($body['signed_document_base64'])) { // Simpan dokumen yang sudah ditandatangani $signedDocumentContent = base64_decode($body['signed_document_base64']); $signedFilePath = storage_path('app/documents/signed_surat_keputusan.pdf'); file_put_contents($signedFilePath, $signedDocumentContent); Log::info('Dokumen berhasil ditandatangani.', ['file' => $signedFilePath]); return response()->json(['message' => 'Dokumen berhasil ditandatangani', 'file_path' => $signedFilePath]); } else { Log::error('Gagal menandatangani dokumen dari BSrE.', ['response' => $body]); return response()->json(['message' => 'Gagal menandatangani dokumen', 'details' => $body], 500); } } catch (\GuzzleHttp\Exception\RequestException $e) { Log::error('BSrE API Request failed.', ['error' => $e->getMessage(), 'response' => $e->getResponse() ? $e->getResponse()->getBody()->getContents() : '']); return response()->json(['message' => 'Terjadi kesalahan saat menghubungi API BSrE', 'error' => $e->getMessage()], 500); } } } Penjelasan: Kode di atas menunjukkan bagaimana controller Laravel dapat memuat file PDF dari penyimpanan lokal, meng-encode-nya ke base64, kemudian mengirimkannya ke endpoint API BSrE `/v1/sign/pdf`. `BSRE_ACCESS_TOKEN` harus Anda dapatkan melalui proses otentikasi ke BSrE, dan `signer_id` adalah identitas unik penanda tangan yang terdaftar di BSrE. Parameter `signature_type` menentukan apakah tanda tangan akan terlihat secara visual pada dokumen. Setelah berhasil, dokumen yang telah ditandatangani akan di-decode dan disimpan kembali.
Contoh Kode 2: Mengirim Dokumen PDF untuk Ditandatangani (Node.js/Express)
Untuk Node.js, kita akan menggunakan pustaka `axios` untuk panggilan HTTP dan `fs` untuk membaca file. Pastikan Anda telah menginstal `axios` (`npm install axios`).
const express = require('express'); const axios = require('axios'); const fs = require('fs'); const path = require('path'); const app = express(); app.use(express.json()); app.post('/sign-document', async (req, res) => { const accessToken = process.env.BSRE_ACCESS_TOKEN; // Ambil dari env const signerId = '84572910-abcd-efgh-ijkl-1234567890ab'; // ID Penanda Tangan dari BSrE const filePath = path.join(__dirname, 'documents', 'surat_keputusan.pdf'); if (!fs.existsSync(filePath)) { return res.status(404).json({ message: 'File not found' }); } const documentContent = fs.readFileSync(filePath); const documentBase64 = documentContent.toString('base64'); try { const response = await axios.post('https://api.bsre.go.id/v1/sign/pdf', { document_base64: documentBase64, document_name: 'surat_keputusan_2024.pdf', signer_id: signerId, reason: 'Persetujuan Dokumen Internal', location: 'Jakarta', signature_type: 'visible', page_number: 1, x_coordinate: 100, y_coordinate: 100, width: 150, height: 50 }, { headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json', 'Accept': 'application/json' } }); if (response.status === 200 && response.data.signed_document_base64) { const signedDocumentContent = Buffer.from(response.data.signed_document_base64, 'base64'); const signedFilePath = path.join(__dirname, 'documents', 'signed_surat_keputusan.pdf'); fs.writeFileSync(signedFilePath, signedDocumentContent); console.log('Dokumen berhasil ditandatangani:', signedFilePath); return res.json({ message: 'Dokumen berhasil ditandatangani', file_path: signedFilePath }); } else { console.error('Gagal menandatangani dokumen dari BSrE:', response.data); return res.status(500).json({ message: 'Gagal menandatangani dokumen', details: response.data }); } } catch (error) { console.error('BSrE API Request failed:', error.response ? error.response.data : error.message); return res.status(500).json({ message: 'Terjadi kesalahan saat menghubungi API BSrE', error: error.response ? error.response.data : error.message }); } }); app.listen(3000, () => { console.log('Server berjalan di port 3000'); }); Penjelasan: Kode Express ini mendefinisikan endpoint `/sign-document` yang menerima permintaan POST. Mirip dengan contoh PHP, ia membaca file PDF, mengonversinya ke base64, dan mengirimkannya ke API BSrE menggunakan Axios. Variabel lingkungan `BSRE_ACCESS_TOKEN` dan `signerId` harus dikonfigurasi. Hasil penandatanganan akan disimpan sebagai file PDF baru. Kedua contoh ini memberikan kerangka dasar yang dapat Anda kembangkan lebih lanjut sesuai dengan kebutuhan spesifik aplikasi Anda, termasuk penanganan antrian untuk penandatanganan massal atau integrasi dengan modul manajemen dokumen.
Penanganan Error dan Contoh Payload Data
Saat mengintegrasikan dengan API eksternal seperti BSrE, penanganan error yang robust adalah kunci untuk menjaga stabilitas dan keandalan sistem Anda. Kesalahan dapat terjadi karena berbagai alasan, mulai dari masalah autentikasi, format data yang salah, hingga gangguan pada sisi server BSrE. Memahami struktur payload yang diharapkan dan pesan error yang mungkin muncul akan sangat membantu dalam mendiagnosis dan menyelesaikan masalah.
Berikut adalah contoh payload JSON yang realistis untuk permintaan penandatanganan dokumen PDF ke API BSrE. Payload ini mencakup semua informasi yang diperlukan untuk mengidentifikasi dokumen, penanda tangan, dan parameter visualisasi tanda tangan:
{ Komentar
Belum ada komentar. Jadilah yang pertama!