Ja, im konkreten Anwendungsfall wird es immer etwas komplizierter. Aber es scheint hier eine Lösung zu geben. Nehmen wir an, Sie haben per X-Kommando $[x (DDI;DIA) _ _ aq NN NNJN NNNN ICDvorn K _]$ eine Diagnosenliste des aktuellen Quartals wie diese erstellt:
M35.3 Polymyalgia rheumatica
D69.0 Ausschluss Purpura rheumatica
M06.99 V.a. Rheumatoide Arthritis
C43.9 Malignes Melanom
I10.90 Arterielle Hypertonie
I48.9 Arrhythmia absoluta bei Vorhofflimmern
I25.9 Koronare Herzkrankheit
E66.97 Adipositas Grad III (WHO; BMI 50-60 kg/m2)
C34.0 Ausschluss Bronchialkarzinom des Hauptbronchus
Wenn Sie für Ihren Fall nur wissen wollen, ob die Diagnosen-Auflistung eine oder mehrere, bestimmte Diagnosen enthalten, die nicht mit dem Zusatz "Ausschluss" oder "V.a." versehen sind, was dem Zustand "G" wie gesichert entspricht, wäre dieser schöne regex Ihre Lösung:
$[regex ^(M35|M06)\.\d{1,2}(?!\s+(?:Ausschluss|V\.a\.)) x (DDI;DIA) _ _ aq NN NNJN NNNN ICDvorn K _]$
Der regex macht folgendes: Er prüft am Anfang einer Zeile (dafür das ^), ob die ICD-Codes M35 oder M06 (das Oder wird durch den horizontalen Trennstrich, Tastatur: option-7, dargestellt) gefolgt von einem Punkt und 1 oder 2 Zahlen (wegen: M06.9 oder M06.99) stehen. Der Clou ist hier der negative Lookahead, also die Textanteile, die nicht auf den ICD-Code folgen dürfen, damit der regex auslöst. Dieser wird durch den Ausdruck (?!xxxxx) angegeben. Dabei steht jetzt xxxx für den (im negativen Lookahead enthaltenden) postiviven Lookahead (?:Ausschluss|V.\.a\.) - alles ganz einfach... ;-)
Angewandt auf die oben gezeigte Diagnosenliste ergibt der regex die Ausgabe
M35
Wenn Sie Ihre Aktionskettenbedindung auf "ist nicht leer" prüfen lassen, sollte Ihre Bedingung korrekt greifen.
Falls Sie Probleme haben, die für Ihren Fall benötigten ICD-Codes in den regex einzubauen, sagen Sie nochmal Bescheid.