diff --git a/Doxyfile b/Doxyfile index 3ec20d4..cb1f248 100644 --- a/Doxyfile +++ b/Doxyfile @@ -758,7 +758,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = zaaReloaded2 Tests HISTORY.md +INPUT = zaaReloaded2 Tests HISTORY.md README.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -793,7 +793,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = README.md Bovender/obj/ BovenderUnitTest/obj/ +EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b257ab --- /dev/null +++ b/README.md @@ -0,0 +1,147 @@ +@mainpage +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.). + +