Liebe Tomedianer,
ich möchte gerne eine Statistik-Abfrage händisch (und möglichst mit 1 Click) anstoßen, die alle noch in diesem Quartal anstehenden DMP-Patienten ohne bereits vereinbarten Termin und mit bzw. ohne hinterlegte Email-Adresse ausgibt.
Mir ist bewusst, dass es in tomedo bereits eine vorgefertigte Abfrage "zu erwartende eDMP" gibt, die an sich auch ganz gut ist.
Aus dieser möchte ich allerdings die Patienten herausfiltern, die bereits einen Termin haben (funktioniert bei mir nicht über Eingabe von z.B. "Leerzeichen", (ohne) etc in der entsprechenden Ergebnisspalte) und müsste, selbst wenn, ja händisch geschehen.
Zusätzlich möchte ich alle Patienten, die eine Email-Adresse hinterlegt haben, herausfiltern, um diesen eine Erinnerungsmail zu senden, was ja über "Aktionen..." zu bewerkstelligen ist.
Alle übrigen Patienten sollen dann einen Serienbrief bekommen.
Hat jemand eine schlaue Idee zur Umsetzung, ohne dass ich jedes Mal mit händisch anzustoßenden Differenzlisten etc. herumfummeln muss?
Eine mit Hilfe einer KI erstellte SQL-Abfrage funktioniert leider nicht:
Liste A → MIT Email
WITH aktuelles_quartal AS (
SELECT
strftime('%Y', 'now') AS jahr,
((CAST(strftime('%m', 'now') AS INTEGER) - 1) / 3) + 1 AS quartal
),
termine_quartal AS (
SELECT DISTINCT t.patientID
FROM termin t
JOIN aktuelles_quartal q
WHERE
strftime('%Y', t.start) = q.jahr
AND ((CAST(strftime('%m', t.start) AS INTEGER) - 1) / 3) + 1 = q.quartal
)
SELECT
p.id AS patientID,
p.nachname,
p.vorname,
p.email,
d.dmpArt,
d.faelligkeitsDatum
FROM dmp_dokumentation d
JOIN patient p ON p.id = d.patientID
LEFT JOIN termine_quartal tq ON tq.patientID = p.id
WHERE
d.abgeschlossen = 0
AND tq.patientID IS NULL
AND p.email IS NOT NULL
AND p.email <> ''
ORDER BY p.nachname, p.vorname;
Liste B → OHNE Email
WITH aktuelles_quartal AS (
SELECT
strftime('%Y', 'now') AS jahr,
((CAST(strftime('%m', 'now') AS INTEGER) - 1) / 3) + 1 AS quartal
),
termine_quartal AS (
SELECT DISTINCT t.patientID
FROM termin t
JOIN aktuelles_quartal q
WHERE
strftime('%Y', t.start) = q.jahr
AND ((CAST(strftime('%m', t.start) AS INTEGER) - 1) / 3) + 1 = q.quartal
)
SELECT
p.id AS patientID,
p.nachname,
p.vorname,
p.email,
d.dmpArt,
d.faelligkeitsDatum
FROM dmp_dokumentation d
JOIN patient p ON p.id = d.patientID
LEFT JOIN termine_quartal tq ON tq.patientID = p.id
WHERE
d.abgeschlossen = 0
AND tq.patientID IS NULL
AND (p.email IS NULL OR p.email = '')
ORDER BY p.nachname, p.vorname;