Go to file
Daniel Kraus 85800ebd75 Improve docs. 2015-06-20 21:32:42 +02:00
Tests Add LineParser and basic dictionaries. 2015-06-20 21:13:55 +02:00
www Link to ZAA web page. 2015-06-19 20:59:19 +02:00
zaaReloaded2 Add LineParser and basic dictionaries. 2015-06-20 21:13:55 +02:00
.gitattributes Create zaaReloaded2 project and solution. 2015-06-15 19:15:52 +02:00
.gitignore Git-ignore doxygen database. 2015-06-19 20:50:53 +02:00
Doxyfile Improve docs. 2015-06-20 21:32:42 +02:00
HISTORY.md Change case of HISTORY.md. 2015-06-20 16:35:46 +02:00
README.md Improve docs. 2015-06-20 21:32:42 +02:00
zaaReloaded2.sln Add Tests project. 2015-06-17 20:26:26 +02:00

README.md

Technische Informationen

Das Addin analysiert die Ausgabe von Lauris in der Zentralen Arztbriefablage, die typischerweise so aussieht:

[20.06.2015 16:46:00]
Klinische Chemie: Natrium: 139 [135 - 145] mmol/l;  Kalium: 5.2 [3.5 - 5] mmol/l;  Calcium:
    2.4 [2.0 - 2.7] mmol/l;  anorg. Phosphat: 0.58 [0.87 - 1.45] mmol/l;
     Calcium-Phosphat-Produkt: 1.39 [<= 4.4] mmol²/l²;  Glucose: 112 [74 - 106] mg/dl;
     glomerul. Filtrationsr. CKD-EP: 42 ml/min /1,73qm;  glomerul. Filtrationsr. (MDRD): 42
    ml/min /1,73qm;  Creatinin: 1.84 [0 - 1.17] mg/dl;  Harnstoff: 54.3 [10 - 50] mg/dl;
     Harnsäure: 4.6 [3.4 - 7] mg/dl;  Gesamt-Bilirubin: 0.7 [0.1 - 1.2] mg/dl;  GOT (ASAT):
    303.0 [<= 50] U/l;  GPT (ALAT): 508.0 [<= 50] U/l;  GGT: 489.0 [<= 60] U/l;  Alk.
    Phosphatase: 56 [40 - 130] U/l;  Lactat Dehydrogenase: 320 [<= 250] U/l;  CK gesamt: 52 [<=
    190] U/l;  Amylase: 62 [<= 110] U/l;  Cholesterin: 120 [130 - 220] mg/dl;  Triglyceride: 94
    [74 - 172] mg/dl;  LDL - Cholesterin: 56 [0 - 150] mg/dl;  HDL - Cholesterin: 45 [>= 35]
    mg/dl;  Eisen: 215 [59 - 158] µg/dl;  Gesamt-Eiweiss: 5.7 [6.6 - 8.7] g/dl;  Albumin: 4.0
    [3.5 - 5.5] g/dl; 
Gerinnung: Niedermol. Heparin (Anti-Xa): 0.99 U/ml; 

Und so weiter, es gibt noch mehr Variationen.

Parsen der Lauris-Ausgabe

Die Lauris-Ausgabe wird in folgende Einheiten aufgetrennt:

  • Datumsblöcke: Die Klasse zaaReloaded2.Models.TimePoint enthält alles, was unterhalb der Datumszeile [20.06.2015 16:46:00] steht.
  • Kategorieblöcke: Die Klasse zaaReloaded2.Models.LaurisParagraph analysiert einen ganzen Laborblock wie z.B. Klinische Chemie oder Gerinnung und trennt ihn anhand der Semikolons, um daraus eine Sammlung von LabItems zu bilden.
  • Parameter: Die Klasse zaaReloaded2.Models.LabItem analysiert einen einzelnen Parameter-String der Form Natrium: 138 [135 - 145] mmol/l usw. und stellt die einzelnen Bestandteile in strukturierter Form zur Verfügung.

Wörterbücher

Die Bezeichnungen für einzelne Parameter und Einheiten sind bei Lauris teilweise etwas unglücklich. Beispielsweise wird glomerul. Filtrationsr. CKD-EP wohl kaum im klinischen Alltag verwendet, und auch Lactat Dehydrogenase ist etwas ungewöhnlich, weil alle immer LDH sagen und schreiben. Die Einheit ml/min /1,73qm enthält ein Leerzeichen zuviel und das veraltete "qm" und sollte besser ml/min/1,73 m² geschrieben werden.

