KURT: Unterschied zwischen den Versionen

Aus Datenschutz
Zur Navigation springen Zur Suche springen
Zeile 9: Zeile 9:
  
 
;KURT - Korruptionsschutz-Schnellprüfprogramm
 
;KURT - Korruptionsschutz-Schnellprüfprogramm
;und Berichtsgenerierung per E-Mail, (c) 2020 Frank Werner, Stadt Leichlingen (Rheinland)
+
;und Berichtsgenerierung per E-Mail, (c) 2020 Frank Werner
 
;Prototyp für die Android-App, das eBook, die Entscheidungsdatenbank,
 
;Prototyp für die Android-App, das eBook, die Entscheidungsdatenbank,
 
;Fragebögen, Formulare und die HTML-Seiten
 
;Fragebögen, Formulare und die HTML-Seiten

Version vom 21. Juli 2020, 09:15 Uhr

KURT (Korruptionsschutz- und Revisions-Tool) ist ein Programm, mit dem öffentliche Stellen prüfen können, ob sie ihren Pflichten nach Korruptionsschutzgesetz NRW nachgekommen sind oder nicht. KURT stellt dabei systematisch Fragen und bietet eine Zusammenfassung nebst Ergebnis am Ende zum Versand per E-Mail an.

  • KURT wurde in AutoIt geschrieben und bietet eine Sprachausgabe.

Quelltext:


;KURT - Korruptionsschutz-Schnellprüfprogramm
;und Berichtsgenerierung per E-Mail, (c) 2020 Frank Werner
;Prototyp für die Android-App, das eBook, die Entscheidungsdatenbank,
;Fragebögen, Formulare und die HTML-Seiten

;To-Do-Liste
;Nachweispflicht

;Virenscanner-Warnungen verhindern
#pragma compile(UPX, False)

;Module einlesen
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <Inet.au3>

;Globale Variable
Global $Bericht = "" ;Der zwischengespeicherte Bericht
Global $i  = 0       ;Index durch den Fragebogen-Array

;Der Fragebogen: 22 Zeilen, 4 Spalten, Index beginnt bei 0!!
;Spalten: Nr. der Frage, Frage, Nächste Nummer bei JA, Nächste Nummer bei NEIN
;Wenn die nächsten Fragenummern beide Null sind, ist der Prüfbogen beendet
Global $Daten [21][4] = [ _
   [00, "Handelt es sich bei der zu untersuchenden Stelle um eine öffentliche Stelle?", 01, 18], _
   [01, "Handelt es sich bei dieser öffentlichen Stelle um eine kleine kreisangehörige Gemeinde (mit weniger als 20.000 Einwohnern)?", 18, 02],  _
   [02, "Gibt es bei dieser öffentlichen Stelle Bereiche, in denen Einfluss auf Aufträge, Fördermittel, Genehmigungen, Gebote oder Verbote genommen werden kann?", 03, 09], _
   [03, "Sind diese Bereiche als 'korruptionsgefährdet' (z. B. in einer Dienstanweisung) festgelegt?", 05, 04], _
   [04, "PFLICHTVERLETZUNG (§ 19 Abs. 2 Korruptionsbekämpfungsgesetz): Korruptionsgefährdete Bereiche müssen schriftlich erklärt werden!", 19, 19], _
   [05, "Sind Beschäftigte in diesen Bereichen länger als fünf Jahre ununterbrochen eingesetzt?", 06, 09], _
   [06, "PFLICHTVERLETZUNG (§ 21 Korruptionsbekämpfungsgesetz): Sie sind von der Rotationspflicht abgewichen. Das ist nur aus rechtlichen oder tatsächlichen Gründen erlaubt!", 19, 19], _
   [07, "Wurden die Gründe für die Abweichung von der Rotationspflicht dokumentiert und der Aufsichtsbehörde gemeldet?", 09, 08], _
   [08, "PFLICHTVERLETZUNG (§ 21 Korruptionsbekämpfungsgesetz): Die Gründe müssen dokumentiert und der Aufsichtsbehörde gemeldet werden!", 19, 19], _
   [09, "Geben politische Beamte jährlich über Beruf, Beraterverträge, Mitgliedschaften in Gremien, Vereinen oder privatrechtlichen Unternehmen Auskunft?", 11, 10], _
   [10, "PFLICHTVERLETZUNG (§ 16 Korruptionsbekämpfungsgesetz): Politische Beamte müssen jährlich berichten!", 19, 19], _
   [11, "Zeigen politische Beamte und Abgeordnete vor Übernahme oder innerhalb von fünf Jahren nach dem Eintritt in den Ruhestand Nebenbeschäftigungen an?", 13, 12], _
   [12, "PFLICHTVERLETZUNG (§ 17 Abs. 2 Korruptionsbekämpfungsgesetz): Politische Beamte müssen diese Angaben machen!", 19, 19], _
   [13, "Erfolgt eine jährliche Aufstellung aller Nebeneinnahmen der Abgeordneten und politischen Beamten?", 15, 14], _
   [14, "PFLICHTVERLETZUNG (§ 17 Abs. 2 Korruptionsbekämpfungsgesetz): Politische Beamte müssen diese Angaben machen!", 19, 19], _
   [15, "Gibt es ehemalige Beschäftigte, die aus ihrer früheren Tätigkeit Versorgungsbezüge o. ä. erhalten?", 16, 20], _
   [16, "Werden diese Beschäftigten schriftlich auf die Anzeigepflicht hingewiesen und der Hinweis aktenkundig gemacht?", 20, 17], _
   [17, "PFLICHTVERLETZUNG (§ 18 Abs. 1 Korruptionsbekämpfungsgesetz, § 41 Beamtenstatusgesetz, § 52 Abs. 5 Landesbeamtengesetz): Hinweis ist Pflicht!", 19, 19], _
   [18, "Das Korruptionsbekämpfungsgesetz gilt nur für öffentliche Stellen mit mehr als 20.000 Einwohnern!", 00, 00], _
   [19, "Die Stelle hat ihre Sorgfaltspflicht NICHT ERFÜLLT!", 00, 00], _
   [20, "Die Stelle hat ihre Sorgfaltspflicht ERFÜLLT!", 00, 00] _
   ]

