medizininformatik-initiative / INTERPOLAR

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

DB2Frontend - was sagt mir dieser Fehler? #299

Closed KoesterH closed 3 months ago

KoesterH commented 3 months ago

Wenn ich das StartDB2Frontend.R skript starten möchte bekomme ich folgenden Fehler:

importRecords will change how it validates data in version 3.0.0. We recommend preparing your data for import using castForImport . Error in if (!MetaData$field_name[1] %in% names(data)) { : argument is of length zero Calls: copyDB2Redcap -> -> importRecords.redcapApiConnection Execution halted

liegt das Problem an nicht vorhandenen/ungeeigenten Daten oder stimmt was mit der RedCap-Anbindung nicht? cds2db und der dataprocessor sind gut durchgelaufen. Im db_log in den Tabellen fall_fe und patient_fe steht was drin.

mayadogh commented 3 months ago

Habt Ihr das Token für die API & die URL für REDCap angepasst und alle anderen Variablen für die DB-Fronteend Nutzer usw. auch in der .toml Datei angepasst?

KoesterH commented 3 months ago

Hi, ja ich hab die Redcap_url und das Redcap_token angepasst. Sonst nichts weiter. Wir nutzen nicht das mitgelieferte RedCap sondern unsere eigene Instanz. Mit eurem ersten Release konnte ich mich so (Url + Token) erfolgreich verbinden.

mayadogh commented 3 months ago

Das erste Teil ist eine Warnung nur (Cast for Import). Läuft dann weiter. Der Rest sag mir etwas ist leer (nicht zu finden). Wir haben viel in REDCap angepasst, hast du auch das Projekt neuangelegt? Sind Daten im DB_FrontEnd_out Schema? Die views von Fall & Patient sind dort relevant.

KoesterH commented 3 months ago

Ja ich hab ein komplett neues Projekt angelegt und eure .xml importiert. Hat soweit auch einen guten Eindruck gemacht. im db2frontend_out ist nichts drin. Dann ist das vermutlich das Problem. Welcher Schritt schreibt da was rein?

mayadogh commented 3 months ago

Ich habe Matthias Reusche @reuschem hierzu gefügt, da irgendwo in der DB Daten in db2frontend_out geschickt werden, wenn Daten in FHIR-Server zur Verfügung stehen.

reuschem commented 3 months ago

Hallo H., kannst du bitte nochmal ins Schema db2frontend_out bei den Views schauen das Patient_fe und Fall_fe angelegt sind. Wenn nicht bitte nochmal Skript 52_cre_view_fe_out.sql ausführen. Diese geben die Daten aus den Kern mit Berechtiungen an die Schnittstelle.

KoesterH commented 3 months ago

Hallo, die Ansichten sind im db2dataprocesser_out angelegt. Aber die Tabellen selbst nicht. Für die db (ohne log) ist übrigens gar nichts angelegt. Weder Tabellen noch Views. Ich hab das sql in der Datenbank trotzdem nochmal laufen lassen. Und danach nochmal dataprocessor und db2frontend. Der Fehler ist immer noch da. Aber wenn es irgendwie an den Daten liegt, werde ich es später nochmal mit anderen Daten versuchen. LG Helene

reuschem commented 3 months ago

Hallo Helene, im db2frontend_out sollen auch nur die Ansichten sein - sind den Daten enthalten - also hat der Dataprocessor die Daten erzeugt (siehe zb. Tabellen Patient_fe in db2dataprocessor_in bzw. besser in db_log)?

Wenn ja, sollten die Daten aus Datenbanksicht übernommen werden können. Zum Zurück schreiben in die Datenbank müssen die Tabellen im Schema db2frontend_in (patient_fe, fall_fe) vorhanden sein, Skript "44_cre_table_frontent_in".

Wenn dies alles vorhanden ist und die Daten in der View db2frontend_out.patien_fe zu sehen sind, müssen wir weiter bei der Verbindung/Konfiguration zu RedCap schauen.

Grüße

KoesterH commented 3 months ago

im db_log sind in den Tabellen fall_fe und patient_fe Daten drin. Die Tabellen im db2frontend_in sind vorhanden aber leer.

mayadogh commented 3 months ago

db2frontend_in bleibt leer bis dies Fehlermeldungen noch da ist. Aber wenn keine Daten in db2frontend_out sind, dann kann man nichts in REDCap schreiben. Außer LOG wo sind Daten drin?

KoesterH commented 3 months ago

Nur im db_log sind Daten. Ich vermute, der Job db2frontend soll (zumindest temporär) Daten in db2frontend_out schreiben. Da da aber gar keine Tabellen angelegt sind, sieht es für mich so aus, als ob da nie was reingeschrieben wurde. Ist es vielleicht ein Problem, dass die anderen _fe Tabellen leer sind (also z.b. db_log.medikationsanalyse_fe)?

reuschem commented 3 months ago

Der Weg in Kurzform: FHIR-> cds2db_in (Table) -> db_log (Table) -> cds2db_out (View) -> cds2db_in (Table) -> db_log (Table) -> db2dataprocessor_out (View) -> DATAPROCESSOR(R) -> db2dataprocessor_in (Table) -> db_log (Table) -> db2frontend_out(View) -> FRONTEND (R+RedCap) ->db2frontend_in (Table) -> db_log (Table)

Wenn also Daten in db_log sind sollten diese, da eine View auch in db2frontend_out sein. Wenn nicht müssten wir uns zusammen die Daten mal ansehen, weil darin eine Einschränkung auf den aktuellen Zeitpunkt ist.

"SELECT * FROM db_log.patient_fe" als fontend_user bitte auch mal testen.

Ansonsten kann ich kurze Videokonferenz anbieten?

KoesterH commented 3 months ago

Danke für die Hilfe soweit. Ich habe das R-Skript Zeile für Zeile ausgeführt. Der Fehler tritt in Zeile 73 auf: redcapAPI::importRecords(..)

KoesterH commented 3 months ago

Es war ein Versions-Problem mit unserem RedCap. Funktioniert jetzt Danke nochmal für den Support

mayadogh commented 3 months ago

Hurrah! Kannst du näher erläutern was an der Version falsch war? War es das falsche Token oder sowas? Nur falls es wemanderes passiert, dann bin ich informiert. :-)

mayadogh commented 3 months ago

Gelößt.