Sehr geehrter Herr Dinh,
Sie können versuchen die Aktionskettenbedingung zu basteln, wie Herr Tenzer vorgeschlagen hat.
Der Vergleich mit dem Kassennamen ist aber nicht zuverlässig. Erstens, weil der Name des HZV-Kostenträgers vom Namen des KV-Kostenträgers leicht abweichen kann (z. B. Energia BKK ist in der Datenbank als energia-BKK hinterlegt). Zweitens, dieser Vertrag umfasst auch die anderen Kassen (schätzungsweise > 500), die alle kann man kaum in einer AK-Bedingung packen.
Eine Möglichkeit ist, wenn MFA beim Aufruf von Patientendetails prüft, ob der Vertrag "BKK_GWQ_HZV" für den Patienten verfügbar ist (steht in der Liste von verfügbaren Verträge). Da kann man auch gleich sehen, ob der Patiente schon ins HZV Programm eingeschrieben ist oder nicht.
Die andere Möglichkeit ist die Custom-Statistik zu basten/nutzen.
SELECT B.ident FROM
(SELECT p.ident, (SELECT COUNT(*) FROM
(SELECT
d.*,
CAST(date_trunc('day', d.beginnTeilnahme::date) AS timestamp) AS beginnTeilnahme_startOfDay,
CAST(date_trunc('day', d.endeTeilnahme::date) + interval '1 day' - interval '1 second' AS timestamp) AS endeTeilnahme_endOfDay
FROM (select * from hzvDetails)d
LEFT JOIN hzvVertrag v ON d.hzvVertrag_ident = v.ident
-- Vertrag Typ (HaV)
WHERE v.typ = 1
)A
WHERE
-- dummy FAV ignorieren
(A.statusFAVDirektaktivierung IS NULL
OR (A.statusFAVDirektaktivierung != 4 AND A.statusFAVDirektaktivierung != 5))
AND
(
-- Gueltigkeit von aktiven Vertraegen prüfen
(A.statusTeilnahme = 2
AND ((A.beginnTeilnahme IS NULL) OR (beginnTeilnahme_startOfDay <= NOW()))
AND ((A.endeTeilnahme IS NULL) OR (endeTeilnahme_endOfDay >= NOW()))
)
OR
-- Gueltigkeit von beendeten Vertraegen prüfen
(A.statusTeilnahme = 3
AND ((A.beginnTeilnahme IS NULL) OR (beginnTeilnahme_startOfDay <= NOW()))
AND ((A.endeTeilnahme IS NOT NULL) AND (endeTeilnahme_endOfDay >= NOW()))
)
)
-- Patien ident
AND A.patient_ident = p.ident
GROUP BY A.patient_ident
)AS number_sv FROM patient p
LEFT JOIN patientendetails pd ON p.patientendetails_ident = pd.ident
LEFT JOIN kartendaten kd ON pd.aktuelleGVKKartendaten_ident = kd.ident
WHERE p.ident = $[patientident]$
AND
(
kd.abrechnenderkostentraeger in
(SELECT ik.code FROM hzvvertrag v
LEFT JOIN hzvvertragsrelationen vr ON v.hzvvertragsrelationen_ident = vr.ident
LEFT JOIN hzvvertragsrelationen_hzvkostentraeger vrkt ON vrkt.hzvvertragsrelationen_ident = vr.ident
LEFT JOIN hzvkostentraeger kt ON vrkt.hzvkostentraeger_ident = kt.ident
LEFT JOIN institutionskennzeichen ik ON kt.ik_ident = ik.ident
WHERE v.code = 'BKK_GWQ_HZV')
OR
kd.kostentraeger in
(SELECT ik.code FROM hzvvertrag v
LEFT JOIN hzvvertragsrelationen vr ON v.hzvvertragsrelationen_ident = vr.ident
LEFT JOIN hzvvertragsrelationen_hzvkostentraeger vrkt ON vrkt.hzvvertragsrelationen_ident = vr.ident
LEFT JOIN hzvkostentraeger kt ON vrkt.hzvkostentraeger_ident = kt.ident
LEFT JOIN institutionskennzeichen ik ON kt.ik_ident = ik.ident
WHERE v.code = 'BKK_GWQ_HZV')
)
)B
WHERE COALESCE(B.number_sv, 0)= 0
;
Diese muss man in der Statistikverwaltung anlegen.
Die Statistik prüft die Kartendaten und ob der Patient schon am HZV Programm teilnimmt. Die Statistik liefert ein Ergebnis (AK kann ausgeführt werden) wenn der Patient den passenden Kostenträger hat und noch keine aktive HZV-Teilnahme hat.