Moin,

möchte gerne in einem CKE aus einem abgefragten Feld (per QR-Scanner eingescannter Text) nur die ersten X / oder die letzten Y Zeichen in eine weitere Variable übernehmen.

konkretes Beispiel:

gescannt wird folgender Text: https://impax.ammerland-klinik.de/?access_code=BR04-7CFS-23E0-2AD9

Davon möchte ich "https://impax.ammerland-klinik.de" und "BR04-7CFS-23E0-2AD9" weiterverwenden.

Finde leider nicht den entsprechenden Befehl.

Kann da jemand weiter helfen?

Vielen Dank.

Gruß Marc
Gefragt in Frage von (1.9k Punkte)
Bearbeitet von
0 Punkte

3 Antworten

Hallo.

Das sollte mit Regex gehen.
Beantwortet von (24.3k Punkte)
+1 Punkt
Einarbeitung in Regex ist noch auf meiner Liste, aktuell ist das nur Bahnhof. Gibts da kein internes Kommando?
glaube nicht. Bin gerade noch unterwegs. Kann später schauen. Habe letztens etwas ähnliches gebraucht.
super, danke....
mit Regex funktioniert es wie folgt:

Karteieintrag names test und Variable v9

Code:

$[regex access_code=+([\w\W]+) karteiEintragValue_withArgs test customKarteiEintragEntries.v9 _ N]$

 

Webadresse:

$[regex ([\w\W]+)\?access_code karteiEintragValue_withArgs test customKarteiEintragEntries.v9 _ N]$
versteh ich nicht. Wo ist in dem Befehl enthalten, welche Zeichen genommen werden sollen (z.B: die ersten 6)?

Und: der Befehl dann in ein Text zusammengesetzt V3 im CKE als Vorauswahl?
Gar nicht. ;-)

Es wird einfach der Text vor ?access und nach access_code= separiert.

Es ist denn das Ziel von dem ganzen?
ahhh, alles klar. Aber in welcher Feldart eintragen?
habs, man muß den CKE erst schließen, beim nächsten Start sind die Felder dann aktualisiert. SUPER !!! VielenDank.
allerdings noch ein Problem:

$[regex ([\w\W]+)\?access_code karteiEintragValue_withArgs MRT-CD_QR customKarteiEintragEntries.QR-link _ N]$

gibt als Ergebnis https://impax.ammerland-klinik.de/

 

also ein Slash zu viel. Wie bekomme ich den weg?

So sollte es klappen:

$[regex ([\w\W]+)\/\?access_code karteiEintragValue_withArgs MRT-CD_QR customKarteiEintragEntries.QR-link _ N]$

Achtung, der rot markierte, dazugefügte Abschnitt ist kein V, sondern ein \ gefolgt von einem /  

So können Sie den Slash, den Sie nicht mit übernehmen wollen, vom regex-Ergebnis abtrennen. Exakt so, wie es im Ausdruck auch schon mit dem ? erfolgt war.

Regex ist echt ein kleines Knobelspielcool

Perfekt, genau so gehts. Vielen Dank.

Gibts irgendwo infomaterial um sich in das Thema Regex einzulesen?
Auch im Forum wurden schon einige Beiträge gebracht. Einfach nach regex suchen.

Man muss beim Nutzen der regex101.com-Seite beachten, dass es manchmal kleine Unterschiede zwischen dem Regex-Verhalten da und dem tomedo-eigenen Regex gibt. Für das Erstellen ist die Seite super, prüfen im Briefkommando-Testfeld muss man aber nochmal extra, sonst hakt es gelegentlich.
Danke für das Beispiel,

Vielleicht brauche ich so etwas irgendwann mal. Habe schon Stunden mit regex getüftelt und bin immer nur sehr mühsam an mein jeweiliges Ziel gekommen. Die Tipps hier im Forum sind manchmal eine Schatzkiste.
muß nochmal nachhaken: Hab ein bischen mit Redex nun gespielt. Benötige die letzten 4er Blöcke einzeln, ohne die Bindestriche, um die in die Maske der Onlineseite einugeben.

mit [0-9A-Z]{4} bekomme ich ja in meinem Beispiel die 4er Blöcke am Schluß ausgegeben. Hier dann insgesamt 4 Matches.

Wie kann ich die Matches nun in Tomedo einzeln abrufen? Also in Feld 1 Match1,, Feld 2 Matche 2 usw.

??? Dazu kann ich nichts finden

Das kann man so lösen:

Wenn Ihr Briefkommonado für den Code so lautet: 

$[regex access_code=+([\w\W]+) karteiEintragValue_withArgs test customKarteiEintragEntries.v9 _ N]$

