544 Aufrufe

Sehr geehrter Herr Thierfelder, ich hatte die Idee abhängig von der Diagnose eine Aktionskette zu starten. Nach der Karteikartenöffnung soll bei der Diagnose Niereninsuffizienz eine Warnung aufpoppen  die Medikation entsprechend anzupassen und eine Liste ausgewählter Medikamente sollen vorgeschlagen werden.

https://forum.tomedo.de/?qa=blob&qa_blobid=209164313238049148

https://forum.tomedo.de/?qa=blob&qa_blobid=8516262357561074337

Leider klappt das bei mir nicht (oder muß ich sagen mit mir ?). Johannes Zollmann hat mir bereits mitgeteilt, daß in der Bedingung für das Ausführen eine Statistik generiert werden muß, die die Diagnose Niereninsuffizienz Grad 4 (entspricht ICD N18.4) in diesem Fall überprüft.

Könnten Sie uns dafür ein Beispiel bauen?

Gäbe es die Möglichkeit solch eine Warnung zu starten wenn ein bestimmter Laborwert, z.B hier die GFR = glomeruläre Filtrationsrate unter 30 liegt?

Beste Grüße aus Verden nach Jena

Gefragt von (2.4k Punkte)
Bearbeitet von | 544 Aufrufe
+1 Punkt

2 Antworten

Sehr geehrter Herr Dr. Kampmann,

es hätte mich doch sehr gewundert wenn Sie es hinbekommen hätten. Die selektiven Bedingungen für das Ausführen einer Aktionskette habe ich via Statistik gemacht, da es sehr schnell zu Programmieren war und es maximale Flexibilität bei den Bedingungen gibt. Dies nutzerfreundlicher zu machen bei gleicher Flexibilität ist meines Erachtens nicht möglich. Kurzum, man muss eine Statistik erzeugen, die das tut. Hier kommt aber gleich die Frage: Welche Diagnose meinen Sie? Quartalsdiagnose/Dauerdiagnose? KV-Schein, HZV-Schein oder Karteidiagnose?

 

Hier ein kleines Tutorial wie man so eine Aktionskette (Hinweis bei Niereninsuffizienz) erstellt, welches auch für andere Nutzer gut sein kann:

Ich werde mal das Einfachste machen und eine Statistik für eine KarteiDiagnose mit dem ICD-Code N18.4 anlegen. Also admin/Statistikverwaltung und dort eine neue Statistik

Die Statistik zum Copy&Paste:

select dgn.* from Besuch b
left join patient p
on b.patient_ident = p.ident
left join patientendetails pd
on p. patientendetails_ident = pd.ident
left join patientendetailsrelationen pdr
on pd. patientendetailsrelationen_ident = pdr.ident
left join patientendetailsrelationen_karteieintraege pdrke
on pdrke.patientendetailsrelationen_ident = pdr.ident
left join karteieintrag ke
on pdrke.karteieintraege_ident = ke.ident
join diagnose dgn
on ke.diagnose_ident = dgn.ident
join icdkatalogeintrag icd
on dgn.icdkatalogeintrag_ident = icd.ident
where
b.ident = $[besuchident]$ and
icd.code ilike 'N18.4'

Und dann erscheint diese auch in der Aktionsketten Auslöser Verwaltung (admin/Auslöser Aktionsketten):

Hier habe ich einen Auslöser definiert, wenn das Karteifenster geöffnet wird (egal von welchem Nutzer, egal an welchem Arbeitsplatz), wird die Statistik Aktionskette - Niereninsufizienz ausgeführt. Hat diese Mehr als ein Ergebnis (also gibt es mind. eine Karteidiagnose mit dem ICD-Code N18.4) so wird die Aktionskette Hinweis ausgeführt. Wie sieht diese aus? Dazu auf das Rädchen klicken oder admin/Aktionsketten:

Diese macht nichts anderes als einen Hinweistext anzuzeigen. Was passiert jetzt also wenn ich einen Patienten mit dieser Diagnose aufmache:

