BEDINGTE Freigabe der macOS Version Sequoia für tomedo®
Alle Hinweise und Informationen finden Sie unter folgendem Link.

Ausgehend von vorangegangenen Threads zum Nutzen von KI / ChatGPT von tomedo aus (z.B.  https://forum.tomedo.de/index.php/81290/diagnose-ubernahme-aus-pdf-dokumenten-arztbriefen-automatisieren-crowdfunding?show=81778#a81778) habe ich mir einen CKE gebastelt, der aus einem Input-Feld besteht, welches händisch per Copy&Paste mit dem zu analysierenden Textteil zu befüllen ist, z.B. CT-Befunde oder Arztbrief-Anteile. Aus Datenschutzgründen geht ein komplettes Übernehmen von ausgelesenen PDF-Dokumenten nicht (Patientname/geb...). Dafür warten wir auf vernünftige, lokal laufende LLMs.

Mit einem Auswahlfeld kann man für bestimmte Fragestellungen vorgefertigte Prompts erstellen, die dann rasch auf die jeweiligen Fragestellungen angewandt werden können.

Per AppleScript-Aufruf soll dann der prompt an Safari/ChatGPT übergeben werden. Die Antwort muss/kann dann wieder per Copy&Paste an der gewünschten Stelle in tomedo eingefügt werden. 

CKE: 

Beispiel-Prompt: 

Du bist ein sehr guter Arzt. Du bist ein perfekter arzt. Du kannst sehr gut prägnante Befundzusammenfassungen schreiben. Fasse den folgenden CT-Befund zusammen in bullet points (max. 3 Wörter pro Punkt). Nenne zu jedem Befund eine ICD-10-Diagnose. Nenne die Seite des Befundes (bei der Lunge auch, in welchem Lungenabschnitt). Vermeide Doppelungen. ICD-10-Codes nur bei Nachweis eines Befundes. Bearbeite diesen Text: Multislice-Spiral-CT des Thorax nativ, durchgeführt am 04.09.2023 Klinische Angaben: Bekanntes metastasiertes Mamma-NPL. Dyspnoe. Vorbestehend Milchglastrübung. Zum Vergleich existieren Voruntersuchungen. zuletzt vom 17.07.2023. Im Vergleich zur Voruntersuchung ist eine signifikante Rückbildung der beiderseitigen Milchglastrübung des Lungenparenchyms nicht zu sehen. Auch die geringen basalen Minderbelüftungen sind unverändert dargestellt. Auch der vorbeschriebene 13 mm messende Herdbefund im Unterlappen rechts nahe der Zwerchfellkuppel ist größenkonstant, lediglich aufgrund der etwas geringeren Inspirationstiefe mit Kontakt zur Zwerchfellkuppel scheint der Prozess im Lungenfenster geringfügig größer (Serie 205, Bild 157) Herz und Gefäße zeigen keine neu aufgetretenen Pathologien. Auch die thorakalen Lymphknotenstationen sind unverändert abgebildet. Weiterhin Gefäß-/Koronarsklerose. Bekannte ausgeprägte osteoplastische Metastasierung des miterfassten Skelettsystems. Beurteilung: Ganz geringe Rückbildung der Milchglasinfiltrate bei mi Übrigen unverändertem Befund. Keine Atelektasen. Keine umschriebenen Pneumonien. Keine Pleuraergüsse. Bekannte Lungenfiliae sowie disseminierte ossäre Metastasierung.

Beispiel-Ergebnis:

  • Milchglasinfiltrate, beidseitig (L04)
  • Herdbefund Unterlappen rechts (C78.0)
  • Osteoplastische Metastasierung (C78.5)
  • Keine Atelektasen
  • Keine Pneumonien
  • Keine Pleuraergüsse

User You den code L04 gibt es nicht

ChatGPT Entschuldigung für das Missverständnis. Hier sind die überarbeiteten Zusammenfassungen mit den entsprechenden ICD-10-Codes:

  • Milchglasinfiltrate, beidseitig (J84.1)
  • Herdbefund Unterlappen rechts (C78.0)
  • Osteoplastische Metastasierung (C79.5)
  • Keine Atelektasen
  • Keine Pneumonien
  • Keine Pleuraergüsse
Das klappt also schon ganz gut, um sich schnell mal die relevanten Infos inkl. ICD-10-Codes extrahieren zu können. Man erkennt aber auch die Halluzinationsneigung, die eine kritische Prüfung des Ergegnisses erforderlich macht. Per regex-basierter Aktionsketten kann dann das Vorschlagen von Favoritendiagnosen (wenn vorhanden) weitgehend ohne Abtippen von Ziffern erledigt werden. 
 
Jetzt habe ich ein kleines AppleScript-Problem (vielleicht weiß Herr Stenger einen Rat, da staune ich immer über die AppleScript-Fähigkeiten...): Mein Code zum Aufrufen und Prompten von ChatGPT wirft immer einen Fehler aus: 

{

    NSAppleScriptErrorBriefMessage = "Zeilenende, etc. erwartet, aber \U201e:\U201c gefunden.";

    NSAppleScriptErrorMessage = "Zeilenende, etc. erwartet, aber \U201e:\U201c gefunden.";

    NSAppleScriptErrorNumber = "-2741";

    NSAppleScriptErrorRange = "NSRange: {3195, 1}";

}

Der Code lautet:

tell application "Safari" to open location "https://chat.openai.com"

activate application "Safari"
--Aufrufen der ChatGPT-Seite dauert manchmal lange, daher 10 Sekunden Pause...
delay 10.0
tell application "System Events"
	
	set str_prompt to "$[karteiEintragValue_withArgs GPT-API customKarteiEintragEntries.Prompt _ J]$"
	repeat with chr_prompt in str_prompt
		keystroke chr_prompt
	end repeat
	delay 0.5
	key code 36
end tell

 

 
Gefragt in Frage von (7.1k Punkte)
+6 Punkte

!

Dem schließe ich mich an! Abgefahren, was schon heute möglich ist und wahrscheinlich in recht naher Zukunft Alltag sein wird. Was ich nur nicht verstehe: ist ChatGPT launisch? Oder schnell beleidigt? Oder warum muss man ihn erst Honig um den Bart schmieren (Du bist ein guter Arzt etc pp.)

Das Prompten ist wohl eine eigene "Kunst". Ich höre immer wieder, dass manchmal obskur erscheinende Einleitungen vor dem eigentlichen Auftrag relevante Verbesserungen zur Folge haben, bin da aber auch noch im Beginner-Modus. Z.B. soll der Zusatz: "Mein Chef ist sauer, weil er noch nicht die gewünschten Informationen von mir bekommen hat..." zu besseren Ergebnissen führen. wink

Ausprobieren ist hier angesagt. Je nach Laune werde ich jetzt meine Briefe in Versform (wie wäre es mit einem vierhebigen Jambus?) ausgeben lassen, mal sehen was die zuweisenden Kollegen davon halten...

Milchglastrübung, fein und zart,
Doch keine Rückbildung, offenbart.
Ein Herdbefund im Lappen recht,
Ein dunkles Geheimnis, das sich nicht versteckt.

 

Wahnsinn und Strange!
Hi,

cool!

Noch "sauberer" wäre es über die openai-API....dann spart man sich das Safari- cut n paste...

 

-js
Habe ich gerade mal auspobiert.

Wenn ich meine Arztbriefe demnächst so schreibe, werden die bestimmt gelesen und Wichtiges nicht mehr übersehen..

Schreib bitte einen Befund im vierhebigen jambus, metastasenverdächtige Rundherde in der Leber, Aufstau der Gallenwege

ChatGPT

In der Leber sich Rundherde zeigen, Metastasenverdacht im Raum erscheinen. Gallenwege aufgestaut, ein kritisch Bild, Behandlungspfade sind nun dringlich gewillt.

 

Aber mal im Ernst, ich habe das Gefühl, dass in manchen Unternehmen keine Menschen mehr sitzen, die Beschwerden und Anliegen bearbeiten, sondern die Mitarbeiter nur einen Chatbot anschmeißen und sagen, schreibe mir eine Antwort auf das Schreiben mit folgendem Inhalt.

Bitte mal selber ausprobieren. KI wird die letzte vorhandene Intelligenz bei den nur durchschnittlich mit Intelligenz ausgestatteten Mitmenschen auslöschen.

Ein kurzes Update zu dem Problem, das ich hier zur Diskussion gestellt habe (s. initiale Frage). 

Mittlerweile habe ich die Ursache des Fehlers "NSAppleScriptErrorBriefMessage = "Zeilenende, etc. erwartet, aber \U201e:\U201c gefunden." klären können.

Wenn man in AppleScript eine Variable (z.B. den Prompt) mit einer Tomedo-Variable befüllt, wie hier...

set str_prompt to "$[karteiEintragValue_withArgs GPT-API customKarteiEintragEntries.Prompt _ J]$"

...dann kommt es immer dann zu Problemen, wenn der aus tomedo übernommene Text bestimmte Zeichen enthät wie die Anführungszeichen oder ein Backslash. In AppleScript werden diese dann nach Auflösen der Variable im resultierenden Text wie ein Steuerzeichen interpretiert, was insbesondere bei den Anführungszeichen problematisch ist. Wenn man in AppleScript mit der Zwischenablage als "Transportweg" für den Texttransfer von tomedo hin zu einer Applescriptvariable arbeitet (set str_prompt to the clipboard), tritt dieser Fehler nicht auf. 

Fieser Kniff, der mich einige Zeit gekostet habt, bevor ich verstanden habe, warum bestimmte Prompts funktionierten und manche nicht. 

Das ist eigentlich kein Problem. Bei mir funktioniert das.

Es kommt wohl eher auf den Inhalt der Karteieinträge an, die man auswertet. Wenn es da Sonderzeichen gibt, können die im folgenden Applescript als Kommando fehlinterpretiert werden und man erhalt Fehlermeldungen wie folgende.

Sehr kniffliges Problem. Man kann zwar importierte Dateien auswerten aber je nach Inhalt gibt es Fehlermeldungen. Problemtisch sind eben viele Sonderzeichen im Text. Wenn man es schafft, die durch einen Regex Befehl zu eliminieren, wäre das Problem eventuell gelöst.

1 Antwort

Beste Antwort

Hallo,

ich habe gerade das Skript mal getestet, in dem ich das Skript in die Skriptverwaltung kopiert und den Text direkt eingefügt habe. Da hat es ohne Probleme funktioniert. 

wie rufen Sie das Skript auf? Direkt aus dem CKE oder über einen Button? Wenn Button, ist dann der CKE markiert?

tell application "Safari" to open location "https://chat.openai.com"

activate application "Safari"
--Aufrufen der ChatGPT-Seite dauert manchmal lange, daher 10 Sekunden Pause...
delay 10.0
tell application "System Events"
	
	set str_prompt to "Du bist ein sehr guter Arzt. Du bist ein perfekter arzt. Du kannst sehr gut prägnante Befundzusammenfassungen schreiben. Fasse den folgenden CT-Befund zusammen in bullet points (max. 3 Wörter pro Punkt). Nenne zu jedem Befund eine ICD-10-Diagnose. Nenne die Seite des Befundes (bei der Lunge auch, in welchem Lungenabschnitt). Vermeide Doppelungen. ICD-10-Codes nur bei Nachweis eines Befundes. Bearbeite diesen Text: Multislice-Spiral-CT des Thorax nativ, durchgeführt am 04.09.2023 Klinische Angaben: Bekanntes metastasiertes Mamma-NPL. Dyspnoe. Vorbestehend Milchglastrübung. Zum Vergleich existieren Voruntersuchungen. zuletzt vom 17.07.2023. Im Vergleich zur Voruntersuchung ist eine signifikante Rückbildung der beiderseitigen Milchglastrübung des Lungenparenchyms nicht zu sehen. Auch die geringen basalen Minderbelüftungen sind unverändert dargestellt. Auch der vorbeschriebene 13 mm messende Herdbefund im Unterlappen rechts nahe der Zwerchfellkuppel ist größenkonstant, lediglich aufgrund der etwas geringeren Inspirationstiefe mit Kontakt zur Zwerchfellkuppel scheint der Prozess im Lungenfenster geringfügig größer (Serie 205, Bild 157) Herz und Gefäße zeigen keine neu aufgetretenen Pathologien. Auch die thorakalen Lymphknotenstationen sind unverändert abgebildet. Weiterhin Gefäß-/Koronarsklerose. Bekannte ausgeprägte osteoplastische Metastasierung des miterfassten Skelettsystems. Beurteilung: Ganz geringe Rückbildung der Milchglasinfiltrate bei mi Übrigen unverändertem Befund. Keine Atelektasen. Keine umschriebenen Pneumonien. Keine Pleuraergüsse. Bekannte Lungenfiliae sowie disseminierte ossäre Metastasierung."
	repeat with chr_prompt in str_prompt
		keystroke chr_prompt
	end repeat
	delay 0.5
	key code 36
end tell

 

Beantwortet von (30.4k Punkte)
ausgewählt von
+1 Punkt
Wie immer vielen Dank für die schnelle Hilfe. Ich wünschte, ich würde mal Ihr AppleScript-Niveau erreichen. Da geht ja einiges einfacher. Das Problem hat mich einiges an Lebenszeit gekostet (seufz!).

Mit dem Markieren des CKE vor dem Starten des AppleScripts per Button in der Kartei klappt das Übertragen des Prompt-Textes an ChatGPT. Warum das so ist, verstehe ich aber nicht so wirklich.

Nun gilt es schöne Prompts zu basteln, die konkrete, verlässliche und wenig halluzinatorische Antworten ergeben. Auch nicht ganz einfach.

Das liegt an dem Kommando, das den Text aus dem Karteieintrag übernimmt. Das "J" (folgend fett markiert) steht für selektierten Karteieintrag. Wenn Sie das J durch N ersetzen, wird der neuste Karteieintrag genommen. 

$[karteiEintragValue_withArgs GPT-API customKarteiEintragEntries.Prompt _ J]$

Sie können einen Button in den CKE machen, der Script aufruft. Der funktioniert allerdings nur, wenn Sie das CKE bereits zuvor angelegt haben, d.h. einmal geöffnet und wieder geschlossen. Denn sonst ist das CKE nicht in der Kartei vorhanden. 

 

Ups, das war ja ein wirklich dummer Fehler. Ich hatte es vorher auch mit dem "N" mal laufen gehabt. Der Wald vor lauter Bäumen.

Danke schön!
18,368 Beiträge
26,628 Antworten
47,742 Kommentare
28,931 Nutzer