;Sprachsystem starten
Func StartTTS()
  Return ObjCreate("SAPI.SpVoice")
EndFunc

;Hier spricht der Computer den übergebenen Text
Func Speak(ByRef $Object, $sText)
  $Object.Speak($sText)
EndFunc

;Ausgeben der Frage, Fortschreiben des Berichts, Rückgabe der Antwort
Func Frage ($FT)
  $Bericht = $Bericht & $FT
  Speak ($Default, $FT)
  $Antwort = (MsgBox($MB_YESNO, "Frage von EUGEN", $FT) = $IDYES)
  If $Antwort Then
     $Bericht = $Bericht & "=> JA" & @CRLF & @CRLF
  Else
     $Bericht = $Bericht & "=> NEIN" & @CRLF & @CRLF
  EndIf
  Return $Antwort
EndFunc

;Ausgeben von Informationstext, Fortschreiben des Berichts, keine Rückgabe
Func Info ($IT)
   $Bericht = $Bericht & "+++ " & $IT & " +++" & @CRLF & @CRLF
   Speak ($Default, $IT)
   MsgBox($MB_OK, "Hinweis von KURT", $IT)
EndFunc

;Sprachsystem initialisieren
$Default = StartTTS()
If Not IsObj($Default) Then
  Info("Leider steht keine Sprachausgabe zur Verfügung")
EndIf

; Titel
Info ("KURT - Schnelle Vorprüfung und Generierung eines kurzen Berichts (Version 21.07.2020), Autor: Frank Werner")
$Bericht = "Sachverhalt: " & InputBox ("Sachverhalt", "Geben Sie den Sachverhalt des Falles ein (ohne personenbezogene Daten!):") & @CRLF & @CRLF

;Loop
Do                                     ; Wiederhole...

  If $Daten [$i][2] = $Daten [$i][3] Then ; Wenn die Werte der Spalten 2 und 3 gleich sind
    Info ($Daten[$i][1])                    ; ist die Frage eine Information
    $i = $Daten [$i][2]                     ; und die Werte die neue Frageposition
  ElseIf $Daten[$i][2] = 0 Then           ; sonst, wenn die nächste Frageposition = 0 ist
    $i = 0                                  ; ist der Loop zu Ende
  ElseIf Frage ($Daten [$i][1]) Then      ; sonst wenn die Frage positiv beantwortet wird
    $i = $Daten [$i][2]                     ; hole nächste Position aus Spalte 2
  Else                                    ; sonst
    $i = $Daten [$i][3]                     ; aus Spalte 3
  EndIf

Until $i = 0                          ; bis nächste Frageposition = 0 ist.

;Bericht generieren und mailen?
If Frage ("Soll das Ergebnis versandt werden?") Then
  ShellExecute ("mailto:?subject=Prüfung eines Datenschutzfalles mit EUGEN&body="&$Bericht)
  Info ("Tragen Sie bitte die Namen der Empfänger dieses Berichts ein, formatieren und senden Sie die E-Mail ab.")
EndIf

Speak ($Default, "Vielen Dank. Auf Wiedersehen!")

; ENDE DES PROGRAMMLAUFS ***
  • Das Programm steht hier ohne jegliche Gewährleistung. Das Programm kann und will keine Rechtsberatung ersetzen.

Frank Werner