fhirproof checkt, ob FHIR Json Dateien ins Centraxx importiert werden können.
fhirproof [specimen|observation] <json dir> --db <db target> --user <user> --log <logfile>
example:
fhirproof specimen specimen-dir --db num_prod --user numwuerzfhir --log fp.log
Sieh auch fhirproof -h
.
Das .whl von releases downloaden und mit pip installieren:
pip install fhirproof-<version>.whl
Installieren aus source:
make install
Der Code kann aus den .ct Dateien mit ct oder mit ct fuer vscode generiert werden.
Make die .ct Dateien mit make
.
Wenn die Probe eine Primärprobe (MASTER) im Json ist, sollte es sie schon in der Datenbank geben. Derived Proben muss es nicht unbedingt schon in der Datenbank geben, sie können neu dazu kommen.
Proben sollten in dieser zeitlichen Reihenfolge verarbeitet werden:
Abnahme (Collection) [bei Primär]
Laboreingang (Received)
Zentrifugation [wenn da]
Aliquotierung (Derival) [bei Aliquoten]
Primärproben sollen Originalcontainer sein, Aliquot-Deriveds NUM Aliquotcontainer.
Gibt es den Lagerort in der DB? Für alle Aliquot-Deriveds ist der Lagerort angegeben, außer ihre Restmenge ist null. Bei Primärproben ist nur bei Speichel und PaxGene ein Lagerort angegeben.
Der Lagerort muss existieren und etwas anderes als UserWorkspace sein.
Todo: Es wird geprüft, ob die Zentrifugationsart die in den Json Daten angegeben ist auch in der DB existiert.
Die Organisationunit vom Patienten der Probe muss die selbe sein.
Aliquotgruppen sollen nicht ohne Deriveds sein, die an ihnen hängen.
Das LIMS-Pseudonym (Limspsn) für den Patienten der in der DB zum Sample gehört soll das gleiche wie im Json sein.
Wenn das Sample ein Derived/Aliquot ist, soll die Limspsn im Json-Parent die gleiche sein.
Bei Masters mit Aliquoten soll die Restmenge null sein, bei Masters ohne Aliquote soll die Restmenge groesser null sein.
Das Material eines Entries soll seinem Parent Entry entsprechen, sofern es einen Parent gibt. Ist der Entry ein Derived (Aliquot), muss es das gleiche Material sein wie seine Parent-Aliquotgroup.
Das Code-Klarnamen Mapping kann man über die Datenbank abfragen,
indem man von sampletype.code
zu multilingualentry.value
über die
verbindende Tabelle sampletype_ml_name
geht.
select st.code, ml.value from centraxx_sampletype st
inner join centraxx_sampletype_ml_name stml on stml.related_oid
= st.oid
inner join centraxx_multilingualentry ml on stml.oid = ml.oid
order by st.code, ml.lang desc
Ohne order by ml.lang kommt manchmal Deutsch zuerst, manchmal English.
Eine kleine Testdatei ist angebrannt.json. Da drin nach den _comment Feldern suchen, z.B. die Zeiten sind kaputt.
Dateien aus vorangegangenen Importen mit denen man testen kann liegen in test-dresden und test-wuerz. In Dresden ist die Reihenfolge kaputt, in Wuerzburg die Master Sample Ids.
Auf dem Test-Applikations-Server liegen Import Dateien in C:\applications\centraxx-home\fhir-custom-export\num_wuerz\import\CASE* und in C:\applications\kairos\FHIR-Importer\Dresden\error
A little shell pipeline for extracting certain sampleids from the
logfile is in scripts/sampleids-from-log.sh
.
Vielleicht eine groovy Version zum Einbinden in Centraxx.