medizininformatik-initiative / INTERPOLAR

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

ERROR: The pids_per_ward table is empty when executing R-dataprocessor/StartDataProcessor.R # Frage #353

Closed medicreitzner closed 10 hours ago

medicreitzner commented 1 month ago

Hallo zusammen,

wie im Titel beschrieben. Beim Ausführen von Skript "StartDataProcessor" erhalten wir folgenden Fehler:

START
[TIME] 1723116944 2024-08-08 13:35:43 
Run Dataprocessor: RUNNING ...

START
[TIME] 1723116944 2024-08-08 13:35:43 
Create Frontend Tables for Patient and Encounter: RUNNING ...
Try to connect with: 
   dbname=cds_hub_db
   host=cds_hub
   port=5432
   user=db2dataprocessor_user
   password=****
   schema=db2dataprocessor_out
SELECT * FROM v_pids_per_ward_all
   WHERE COALESCE(last_check_datetime, input_datetime) =
      (SELECT MAX(COALESCE(last_check_datetime, input_datetime)) FROM v_pids_per_ward_all); 
Create Frontend Tables for Patient and Encounter: Error in createFrontendTables() : 
  ERROR: The pids_per_ward table is empty. Table(s): v_pids_per_ward_all; DB connection: <PqConnection> cds_hub_db@cds_hub:5432
END                                                                                                     
Run Dataprocessor: Error in checkError(potencial_error = process_result, expr_ok = { : 
  Error in createFrontendTables() : 
  ERROR: The pids_per_ward table is empty. Table(s): v_pids_per_ward_all; DB connection: <PqConnection> cds_hub_db@cds_hub:5432

END                                                                                                     
                                                msg     id  state  msecs  µsecs
                                             <char> <char> <fctr> <char> <char>
1:                                             init    0       OK              
2:                                Run Dataprocessor    1    ERROR    396    163
3: Create Frontend Tables for Patient and Encounter    1.1  ERROR    339    383
    nsecs               start                 end
   <char>              <POSc>              <POSc>
1:      0 2024-08-08 13:35:43 2024-08-08 13:35:43
2:    464 2024-08-08 13:35:43 2024-08-08 13:35:44
3:    125 2024-08-08 13:35:43 2024-08-08 13:35:44
                                                                                                                                                                                                                                             error
                                                                                                                                                                                                                                            <char>
1:                                                                                                                                                                                                                                                
2: Error in checkError(potencial_error = process_result, expr_ok = { : \n  Error in createFrontendTables() : \n  ERROR: The pids_per_ward table is empty. Table(s): v_pids_per_ward_all; DB connection: <PqConnection> cds_hub_db@cds_hub:5432\n\n
3:                                                                           Error in createFrontendTables() : \n  ERROR: The pids_per_ward table is empty. Table(s): v_pids_per_ward_all; DB connection: <PqConnection> cds_hub_db@cds_hub:5432\n
Module 'dataprocessor' finished with errors (see details above).
Error in createFrontendTables() : 
  ERROR: The pids_per_ward table is empty. Table(s): v_pids_per_ward_all; DB connection: <PqConnection> cds_hub_db@cds_hub:5432

Dieser resultiert vermutlich aus den Warnmeldungen in Skript "StartRetrieval.R"

Warning messages:
1: In crack_bundles_to_one_table(bundles = bundles, table_description = design,  :
  The resource type or columns you are looking for don't seem to be present in the bundles.
 Returning an empty table.
2: In crack_bundles_to_one_table(bundles = bundles, table_description = design,  :
  The resource type or columns you are looking for don't seem to be present in the bundles.
 Returning an empty table.
3: In crack_bundles_to_one_table(bundles = bundles, table_description = design,  :
  The resource type or columns you are looking for don't seem to be present in the bundles.
 Returning an empty table.

Mein einziger Encounterfilter ist:

ENCOUNTER_FILTER_PATTERN_1 = [
  "ward_name = '.*'"
]

Aktuell bin ich fürs Testen noch mit https://mii-agiop-3p.life.uni-leipzig.de/blaze verbunden. Auf welchen Wert sollte INITIAL_ENCOUNTER_START_DATE_IN_PAST_DAYS bzw. USUAL_ENCOUNTER_START_DATE_IN_PAST_DAYS gesetzt werden?

Viele Grüße und danke für die Hilfe!

astruebi commented 1 month ago

Hallo,

erstmal sorry für die etwas verzögerte Antwort.

Zu den einzelnen Punkten:

Der Fehler kommt, weil in der Tabelle 'pids_per_ward' keine Daten gefunden wurden. In dieser müssten nach dem Lauf des Moduls 'cds2db' alle IDs der Patienten stehen, die sich aktuell auf einer Interpolar-Station befinden. Der oben genannte Filter sorgt dafür, dass alle Patienten gefunden werden sollten, da nichts gefiltert wird.

Der angegebene ward_name ist aber falsch verstanden worden. Das ist kein Pattern sondern einfach ein String für den Stationsnamen, der am Ende im RedCap angezeigt wird, als der Name der Station der sich die über diese Patterns gefundenen Patienten unterordnen. Da sollte so etwas stehen wie "Station 1". Sonst steht im RedCap nur '.*'. Das ist aber bei diesem Problem nur Kosmetik.

Die Tabelle kann im Kern der Datenbank leer sein, weil der 'dataprocessor' zu schnell nach dem 'cds2db' ausgeführt wurde. Es muss mind. 1 Minute Zeit vergangen sein, damit die cron-Jobs in der DB die Daten richtig übernommen haben.

Sollte das auch nicht die Ursache gewesen sein, dann passen die Datumsangaben in den Encountern nicht zu dem Datum mit dem gesucht wird. Folgende Fragen dazu:

Wird ein eigener FHIR-Server genutzt oder unser Testserver? Wenn eigener Server, ist das ein Blaze oder ein Hapi oder ...? Ist in der cds2db_config.toml ein DEBUG_PERIOD_START und DEBUG_PERIOD_END gesetzt?

Uns ist neben mehreren anderen Dingen auch ein Fehler in dem schon aus Polar-Zeiten stammenden und von uns in dieses Projekt übernommenen Mechanismus aufgefallen, mit dem die Encounter anhand ihres Datums heruntergeladen werden, so dass das Ganze im aktuell verfügbaren Release auch daran liegen kann. Das bedeutet, es funktioniert nur mit gesetztem DEBUG_PERIOD_START und DEBUG_PERIOD_END für Datumsangaben in der Vergangenheit auf alten FHIR-Daten. Es funktioniert im aktuellen Release nicht für Encounter, die noch nicht beendet sind. Das ist bereits gefixt, aber wir können das neue Release noch nicht freigeben, weil wir auf Zuarbeit von unserem Datenbankentwickler warten. Das sollte aber nächste Woche fertig sein.

Die Warnungen aus dem 'cds2db' kommen dann, wenn für einen Resourcentyp gar nichts heruntergeladen werden konnte. Das kann erstmal ignoriert werden. Wir stellen das ab.

SebStaeubert commented 2 weeks ago

@medicreitzner Ist das Problem mittlerweile gelöst? Kann das Ticket geschlossen werden?

medicreitzner commented 10 hours ago

Hallo @SebStaeubert, ja vielen Dank. Problem gelöst. Ticket kann geschlossen werden.