Also ein einfacher Hinweistext. (Bem: hier ist nichts in der Akte, weil das modale Hinweisfenster kommt, bevor die Karteitabelle angezeigt wird... bitte nicht wundern. Wenn man auf OK klickt, so wird sofort danach die Tabelle befüllt.)

 

Das wäre der Auslöser für diese einfache Aktionskette. Jetzt ist die Statistik noch nicht ausgereift und die Aktionskette macht nur den Hinweis. Was bei Ihrer obige Frage noch offen ist:

1. Medikation anpassen. Hm, was meinen Sie damit. Aktionsketten können nur Sachen erstellen. Also zb Ihnen ein Vorschlag für Medikamente auf ein Rezept geben, leider nicht (so wie ich den Satz interpretieren würde) den Medikamentenplan ändern. Aber evtl ist das der Teil, den Sie schon gemacht haben.

2. Ja, es ist möglich Laborergebisse auszuwerten. Das ist das tolle an der Statistik. Hier wollen Sie aber sicherlich etwas was direkt im Laborfenster passieren soll. Sie schauen sich ja sowieso den Laborverlauf an, oder? Wenn das über eine Statistik gehen soll, so schaff ich das nicht Samstag früh am Frühstückstisch ;)

 

Beantwortet von (35.6k Punkte)
Bearbeitet von
+3 Punkte
Super, besten Dank, das werde ich am Wochenende einmal ausprobieren.

Zu1. Medikation anpassen: da reicht erst mal eine Liste potenziell ungefährlicher Medikamente, das kriege ich hin, glaube ich. Aber ihre Idee mit der Änderung des Mediplanes ist natürlich klasse!

Zu2.Mir reicht erstmal völlig, wenn der letzte GFR Wert ausgelesen wird und in Abhängigkeit von der Höhe eine Meldung bzw. eine Aktionskette gestartet wird. Das wäre fabelhaft. Wäre das sehr aufwändig?

 

Wenn Sie aber mit so tollen weiteren Ideen kommen, es wäre natürlich reizvoll , wenn folgendes ginge: Der Rechner registriert bei Aufruf der Karteikarte in den Laborwerten zum Beispiel GFR unter 60 und stellt fest, die letzte Blutentnahme ist bereits länger als ein Jahr her! Dann erfolgt z.B. die Warnung: "Hallo GFR unter 60 ist nicht gut, und die letzte Blutentnahme ist 6 Monate zu lange her. Bitte einen Labortermin ausmachen und Medikamentenplan überprüfen. Danke " Wenn ich länger darüber nachdenke, kommme ich noch auf ganz viele andere tolle Ideen, aber die erspare ich Ihnen lieber :-))

Vielen Dank, schönes Wochenende

Ralf Kampmann

Sehr geehrter Herr Dr.  THierfelder, ich habe es nicht ausgehalten und schon mal losexperimentiert. Ich habe den SQL Text kopiert, eine Statistik angelegt.

https://forum.tomedo.de/?qa=blob&qa_blobid=14250321918764674562

hier der TExt

select dgn.* from Besuch b
left join patient p
on b.patient_ident = p.ident
left join patientendetails pd
on p. patientendetails_ident = pd.ident
left join patientendetailsrelationen pdr
on pd. patientendetailsrelationen_ident = pdr.ident
left join patientendetailsrelationen_karteieintraege pdrke
on pdrke.patientendetailsrelationen_ident = pdr.ident
left join karteieintrag ke
on pdrke.karteieintraege_ident = ke.ident
join diagnose dgn
on ke.diagnose_ident = dgn.ident
join icdkatalogeintrag icd
on dgn.icdkatalogeintrag_ident = icd.ident
where
b.ident = $[besuchident]$ and
icd.code ilike 'N18.4'

Dann in Auslöser Aktionskette alles so eingefügt wie vorgegeben:

https://forum.tomedo.de/?qa=blob&qa_blobid=17359734552504262192

