Public Class PatientAbrechnung
#Region "Properties"
Dim m_patientnr As Integer
Property PatientNr As Integer
Get
Return m_patientnr
End Get
Set(value As Integer)
Try
If value = 0 Then Exit Property
m_patientnr = value
Fill_Stammdaten()
Get_Data()
Catch ex As Exception
log.Writelog("PatientAbrechnung: PatientNr Set: " + ex.Message, clsLog.Logtype.ApplError)
Dim a As Integer = 1
End Try
End Set
End Property
Dim m_haschanges As Boolean
Property HasChanges As Boolean
Get
Return m_haschanges
End Get
Set(value As Boolean)
m_haschanges = value
End Set
End Property
#End Region
#Region "Deklarationen"
Dim DB As New clsDB
Dim log As New clsLog
Dim FormReadonly As Boolean = False
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
#End Region
#Region "Closing / Check_Changes"
'''
''' Prüfung, ob Datenänderungen vorgenommen wurden.
'''
'''
Private Function Check_Changes() As Boolean
If Me.FormReadonly Then
Return True
Exit Function
End If
Dim msgres As MsgBoxResult
If Me.HasChanges Then
msgres = MsgBox("Daten wurden verändert. Wollen Sie die Änderungen speichern", vbYesNo + vbQuestion)
Select Case msgres
Case MsgBoxResult.Yes
Save_Data()
Return True
Case MsgBoxResult.Cancel
Return False
Case MsgBoxResult.No
Me.HasChanges = False
Return True
End Select
Else
Return True
End If
End Function
#End Region
#Region "Eventhandler ChangeEreignisse"
'''
''' Allg Eventhandler für Chanage-Ereignise festlegen
'''
'''
'''
Private Sub AddChanges(ByVal Container As Control)
Dim l As New List(Of Control)
Me.GetControl(Me, "*", l)
Dim evh As EventHandler = AddressOf ChangesMade
For Each c As Control In l
If TypeOf c Is TextBox Then
Dim ctl As TextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is MaskedTextBox Then
Dim ctl As MaskedTextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is ComboBox Then
Dim ctl As ComboBox = c
AddHandler ctl.SelectedValueChanged, evh
End If
If TypeOf c Is RichTextBox Then
Dim ctl As RichTextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is CheckBox Then
If c.Name <> "cboxNurAktive" Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
End If
If TypeOf c Is DateTimePicker Then
Dim ctl As DateTimePicker = c
AddHandler ctl.ValueChanged, evh
End If
If TypeOf c Is CheckedListBox Then
Dim ctl As CheckedListBox = c
AddHandler ctl.ItemCheck, AddressOf ChecketListBoxChange
End If
Next
End Sub
'''
''' Envent-Handler für Change-Ereignisse
'''
'''
'''
'''
Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs)
Me.HasChanges = True
Dim objtype As System.Type = sender.GetType
If objtype.Name = "MaskedTextBox" Then
Dim o As MaskedTextBox = sender
If o.Text = "01.01.1900" Then o.Text = " . . "
End If
End Sub
Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs)
Me.HasChanges = True
End Sub
'''
''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet
''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung
'''
''' Base-Contrlo (z.B. aktuelles Formular
''' Schlüssel welcher gesucht werden soll
''' Liste der gefundenen Objekte
''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
'''
'''
Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean
If L Is Nothing Then L = New List(Of Control)
Dim Gut As Boolean
Dim ReturnFlag As Boolean = False
If Key IsNot Nothing Then Key = Key.ToLower
If BaseControl.HasChildren = True Then
For Each ctl As Control In BaseControl.Controls
Gut = False
If Key Is Nothing Then
Gut = True
Else
If ctl.Name.Length >= Key.Length Then
Key = Key.ToLower
If Key.StartsWith("*") Then
If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True
ElseIf Key.EndsWith("*") Then
If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True
Else
If Key = ctl.Name.ToLower Then Gut = True
End If
End If
End If
If Gut = True Then
L.Add(ctl)
If ReturnAtFirstElement = True Then ReturnFlag = True
End If
If ReturnFlag = False Then
Call GetControl(ctl, Key, L)
End If
Next
End If
If L.Count - 1 > -1 Then
Return True
Else
Return False
End If
End Function
#End Region
#Region "Daten_Laden"
Public Sub Fill_Stammdaten()
Me.cbboxNrRGTyp.Table = "RGTyp"
Me.cbboxNrRGTyp.Displaymember = "BezD"
Me.cbboxNrRGTyp.Valuemember = "nrrgtyp"
Me.cbboxESTyp.Table = "ESTyp"
Me.cbboxESTyp.Displaymember = "estyp"
Me.cbboxESTyp.Valuemember = "nrestyp"
Me.cbboxzazRecallTyp.Table = "RecallTyp"
Me.cbboxzazRecallTyp.Displaymember = "RecallTyp"
Me.cbboxzazRecallTyp.Valuemember = "nrrecalltyp"
Me.cbboxnrbehandler.Dataselection = DB.Get_SQL(2)
Me.cbboxnrbehandler.Table = "Behandler"
Me.cbboxnrbehandler.Displaymember = "Name"
Me.cbboxnrbehandler.Valuemember = "nrprivat"
Me.cbboxNrGesVertreter.Dataselection = DB.Get_SQL(3)
Me.cbboxNrGesVertreter.Table = "GesVertreter"
Me.cbboxNrGesVertreter.Displaymember = "Name"
Me.cbboxNrGesVertreter.Valuemember = "nrprivat"
Me.cbboxNrGarant.Dataselection = DB.Get_SQL(4)
Me.cbboxNrGarant.Table = "Garant"
Me.cbboxNrGarant.Displaymember = "Name"
Me.cbboxNrGarant.Valuemember = "nrprivat"
Me.cbboxNRVS.Dataselection = DB.Get_SQL(5)
Me.cbboxNRVS.Table = "Versicherung"
Me.cbboxNRVS.Displaymember = "Firmenname"
Me.cbboxNRVS.Valuemember = "nrfirma"
Me.cbboxNRKK.Dataselection = DB.Get_SQL(6)
Me.cbboxNRKK.Table = "Krankenkasse"
Me.cbboxNRKK.Displaymember = "Firmenname"
Me.cbboxNRKK.Valuemember = "nrfirma"
Me.CBBOXNRIV.Dataselection = DB.Get_SQL(7)
Me.CBBOXNRIV.Table = "IVStelle"
Me.CBBOXNRIV.Displaymember = "Firmenname"
Me.CBBOXNRIV.Valuemember = "nrfirma"
Me.CBBOXNRFs.Dataselection = DB.Get_SQL(8)
Me.CBBOXNRFs.Table = "Fürsorgestelle"
Me.CBBOXNRFs.Displaymember = "Firmenname"
Me.CBBOXNRFs.Valuemember = "nrfirma"
Me.cbboxnrhausarzt.Dataselection = DB.Get_SQL(13)
Me.cbboxnrhausarzt.Table = "Hausarzt"
Me.cbboxnrhausarzt.Displaymember = "Name"
Me.cbboxnrhausarzt.Valuemember = "nrprivat"
Me.cbboxnrzahnarzt.Dataselection = DB.Get_SQL(14)
Me.cbboxnrzahnarzt.Table = "Zahnarzt"
Me.cbboxnrzahnarzt.Displaymember = "Name"
Me.cbboxnrzahnarzt.Valuemember = "nrprivat"
End Sub
Sub Get_Data()
DB.Get_Tabledata("privat", " where nrprivat=" + Me.PatientNr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
Get_Data_Controls(Me, r)
AddChanges(Me)
Me.HasChanges = False
End Sub
Sub Get_Data_Controls(ByVal ictl As Control, ByRef R As DataRow)
For Each ctl As Control In ictl.Controls
If ctl.Controls.Count = 0 Or (ctl.Controls.Count = 1 And Microsoft.VisualBasic.Left(UCase(ctl.Name), 5) = "CBBOX") Then
get_data_for_control(ctl, R)
Else
Get_Data_Controls(ctl, R)
End If
Next
End Sub
Sub get_data_for_control(ByRef ctl As Control, ByRef R As DataRow)
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
Try
If UCase(ctl.Name) = "TXT" + UCase(c.ColumnName) Then
ctl.Text = R(c.ColumnName)
Exit For
End If
If UCase(ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
If UCase(c.ColumnName) = "NRFS" Then
End If
Dim ct As MyCombobox
Dim o As Object = ctl
Try
o.SelectedValue = R(c.ColumnName)
Catch
o.selectedvalue = -1
End Try
Exit For
End If
If UCase(ctl.Name) = "DT" + UCase(c.ColumnName) Then
Dim dt As DateTimePicker
dt = ctl
dt.Value = R(c.ColumnName)
Exit For
End If
If UCase(ctl.Name) = "CHK" + UCase(c.ColumnName) Then
Dim dt As CheckBox
dt = ctl
Try
dt.Checked = R(c.ColumnName)
Exit For
Catch
dt.Checked = False
End Try
End If
Catch ex As Exception
MsgBox(ex.Message + " / " + ctl.Name + " / " + R(c.ColumnName))
End Try
Next
End Sub
#End Region
#Region "Daten speichern"
Public Sub Save_Data()
DB.Get_Tabledata("privat", " where nrprivat=" + Me.PatientNr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
Save_Data_Controls(Me, r)
r("Mutiert_am") = Now
r("mutierer") = Globals.ActUser
DB.Update_Data()
Me.HasChanges = False
End Sub
Sub Save_Data_Controls(ByVal ictl As Control, ByRef r As DataRow)
For Each ctl As Control In ictl.Controls
If ctl.Controls.Count = 0 Or (ctl.Controls.Count = 1 And Microsoft.VisualBasic.Left(UCase(ctl.Name), 5) = "CBBOX") Then
Save_Data_for_Control(ctl, r)
Else
Save_Data_Controls(ctl, r)
End If
Next
End Sub
Sub Save_Data_for_Control(ByRef ctl As Control, ByRef r As DataRow)
Dim ctlname As String
Dim colname As String
ctlname = ctl.Name
Try
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
colname = c.ColumnName
If UCase(ctl.Name) = "TXT" + UCase(c.ColumnName) Then
r(c.ColumnName) = ctl.Text
Exit For
End If
If UCase(ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
Dim ct As MyCombobox
Dim o As Object = ctl
Try
If o.selectedvalue Is System.DBNull.Value Or o.selectedvalue Is Nothing Then
r(c.ColumnName) = -1
Else
r(c.ColumnName) = o.selectedvalue
End If
Catch ex As Exception
r(c.ColumnName) = -1
End Try
Exit For
End If
If UCase(ctl.Name) = "DT" + UCase(c.ColumnName) Then
Dim dt As DateTimePicker
dt = ctl
r(c.ColumnName) = dt.Value
Exit For
End If
If UCase(ctl.Name) = "CHK" + UCase(c.ColumnName) Then
Dim dt As CheckBox
dt = ctl
r(c.ColumnName) = dt.Checked
Exit For
End If
Next
Catch ex As Exception
log.Writelog("Privatdetails: Get_Data: " + ctlname + " / " + colname + " " + ex.Message, clsLog.Logtype.ApplError)
End Try
End Sub
#End Region
Private Sub evh_PatSaved(Nr As Integer) Handles evh.PatSaved
If Nr = Me.PatientNr Then
Me.Save_Data()
End If
End Sub
End Class