müssen Sie den Ausdruck von [\w\W] auf [\w] kürzen. Damit erreichen Sie, dass durch Weglassen des Ausdrucks \W (beschreibt alle Zeichen, die nicht Buchstaben oder Zahlen sind, hier ist also das im vorliegenden Fall wichtige Trennzeichen "-" mit drin) die Suche immer nur so weit läuft, bis ein "Nicht-Zahl und Nicht-Buchstabe"-Zeichen wie z.B. das "-" gelesen wird. Der Trennstrich hilft hier also sehr weiter.

Um den zweiten/dritten/vierten 4er-Block auszulesen, muss jeweils die vor dem auszulesenden Block stehenden 4er Blöcke im regex-Ausdruck aufführen, damit sie "übersprungen" werden :      

1. Block:

regex access_code=([\w]+)

2. Block:

regex access_code=[\w]+-([\w]+)          Ergebnis ist dann "7CFS"

3. Block

regex access_code=[\w]+-[\w]+-([\w]+)        ergibt "23E0"

4. Block

regex access_code=[\w]+-[\w]+-[\w]+-([\w]+)       ergibt "2AD9"

Fertig. smiley

 

 

wow! Vielen Dank für die super Erklärung. So klappts und nun ist der Weg frei für viele weitere Basteileien....
Gern geschehen.

Auf die Idee, die Radiologie-Links per regex auszulesen, war ich selbst noch gar nicht gekommen. Vielen Dank auch also für diese Idee. Werde ich bei mir auch mal in den Workflow einbasteln. Ich hoffe es klappt.
bin noch am überlegen, wir der Code am besten automatisiert dann auf der entsprechenden Internetseite eingetragen wird. Vlt. hat ja dazu auch jemand hier Denkanstösse.... Vlt. Keyboard maestro....
über AppleScript.

Wobei sie sich dann all das vorgenannte hätte sparen können. Dann müssen sie nur das Geburtsdatum per AppleScript eingeben.
Das hört sich sehr interessant an. Insgesamt erscheint das aber relativ komplex, über den Zugangscode automatisiert auf radiologische Bilddokumente zugreifen zu können. Wenn Sie da irgendwie weiter kommen bitte posten. Glücklicherweise habe ich einen Direktzugang zu unserer Radiologie, Probleme habe ich nur bei externen Radiologen.
Habe gerade mal ein bisschen mit AppleScript experimentiert. Im letzten Karteieintrag N befindet sich für dieses Beispiel der Radiologie-Link https://impax.ammerland-klinik.de/?access_code=BR04-7CFS-23E0-2AD9 aus dem Fall oben

Mein Script, um die Bilder aus dem Beispiel aufzurufen wäre:

tell application "Safari" to open location "$[x N 1 _ inf JN NNNN NNNN mitICD U 0]$"

activate application "Safari"

delay 1.0

tell application "System Events"

   key code 29    # Tag

   key code 20    # Tag

   key code 29    # Monat

   key code 20    # Monat

   key code 25    # Jahr

   key code 25    # Jahr

   delay 5.0      # nur zum Debuggen / Stop

   key code 36    # Return

end tell

Das klappt für diesen Einzelfall (Geb-Datum ist natürlich falsch, daher kein Bildaufruf...), aber natürlich müsste auch das Geburtsdatum variabel einzusetzen sein.

Was mir (als Script-Neuling) nicht klar ist, wie man elegant das Geburtsdatum in key codes umwandelt (ohne große if...Basteleien).

Was sagen die AppleScript-Experten?
Im Tauschcenter mal nach "Convema" suchen. Das habe ich vor längerer Zeit hochgeladen. Das ist ein Script, dass die Patientendaten in das Abrechnungsfenster bei Convema einträgt. Da werden werden Name, Vorname usw übertragen. Das Script kann man als Vorlage nutzen.
Super Ansatz,

warum muss nur jeder das Rad für sich neu erfinden. Das wäre etwas, was eigentlich in Tomedo fest eingebaut sein sollte.

Leider verstehe ich von Apple Skripts fast gar nichts. Habe mir aus Vorlagen ein paar Skripts zusammengebastelt.

Bei der Vorlage wüßte ich auch nicht, wie ich das in die Eingabefelder des verlinkten Zugangs herinbekomme.
Seite per Script aufrufen und dann tabulator-Taste so oft drücken bis man in dem Feld ist.

Ist bei dem von mir genannten Script genauso gelöst.

Ah, sehr cool. Vielen Dank für die rasche Lösung.

Dann funktioniert es jetzt für die IMPAX/webaccess (AGFA)-Seite mit diesem Script:

 

 

 

Mit dem Skript klappt das wirklich einwandfrei. Einzig umständlich: ich muß das Geb in 3 Teilblöcke eingeben.

Will das über das d Kommando lösen, klappt bei Tag und Jahr auch gut, nur den Monat wird nicht korrekt dargestellt: 

16.05.1979

$[d G dd]$    --> 16 korrekt
$[d G MM]$    ---> 16.05.1979, 12:00:00 ????
$[d G yyyy]$    ---> 1979 korrekt

