Laden...

Gelöschten Text durchstreichen, hinzugefügten unterstreichen in Datenbank speichern

Erstellt von SamsonBB vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.187 Views
S
SamsonBB Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren
Gelöschten Text durchstreichen, hinzugefügten unterstreichen in Datenbank speichern

Hallo zusammen,

als Neuling in der Welt der C# Programmierung weiß ich das ich mir für den Anfang kleine Projekte suchen muss um überhaupt richtig lernen zu können. Nun beschäftigt mich jedoch eine Frage so sehr, dass ich da gerne eine Antwort drauf hätte. Zunächst einmal die Schilderung was ich gerne hätte.

Ich möchte mir in zwei Textboxen Text aus einer Datenbankzelle anzeigen lassen. Eine Textbox ist nicht editierbar und soll nur zeigen was später wieder in der Datenbankzelle gespeichert wird. Die Änderungen sollen in der zweiten Textbox vorgenommen werden. Dabei soll gelöschter Text in der oberen Textbox durchgestrichen werden und neu eingefügter zusätzlicher Text unterstrichen.

Hintergrund: Wenn eine elektronische Patientenakte bzw. Verlaufsdokumentation verwendet wird, müssen nachträgliche Änderungen kenntlich gemacht werden. Zudem muss der ursprüngliche Inhalt erkennbar sein.

Meine Frage ist nun, gibt es eine Möglichkeit dieses Vorhaben wie oben beschrieben umzusetzen? Wenn ja, was sollte ich mir dafür genauer anschauen um auf die Lösung zu kommen?

4.938 Beiträge seit 2008
vor 5 Jahren

Hallo und willkommen,

wenn du eine RichTextBox (entspricht Windows WordPad) nimmst, dann kannst du individuell einzelne Teilstrings formatieren, s. z.B. RichTextBox Font bold, italic, underline (das ganze geht natürlich auch direkt per Code, anstatt über einen Button-Klick). Für durchgestrichenen Text gibt es die 'Strikeout'-Eigenschaft.

Wie erkennst du denn die Änderungen bei dem Text? Hilfreich ist z.B. dafür die Levenshtein-Distanz bzw. der dahinterstehende Algorithmus. Such auch mal nach "diff tool algorithm".

S
SamsonBB Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Vielen Dank für die Antwort Th69,

mit der RichTextBox ist schonmal ein super Hinweis. Bezüglich der Levenshtein-Distanz bin ich mir unschlüssig. Wenn ich das richtig verstanden habe, muss ich beide Texte, Original und Bearbeitet, in eine Matrix umwandeln um dann nach diesem Algohrithmus die Veränderungen auslesen zu können. Da aber neuer Text eingefügt werden als auch Text "gelöscht" (bzw. durchgestrichen) werden kann, wäre dann nicht mehr nachvollziehbar welche Änderung konkret vorgenommen wurde, also was wurde eingefügt und was "durchgestrichen".

Es kann natürlich auch sein, dass ich das jetzt nur nicht ganz geblickt habe.

Wäre es nicht einfacher umsetzbar, wenn man das was gelöscht werden soll einfach markiert und dann das Markierte nur durch drücken auf "del" oder "Entf" (oder eine andere Taste) "durchstreicht". Wenn neuer Text hinzugefügt wird, wird er automatisch unterstrichen. Das könnte dann möglicherweise auch nur in einer RichTextBox erledigt werden. Voraussetzung dafür wäre das man die Formatierungsmöglichkeiten soweit einschränken bzw vorher festlegen kann.

Entschuldigt wenn ich hier so viel Gedanken aufschreibe aber das hilft mir beim Lernen. Wenn das nicht gewünscht ist, dann gibt mir einfach einen Wink mit dem Zaunpfahl 😉

6.911 Beiträge seit 2009
vor 5 Jahren

Hallo SamsonBB,

fürs Ermitteln der Änderungen suche auch nach "diff". Da gibt es schon eine Menge und so brauchst du nicht bei 0 zu beginnen.

Die Levenshtein-Distanz sehe ich hier nicht unbedingt von Vorteil, eher den "longest common substring", aber wie erwähnt siehe diff.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
SamsonBB Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Auch gfoidl ein Dankeschön,

ich habe folgendes gefunden was meinen Bedürfnissen wohl entsprechen sollte.
https://github.com/google/diff-match-patch
Jetzt muss ich das nur noch so hinbekommen das es bei mir funktioniert.

96 Beiträge seit 2012
vor 5 Jahren

Hey SamsonBB,

ich würde Dir empfehlen, mal durchzuschauen, was der Annex 11 des EU-GMP bzw. EU-GCP Leitfadens verlangt.
Als Erläuterung auch das Aide Mémoire zum Annex 11 (einfach googeln) damit Du rechtlich auf der sicheren Seite bist. Ein Solches Audit Trail ist ja durchaus mehr als eine graphische Darstellung in einer Textbox.
Im Klartext: Alter Wert, Neuer Wert, Datum der Änderung, Name des Ändernden und Grund der Änderung müssen nicht editier- und löschbar vorgehalten und regelmäßig gereviewt werden.
Ich würde als Basis für den Audit-Trail eine eigene DB-Tabelle (mindestens) mit entsprechenden Berechtigungen vorhalten. Alles Andere führt in dem Bereich früher oder später zu Ärger.


Gruß
Carlo

"Palabras que no coinciden con hechos no valen nada."

S
SamsonBB Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren

Vielen Dank für die Hinweise,

ich denke ich habe das für das Erste gut und sauber gelöst. Änderungen kann nur der User machen, der den ursprünglichen Dokueintrag gemacht hat. Zudem bleibt der geänderte bzw. gelöschte Text immer erhalten und wird bei einer Abfrage auch so ausgegeben. Auch werden die Änderungen mit Datum und Grund der Änderungen innerhalb der Doku kenntlich gemacht. Also im Grunde wie in der Doku in Papierform nur noch ein bisschen strenger und so wie es hier empfohlen wurde.

Toll das es hier nette Menschen gibt die einen auch noch auf solche Dinge aufmerksam machen.
Vielen Dank!