You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

612 lines
25 KiB

Imports DPM2016.MyCombobox
Public Class PatientDetailsFirma
#Region "Properties"
Dim m_patientnr As Integer
Property PatientNr As Integer
Get
Return m_patientnr
End Get
Set(value As Integer)
Try
Me.SuspendLayout()
m_patientnr = value
Fill_Stammdaten()
log.Writelog("Partnerdetails: Get_Data Start", clsLog.Logtype.Information)
Get_Data()
log.Writelog("Partnerdetails: Get_Data Ende", clsLog.Logtype.Information)
AddChanges(Me)
Me.cbboxNrAnrede.Select()
Me.HasChanges = False
Globals.EVH.Fire_PatName_Changed(Me.Patientname, Me.PatientNr)
Catch ex As Exception
log.Writelog("Partnerdetails: Property PatientNr: " + ex.Message, clsLog.Logtype.ApplError)
End Try
Me.Label13.Visible = False
Me.chklbAdresstyp.Visible = False
Me.ResumeLayout()
End Set
End Property
Dim m_patname As String
Property Patientname As String
Get
Return Me.txtnrprivat.Text + " " + Me.txtName.Text + " " + Me.txtVorname.Text + " " + Me.txtOrt.Text
End Get
Set(value As String)
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 FormReadonly As Boolean = False
Dim log As New clsLog
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
#End Region
#Region "Closing / Check_Changes"
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
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"
''' <summary>
''' Allg Eventhandler für Chanage-Ereignise festlegen
''' </summary>
''' <param name="Container"></param>
''' <remarks></remarks>
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
''' <summary>
''' Envent-Handler für Change-Ereignisse
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' 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
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schlüssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
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()
' If Globals.Stammdaten_Geladen = True Then Exit Sub
If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then
chklbAdresstyp.Items.Clear()
chklbAdresstyp.Items.Add("Leistungserbringer")
End If
log.Writelog("PartnerDetails: Fill_Stammdaten", clsLog.Logtype.Information)
Me.cbboxNrAnrede.Table = "Anrede"
Me.cbboxNrAnrede.Displaymember = "Anrede_D"
Me.cbboxNrAnrede.Valuemember = "NRANREDE"
Me.cbboxNRTitel.Table = "Titel"
Me.cbboxNRTitel.Displaymember = "Titel_D"
Me.cbboxNRTitel.Valuemember = "NRTITEL"
Me.cbboxSprache.Table = "Sprache"
Me.cbboxSprache.Displaymember = "Sprachbezeichnung"
Me.cbboxSprache.Valuemember = "Sprachcode"
Me.cbboxStatus.Table = "Status"
Me.cbboxStatus.Displaymember = "Status"
Me.cbboxStatus.Valuemember = "nrstatus"
Me.cbboxGeschlecht.Table = "Geschlecht"
Me.cbboxGeschlecht.Displaymember = "Geschlecht"
Me.cbboxGeschlecht.Valuemember = "NrGeschlecht"
Me.cbboxNRArbeitgeber.Dataselection = DB.Get_SQL(1)
Me.cbboxNRArbeitgeber.Table = "Arbeitgeber"
Me.cbboxNRArbeitgeber.Displaymember = "Firmenname"
Me.cbboxNRArbeitgeber.Valuemember = "nrfirma"
Try
Me.ClsStammdaten_flat1.Tablename = "PADM_Ansprechpartner"
Me.ClsStammdaten_flat1.SQL = "Select * from padm_ansprechpartner where aktiv=1 and nrprivat=" + Me.PatientNr.ToString
Me.ClsStammdaten_flat1.get_data()
Me.ClsStammdaten_flat1.ToolStripButton5.Visible = False
Catch
End Try
log.Writelog("PartnerDetails: Fill_Stammdaten Ende", clsLog.Logtype.Information)
Globals.Stammdaten_Geladen = True
End Sub
Sub Get_Data()
Dim ctlname As String
Dim colname As String
Try
If Globals.Hide_Gueltig_bis Then
Me.Label15.Visible = False
Me.dtgueltigbis.Visible = False
End If
DB.Get_Tabledata("privat", " where nrprivat=" + Me.PatientNr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
colname = c.ColumnName
Debug.Print(colname)
For Each Ctl As Control In Me.Controls
'Dim objtype As System.Type = Ctl.GetType
'If objtype.Name = "Label" Then
' Exit For
'End If
ctlname = Ctl.Name
log.Writelog("Partnerdtails: Get_Data: " + Ctl.Name, clsLog.Logtype.Information)
If UCase(Ctl.Name) = "TXT" + UCase(c.ColumnName) Then
log.Writelog("--Partnerdtails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Ctl.Text = r(c.ColumnName).ToString
Exit For
End If
If UCase(Ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
log.Writelog("--Partnerdtails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
If (c.ColumnName) = "sprache" Then
Dim a As Integer = 1
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) = "CBTXTBOX" + UCase(c.ColumnName) Then
log.Writelog("--Partnerdtails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Dim ct As ComboBox
Dim o As Object = Ctl
Try
o.text = r(c.ColumnName)
Catch
o.Text = ""
End Try
Exit For
End If
If UCase(Ctl.Name) = "DT" + UCase(c.ColumnName) Then
log.Writelog("--Partnerdtails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Dim dt As DateTimePicker
dt = Ctl
'Try
' dt.Value = r(c.ColumnName)
'Catch
' dt.Value = " . . "
'End Try
Try
dt.Value = r(c.ColumnName)
dt.Format = DateTimePickerFormat.Short
Catch
dt.CustomFormat = " " 'An empty SPACE
dt.Format = DateTimePickerFormat.Custom
End Try
Exit For
End If
'If UCase(Ctl.Name) = "CHKMAIL_KOMMUNIKATION" Then
' MsgBox("Hallo")
'End If
'If UCase(r(c.ColumnName)) = "MAIL_KOMMUNIKATION" Then
' MsgBox("Bello")
'End If
If UCase(Ctl.Name) = "CHK" + UCase(c.ColumnName) Then
Dim cb As CheckBox
cb = Ctl
Try
cb.Checked = r(c.ColumnName)
Catch ex As Exception
End Try
Exit For
End If
Next
If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then
If LCase(c.ColumnName) = "behandler" Then
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
End If
Else
Select Case LCase(c.ColumnName)
Case "patient"
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "garant"
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "gesvertreter"
Set_Adresstype("Ges. Vertreter", r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "hausarzt"
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "zahnarzt"
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "behandler"
Set_Adresstype(c.ColumnName, r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "dhpat"
Set_Adresstype("DH-Patient", r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "nichtaufbieten"
Set_Adresstype("Nicht Aufbieten", r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "nichtannehmen"
Set_Adresstype("Nicht annehmen", r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "betreibung"
Set_Adresstype("Betreibung vorhanden", r(c.ColumnName).ToString)
log.Writelog("--Partnerdtails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
End Select
End If
Next
Me.ClsStammdaten_flat1.SQL = "Select * from privat_ansprechpartner where nrprivat=" + Me.PatientNr.ToString
Me.ClsStammdaten_flat1.AllowAddNew = False
Me.ClsStammdaten_flat1.Tablename = "Privat_Ansprechpartner"
Me.ClsStammdaten_flat1.get_data()
Catch ex As Exception
log.Writelog("Privatdetails: Get_Data: " + ctlname + " / " + colname + " " + ex.Message, clsLog.Logtype.ApplError)
End Try
End Sub
Private Sub Set_Adresstype(ByVal feldname, value)
If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then
If value <> False Then chklbAdresstyp.SetItemCheckState(0, CheckState.Checked) Else chklbAdresstyp.SetItemCheckState(0, CheckState.Unchecked)
End If
Dim i As Integer
For i = 0 To Me.chklbAdresstyp.Items.Count - 1
If UCase(chklbAdresstyp.Items(i).ToString) = UCase(feldname) Then
Try
If value <> False Then chklbAdresstyp.SetItemCheckState(i, CheckState.Checked) Else chklbAdresstyp.SetItemCheckState(i, CheckState.Unchecked)
Catch ex As Exception
chklbAdresstyp.SetItemCheckState(i, CheckState.Unchecked)
End Try
End If
Next
End Sub
#End Region
#Region "Daten speichern"
Public Sub Save_Data()
If Me.HasChanges = False Then Exit Sub
DB.Get_Tabledata("privat", " where nrprivat=" + Me.PatientNr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
For Each Ctl As Control In Me.Controls
If UCase(Ctl.Name) = "TXT" + UCase(c.ColumnName) Then
If UCase(Ctl.Name) <> "TXTMUTIERT_AM" And UCase(Ctl.Name) <> "TXTERSTLLT_AM" Then
r(c.ColumnName) = Ctl.Text
Exit For
End If
End If
If UCase(Ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
Dim ct As MyCombobox
Dim o As Object = Ctl
Try
r(c.ColumnName) = o.selectedvalue
Catch ex As Exception
r(c.ColumnName) = 0
End Try
Exit For
End If
If UCase(Ctl.Name) = "CBTXTBOX" + UCase(c.ColumnName) Then
Dim ct As MyCombobox
Dim o As Object = Ctl
Try
r(c.ColumnName) = o.text
Catch ex As Exception
r(c.ColumnName) = ""
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 cb As CheckBox
cb = Ctl
r(c.ColumnName) = cb.Checked
Exit For
End If
Next
If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then
Select Case LCase(c.ColumnName)
Case "behandler"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
End Select
Else
Select Case LCase(c.ColumnName)
Case "patient"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
Case "garant"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
Case "gesvertreter"
r(c.ColumnName) = Get_Adresstype("Ges. Vertreter", r(c.ColumnName))
Case "hausarzt"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
Case "zahnarzt"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
Case "behandler"
r(c.ColumnName) = Get_Adresstype(c.ColumnName, r(c.ColumnName))
Case "dhpat"
r(c.ColumnName) = Get_Adresstype("DH-Patient", r(c.ColumnName))
Case "nichtaufbieten"
r(c.ColumnName) = Get_Adresstype("nicht aufbieten", r(c.ColumnName))
Case "nichtannehmen"
r(c.ColumnName) = Get_Adresstype("nicht annehmen", r(c.ColumnName))
Case "betreibung"
r(c.ColumnName) = Get_Adresstype("Betreibung vorhanden", r(c.ColumnName))
End Select
End If
Next
r("Mutiert_am") = Now
r("mutierer") = Globals.ActUser
DB.Update_Data()
Me.HasChanges = False
End Sub
Private Function Get_Adresstype(ByVal feldname, value) As Integer
Try
If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then
If UCase(feldname) = "BEHANDLER" Then Return chklbAdresstyp.GetItemChecked(0)
Else
Dim i As Integer
For i = 0 To Me.chklbAdresstyp.Items.Count - 1
If UCase(chklbAdresstyp.Items(i).ToString) = UCase(feldname) Then
Return chklbAdresstyp.GetItemChecked(i)
End If
Next
End If
Catch
Return -1
End Try
End Function
#End Region
Public Function Create_new()
End Function
Private Sub evh_PatSaved(Nr As Integer) Handles evh.PatSaved
If Nr = Me.PatientNr Then
Me.Save_Data()
End If
End Sub
Private Sub cbboxNrAnrede_Leave(sender As Object, e As EventArgs) Handles txtVorname.Leave, txtName.Leave, cbboxNrAnrede.Leave, cbboxNRTitel.Leave
Dim alt As String = Me.txtBriefanrede.Text
Dim neu As String
If Me.cbboxNrAnrede.Text = "Frau" Then
neu = "Sehr geehrte Frau "
If Me.cbboxNRTitel.Text <> "" Then neu = neu + Me.cbboxNRTitel.Text + " "
neu = neu + Me.txtName.Text
Else
neu = "Sehr geehrter Herr "
If Me.cbboxNRTitel.Text <> "" Then neu = neu + Me.cbboxNRTitel.Text + " "
neu = neu + Me.txtName.Text
End If
If alt <> neu Then Me.txtBriefanrede.Text = neu
End Sub
Private Sub txtPLZ_Leave(sender As Object, e As EventArgs) Handles txtPLZ.Leave
If Me.txtOrt.Text = "" Then IntTables.Get_Ort_Kantton(Me.txtPLZ.Text, Me.txtOrt, Me.cbtxtboxKanton)
End Sub
Private Sub PatientDetails_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ClsStammdaten_flat1.ToolStripButton5.Visible = False
End Sub
Private Sub cbboxNrAnrede_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbboxNrAnrede.SelectedIndexChanged
If Me.cbboxNrAnrede.Text = "Herr" Then Me.cbboxGeschlecht.SelectedValue = 2 Else Me.cbboxGeschlecht.SelectedValue = 1
End Sub
Private Sub lblName_Click(sender As Object, e As EventArgs) Handles lblName.Click
End Sub
Private Sub txtName_TextChanged(sender As Object, e As EventArgs) Handles txtName.TextChanged
End Sub
Private Sub ClsStammdaten_flat1_Load(sender As Object, e As EventArgs) Handles ClsStammdaten_flat1.Load
End Sub
Private Sub NeuerAnsprechpartnerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuerAnsprechpartnerToolStripMenuItem.Click
Dim f As New frmPrivatAnsprechpartner
f.is_new = True
f.id = 0
f.nrprivat = txtnrprivat.Text
f.ShowDialog()
If f.DialogResult = DialogResult.OK Then Me.ClsStammdaten_flat1.get_data()
End Sub
Private Sub BearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BearbeitenToolStripMenuItem.Click
Try
Dim f As New frmPrivatAnsprechpartner
f.is_new = False
f.id = Me.ClsStammdaten_flat1.c1daten.Columns(0).Value
f.nrprivat = txtnrprivat.Text
f.ShowDialog()
Catch
End Try
End Sub
Private Sub LöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LöschenToolStripMenuItem.Click
Try
Me.ClsStammdaten_flat1.c1daten.Columns("Aktiv").Value = False
Catch
End Try
End Sub
End Class