Konferensi Nasional Sistem Informasi 2011 1. Pendahuluan Aliran informasi merupakan bagian yang sangat penting dalam suatu perusahaan maupun organisasi di berbagai bidang termasuk kesehatan. Jika aliran informasi tersendat maka dapat mempengaruhi proses manajerial yang meliputi perencanaan, koordinasi, kepemimpinan dan pengendalian. Hal tersebut dapat menimbulkan penurunan kinerja. Kondisi bottleneck atau penumpukan pekerjaan pada satu bagian akan mengakibatkan proses pelaporan dan layanan menjadi sangat lambat. Adanya jaringan komputer dapat mengatasi hal tersebut. Jaringan komputer dapat berperan mengintegrasikan data sehingga dapat diolah dengan tepat oleh komputer terpusat (server) maupun mengalirkan informasi secara lengkap dan cepat ke terminal-terminal tujuan (client ), secara kontinu dan teratur. Kehadiran teknologi jaringan komputer tidak hanya bermanfaat untuk mengalirkan informasi tetapi juga dapat menghemat investasi dan mengoptimalkan penggunaan perangkat keras maupun perangkat lunaknya karena jaringan komputer menyediakan fasilitas untuk berbagi pakai semua peralatan yang terhubung dalam lingkungan jaringan tersebut. Penerapan jaringan komputer akan mendukung adanya digitalisasi, otomatisasi dan komputerisasi. Proses aliran data dan pesan dalam jaringan dapat terjadi melalui socket API (Application Programming Interface). Socket API merupakan middleware yang menghubungkan komputer server dengan komputer client. Perkembangan teknologi dapat meningkatkan kinerja dan memungkinkan berbagai kegiatan dapat dilaksanakan dengan cepat, tepat dan akurat, sehingga akhirnya meningkatkan produktivitas[1]. Tidak menutup kemungkinan pada pengelolaan data di rumah sakit yang diwujudnyatakan dengan aplikasi rekam medis yang mampu meningkatkan pelayanan sebuah rumah sakit Pada artikel ini dibahas pemanfaatan socket API pada komunikasi antar aplikasi rekam medis pada komputer client dan server. Aplikasi ini dibuat untuk dapat mengurangi beban kerja sub-bagian rekam 244 medis dalam menangani berkas rekam medis dan meningkatkan pelayanan dari sebuah rumah sakit. 2. Arsitektur Client Server Jaringan komputer adalah sebuah sistem yang terdiri atas komputer dan perangkat jaringan lainnya yang bekerja bersama-sama untuk mencapai suatu tujuan yang sama. Jaringan komputer memudahkan proses pertukaran data serta informasi. LAN menyediakan jaringan komunikasi berkecepatan tinggi pada komputerkomputer dan terminal-terminal yang dihubungkan satu sama lain dan terletak pada beberapa tempat yang terpisah dan biasanya tidak terlalu jauh, seperti bangunan kantor, atau pabrik. LAN memungkinkan suatu organisasi untuk menggunakan pengolahan data terdistribusi yang menggunakan Personal Computer(PC) yang dapat mengakses satu sama lain dan/atau ke komputer host[3]. Arsitektur jaringan client server merupakan model konektivitas pada jaringan yang membedakan fungsi komputer sebagai client atau server. Arsitektur ini menempatkan sebuah komputer sebagai server yang bertugas memberikan layanan kepada terminal-terminal lain (client) yang terhubung dalam sistem jaringan itu[4]. Pada dasarnya client server dibentuk oleh tiga komponen dasar, yaitu client, middleware, dan server. Secara sederhana, hubungan anatar ketiga komponen tersebut ditunjukkan pada Gambar 1. Gambar 1. Komponen Dasar Client Server Client merupakan terminal yang digunakan oleh pengguna untuk meminta layanan tertentu yang dibutuhkan. Disini peran client adalah mengirimkan pesan berupa permintaan layanan ke server. Melalui terminal client ini, pengguna dapat memasukkan data dan mengakses forum untuk transaksi. Terminal client ini juga Konferensi Nasional Sistem Informasi 2011 digunakan untuk menerima hasil pemrosesan yang diminta dari server. Middleware merupakan komponen perantara yang memungkinkan client dan server untuk saling terhubung dan berkomunikasi satu sam lain. Middleware yang digunakan disini yaitu Socket Application Programming Interface(API). Middleware memiliki peran yang strategis karena dengan adanya middleware maka client dapat mengirimkan pesan atau permintaan ke server, menerjemahkan pesan dari client agar dapat dimengerti oleh server, menerjemahkan hasil proses dari server agar dapat dipahami oleh client dan mengirimkan hasil proses yang telah diterjemahkan kembali ke client. Server merupakan pihak yang menyediakan layanan. Secara umum, server berperan menerima pesan permintaan layanan dari client, memproses permintaan tersebut dan mengirimkan hasil permintaan kepada client. 3. Interkoneksi Socket API Winsock atau windows socket sebenarnya kepanjangan dari Windows Sockets API (Application Programming Interface) yang befungsi sebagai jembatan untuk software aplikasi yang berhubungan dengan network service terutama TCP/IP pada sistem operasi Windows. Socket merupakan mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Pada setiap lingkungan sistem operasi yang mampu berkomunikasi dengan protokol TCP/IP, fasilitas socket selalu tersedia. Socket adalah satu titik akhir dari jalur komunikasi dua arah antara dua program yang berjalan pada jaringan dengan protokol TCP/IP atau UDP. Dalam kasus ini digunakan protokol TCP/IP. Socket terhubung pada sebuah nomor port sehingga lapisan TCP dapat mengidentifikasi sebuah aplikasi dimana pengiriman data ditujukan (Gambar 2). Gambar 2. Socket API [5] Socket mengijinkan suatu proses unik untuk berkomunikasi satu dengan yang lain, memberitahukan proses mana untuk menulis dan membaca, komunikasi socket dilakukan pada mesin yang sama, jaringan dan internet, selain itu komunikasi dua arah membuatnya cocok untuk model client server, socket dibentuk tahun 1980 oleh Barkeley Unix Distribution[4]. Pada umumnya, sebuah server merupakan sebuah komputer yang khusus dan memiliki sebuah socket yang terhubung pada sebuah nomor port yang khusus. Server hanya menunggu socket untuk menerima permintaan koneksi(request) dari sebuah client(passive open). Client mengetahui alamat IP server dan nomor port tempat tersebut dihubungkan. Untuk membuat koneksi permintaan, client mencoba untuk melakukan koneksi dengan server pada mesin server dan port(active open). Apabila semuanya berjalan dengan baik maka server menerima koneksi. Saat penerimaan, server membuka socket baru yang terhubung pada port yang berbeda. Untuk dapat melanjutkan penerimaan dari socket awal untuk koneksi permintaan saat melayani kebutuhan client yang terhubung, dibutuhkan sebuah socket baru dengan nomor port yang beda. Pada sisi client, jika koneksi diterima, sebuah socket berhasil dibentuk dan client dapat menggunakan socket tersebut untuk berkomunikasi dengan server. Client dan server sekarang dapat berkomunikasi untuk menulis atau membaca dari socket tersebut. Untuk menangani pertukaran informasi antara aplikasi server dengan aplikasi client diperlukan server socket pada sisi server dan client socket pada sisi client. 245 Konferensi Nasional Sistem Informasi 2011 Server socket kurang lebih memiliki event – event berikut untuk menangani layanan pertukaran data. 1.Event onClientConnect() Event ini berisi perintah untuk memberitahukan bahwa ada client yang melakukan koneksi ke server socket. Untuk itu perlu dilakukan definisi alamat IP dengan menambahkan variabel temp bertipe AnsiString untuk menampung alamat IP client yang terhubung. Kode Program 1. Event onClientConnect() AnsiString temp; temp=Socket->RemoteAddress; int i; for(i=0;i<ssChat->Socket>ActiveConnections;i++) { ssChat->Socket>Connections[i]->SendText(temp+" Terhubung"); } MemoChat->Lines->Add(temp+" Terhubung"); 2.Event onClientDisconnect() Sama halnya dengan event onClientConnect(), event ini uga digunakan sebagai pemberitahuan bahwa ada client yang melakukan pemutusan koneksi. Perintah yang digunakan pada event ini sama dengan yang ada pada event onClientConnect(), hanya saja kata terhubung diganti dengan terputus. 3.Event onError() Event onError() digunakan didalam penanganan kesalahan atau error yang mungkin terjadi. Kesalahan dapat saja terjadi jika alamat IP client tidak berada pada satu jaringan yang sama dengan alamat IP server. Selain itu, jika client salah mendefenisikan alamat IP server, hal ini juga dapat menimbulkan error. Sehingga event ini dibutuhkan untuk memunculkan pesan error. Dengan menambahkan perintah ShowMessage("Error.."); pada baris event onError(). 4.Event onRead() Event onRead() digunakan dalam proses pertukaran data. Isi dari event ini tergantung pada jenis layanan apa yang ditangani oleh server socket tersebut. Pada aplikasi yang dibangun menggunkan tiga server socket yang menangani layanan yang berbeda-beda pula. Untuk itu isi dari ketiga event onRead() pada tiap server socket berbeda pula. 246 Event onRead() yang menangani layanan chatting berisi perintah seperti yang ditunjukkan pada Kode Program 2. Dilakukan deklarasi variabel bertipe AnsiString dan integer Variabel bertipe AnsiString mendefenisikan alamat IP client dan pesan yang dikirimkan dari client. Sedangkan variabel bertipe integer digunakan dalam proses perulangan(looping). Kode Program 2. Perintah event onRead() Server Socket Chat int i; AnsiString temp,temp2;//untuk temporarinya temp=Socket->ReceiveText(); temp2=Socket->RemoteAddress; for(i=0;i<ssChat->Socket>ActiveConnections;i++) { ssChat->Socket>Connections[i]->SendText(temp2+": "+temp); } MemoChat->Lines- Untuk server socket yang menangani layanan rekam medis morbiditas, dalam event onClientRead() dideklarasikan dua puluh variabel bertipe AnsiString dan sebuah variabel bertipe integer. Variabel bertipe AnsiString digunakan untuk menampung data rekam medis yang akan dilewatkan dari client ke server. Variabel bertipe AnsiSting antara lain, psn, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19. Variabel psn mendefenisikan pesan yang akan diterima server socket dengan menggunakan fungsi ReceiveText(). Sedangkan variabel f1 sampai f19 digunakan dalam proses pengisian data-data rekam medis kedalam database sesuai dengan aturan yang dibuat. Variabel i bertipe integer, mendefenisikan pesan ke berapa yang akan dilewatkan, membantu dalam proses perulangan (Kode Program 3). Sedangkan untuk server socket yang menangani layanan rekam medis hasil kegiatan K.I.A berisi perintah yang hampir sama dengan yang melayani data morbisitas. Yang membedakan hanya jumlah data yang terkait. Sehingga deklarasi variabel nya harus disesuaikan dengan jumlah data yang akan dimasukan dalam database. Konferensi Nasional Sistem Informasi 2011 Kode Program 3.. Perintah event OnClientRead() Server Socket Morbiditas AnsiString psn,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10, f11,f12,f13,f14,f15,f16,f17,f18,f19 ; psn=Socket->ReceiveText(); int i; f1="";f2="";f3="";f4="";f5="";f6="" 5. Event onListen(). Event ini ;f7="";f8="";f9="";f10="";f11="";f1 digunakan untuk memberitahukan saat 2="";f13="";f14="";f15="";f16="";f1 7="";f18="";f19=""; server mendengar ada client yang i=2; melakukan koneksi. Sehingga ditambahkan while(psn[i]!='#') perintah seperti “ShowMessage("login { f1=f1+psn[i]; Berhasil..!!");” maupun i++; “ShowMessage("login Berhasil..!!");” } sesuai i++; dengan kebutuhan. Sedangkan untuk client socket, kurang ..... s/d while(psn[i]!='>') lebih memiliki event-event sebagai berikut : { 1. Event onConnect() f19=f19+psn[i]; Saat client berhasil melakukan koneksi ke server maka perlu dilakukan konfirmasi sebagai pemeberitahuan bahwa client tersebut berhasil melakukan koneksi. Untuk itu event ini berfungsi untuk melakukan hal tersebut dengan menambahkan perintah berikut “MemoChat->Lines->Add("Terhubung ke Server..!!");”. 2. Event onError() Sama halnya dengan pada server socket, event ini dibutuhkan untuk memunculkan pesan error. Dengan menambahkan perintah ShowMessage("Error.."); pada baris event onError(). 3. Event onRead() Event onRead() disini ditambahkan hanya pada client socket yang menangani layanan chatting, dengan menambahkan perintah “MemoChat->Lines->Add(Socket>ReceiveText());” karena layanan rekam medis tidak memerlukan event ini. Untuk layanan rekam medis, perintahperintah untuk proses input data dimasukkan ke dalam tombol saat event onClick(). Proses pengiriman data ke server socket serta proses input data dapat dilihat pada Kode Program 4 untuk client socket yang menangani data morbiditas serta Kode Program 5 untuk client socket yang menangani data kegiatan K.I.A. Kode Program 4. Perintah Input Data Morbiditas csMorbiditas->Socket-> SendText("<INSERT#"+txtNo->Text+"#"+ cbBulan->Text+"#"+cbTahun>Text+"#"+txtNoDtd->Text+"#"+ txtNoTerperinci>Text+"#"+cbSebabSakit>Text+"#"+txtKasus1->Text+"#"+ txtKasus2->Text+"#"+txtKasus3>Text+"#"+txtKasus4->Text+"#"+ txtKasus5->Text+"#"+txtKasus6>Text+"#"+txtKasus7->Text+"#"+ txtKasus8->Text+"#"+txtLk>Text+"#"+txtPr->Text+"#"+ txtJumlahKasusBaru>Text+"#"+txtJmlKunjungan>Text+">"); Kode Program 5. Perintah Input Data Kegiatan K.I.A csKIA->Socket-> SendText("<INSERT#"+cbBulanKIA>Text+"#"+ cbTahunKIA->Text+"#"+cbPuskesmas>Text+"#"+cbDesa->Text+"#"+txtKi>Text+"#"+ txtK4->Text+"#"+txtBv>Text+"#"+txtB6->Text+"#"+ txtBid->Text+"#"+txtDr>Text+"#"+txtB2500->Text+"#"+ txtA2500->Text+"#"+txtNor>Text+"#"+txtVe->Text+"#"+ txtSc->Text+"#"+txtKeterangan>Text+">"); 4. Aplikasi Rekam Medis Aplikasi server dimulai dengan login pengguna untuk mengakses aplikasi server, setelah berhasil kemudian dilanjutkan dengan mengaktifkan server agar bisa berkomunikasi dengan tiap client serta membuka layanan. Setelah server socket aktif, dapat dilakukan proses melihat data rekam medis. Dalam kasus ini terdapat dua data rekam medis rawat jalan yaitu data keadaan morbiditas rawat jalan surveilans terpadu Rumah Sakit dan data hasil kegiatan K.I.A. Aplikasi server juga dapat melakukan beberapa proses manipulasi data seperti cari data dan hapus data berdasarkan bulan dan tahun. Aplikasi ini juga menyediakan layanan chatting sebagai fitur tambahan. Setelah selesai digunakan pengguna dapat melakukan proses logout untuk memutuskan hubungan serta keluar dari sistem. Aliran peristiwa yang terjadi pada sisi aplikasi server ini ditunjukkan pada Gambar 4. Adapun proses-proses yang terjadi pada 247 Konferensi Nasional Sistem Informasi 2011 aplikasi server yaitu lihat data, manipulasi data serta chatting. Client Start gagal Login Server Start Login gagal berhasil menentukan berhasil/tidak Koneksi ke Server menentukan login berhasil/tidak berhasil Pilih Data Start Server Pilih Data Input Data KIA Input Data Morbiditas Lihat Data Morbiditas Lihat Data KIA Manipulasi Data Morbiditas Manipulasi Data KIA Chatting Logout Chatting end Logout Gambar 5. Activity Diagram Aplikasi Client End Gambar 4. Activity Diagram aplikasi server Sama seperti pada apikasi server, pada aplikasi client juga diawali dengan proses login untuk memulainya. Setelah berhasil melakukan proses login, maka dilanjutkan dengan koneksi ke server agar dapat berkomunikasi dalam jaringan serta menerima layanan dari server. Setelah terhubung ke server yang sesuai, maka dapat dilakukan proses input data rekam medis. Dalam kasus ini terdapat dua data rekam medis rawat jalan yaitu data keadaan morbiditas rawat jalan surveilans terpadu Rumah Sakit dan data hasil kegiatan K.I.A. Aplikasi client dapat melakukan proses input data. Data yang dimasukkan aplikasi client dapat diakses pada aplikasi server. Sama halnya seperti aplikasi server, aplikasi ini juga menyediakan layanan chatting sebagai fitur tambahan. Setelah selesai digunakan pengguna dapat melakukan proses logout untuk memutuskan hubungan serta keluar dari sistem. Aliran peristiwa ini digambarkan oleh Gambar 5. Adapun proses-proses yang terjadi pada aplikasi client yaitu input data serta chatting. 248 Selain melakukan proses input data pertukaran informasi antara server dengan tiap aplikasi client juga dapat dilakukan dengan melakukan chatting yang bersifat broadcast (semua pesan yang dilewatkan dapat dibaca oleh semua client yang terkoneksi ke server). Gambaran hubungan antara server dan client ditunjukkan pada Gambar 6. Login Client Koneksi Server <<include>> <<include>> Input Data Manipulasi Data Client Transfer Data Login Server Gambar 6. Use Case Cara Kerja Aplikasi Gambar 7 memperlihatkan aliran – aliran aktifitas yang terjadi pada objek client, database dan server. Dimulai dari login server, proses dibukanya layanan oleh server, login pada sisi client, proses meminta layanan dari client ke server melalui permintaan koneksi client ke server, proses pengisian data di sisi client, server mengakses data yang telah dimasukan client ke dalam database, proses manipulasi data oleh server, sampai dengan logout sistem oleh kedua aplikasi client dan server. Gambar 8 merupakan sequence diagram yang menggambarkan cara kerja aplikasi Konferensi Nasional Sistem Informasi 2011 rekam medis dengan tiga objek yang saling berinteraksi yaitu objek client, server serta database. Client Database Server Start Login Server berhasil Login Client gagal menentukan berhasil/gagal Start Server gagal menentukan berhasil/gagal berhasil Koneksi ke Server Data tersimpan Input Data Lihat Data Manipulasi Data Chat Client Chat Server Client Logout Server Logout end Gambar 7. Activity Diagram Aplikasi : Client : Database Pada aplikasi server terdapat tiga server socket yang akan menangani tiap kasus yang berbeda. Borland C++ builder yang merupakan bahasa pemrograman yang digunakan dalam pembuatan aplikasi telah menyediakan tools yang dapat digunakan sebagai perantara atau jembatan antara aplikasi terdistribusi dalam hal ini, aplikasi server dan aplikasi client. Tools tersebut dapat langsung digunakan dengan menambahkan event-event yang diperlukan. Pada aplikasi server ditambahkan tiga buah server socket. Server socket yang pertama menangani layanan chatting, server socket yang kedua melayani layanan pertukaran data Keadaan Morbiditas Rawat Jalan dan server socket yang ketiga menangani layanan pertukaran data Hasil Kegiatan K.I.A. Untuk melakukan koneksi ke server socket, client socket harus mendefenisikan alamat IP server serta port server yang dituju. Nomor port merupakan alamat yang lebih spesifik untuk server socket. Satu port melayani satu layanan. Jadi, masing-masing server socket memiliki nomor port yang berbeda-beda. Aplikasi di sisi client dan server dibuat agar nyaman digunakan (user friendly). Antar muka aplikasi rekam medis yang dibangun ditunjukkan oleh Gambar 9 – Gambar 11. : Server 1: Login Server( ) 2: Start Server( ) 3: Login Client( ) 4: koneksi ke server( ) 5: Input Data( ) 6: Simpan Data( ) 7: Lihat Data( ) Gambar 9. Antar Muka Lihat Data 8: Manipulasi Data( ) 9: Chat Server( ) 10: Chat Client( ) 11: Logout Client( ) 12: Logout Server( ) Gambar 8. Sequence Diagram Aplikasi 249 Konferensi Nasional Sistem Informasi 2011 Daftar Rujukan Gambar 10. Antar Muka Input Data Morbiditas Gambar 11. Antar Muka Input Data K.I.A 5. Kesimpulan Pemanfaatan interkoneksi Socket API sebagai middleware mampu menjembatani dan menghubungkan dua aplikasi pada client dan server sehingga keduanya dapat saling melakukan pertukaran data. Pemanfaatan server socket ini juga dapat mengoptimalkan proses pertukaran data antar aplikasi, dalam hal ini pada aplikasi rekam medis sehingga proses penanganan berkas rekam medis pasien rawat jalan dapat ditangani dengan lebih baik. 250 [1] Werdiana, Wawan, 2002, Perkembangan Teknologi Informasi di Indonesia, Peneliti Pusat Penelitian Informatika Lembaga Ilmu Pengetahuan Indonesia, http://www.informatika.lipi.go.id/perkembanga n-teknologi-informasi-di-indonesia/. Diakses tanggal 25 April 2009. [2] Lammle, Todd, 2006, Introduction to Cisco ® Networking Technologies Study Guide. Wiley Publishing, Inc, USA. [3] Sopandi, Dede, 2005, Instalasi dan Konfigurasi Jaringan Komputer. Penerbit INFORMATIKA, Bandung. [4] Oetomo, dkk, 2006, Client Server dan Sistem Terdistribusi. PenerbitANDI, Yogyakarta. [5] Morgan, David, 2003, Linux Networking: socket rogramming, basis for services, http://homepage.smc.edu/morgan_david/cs70/i mages/sockets.gif. Diakses tanggal 15 April 2009. [6] Nugroho, Adi, 2005, Rational Rose untuk Pemodelan Berorientasi Objek. Penerbit INFORMATIKA, Bandung.