Sehr geehrte Frau Sirfy,
ich glaube, dass mit den vorhandenen Marker-Tools die gewünsche Funktionalität nicht oder nicht in vollem Umfang realisierbar.
Meine Vorschläge wären:
Option I:
1. DMP-Marker mit der Funktion "quartalsweise zurücksetzen" anlegen
2. Am Anfang des Quartals über die Statistik "Allg. Abfragen/Zu erwartende Dokumentationen DMP" den Marker setzen
3. Bei neueingeschriebenen Patienten (DMP Doku oder die Teilnahmeerklärung wird angelegt) kümmert sich um den Marker die Aktionskette
Option II:
Das Anlegen und Löschen des Marker erfolgt via Aktionsketten mit SQL-Bedingung.
Für die Bedingung kann man die bereits gelieferte SQL nemhen und leicht ändern (Verwaltung Statistikabfragen/SQL Beingungen für Aktionsketten/ Die im aktuellen Quartal zu erwartende Dokumentationen DMP)
SELECT
C.dokuAnzahl FROM
(SELECT COUNT(DISTINCT B.DokumentationID) AS dokuAnzahl FROM
(SELECT A.patient_ident as patientid,
E.nachname as Nachname,
E.vorname as Vorname,
A.ident as DokumentationID,
A.dokucomplete as vollstaendig,
EXTRACT(QUARTER FROM (A.erstelltam+ ( PAR.wert::integer * 3 )* interval'1 month')) || '/' || date_part('year', (A.erstelltam+ ( PAR.wert::integer * 3 )* interval'1 month')) as "Erwartet im Quartal"
FROM ( SELECT *,
(SELECT ARRAY_AGG( edoku.ident )AS futureDokuIdents
FROM edokumentation edoku
WHERE
edoku.dtype = 'DMPDokumentation'
AND edoku.visible = true
AND edoku.dokuComplete = true -- werden nur abgeschlossene Dokumentation beruecksichtigt
AND (edoku.diabetes = true OR
edoku.diabetes2 = true OR
edoku.Asthmabronchiale = true OR
edoku.copd = true OR
edoku.khk = true OR
edoku.herzinsuffizienz = true OR
edoku.osteoporose = true OR
edoku.brustkrebs = true) -- nur Dokumentationen mit einer Indikation
AND edoku.patient_ident = edokumentation.patient_ident
AND edoku.erstelltam > edokumentation.erstelltam)
FROM edokumentation
WHERE
dtype = 'DMPDokumentation'
AND visible = true
AND dokuComplete = true
AND (diabetes = true OR
diabetes2 = true OR
Asthmabronchiale = true OR
copd = true OR
khk = true OR
herzinsuffizienz = true OR
osteoporose = true OR
brustkrebs = true)
AND korrektur_ident IS NULL
) A
LEFT JOIN patient E ON (E.ident = A.patient_ident)
LEFT JOIN patientendetails PD ON (E.patientenDetails_ident = PD.ident)
LEFT JOIN edokuabrechnung R ON (R.ident = A.edokuabrechnung_ident)
LEFT JOIN edokumentation_dmpparameter EPAR ON (A.ident = EPAR.edokumentation_ident)
LEFT JOIN dmpparameter PAR ON (EPAR.dmpparameter_ident = PAR.ident)
WHERE
-- interval '9 months' wenn es auch für nächsten- und übernächsten Quartal geprüft wird
-- interval '3 months' wenn nur für aktueles Quartal
( A.erstelltam::timestamp >= date_trunc('quarter', now()) - (( PAR.wert::integer * 2 * 3)::text ||' month')::interval
AND A.erstelltam::timestamp <= date_trunc('quarter', now()) + interval '9 months' - interval '1 second' - (( PAR.wert::integer * 3)::text ||' month')::interval
)
AND (PAR.bezeichner ilike '%quartalsweise%' OR PAR.bezeichner ilike '%textfield_DokuIntervall%')
AND (PAR.wert = '1' OR PAR.wert = '2' OR PAR.wert = '4')
AND(
CASE WHEN PAR.bezeichner ilike '%textfield_DokuIntervall%'
THEN (
CASE WHEN (A.diabetes = true OR A.diabetes2 = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.diabetes = true OR futureDoku.diabetes2 = true)) = 0
ELSE FALSE
END OR
CASE WHEN (A.asthmabronchiale = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.asthmabronchiale = true)) = 0
ELSE FALSE
END OR
CASE WHEN (A.copd = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.copd = true)) = 0
ELSE FALSE
END OR
CASE WHEN (A.khk = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.khk = true)) = 0
ELSE FALSE
END OR
CASE WHEN (A.herzinsuffizienz = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.herzinsuffizienz = true)) = 0
ELSE FALSE
END OR
CASE WHEN (A.osteoporose = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.osteoporose = true)) = 0
ELSE FALSE
END
)
WHEN (PAR.bezeichner ilike '%textfield_diabetes_quartalsweise%' AND (A.diabetes = true OR A.diabetes2 = true))
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.diabetes = true OR futureDoku.diabetes2 = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_asthma_quartalsweise%' AND A.asthmabronchiale = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.asthmabronchiale = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_copd_quartalsweise%' AND A.copd = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.copd = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_khk_quartalsweise%' AND A.khk = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.khk = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_hi_quartalsweise%' AND A.herzinsuffizienz = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.herzinsuffizienz = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_ost_quartalsweise%' AND A.osteoporose = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.osteoporose = true)) = 0
WHEN (PAR.bezeichner ilike '%textfield_bk_quartalsweise%' AND A.brustkrebs = true)
THEN (SELECT COUNT(futureDoku) FROM edokumentation futureDoku WHERE futureDoku.ident = ANY( A.futureDokuIdents) AND (futureDoku.brustkrebs = true)) = 0
END
)
AND E.nachname NOT LIKE '%†%'
AND (PD.dmpKeineTeilnahme IS NULL OR PD.dmpKeineTeilnahme = FALSE)
AND E.ident = $[patientident]$
LIMIT 1
) AS B
) AS C
WHERE
--C.dokuAnzahl = 0 -- Bedingung für 'NICHT EINGESCHRIEBEN'
C.dokuAnzahl > 0 -- Bedingung für 'EINGESCHRIEBEN'
;
Die Statistik zeigt, ob für den Patienten im aktuellen, nächsten oder übernächsten Quartal eine DMP Doku zu erwarten ist. Das nächste und übernächste Quartal nehmen wir , um die Patienten zu berücksichtigen, für die schon im aktuellen Quartal eine Dokumentation mit dem Interval "Quartalsweise" oder "Jedes zweite Quartal" angelegt wurde. (s. Kommentar im Sktipt )
-- interval '9 months' wenn es auch für nächsten- und übernächsten Quartal geprüft wird
Es werden auch die Patienten mit 1x verpasster Dokumentation berücksichtigt, da erst wenn zwei aufeinanderfolgende DMP-Folgedokumentationen verpasst wurden, werden die Patienten durch die Kasse ausgeschrieben.
Wenn der Patient gestorben ist oder wünscht keine Teilnahme (Patientendetails/eDMP/keine Teilnahme am DMP), liefert die Statistik keine Ergebnisse, auch wenn die Dokumentationen vorhanden sind.
Also man braucht zwei SQLs:
1. "DMP JA " - Marker anlegen mit dieser Zeile
C.dokuAnzahl > 0 -- Bedingung für 'EINGESCHRIEBEN'


2. "DMP NEIN" - Marker entfernen mit dieser Zeile
C.dokuAnzahl = 0 -- Bedingung für 'NICHT EINGESCHRIEBEN'