https://forum.tomedo.de/?qa=blob&qa_blobid=1862261568573833428

Leider passiert nix. Vermutlich habe ich irgendetwas falsch gemacht. Zur Sicherheit habe ich danach noch mal ein Update gemacht. Hat leider auch nichts geändert. Haben Sie eine Idee?

Werden sowohl Dia´s als auch DDI´s durchsucht?

Es sollten optimalerweise sämtliche Scheindiagnose sowohl KV HÄVG als auch Privatscheine, sozusagen alle durchsucht werden, wenn ein Patient aufgerufen wird.

Gruß Ralf Kampmann

Der letzte Kommentar ist vermute ich das Problem. In meiner Faulheit habe ich nur Karteidiagnosen überprüft. Es werden also keinerlei Schein/Privatrechnungsdiagnosen durchsucht. Dadurch wäre die Anfrage etwas länger.
Hallo Herr THierfelder ,

Es wäre natürlich toll, wenn das das ginge.

Noch toller und ein sehr gutes Sicherheitsinstrument wäre aber tatsächlich eine Warnung in Rot , wenn die GFR unter 60 in den Laborwerten wäre, vielleicht dann mit der anzeige des letzten konkreten GFR Wertes und mit dem Datum der letzten Blutennahmen. Ich hoffe das ist so einfach wie es klingt.

Bin schon sehr gespannt,

 

Ihr Ralf Kampmann
Also die Laborsachen sind faktisch möglich, aber wir müssten für jede Bedingung eine eigene Statistik machen. Evtl sollten wir für Ärzte wichtig Bedingungen sammeln und direkt umsetzen. Das mit dem Labor macht Sinn, ist aber abhängig vom Labor (also wie das Labor die Daten schickt). Auch die Bedingung zu den Diagnosen ist sicher eine wichige Sache und sollte auch ohne extra Statistik funktionieren.

