medizininformatik-initiative / INTERPOLAR

CDS Tool Chain Repository
https://medizininformatik-initiative.github.io/INTERPOLAR/
5 stars 0 forks source link

Fall-listen in RedCap #444

Open KoesterH opened 1 month ago

KoesterH commented 1 month ago

In RedCap werden alle zu dem Patienten gehörigen Fälle angezeigt. Auch die alten abgeschlossenen Fälle. Dadurch entstehen bei einigen Patienten sehr lange Falllisten mit über 40 Einträgen . Sollte hier nicht besser nur der aktuelle Fall angezeigt werden? Fall

MarcelvonBorzestowski commented 1 month ago

Nach meinem Verständnis werden aktuelle Fälle ab Erhebungsstart aus Usual-Care-Kontexten der standortspezifischen Interpolarstationen ins Frontend übernommen. Der Datenerhebungszeitraum beläuft sich bis Mitte 2026 auf ca. 2 Jahre.

Die Einträge 38-43 (7 Fälle) aus dem Screenshot sind aus einem Zeitraum von 5 Jahren; liegt hier ein (Test-)Datenimport der gesamten Krankenakte zu Grunde, der realiter so nicht vorkommt? Ich schließe nicht aus, dass es gerade bei multimorbiden Patienten schnell zu einer Vielzahl von Fällen kommen kann, wobei man ausmitteln könnte, wie viele Fälle in zwei Jahren pro Patient zu erwarten sind und ob diese Zahl die Darstellung wie oben sprengen würde.

Allerdings legen wir ohnehin den Betrachtungsfokus auf informative Fälle (also nach 3 Tagen noch auf IP-Station und beurteilbare MAs). Es wäre ein Gedanke, nicht-informative Fälle aus der Anzeige zu filtern, wobei aktuell noch zu klären ist, was bzw. in wie weit Frontendeingaben in andere System wie ADKA-DokuPIK exportiert werden sollen. Abgeschlossene Fälle werden zudem im Studienverlauf mit angepasstem Design nach Entlassung erneut vorgelegt und müssen somit im Frontend erhalten bleiben.

Die Datensatzfilterfunktionen zur Anzeige im Record Status Dashboard funktionieren leider nur anhand der Records - d. h. wir können Datensätze gegeneinander z. B. anhand abgeschlossener Fälle filtern, aber nicht innerhalb eines Datensatzes verschiedene Instrumente oder deren Instanzen. Wenn dies gewünscht ist, müssen unter Data Exports, Reports, and Stats entsprechende Reports erstellt werden.

PS: Gemäß abgestimmtem Workflow der Apotheker handelt es sich oben nicht um abgeschlossene Fälle, da der Form Status nicht auf complete gesetzt wurde.

KoesterH commented 1 month ago

Die Fälle die dort angezeigt werden gehen (in meinen Beispielen) bis 2001 zurück. Ich denke, es sind alle Altfälle der Patienten. Ich habe die Strecken so ausgeführt, wie es für den Produktivbetrieb vorgesehen wäre. Also nicht bewusst die gesamte Krankenakte importiert. Dann fehlt hier vermutlich ein Filter der die Fälle auf die letzten Jahre beschränkt. Ob es dann bei einer Beschränkung auf die letzten Jahre von der Menge her passend ist, müssen vermutlich die Apotheker entscheiden.

Ein weitere Punkt der mit in diesem Kontext einfällt (ein wenig offtopic): werden eigentlich nur die Einrichtungskontakte angezeigt oder auch Encounter der anderen Ebenen? Der FHIR-Server den ich zum testen genutzt habe enthält lediglich Einrichtungskontakte. Im produktiven Interpolarserver werden aber auch die anderen Ebenen zu finden sein. Die sollten dann aber nicht im RedCap zu sehen sein.

astruebi commented 1 month ago

@KoesterH Schau mal bitte in dein Log des Dataprocessors. Da gibt es eine Sektion, die ungefähr so aussieht:

