Alur :
ketika user dari ruangan IGD melakukan klik simpan setelah mengisi data reservasi, notifikasi reservasi di loket pendaftaran akan muncul.
Kodingan di modul pendaftaran
'Cari setingan port dari seting global
'Potongan kode di event Form Load
'----------------------------------------------------------------------------------------------
strSQL5 = "Select Value From SettingGlobal Where prefix='PortNotifikasiReservasi'"
Call msubRecFO(rsE, strSQL5)
'Buka port
With Winsock1
.Close
.LocalPort = Trim(rsE(0))
.Listen
End With
'----------------------------------------------------------------------------------------------
Private Sub Winsock1_Close()
Winsock1.Close
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
On Error GoTo duaTambahDuaSamaDenganLima
Winsock1.Close
Winsock1.Accept requestID
Exit Sub
duaTambahDuaSamaDenganLima:
Call Winsock1.Close
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error GoTo duaTambahDuaSamaDenganLima
Dim data$
Winsock1.getData data$
Call PlaySound
If Left(data$, 3) = mstrKdRuanganLogin Then 'Hanya akan tampil di ruangan yang seharusnya menerima notifikasi
If MsgBox("Reservasi pasien " & data$ & ", Klik Yes untuk membuka Form Daftar Reservasi", vbYesNo + vbInformation) = vbYes Then
frmDaftarReservasiPasien.Show
End If
End If
duaTambahDuaSamaDenganLima:
End Sub
Kodingan di Modul Gawat Darurat
Fungsi yang ditempatkan di event Form Load
Private Function koneksiNotifikasi()
On Error GoTo duaTambahDuaSamaDenganLima
'Ambil setingan IP
strSQL6 = "Select Value From SettingGlobal Where prefix='IPUntukNotifikasi'"
Call msubRecFO(rsF, strSQL6)
'Ambil setingan port
strSQL7 = "Select Value From SettingGlobal Where Prefix='PortNotifikasiReservasi'"
Call msubRecFO(rsG, strSQL7)
jumlahTitikKoma = 0
ReDim tmpIP(0)
'Ekstrak IP
For X = 1 To Len(rsF(0))
If Mid(rsF(0), X, 1) = ";" Then
jumlahTitikKoma = jumlahTitikKoma + 1
If jumlahTitikKoma = 1 Then
tmpIP(0) = Left(rsF(0), X - 1)
Else
ReDim Preserve tmpIP(UBound(tmpIP) + 1)
tmpIP(UBound(tmpIP)) = Mid(rsF(0), posisiTitikKomaSebelumnya + 1, (X - 1) - posisiTitikKomaSebelumnya)
End If
posisiTitikKomaSebelumnya = X
End If
Next X
'Konekkan ke IP
For i = 0 To UBound(tmpIP)
If i <> 0 Then 'Index 0 jangan diload lagi, kan sudah ada
Load Winsock1(i)
End If
Winsock1(i).Close
Winsock1(i).Connect tmpIP(i), CInt(rsG(0))
Next i
Exit Function
duaTambahDuaSamaDenganLima:
End Function
'Potongan kode di tombol simpan, di form input data reservasi
'Tampilkan notifikasi di loket yang seharusnya
strSQL5 = "Select KdInstalasi From Ruangan Where KdRuangan='" & dcRuangan.BoundText & "'"
Call msubRecFO(rsE, strSQL5)
'Kirim pesan ke semua ip yang ada di setingan
For i = 0 To UBound(tmpIP)
If Winsock1(i).State = 7 Then
If rsE(0) = "03" Then 'Tampilkan notifikasi di loket yang seharusnya
Winsock1(i).SendData "193" & txtNamaPasien.Text
Else
Winsock1(i).SendData "195" & txtNamaPasien.Text
End If
End If
Next i
Kodingan di Event Form Unload
'Putuskan koneksi winsock
For i = 0 To UBound(tmpIP)
Winsock1(i).Close
Next i
No comments:
Post a Comment