Aus diesem Grunde werden anpassbare Wörterbücher verwendet, die Parameternamen in "kanonische" (CanonicalName) und Lauris-Einheiten in wirklichkeitsnähere, typographisch korrekte Einheiten übersetzen:

  • zaaReloaded2.Dictionaries.ParameterDictionary
  • zaaReloaded2.Dictionaries.UnitDictionary

Beide Wörterbuch-Typen laden zunächst eingebaute Default-Werte aus der Assembly und suchen dann nach Anpassungen auf Systemebene und auf Benutzerebene.

Textdateien zur Konfiguration

Um Anpassungen zu erleichtern und nicht jedes Mal eine neue Version der Binärdateien zu erfordern, werden für die Wörterbücher einfache Textdateien verwendet.

  • Datensätze in Zeilen
  • Felder in durch Leerzeichen getrennten Zeilen
  • Leerzeichen in Werten erfordern Anführungstriche (Bsp. s.u.)
  • Drei Trennstriche --- bedeuten, daß ein von Lauris verwendeter Wert auch für zaaReloaded2 gültig ist (Bsp. s.u.)
  • Alles nach einer Raute # wird ignoriert
  • Leere Zeilen werden ignoriert

ParameterDictionary

Das ParameterDictionary wird aus einer Textdatei folgenden Formats generiert:

# LAURIS-NAME                      "KANONISCHER NAME"   KATEGORIE          "IMMER REFERENZBEREICH"
"Lactat Dehydrogenase"             LDH                  Klinische Chemie
"Cystatin C"                       ---                  Nierenfunktion     X
"glomerul.  Filtrationsr. CKD-EP"  "eGFR (CKD-EPI)"     Nierenfunktion 

Wenn IMMER REFERENZBEREICH leer ist, wird "nein" angenommen. Alles andere wie z.B. X bedeute "ja".

Die drei Trennstriche --- in der Zeile "Cystacin C" bedeuten, daß zaaReloaded2 den Lauris-Namen als kanonischen Namen verwenden soll.

UnitDictionary

Das UnitDictionary wird aus einer Textdatei folgenden Formats generiert:

# LAURIS-EINHEIT   "KANONISCHE EINHEIT"
ml/min /1,73qm     ml/min/1,73 m²

Wenn eine Lauris-Einheit nicht in dieser Tabelle enthalten ist, wird sie so, wie sie ist, für die Ausgabe von zaaReloaded2 verwendet.

Kategorien

Um die Definition des Ausgabeformats von zaaReloaded2 zu erleichern, wird jeder Laborparameter beim Parsen des Lauris-Texts einer bestimmten, fest eingebauten Kategorie zugeordnet, ähnlich wie Lauris selbst es schon macht, nur besser. Beispielsweise werden die Werte aus "Urinproteine quantitativ" der Kategorie "Sammelurin" zugeordnet, weil das praktikabler und intuitiver ist. Anderes Beispiel: Unter der Lauris-Kategorie "Serumproteine und Tumormarker" sind u.a. der Eisenstatus, Akutphaseproteine und Sonderbestimmungen wie das Cystatin C versammelt. Diese werden von zaaReloaded2 in die Kategorien "Eisenstatus", "Akutphase" und "Nierenfunktion" eingeordnet.

Die Liste der Kategorien wird aus dem zaaReloaded2.Dictionaries.ParameterDictionary kompiliert.

Referenzbereiche

Wenn bei jedem Laborparameter die Referenzbereiche angegeben werden, wird die Ausgabe unübersichtlich -- siehe Lauris. Viele Laborparameter haben Standard-Referenzbereiche, die sich zwischen den Laboren nicht oder nur geringfügig unterscheiden (bspw. Hämoglobin).

zaaReloaded2 kann so konfiguriert werden, daß Referenzbereiche entweder nie, nur bei gesondert markierten Parametern, bei gesondert markierten oder nicht-normalen Parametern oder immer mit ausgegeben werden:

  • nie
  • besondere Parameter (z.B. Cystatin C, wo viele den Referenzbereich nicht kennen dürften)
  • besondere Parameter + nicht-normale Parameter
  • immer

Die Markierung besonderer Parameter erfolgt in der Textdatei, aus der das zaaReloaded2.Dictionaries.ParameterDictionary generiert wird (s.o.).