Können SIe mal genau nachdenken, welche Bedingungen Sie brauchen? Gibt es auch sowas wie hat speziellen laboreintrag in den letzten 4 wochen und eine diagnose xy ?
In unserem Team beim Mittagessen diskutiert wäre es super, wenn wir die häufigsten und wichtigsten Parameter für  ggt, gfr und hb hätten. Im Idealfall könnten wir die Auslösegrenze für die Bildschirmmeldung selbst festlegen.(z.B. gfr <60, hb <10, ggt >60. Uns würde es erst einmal reichen , wenn eine auffällige Meldung käme, vielleicht in Gelb oder rot. z.B. Letzte GFR= 45 am 5.2.2017. Dann wissen wir sofort: Vorsicht Niereninsuffizienz, sehen direkt wann die letzte be war und können die Medikation und die nächste Blutentnahme anpassen.

Ich finde die Lösung mit der Statistik eigentlich ganz sexy, weil sie mir auch am unaufwändigsten und insgessamt am flexibelsten scheint. So kann jede Praxis ihre eigenen Aktionsketten und Hinweisfenster wie es am besten passt bauen und diese an die entsprechenden Statistikauslöser koppeln.

Alles weitere wie darüber hinausgehende Kopplung an Bedingungen wie letzte Blutentnahme und diagnose wäre natürlich langfristig hochinteressant, aber vermutlich auch sehr zeitintensiv für sie , oder?

Wir sind schon sehr gespannt auf ihre Lösung bzgl. der Laborwerte.

Die Diagnosenstatistik wäre auch sehr interessant für uns . Ist das noch viel Arbeit?

Gruß Ralf Kampmann
Hallo Herr THierfelder , ich bin mir nicht sicher, ob der letzte Kommentar sie erreicht hat. Daher hier noch einmal als Antwort:

In unserem Team beim Mittagessen diskutiert wäre es super, wenn wir die häufigsten und wichtigsten Parameter für  ggt, gfr und hb hätten. Im Idealfall könnten wir die Auslösegrenze für die Bildschirmmeldung selbst festlegen.(z.B. gfr <60, hb <10, ggt >60. Uns würde es erst einmal reichen , wenn eine auffällige Meldung käme, vielleicht in Gelb oder rot. z.B. Letzte GFR= 45 am 5.2.2017. Dann wissen wir sofort: Vorsicht Niereninsuffizienz, sehen direkt wann die letzte be war und können die Medikation und die nächste Blutentnahme anpassen.

Ich finde die Lösung mit der Statistik eigentlich ganz sexy, weil sie mir auch am unaufwändigsten und insgessamt am flexibelsten scheint. So kann jede Praxis ihre eigenen Aktionsketten und Hinweisfenster wie es am besten passt bauen und diese an die entsprechenden Statistikauslöser koppeln.

Alles weitere wie darüber hinausgehende Kopplung an Bedingungen wie letzte Blutentnahme und diagnose wäre natürlich langfristig hochinteressant, aber vermutlich auch sehr zeitintensiv für sie , oder?

Wir sind schon sehr gespannt auf ihre Lösung bzgl. der Laborwerte.

Die Diagnosenstatistik wäre auch sehr interessant für uns . Ist das noch viel Arbeit?

Was denken Sie wie lange würde das dauern?

Gruß Ralf Kampmann

Hier die (hoffentlich) vollständige Diagnose-Statistik (kartei, kvschein, hzvschein, privatrechnung)

drop table if exists temporaryPDR;
create temporary table temporaryPDR as
select pdr.* from Besuch b
left join patient p
on b.patient_ident = p.ident
left join patientendetails pd
on p. patientendetails_ident = pd.ident
left join patientendetailsrelationen pdr
on pd. patientendetailsrelationen_ident = pdr.ident
where
b.ident = $[besuchident]$ ;



drop table if exists temporaryKarteiDIA;
create temporary table temporaryKarteiDIA as
select dgn.* from temporaryPDR pdr
left join patientendetailsrelationen_karteieintraege pdrke
on pdrke.patientendetailsrelationen_ident = pdr.ident
left join karteieintrag ke
on pdrke.karteieintraege_ident = ke.ident
join diagnose dgn
on ke.diagnose_ident = dgn.ident
where
ke.visible = true and
dgn.visible = true;


drop table if exists temporaryHZVDIA;
create temporary table temporaryHZVDIA as
select dgn.* from temporaryPDR pdr
join patientendetailsrelationen_hzvscheine pdrhzv
on (pdr.ident = pdrhzv.patientendetailsrelationen_ident)
join hzvschein hzv
on (hzv.ident = pdrhzv.hzvscheine_ident)
join hzvschein_quartalsdiagnosen hzvdgn
on (hzvdgn.hzvschein_ident = hzv.ident)    
join diagnose dgn
on (hzvdgn.quartalsdiagnosen_ident = dgn.ident)    
where
dgn.visible = true and
hzv.visible = true;


drop table if exists temporaryKVSDIA;
create temporary table temporaryKVSDIA as
select dgn.* from temporaryPDR pdr
join patientendetailsrelationen_kvscheine pdrkvs
on (pdr.ident = pdrkvs.patientendetailsrelationen_ident)
join kvschein kvs
on (kvs.ident = pdrkvs.kvscheine_ident)
join kvschein_quartalsdiagnosen kvsdgn
on (kvsdgn.kvschein_ident = kvs.ident)    
join diagnose dgn
on (kvsdgn.quartalsdiagnosen_ident = dgn.ident)    
where
dgn.visible = true and
kvs.visible = true;


drop table if exists temporaryPRDIA;
create temporary table temporaryPRDIA as
select dgn.* from temporaryPDR pdr
join patientendetailsrelationen_rechnungen pdrpr
on (pdr.ident = pdrpr.rechnungen_ident)
join privatrechnung pr
on (pr.ident = pdrpr.rechnungen_ident)
join privatrechnung_quartalsdiagnosen prdgn
on (prdgn.privatrechnung_ident = pr.ident)    
join diagnose dgn
on (prdgn.quartalsdiagnosen_ident = dgn.ident)    
where
dgn.visible = true and
pr.visible = true;


select * from (
select * from temporaryKarteiDIA
union all
select * from temporaryKVSDIA
union all
select * from temporaryPRDIA
union all
select * from temporaryHZVDIA) as dgn
join icdkatalogeintrag icd
on dgn.icdkatalogeintrag_ident = icd.ident
where
-- hier kann man die ICDDiagnose angeben

icd.code ilike 'N18.%'

 

Und hier noch die Statistik für die 3 Laborwerte. Aus Einfachheit habe ich alle Laborbefunde der letzten 2 Wochen überprüft.

drop table if exists temporaryPDR;
create temporary table temporaryPDR as
select pdr.* from Besuch b
left join patient p
on b.patient_ident = p.ident
left join patientendetails pd
on p. patientendetails_ident = pd.ident
left join patientendetailsrelationen pdr
on pd. patientendetailsrelationen_ident = pdr.ident
where
b.ident = $[besuchident]$;


select lt.* from temporaryPDR pdr
left join patientendetailsrelationen_karteieintraege pdrke
on pdrke.patientendetailsrelationen_ident = pdr.ident
left join karteieintrag ke
on pdrke.karteieintraege_ident = ke.ident
join laborauftrag la
on ke.laborauftrag_ident = la.ident
join laborbefund lb
on la.laborbefund_ident = lb.ident
join laborbefund_lb820x lblx
on lblx.laborbefund_ident = lb.ident
join lb820x lx
on lblx.lb820x_ident = lx.ident
join lb820x_lbtest lblt
on lblt.lb820x_ident = lx.ident
join lbtestlbanforderung lt
on lblt.lbtest_ident = lt.ident
where
ke.visible = true and
la.removed = false and
lb.removed = false and
lx.removed = false and
-- hier wird gesagt, wie lange in der Vergangenheit gesucht werden soll
(
(lt.abnahmedatum is not null and lt.abnahmedatum > now() - interval '14 days' ) or
(lx.berichtsdatum is not null and lx.berichtsdatum > now() - interval '14 days')
)
and
(
-- hier kann man die TestKürzel und die Schwellwerte einstellen
(lt.testident ilike 'HB' and lt.ergebniswert < 20.) or
(lt.testident ilike 'GFRCKD' and lt.ergebniswert < 60.) or
(lt.testident ilike 'GAGT%' and lt.ergebniswert > 60.)
)

Die Statistiken benötigen einen richtigen Besuch. Öffnet man aber den Patient aus der Patientensuche, so hat man leider keinen Besuch und es erscheint ein Warnhinweis. Sollte man also - wie in den beiden oben besprochenen Fällen - keine Besuchsdaten benötigen, sondern nur Patientendaten, so kann man die statistik anpassen und den ersten Block durch das heir ersetzen:

drop table if exists temporaryPDR;
create temporary table temporaryPDR as
select pdr.* from patient p
left join patientendetails pd
on p. patientendetails_ident = pd.ident
left join patientendetailsrelationen pdr
on pd. patientendetailsrelationen_ident = pdr.ident
where
p.ident = $[patientident]$;

 

 

Nachtrag: mehr an mich selbst, damit ich es in Zukunft im Forum wieder finde.

Man kann anstelle von Statistiken auch ein applescript ausführen lassen, welches mit Briefschreibungskommandos bestückt ist. Man macht dann in dem applescript die Auswertung machen und nutzt dann die Scriptingbridge nutzen (ich habe gerade diesen Beitrag von mir im Forum dazu gefunden https://forum.tomedo.de/index.php/4526) um in tomedo eine andere Aktionskette aufzurufen. Hiermit kann man sich Statistiken ersparen. Ich habe dies aber noch noch nicht durchgetestet.

Beantwortet von (35.6k Punkte)
0 Punkte
4,912 Beiträge
8,678 Antworten
11,053 Kommentare
1,962 Nutzer