Try to connect with: 
   dbname=cds_hub_db
   host=172.18.145.250
   port=15432
   user=db2dataprocessor_user
   password=db2dataprocessor
   schema=db2dataprocessor_in
[1] "The following tables are found in database: fall_fe, risikofaktor_fe, patient_fe, trigger_fe, medikationsanalyse_fe, mrpdokumentation_validierung_fe"
[1] "Inserted in patient_fe, 5 rows (took 0.0713100433349609 seconds)"
SELECT * FROM v_encounter_all
  WHERE enc_patient_id IN ('Patient/UKB-0001', 'Patient/UKB-0008', 'Patient/UKB-0010', 'Patient/UKB-0011', 'Patient/UKB-0014') AND
  enc_partof_id IS NULL AND
  (enc_period_end IS NULL OR enc_period_end > '2020-07-31 21:25:00') AND
  enc_period_start <= '2020-07-31 21:25:00'

Das untere Select in diesem Block ergibt alle Encounter aller Patienten-IDs, die als relevant in dem jeweiligen Durchlauf gefunden wurden. Dabei werden alle Encounter gefunden, die keine PartOf-Referenz haben (=Einrichtungskontakte) und bei denen das Enddatum leer ist oder in der Zukunft liegt. Letzteres ist für retrospektive Analysen gedacht.

Das Datum selbst ist das Datum aus der toml-Datei ('DEBUG_CURRENT_DATETIME') oder es ist das aktuelle Datum, wenn der Parameter in der toml nicht angegeben ist.

Prüfe bitte mal, was bei dir in diesem Select steht und wie die Daten in der Datenbank aussehen, dass im Grunde alle Encounter der Patienten zurück kommen.

KoesterH commented 1 month ago

enc_partof_id IS NULL AND (enc_period_end IS NULL OR enc_period_end > '2024-10-15 08:41:14') AND enc_period_start <= '2024-10-15 08:41:14' Das entspricht dem Zeitpunkt zu dem ich den Dataprocessor gestartet hatte

KoesterH commented 1 month ago

Ah unsere ambulanten Fälle haben auch auch kein Enddatum. Daher kommen die auch alle mit.

astruebi commented 1 month ago

D.h. wenn ein Patient aktuell auf einer IP-Station liegt und vorher mind. einen ambulanten Fall hatte, wird dieser auch in der Datenbank liegen und damit auch im Frontend auftauchen. Das Problem liegt wirklich (leider) in den Daten bzw. daran, dass ambulante Fälle bei euch niemals abgeschlossen werden und damit immer als aktuell laufender Fall gefunden werden. Am ehesten sollte das gefixt werden, als irgendeinen Workaround zu bauen, der nur die Symptome behebt. Aber ihr werdet eure Gründe haben, dass es so ist, wie es ist...

Ein möglicher Workaround wäre, auch dort wieder irgendwie auf stationäre Fälle zu filtern.

KoesterH commented 1 month ago

das Problem ambulante Fälle abzuschließen ist leider alles andere als trivial. Da hatten wir schon verschiedene Ideen die wir aber alle wieder verworfen haben. Das Problem ist, dass es keine Nachricht analog der Entlassnachricht bei stationären Fällen gibt die das Ende eines ambulanten Falls anzeigt. Das heißt wir können nie wissen ob nicht doch noch ein weiterer ambulanter Kontakt hinzukommt.

astruebi commented 1 month ago

Wir überlegen uns mal gemeinsam, wie wir dort auf stationäre Fälle Filtern können. Evtl. wieder als Option in der toml des Fronend-Moduls oder einfach immer, da wir in IP ja nur Stationen betrachten.

SebStaeubert commented 3 weeks ago

Diskussionsstand vom 04.11.2024: Ambulante Fälle sind für IP vermutlich im Frontend nicht interessant und sollten dort nicht angezeigt werden. Parameter für Filter einführen (dataprocessor): FRONTEND_EXCLUDE_OUTPATIENT_ENCOUNTER=true|false