Warum? 

Auf der AGFA Seite springt der cursor automatisch vom Tag auf den Monat, sobald man 2 Ziffern eingegeben hat.

Probieren sie mal als Geburtsdatum-Kommando $[pg2]$. Das gibt das Geburtsdatum ohne . aus, also z.B 12051976
bei der gennanten Seite geht das auch mit dem Cursor, dass er weiterspringt, perfekt, dass löst das Problem, danke.

Aber ist die Syntax $[d G MM]$ falsch? warum geht das nicht?

Scheint ein Bug zu sein. Mit dd und YYYY funktioniert es ja.

Das Script oben hatte tatsächlich das falsche Datumsformat (p0 gibt 041178 aus, pg2 dagegen 04111978). Und auf der Agfa-Seite wird das Jahr als YYYY erwartet. 

hier noch kurz die Lösung für den Bug $[d G MM]$:

--> da wird das Format MM leider falsch interpretiert, mit $[d G M]$ funktioniert es und der Monat des Geburtsdatums wird ausgegeben
So, falls jemand soetwas nachbauen möchte, hier der Workflow:

In einem CKE (MRT-CD) wird per Barcodescanner in das Feld QR-link-Am der Barcode der Radiologie gescannt. Mit einem Skript-Button wird dann das unten stehende Skript aufgerufen und die Seite geöffnet und das geforderte Geb eingetragen.

Vielen Dank an alle, die hier für das erfolgreiche Endergebnis mitgewirkt haben. (Regex hätte ich mir sparen können, aber so nun wieder einen neuen Skill hinzugefügt.... wird man sicher weiter brauchen).

 

Das Skript:

activate application "Safari"

set targetURL to "$[karteiEintragValue_withArgs MRT-CD customKarteiEintragEntries.QR-link-Am _ N]$" -- Hier die gewünschte URL einfügen

tell application "/Applications/Safari.app" to open location targetURL

delay 3

tell application "System Events"

set str_geb to "$[pg2]$"

repeat with chr_geb in str_geb

delay 0.2

keystroke chr_geb

end repeat

delay 0.1

key code 48 --Tab

delay 0.5

key code 36 -- Return

end tell
Beantwortet von (1.9k Punkte)
+1 Punkt

Nachdem mich das ganze bei uns auch schon seit 2 Jahren nervt, habe ich nach erneuter Anregung durch diesen Beitrag das für das in unserer Region häufig verwendete Portal "umgebaut". Da die Patienten häufig zumindest in der Praxis nicht den Code dabei haben (glücklichweise steht er aber auch noch auf den Befunden), habe ich bei dem entsprechenden Onlinetermin ein Feld hinzugefügt, in das der Patient den Code direkt selbst eingeben kann. 

Bei Anlage eines Besuchs wird überprüft, ob der Patient den Code online bereits eingegeben hat. Ist dies der Fall, wird ein Karteieintrag angelegt, in den der Code übernommen wird. In dem Karteieintrag ist ein Button zum Öffnen des Scripts, das dann die Radiologieportalseite aufruft und den Code und Geburtsdatum einträgt. Dabei ist es egal, ob der Patient den Code mit oder ohne "-" eingegeben hat. Der "-" wird mittels AppleScript gelöscht.

In den Karteieintrag kann man zusätzlich noch kurz den radiologischen Befund zusammenfassen, sodass dieser später als radiologischer Fremdbefund im Brief aufgeführt wird.

on replace_chars(this_text, search_string, replacement_string)
	set AppleScript's text item delimiters to the search_string
	set the item_list to every text item of this_text
	set AppleScript's text item delimiters to the replacement_string
	set this_text to the item_list as string
	set AppleScript's text item delimiters to ""
	return this_text
end replace_chars

set hdscode to (replace_chars("$[karteiEintragValue_withArgs FB customKarteiEintragEntries.c1 _ J]$", "-", "")) as string

tell application "System Events"
	-- tell application "/Applications/Safari.app" to activate
	--delay 2.0
	open location "https://www.hdscode.de/"
	
	delay 4.0
	
	
	set str_hdscode to hdscode
	-- set str_hdscode to "$[karteiEintragValue_withArgs FB customKarteiEintragEntries.c1 _ J]$"
	
	repeat with chr_hdscode in str_hdscode
		keystroke chr_hdscode
		delay 0.02
	end repeat
	delay 0.2
	
	set str_geb to "$[pg]$"
	repeat with chr_geb in str_geb
		keystroke chr_geb
		delay 0.02
	end repeat
	delay 0.5
	key code 48
	delay 0.5
	key code 36
	
end tell

 

Beantwortet von (24.3k Punkte)
+1 Punkt
16,088 Beiträge
23,862 Antworten
41,996 Kommentare
11,695 Nutzer