E-Rezept ist verpflichtend seit dem 01.01.2024
Alle Hinweise und Informationen zur Nutzung finden Sie unter folgendem Link.

Liebe Tomedos,

ich wollte eine SQL Bedigung in eine Aktionsauslösung einbauen um zu prüfen, ob der Patient > 70 Jahre ist:

SELECT geburtsdatum,
    
	date_part('year',age(geburtsdatum)) as age

FROM patient 

WHERE age>70

es funktioniert aber irgendwie nicht? Aktionsauslöser ist "Karteiöffnen"

ERROR:  column "age" does not exist

Ideen?

Gefragt von (3.5k Punkte)
0 Punkte

1 Antwort

In folgendem Therad hatte ich zwei funktionstüchtige (getestete) Beispiele angegeben.

https://forum.tomedo.de/index.php/16486/bugreport-aktionsketten-ausloser-privatrechnung-erzeugt-sql-error

Es fehlt also in Ihrem Beipsiel noch der konkrete Bezug zu dem Patienten, von dem Sie das Geburtsdatum haben wollen. Desweiteren ist es in Postgres-SQL nicht möglich, eine selbst erzeugte Spalte per 'where' zu überprüfen. Sie haben da zwei Möglichkeiten:

1. Eine Zwischentabelle anzulegen: select * from (select .. age from ...) A where A.age > 70.

2. Die Altersüberprüfung direkt im where-Teil zu machen: select .. from patient where date_part('year', age(geburtsdatum)) >70

Da es bei zweiter Abfrage unklar ist, wie performant das ganze ist , würd eich zu erster Variante tendieren. Für Ihr Beispiel also:

SELECT * from (SELECT date_part('year', age(geburtsdatum)) as age from patient where ident = $[patientident]$) A where A.age > 70

(ungetestet).
Beantwortet von (67.8k Punkte)
0 Punkte
16,006 Beiträge
23,768 Antworten
41,807 Kommentare
11,507 Nutzer