Compare commits
83 Commits
v2.0.0-alp
...
v2.0.0-bet
Author | SHA1 | Date | |
---|---|---|---|
4390d7ce52 | |||
4c818010a7 | |||
f6e5087e3c | |||
3fcb6c1af5 | |||
7eaabb7f13 | |||
058de8e8cf | |||
6d62e619eb | |||
b7d413c412 | |||
0d94d77483 | |||
a51d771dbe | |||
ac486bbcee | |||
94ebf5508b | |||
8d24a669ac | |||
b9f35c8b11 | |||
6c99224814 | |||
b360d5b640 | |||
fbcb060f12 | |||
221509520d | |||
392de61b74 | |||
2745ab819c | |||
2e8c881e1f | |||
92a8faa972 | |||
4cb2999297 | |||
a609c7f93c | |||
d5340d1b3a | |||
91b7aa70e9 | |||
863dfa071a | |||
7a105d7aad | |||
32d4e8d955 | |||
39e8b1f81d | |||
de6dab5fb4 | |||
5d2acb6233 | |||
bb67a993fb | |||
193a83a769 | |||
65e34cdf1d | |||
8f9eb83e9d | |||
65ac72fb50 | |||
0461dfd66e | |||
63447def9b | |||
3a615eda8b | |||
a9d0e8ee7e | |||
2bb0452a87 | |||
12c2412e38 | |||
e0b749382e | |||
6f65340ca5 | |||
f2cb30fabb | |||
1afa9bb14f | |||
03a62ddf5a | |||
5a0923e8e8 | |||
0708f2a2b3 | |||
00c60ba0ad | |||
6af2243660 | |||
c9fc4a5fae | |||
53d13b394e | |||
947b53cf97 | |||
6c9f003134 | |||
51bfdc760e | |||
a009c1ab39 | |||
5833e0fcb7 | |||
750fb093b1 | |||
11b9b9df54 | |||
b59c9f2898 | |||
257e3e8568 | |||
c6121353e4 | |||
bde85e5651 | |||
edaf88c4cd | |||
b6c33971bd | |||
476f2d69be | |||
2cefede3c0 | |||
d0bd7dd2a5 | |||
ed43497179 | |||
1205958eb1 | |||
60296602a9 | |||
742a588083 | |||
b7fdf87ea5 | |||
880e8b0bdc | |||
06a74992ef | |||
285c6a2555 | |||
75c9c984c6 | |||
ae9cf7fa2e | |||
33d453cf73 | |||
8d6ed32a84 | |||
5fe7250b53 |
47
HISTORY.md
@ -1,4 +1,49 @@
|
|||||||
Version 2.0.0-alpha.5 (2015-08-04)
|
Version 2.0.0-beta.3 (2015-08-20)
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
- VERBESSERT: Bei Updates werden neue eingebaute Stile jetzt immer berücksichtigt.
|
||||||
|
- VERBESSERT: Formatierung erscheint nur noch als 1 Undo-Schritt.
|
||||||
|
- VERBESSERUNG: Alias ACR für Albumin-Krea-Quotient; mg/g statt mg/g Crea.
|
||||||
|
- VERBESSERUNG: Datumseilen, die mit "Labor:" beginnen, werden nicht länger ignoriert.
|
||||||
|
- VERBESSERUNG: Keine Fehlermeldung mehr, falls Referenzbereiche negative Werte enthalten (wie z.B. Base Excess) [#650db4d2]
|
||||||
|
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.0.0-beta.2 (2015-08-16)
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
- FIX: Kleinere Bugfixes.
|
||||||
|
- GEÄNDERT: Diff.-BB-Werte im Stations-Stil in Hämatologie-Zeile integriert.
|
||||||
|
- NEU: Überschriften und pathologische Werte werden fett gedruckt.
|
||||||
|
- NEU: Überschriften und pathologische Werte werden jetzt besonders ausgezeichnet (fett).
|
||||||
|
- VERBESSERT: Element-Bearbeitungsfenster.
|
||||||
|
- VERBESSERT: Floskel-Ersetzungen in Daniels Spezial.
|
||||||
|
- VERBESSERT: Formatieren läßt sich nicht mehr starten, ohne daß Labor-Text markiert ist.
|
||||||
|
- VERBESSERUNG: Einheiten, die mit einem Schrägstrich beginnen, werden nicht mehr mit Leerzeichen vom Wert getrennt.
|
||||||
|
- VERÄNDERUNG: Laborwerte, die explizit (also nicht mit "*") ausgewählt werden, werden jetzt ohne vorangestelltes Material-Kürzel eingefügt (z.B. jetzt "Sammelurin: Volumen" anstatt "Sammelurin: SU-Volumen").
|
||||||
|
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.0.0-beta.1 (2015-08-13)
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
- FIX: Datenimport funktioniert jetzt auch mit Word-Text und nicht nur in den Tests.
|
||||||
|
- FIX: Mehrere Thesaurus-Fehler behoben.
|
||||||
|
- FIX: Stile werden jetzt gespeichert.
|
||||||
|
- NEU: Auf Werkseinstellungen zurücksetzen.
|
||||||
|
- NEU: Datumsangaben werden in eine Zeile "Laborwerte vom ..." eingebettet.
|
||||||
|
- NEU: Elemente können verschoben werden.
|
||||||
|
- NEU: Formatierung der Ausgabe mit Absatzvorlage.
|
||||||
|
- NEU: Parameter können im Thesaurus als "blacklisted" markiert werden und werden dann bei Verwendung einer Wildcard ("*") nicht berücksichtigt.
|
||||||
|
- NEU: Steuer-Elemente für Spalten.
|
||||||
|
- NEU: Stile können importiert und exportiert werden.
|
||||||
|
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.0.0-alpha.5. (2015-08-04)
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
- FIX: Daniels Spezial löscht nicht mehr die Unterschriften.
|
- FIX: Daniels Spezial löscht nicht mehr die Unterschriften.
|
||||||
|
50
README.md
@ -52,6 +52,11 @@ folgende Teile aufgeteilt:
|
|||||||
existieren verschiedene Klassen, die die Klassen des Labor-Modells
|
existieren verschiedene Klassen, die die Klassen des Labor-Modells
|
||||||
(`zaaReloaded2.LabModel`) umschließen und um entsprechende
|
(`zaaReloaded2.LabModel`) umschließen und um entsprechende
|
||||||
Funktionalitäten erweitern.
|
Funktionalitäten erweitern.
|
||||||
|
- __Kontrolle der Formatierung:__ Der Namensraum
|
||||||
|
`zaaReloaded2.Controller` umfaßt Klassen, mit denen ein
|
||||||
|
`zaaReloaded2.Formatter.Formatter` gesteuert werden kann. Diese
|
||||||
|
Klassen spielen eine große Rolle bei den benutzerdefinierten
|
||||||
|
Anpassungen von Stilen.
|
||||||
|
|
||||||
|
|
||||||
## Parsen der Lauris-Ausgabe
|
## Parsen der Lauris-Ausgabe
|
||||||
@ -174,4 +179,49 @@ oder nicht-normalen Parametern oder immer mit ausgegeben werden:
|
|||||||
Die Markierung besonderer Parameter erfolgt in der Textdatei, aus der
|
Die Markierung besonderer Parameter erfolgt in der Textdatei, aus der
|
||||||
das `zaaReloaded2.Thesaurus.Parameters` generiert wird (s.o.).
|
das `zaaReloaded2.Thesaurus.Parameters` generiert wird (s.o.).
|
||||||
|
|
||||||
|
|
||||||
|
## User Interface
|
||||||
|
|
||||||
|
Das User Interface wurde mit der Windows Presentation Foundation nach
|
||||||
|
dem [MVVM][]-Muster implementiert. Dabei wurde auf das Hilfs-Framework
|
||||||
|
[Bovender][bovender-framework] zurückgegriffen.
|
||||||
|
|
||||||
|
|
||||||
|
## Updates
|
||||||
|
|
||||||
|
Das Add-in sucht täglich nach einem Update; dabei wird die Datei
|
||||||
|
<http://zaa.nephrowiki.de/versioninfo.txt> heruntergeladen. Updates
|
||||||
|
werden automatisch im Hintergrund geladen und beim Schließen von Word
|
||||||
|
(bzw. der Zentralen Arztbriefablage) installiert und stehen dann beim
|
||||||
|
nächsten Starten der Anwendung zur Verfügung.
|
||||||
|
|
||||||
|
|
||||||
|
## Serialisierung
|
||||||
|
|
||||||
|
Um das Stil-Repositorium (`zaaReloaded2.Controller.SettingsRepository`)
|
||||||
|
in den Assembly-Properties speichern zu können und für den Im- und
|
||||||
|
Export von Stilen werden die in .NET eingebauten
|
||||||
|
Serialisierungs-Strukturen genutzt. Weil es mit der Verwendung eines
|
||||||
|
`XmlSerializer`s Probleme gab, weil der `XmlSerializer` nicht mit
|
||||||
|
Interface-Eigenschaften umgehen kann, wurde zunächst für alle Klassen,
|
||||||
|
die serialisiert werden müssen (`SettingsRepository`,
|
||||||
|
`zaaReloaded2.Controller.Settings` und die von
|
||||||
|
`zaaReloaded2.Controller.Elements.ElementBase` abgeleiteten Klassen) das
|
||||||
|
Interface `ISerializable` implementiert. Das hat aber auch nicht dazu
|
||||||
|
geführt, daß der `XmlSerializer` die Klassen serialisierte, so daß
|
||||||
|
jetzt der `SoapFormatter` verwendet wird. Der stört sich nicht an
|
||||||
|
Interface-Eigenschaften und produziert auch XML, wenngleich im etwas
|
||||||
|
komplizierten [SOAP][]-Format.
|
||||||
|
|
||||||
|
Um das `SettingsRepository` in den Assembly-Properties zu persistieren,
|
||||||
|
muß das serialisierte XML noch in einen Base64-kodierten String
|
||||||
|
umgewandelt werden, damit das SOAP-XML nicht mit dem XML der
|
||||||
|
Assembly-Properties ins Gehege kommt (siehe
|
||||||
|
`zaaReloaded2.Controller.SettingsRepository.Load()` und
|
||||||
|
`zaaReloaded2.Controller.SettingsRepository.Store()`).
|
||||||
|
|
||||||
|
[SOAP]: http://de.wikipedia.org/wiki/SOAP
|
||||||
|
[MVVM]: http://de.wikipedia.org/wiki/MVVM
|
||||||
|
[bovender-framework]: https://github.com/bovender/bovender
|
||||||
|
|
||||||
<!-- vim: set tw=72 sw=2 ts=2 sts=-1 : -->
|
<!-- vim: set tw=72 sw=2 ts=2 sts=-1 : -->
|
||||||
|
@ -24,6 +24,7 @@ using Microsoft.Office.Interop.Word;
|
|||||||
using zaaReloaded2.LabModel;
|
using zaaReloaded2.LabModel;
|
||||||
using zaaReloaded2.Formatter;
|
using zaaReloaded2.Formatter;
|
||||||
using zaa = zaaReloaded2.Controller.Elements;
|
using zaa = zaaReloaded2.Controller.Elements;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Tests.Controller.Elements
|
namespace Tests.Controller.Elements
|
||||||
{
|
{
|
||||||
@ -61,7 +62,12 @@ namespace Tests.Controller.Elements
|
|||||||
_formatter.Laboratory = lab;
|
_formatter.Laboratory = lab;
|
||||||
_formatter.Settings.Elements.Add(new zaa.Items("Na, K, Cl"));
|
_formatter.Settings.Elements.Add(new zaa.Items("Na, K, Cl"));
|
||||||
_formatter.Run();
|
_formatter.Run();
|
||||||
Assert.AreEqual("Na 133, K 6 (5)\r", _document.Range().Text);
|
string expected = (
|
||||||
|
StripMarkup(
|
||||||
|
TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
|
||||||
|
"Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r")
|
||||||
|
);
|
||||||
|
Assert.AreEqual(expected, _document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -78,7 +84,12 @@ namespace Tests.Controller.Elements
|
|||||||
_formatter.Laboratory = lab;
|
_formatter.Laboratory = lab;
|
||||||
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, K, Cl"));
|
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, K, Cl"));
|
||||||
_formatter.Run();
|
_formatter.Run();
|
||||||
Assert.AreEqual("Klinische Chemie: Na 133, K 6 (5)\r", _document.Range().Text);
|
string expected = (
|
||||||
|
StripMarkup(
|
||||||
|
TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
|
||||||
|
"Klinische Chemie: Na 133, K 6 (5)\r\r").Replace(Environment.NewLine, "\r")
|
||||||
|
);
|
||||||
|
Assert.AreEqual(expected, _document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -113,8 +124,12 @@ namespace Tests.Controller.Elements
|
|||||||
_formatter.Laboratory = lab;
|
_formatter.Laboratory = lab;
|
||||||
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, *"));
|
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, *"));
|
||||||
_formatter.Run();
|
_formatter.Run();
|
||||||
Assert.AreEqual("Klinische Chemie: Na 133, Cl 110, K 6\r",
|
string expected = (
|
||||||
_document.Range().Text);
|
StripMarkup(
|
||||||
|
TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
|
||||||
|
) +
|
||||||
|
"Klinische Chemie: Na 133, Cl 110, K 6\r\r").Replace(Environment.NewLine, "\r");
|
||||||
|
Assert.AreEqual(expected, _document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -133,8 +148,12 @@ namespace Tests.Controller.Elements
|
|||||||
_formatter.Laboratory = lab;
|
_formatter.Laboratory = lab;
|
||||||
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*"));
|
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*"));
|
||||||
_formatter.Run();
|
_formatter.Run();
|
||||||
Assert.AreEqual("Klinische Chemie: Na 133, SU-Protein 2,8\r",
|
string expected = (
|
||||||
_document.Range().Text);
|
StripMarkup(
|
||||||
|
TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
|
||||||
|
)+
|
||||||
|
"Klinische Chemie: Na 133, SU-Protein 2,8\r\r").Replace(Environment.NewLine, "\r");
|
||||||
|
Assert.AreEqual(expected, _document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -153,8 +172,20 @@ namespace Tests.Controller.Elements
|
|||||||
_formatter.Laboratory = lab;
|
_formatter.Laboratory = lab;
|
||||||
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*, *"));
|
_formatter.Settings.Elements.Add(new zaa.Items("Klinische Chemie: Na, SU-*, *"));
|
||||||
_formatter.Run();
|
_formatter.Run();
|
||||||
Assert.AreEqual("Klinische Chemie: Na 133, SU-Protein 2,8, Cl 110, U-Na 99\r",
|
string expected = (
|
||||||
_document.Range().Text);
|
StripMarkup(
|
||||||
|
TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
|
||||||
|
) +
|
||||||
|
"Klinische Chemie: Na 133, SU-Protein 2,8, Cl 110, U-Na 99\r\r")
|
||||||
|
.Replace(Environment.NewLine, "\r");
|
||||||
|
Assert.AreEqual(expected, _document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static string StripMarkup(string s)
|
||||||
|
{
|
||||||
|
return _markupStripper.Replace(s, string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
static readonly Regex _markupStripper = new Regex(@"<[^>]+>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace Tests.Controller
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
class SettingsRepositoryTest
|
class SettingsRepositoryTest
|
||||||
{
|
{
|
||||||
SettingsRepository _savedSettings;
|
string _savedSettings;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
@ -50,11 +50,13 @@ namespace Tests.Controller
|
|||||||
string testName = "test";
|
string testName = "test";
|
||||||
s.Name = testName;
|
s.Name = testName;
|
||||||
sr.SettingsList.Add(s);
|
sr.SettingsList.Add(s);
|
||||||
|
int expected = sr.SettingsList.Count;
|
||||||
|
int index = sr.SettingsList.IndexOf(s);
|
||||||
sr.Store();
|
sr.Store();
|
||||||
sr = null;
|
sr = null;
|
||||||
sr = SettingsRepository.Load();
|
sr = SettingsRepository.Load();
|
||||||
Assert.AreEqual(1, sr.SettingsList.Count);
|
Assert.AreEqual(expected, sr.SettingsList.Count);
|
||||||
Assert.AreEqual(testName, sr.SettingsList[0].Name);
|
Assert.AreEqual(testName, sr.SettingsList[index].Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
54
Tests/Controller/SettingsTest.cs
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
/* SettingsTest.cs
|
||||||
|
* part of zaaReloaded2
|
||||||
|
*
|
||||||
|
* Copyright 2015 Daniel Kraus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using zaaReloaded2.Controller;
|
||||||
|
using zaaReloaded2.Controller.Elements;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Tests.Controller
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
class SettingsTest
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void CloneSettings()
|
||||||
|
{
|
||||||
|
SelectEachDay selectEachDay = new SelectEachDay();
|
||||||
|
Items items = new Items("some text");
|
||||||
|
Settings source = new Settings(
|
||||||
|
"hello world",
|
||||||
|
new List<ElementBase>() { selectEachDay, items });
|
||||||
|
source.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialOrAbnormal;
|
||||||
|
Settings clone = source.Clone() as Settings;
|
||||||
|
Assert.AreNotSame(source, clone);
|
||||||
|
Assert.AreEqual("Kopie von " + source.Name, clone.Name,
|
||||||
|
"Name");
|
||||||
|
Assert.AreNotSame(source.Elements, clone.Elements);
|
||||||
|
Assert.AreEqual(source.ReferenceStyle, clone.ReferenceStyle,
|
||||||
|
"ReferenceStyle");
|
||||||
|
Assert.AreEqual(
|
||||||
|
((Items)source.Elements[1]).Content,
|
||||||
|
((Items)clone.Elements[1]).Content,
|
||||||
|
"Items content");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -21,6 +21,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using zaaReloaded2.Formatter;
|
using zaaReloaded2.Formatter;
|
||||||
|
using Microsoft.Office.Interop.Word;
|
||||||
|
|
||||||
namespace Tests.Formatter
|
namespace Tests.Formatter
|
||||||
{
|
{
|
||||||
@ -95,5 +96,15 @@ namespace Tests.Formatter
|
|||||||
Assert.IsFalse(_docWriter.HasBufferedText);
|
Assert.IsFalse(_docWriter.HasBufferedText);
|
||||||
Assert.AreEqual(String.Empty, _docWriter.ToString());
|
Assert.AreEqual(String.Empty, _docWriter.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TextMarkup()
|
||||||
|
{
|
||||||
|
DocumentWriter output = new DocumentWriter();
|
||||||
|
_docWriter.Parent = output;
|
||||||
|
_docWriter.Write("This is not bold. <b>This is bold!</b>\rThis not.");
|
||||||
|
_docWriter.Flush();
|
||||||
|
Assert.AreEqual("This is not bold. This is bold!\rThis not.", output.Text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
04.07.2015 12:31:00:
|
Laborwerte vom 04.07.2015 12:31:00:
|
||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
|
Klinische Chemie: Na 144 mM, K 4,3 mM
|
||||||
|
|
||||||
06.07.2015 10:28:00:
|
Laborwerte vom 06.07.2015 10:28:00:
|
||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
|
Klinische Chemie: Na 138 mM, K 4,6 mM
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
04.07.2015:
|
Laborwerte vom 04.07.2015:
|
||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
|
Klinische Chemie: Na 144 mM, K 4,3 mM
|
||||||
|
|
||||||
06.07.2015:
|
Laborwerte vom 06.07.2015:
|
||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
|
Klinische Chemie: Na 138 mM, K 4,6 mM
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
04.07.2015:
|
Laborwerte vom 04.07.2015:
|
||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
|
Klinische Chemie: Na 144 mM, K 4,3 mM
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
06.07.2015:
|
Laborwerte vom 06.07.2015:
|
||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
|
Klinische Chemie: Na 138 mM, K 4,6 mM
|
||||||
|
|
||||||
|
@ -99,6 +99,25 @@ namespace Tests.Formatter
|
|||||||
_document.Range().Text);
|
_document.Range().Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FormatSpecialItems()
|
||||||
|
{
|
||||||
|
ZaaImporter importer = new ZaaImporter();
|
||||||
|
importer.Import(
|
||||||
|
"Klinische Chemie: glomerul. Filtrationsr. CKD-EP: 36 ml/min /1,73qm; " +
|
||||||
|
"Sammelmenge (U): 12300 ml; "
|
||||||
|
);
|
||||||
|
Document document = new Document();
|
||||||
|
f.Formatter formatter = new f.Formatter(document);
|
||||||
|
formatter.Laboratory = importer.Laboratory;
|
||||||
|
formatter.Settings = new zaaReloaded2.Controller.Settings(
|
||||||
|
new List<ElementBase>() { new Items("*") } );
|
||||||
|
formatter.Run();
|
||||||
|
Assert.AreEqual(
|
||||||
|
"eGFR (CKD-EPI) 36 ml/min/1,73 m², SU-Volumen 12300 ml\r\r",
|
||||||
|
document.Range().Text);
|
||||||
|
}
|
||||||
|
|
||||||
string GetResourceText(string resource)
|
string GetResourceText(string resource)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -29,6 +29,7 @@ namespace Tests.Importer.ZaaImporter
|
|||||||
class LaurisItemTest
|
class LaurisItemTest
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
|
[TestCase("BE: 5.2 [-2 - 2] mmol/l", "BE", 5.2, "mmol/l", -2, 2, false)]
|
||||||
[TestCase("Natrium: 139 [135 - 145] mmol/l", "Natrium", 139, "mmol/l", 135, 145, true)]
|
[TestCase("Natrium: 139 [135 - 145] mmol/l", "Natrium", 139, "mmol/l", 135, 145, true)]
|
||||||
[TestCase("Kalium: 5.2 [3.5 - 5] mmol/l", "Kalium", 5.2, "mmol/l", 3.5, 5, false)]
|
[TestCase("Kalium: 5.2 [3.5 - 5] mmol/l", "Kalium", 5.2, "mmol/l", 3.5, 5, false)]
|
||||||
public void ParseLaurisWithBothLimits(
|
public void ParseLaurisWithBothLimits(
|
||||||
|
@ -40,7 +40,7 @@ namespace Tests.Importer.ZaaImporter
|
|||||||
[Test]
|
[Test]
|
||||||
public void ParseInvalidLaurisTimePoints()
|
public void ParseInvalidLaurisTimePoints()
|
||||||
{
|
{
|
||||||
LaurisTimePoint tp = new LaurisTimePoint("Aerobe Kultur: Enterokokken ; Wachstum: 10 ;");
|
LaurisTimePoint tp = new LaurisTimePoint("Mit freundlichen Grüßen");
|
||||||
Assert.IsFalse(tp.IsValidTimePoint,
|
Assert.IsFalse(tp.IsValidTimePoint,
|
||||||
"Bogus paragraph should be invalid LaurisTimePoint");
|
"Bogus paragraph should be invalid LaurisTimePoint");
|
||||||
|
|
||||||
|
@ -41,5 +41,15 @@ namespace Tests.Importer.ZaaImporter
|
|||||||
// Only 6 distinct time points (see method documentation above).
|
// Only 6 distinct time points (see method documentation above).
|
||||||
Assert.AreEqual(6, importer.Laboratory.TimePoints.Count);
|
Assert.AreEqual(6, importer.Laboratory.TimePoints.Count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ParseInvalidInput()
|
||||||
|
{
|
||||||
|
zaa.ZaaImporter importer = new zaa.ZaaImporter();
|
||||||
|
importer.Import("some arbitrary text\r\nthat does not represent\r\na valid lab");
|
||||||
|
Assert.IsFalse(importer.Success);
|
||||||
|
importer.Import("(03.03.1930 13:30:00)\r\nKlinische Chemie: Natrium 135 [135 - 145] mmol/l;");
|
||||||
|
Assert.IsTrue(importer.Success);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
169
Tests/SerializationTest.cs
Executable file
@ -0,0 +1,169 @@
|
|||||||
|
/* SelectFirstDayTest.cs
|
||||||
|
* part of zaaReloaded2
|
||||||
|
*
|
||||||
|
* Copyright 2015 Daniel Kraus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
using zaaReloaded2.Controller.Elements;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using System.Runtime.Serialization.Formatters.Soap;
|
||||||
|
using zaaReloaded2.Controller;
|
||||||
|
|
||||||
|
namespace Tests.Controller
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
class SerializationTest
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void SerializeControlElement()
|
||||||
|
{
|
||||||
|
SelectFirstDay element = new SelectFirstDay(
|
||||||
|
new List<FormatElementBase>()
|
||||||
|
{
|
||||||
|
new Items("hello"),
|
||||||
|
new Items("world")
|
||||||
|
}
|
||||||
|
);
|
||||||
|
MemoryStream stream = new MemoryStream();
|
||||||
|
// XmlSerializer does not work with interface properties...
|
||||||
|
// XmlSerializer serializer = new XmlSerializer(typeof(SelectFirstDay));
|
||||||
|
// BinaryFormatter serializer = new BinaryFormatter();
|
||||||
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
serializer.Serialize(stream, element);
|
||||||
|
stream.Position = 0;
|
||||||
|
StreamReader sr = new StreamReader(stream);
|
||||||
|
Console.WriteLine(sr.ReadToEnd());
|
||||||
|
stream.Position = 0;
|
||||||
|
SelectFirstDay deserialized = serializer.Deserialize(stream) as SelectFirstDay;
|
||||||
|
Assert.IsNotNull(deserialized);
|
||||||
|
Assert.AreEqual(element.Children.Count, deserialized.Children.Count);
|
||||||
|
Assert.AreEqual(element.Children[0].Content, deserialized.Children[0].Content);
|
||||||
|
Assert.AreEqual(element.Children[1].Content, deserialized.Children[1].Content);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void SerializeFormatElement()
|
||||||
|
{
|
||||||
|
string testString = "Hello World";
|
||||||
|
CustomText element = new CustomText();
|
||||||
|
element.Content = testString;
|
||||||
|
MemoryStream stream = new MemoryStream();
|
||||||
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
serializer.Serialize(stream, element);
|
||||||
|
stream.Position = 0;
|
||||||
|
CustomText deserialized = serializer.Deserialize(stream) as CustomText;
|
||||||
|
Assert.IsNotNull(deserialized);
|
||||||
|
Assert.AreEqual(element.Content, deserialized.Content);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void SerializeSettings()
|
||||||
|
{
|
||||||
|
Settings settings = CreateTestSettings1();
|
||||||
|
MemoryStream stream = new MemoryStream();
|
||||||
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
serializer.Serialize(stream, settings);
|
||||||
|
stream.Position = 0;
|
||||||
|
Settings deserialized = serializer.Deserialize(stream) as Settings;
|
||||||
|
Assert.IsNotNull(deserialized);
|
||||||
|
Assert.AreEqual(settings.Name, deserialized.Name);
|
||||||
|
Assert.AreEqual(settings.ReferenceStyle, deserialized.ReferenceStyle);
|
||||||
|
Assert.AreEqual(settings.Elements.Count, deserialized.Elements.Count);
|
||||||
|
Assert.AreEqual(settings.Elements[0].GetType(), deserialized.Elements[0].GetType());
|
||||||
|
Assert.AreEqual(settings.Elements[1].GetType(), deserialized.Elements[1].GetType());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void SerializeSettingsRepository()
|
||||||
|
{
|
||||||
|
SettingsRepository repository = new SettingsRepository();
|
||||||
|
repository.SettingsList.Add(CreateTestSettings1());
|
||||||
|
repository.SettingsList.Add(CreateTestSettings2());
|
||||||
|
MemoryStream stream = new MemoryStream();
|
||||||
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
serializer.Serialize(stream, repository);
|
||||||
|
stream.Position = 0;
|
||||||
|
SettingsRepository deserialized = serializer.Deserialize(stream) as SettingsRepository;
|
||||||
|
Assert.IsNotNull(deserialized);
|
||||||
|
Assert.AreEqual(repository.SettingsList.Count, deserialized.SettingsList.Count);
|
||||||
|
Assert.AreEqual(
|
||||||
|
repository.SettingsList[1].Elements.Count,
|
||||||
|
deserialized.SettingsList[1].Elements.Count
|
||||||
|
);
|
||||||
|
Assert.AreEqual(
|
||||||
|
repository.SettingsList[0].Name,
|
||||||
|
deserialized.SettingsList[0].Name
|
||||||
|
);
|
||||||
|
Assert.AreEqual(
|
||||||
|
repository.SettingsList[0].ReferenceStyle,
|
||||||
|
deserialized.SettingsList[0].ReferenceStyle
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings CreateTestSettings1()
|
||||||
|
{
|
||||||
|
string testName = "test name...";
|
||||||
|
string testString = "Hello World";
|
||||||
|
SelectFirstDay controlElement = new SelectFirstDay(
|
||||||
|
new List<FormatElementBase>()
|
||||||
|
{
|
||||||
|
new Items("hello"),
|
||||||
|
new Items("world")
|
||||||
|
}
|
||||||
|
);
|
||||||
|
CustomText formatElement = new CustomText();
|
||||||
|
formatElement.Content = testString;
|
||||||
|
Settings settings = new Settings(testName, new List<ElementBase>()
|
||||||
|
{
|
||||||
|
controlElement,
|
||||||
|
formatElement
|
||||||
|
}
|
||||||
|
);
|
||||||
|
settings.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialItem;
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings CreateTestSettings2()
|
||||||
|
{
|
||||||
|
string testName = "another test name";
|
||||||
|
SelectFirstDay controlElement1 = new SelectFirstDay(
|
||||||
|
new List<FormatElementBase>()
|
||||||
|
{
|
||||||
|
new CustomText(),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
SelectLastDay controlElement2 = new SelectLastDay(
|
||||||
|
new List<FormatElementBase>()
|
||||||
|
{
|
||||||
|
new Items("Items content"),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
Settings settings = new Settings(testName, new List<ElementBase>()
|
||||||
|
{
|
||||||
|
controlElement1,
|
||||||
|
controlElement2
|
||||||
|
}
|
||||||
|
);
|
||||||
|
settings.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialOrAbnormal;
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -58,11 +58,13 @@
|
|||||||
<Reference Include="System.Core">
|
<Reference Include="System.Core">
|
||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
|
||||||
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Expression.Blend.Sdk.1.0.2\lib\net40-client\System.Windows.Interactivity.dll</HintPath>
|
<HintPath>..\packages\Expression.Blend.Sdk.1.0.2\lib\net40-client\System.Windows.Interactivity.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xaml" />
|
<Reference Include="System.Xaml" />
|
||||||
|
<Reference Include="System.XML" />
|
||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Choose>
|
<Choose>
|
||||||
@ -78,7 +80,9 @@
|
|||||||
</Otherwise>
|
</Otherwise>
|
||||||
</Choose>
|
</Choose>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="SerializationTest.cs" />
|
||||||
<Compile Include="Controller\SettingsRepositoryTest.cs" />
|
<Compile Include="Controller\SettingsRepositoryTest.cs" />
|
||||||
|
<Compile Include="Controller\SettingsTest.cs" />
|
||||||
<Compile Include="Formatter\DocumentWriterTest.cs" />
|
<Compile Include="Formatter\DocumentWriterTest.cs" />
|
||||||
<Compile Include="Thesaurus\ThesaurusTest.cs" />
|
<Compile Include="Thesaurus\ThesaurusTest.cs" />
|
||||||
<Compile Include="Controller\Elements\ItemsTest.cs" />
|
<Compile Include="Controller\Elements\ItemsTest.cs" />
|
||||||
|
@ -65,7 +65,12 @@ namespace Tests.ViewModels
|
|||||||
Assert.AreNotSame(orig, copy);
|
Assert.AreNotSame(orig, copy);
|
||||||
Assert.AreNotSame(orig.RevealModelObject(), copy.RevealModelObject());
|
Assert.AreNotSame(orig.RevealModelObject(), copy.RevealModelObject());
|
||||||
|
|
||||||
Assert.AreEqual(String.Format("Kopie von {0}", orig.Name), copy.Name);
|
Assert.AreEqual(
|
||||||
|
String.Format(
|
||||||
|
"Kopie von {0}",
|
||||||
|
orig.Name.Replace(" (eingebaut)", String.Empty)
|
||||||
|
),
|
||||||
|
copy.Name);
|
||||||
Assert.IsTrue(copy.IsSelected);
|
Assert.IsTrue(copy.IsSelected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ namespace Tests.ViewModels
|
|||||||
_settingsVM.AddElementViewModel(viewModel);
|
_settingsVM.AddElementViewModel(viewModel);
|
||||||
viewModel.IsSelected = true;
|
viewModel.IsSelected = true;
|
||||||
int oldViewModelChildrenCount = viewModel.Elements.Count;
|
int oldViewModelChildrenCount = viewModel.Elements.Count;
|
||||||
int oldModelChildrenCount = model.FormatElements.Count;
|
int oldModelChildrenCount = model.Children.Count;
|
||||||
_settingsVM.AddChildElementMessage.Sent += (sender, args) =>
|
_settingsVM.AddChildElementMessage.Sent += (sender, args) =>
|
||||||
{
|
{
|
||||||
messageSent = true;
|
messageSent = true;
|
||||||
@ -84,7 +84,7 @@ namespace Tests.ViewModels
|
|||||||
Assert.IsTrue(messageSent, "Message was not sent");
|
Assert.IsTrue(messageSent, "Message was not sent");
|
||||||
Assert.AreEqual(oldViewModelChildrenCount + 1, viewModel.Elements.Count,
|
Assert.AreEqual(oldViewModelChildrenCount + 1, viewModel.Elements.Count,
|
||||||
"Count of children in ViewModel was not increased by 1");
|
"Count of children in ViewModel was not increased by 1");
|
||||||
Assert.AreEqual(oldModelChildrenCount + 1, model.FormatElements.Count,
|
Assert.AreEqual(oldModelChildrenCount + 1, model.Children.Count,
|
||||||
"Count of children in Model was not increased by 1");
|
"Count of children in Model was not increased by 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,13 +106,83 @@ namespace Tests.ViewModels
|
|||||||
[Test]
|
[Test]
|
||||||
public void DeleteElement()
|
public void DeleteElement()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
Settings settings = new Settings();
|
||||||
|
settings.AddElement(new SelectFirstDay());
|
||||||
|
settings.AddElement(new SelectEachDay());
|
||||||
|
settings.AddElement(new SelectLastDay());
|
||||||
|
SettingsViewModel settingsVM = new SettingsViewModel(settings);
|
||||||
|
int oldCount = settingsVM.Elements.Count;
|
||||||
|
ElementViewModel elementVM = settingsVM.Elements.First();
|
||||||
|
ElementBase element = elementVM.RevealModelObject() as ElementBase;
|
||||||
|
Assert.IsTrue(settings.Elements.Contains(element),
|
||||||
|
"Settings object does not contain the model that the VM revealed?!");
|
||||||
|
elementVM.IsSelected = true;
|
||||||
|
Assert.IsTrue(settingsVM.DeleteElementCommand.CanExecute(null),
|
||||||
|
"DeleteElementCommand should be enabled.");
|
||||||
|
settingsVM.DeleteElementCommand.Execute(null);
|
||||||
|
Assert.AreEqual(oldCount - 1, settingsVM.Elements.Count);
|
||||||
|
Assert.IsFalse(settingsVM.Elements.Contains(elementVM),
|
||||||
|
"Elements collection still contains the deleted element view model.");
|
||||||
|
Assert.IsFalse(settings.Elements.Contains(element),
|
||||||
|
"Settings' Element collection still contains the element model.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DeleteChildElement()
|
||||||
|
{
|
||||||
|
Settings settings = new Settings();
|
||||||
|
settings.AddElement(new SelectFirstDay(new Items()));
|
||||||
|
settings.AddElement(new SelectEachDay());
|
||||||
|
settings.AddElement(new SelectLastDay());
|
||||||
|
SettingsViewModel settingsVM = new SettingsViewModel(settings);
|
||||||
|
ControlElementViewModel parent = ((ControlElementViewModel)settingsVM.Elements.First());
|
||||||
|
int oldCount = parent.Elements.Count;
|
||||||
|
ElementViewModel elementVM = ((ControlElementViewModel)settingsVM.Elements.First())
|
||||||
|
.Elements.First();
|
||||||
|
ElementBase element = elementVM.RevealModelObject() as ElementBase;
|
||||||
|
Assert.IsTrue(((ControlElementBase)settings.Elements[0]).Children.Contains(element),
|
||||||
|
"Settings object does not contain the model that the VM revealed?!");
|
||||||
|
elementVM.IsSelected = true;
|
||||||
|
Assert.IsTrue(settingsVM.DeleteElementCommand.CanExecute(null),
|
||||||
|
"DeleteElementCommand should be enabled.");
|
||||||
|
settingsVM.DeleteElementCommand.Execute(null);
|
||||||
|
Assert.AreEqual(oldCount - 1, parent.Elements.Count);
|
||||||
|
Assert.IsFalse(parent.Elements.Contains(elementVM),
|
||||||
|
"Elements collection still contains the deleted element view model.");
|
||||||
|
Assert.IsFalse(((ControlElementBase)settings.Elements[0]).Children.Contains(element),
|
||||||
|
"Settings' collection of FormatElement children still contains the element model.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CopyElement()
|
public void CopyElement()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
string testString = "this text should be duplicated";
|
||||||
|
_settingsVM.AddElementViewModel(
|
||||||
|
new ControlElementViewModel(new SelectEachDay(new Items(testString))));
|
||||||
|
int oldCount = _settingsVM.Elements.Count;
|
||||||
|
_settingsVM.Elements.First().IsSelected = true;
|
||||||
|
Assert.IsTrue(_settingsVM.CopyElementCommand.CanExecute(null),
|
||||||
|
"CopyElementCommand should be enabled.");
|
||||||
|
_settingsVM.CopyElementCommand.Execute(null);
|
||||||
|
Assert.AreEqual(oldCount + 1, _settingsVM.Elements.Count);
|
||||||
|
|
||||||
|
// Access the first element
|
||||||
|
ControlElementViewModel controlVM = _settingsVM.Elements.First() as ControlElementViewModel;
|
||||||
|
FormatElementViewModel formatVM = controlVM.Elements.First() as FormatElementViewModel;
|
||||||
|
Items items = formatVM.RevealModelObject() as Items;
|
||||||
|
Assert.IsNotNull(items,
|
||||||
|
"Child ViewModel of first ControlElementViewModel does not wrap Items object.");
|
||||||
|
Assert.AreEqual(testString, items.Content,
|
||||||
|
"First control element's child element has incorrect Content string.");
|
||||||
|
|
||||||
|
// Access the second element
|
||||||
|
controlVM = _settingsVM.Elements.Last() as ControlElementViewModel;
|
||||||
|
formatVM = controlVM.Elements.First() as FormatElementViewModel;
|
||||||
|
items = formatVM.RevealModelObject() as Items;
|
||||||
|
Assert.IsNotNull(items,
|
||||||
|
"Child ViewModel of last ControlElementViewModel does not wrap Items object.");
|
||||||
|
Assert.AreEqual(testString, items.Content,
|
||||||
|
"First control element's child element has incorrect Content string.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
gimp/down.xcf
Normal file
BIN
gimp/duplicate.xcf
Normal file
BIN
gimp/exit.xcf
Normal file
BIN
gimp/export.xcf
Normal file
BIN
gimp/gear.xcf
Normal file
BIN
gimp/icon.xcf
Normal file
BIN
gimp/import.xcf
Normal file
BIN
gimp/installbanner-small.xcf
Normal file
BIN
gimp/installbanner.xcf
Normal file
BIN
gimp/minus.xcf
Normal file
BIN
gimp/pen.xcf
Normal file
BIN
gimp/plus-child.xcf
Normal file
BIN
gimp/plus.xcf
Normal file
BIN
gimp/reset.xcf
Normal file
BIN
gimp/up.xcf
Normal file
BIN
publish/setup-files/icon.bmp
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
publish/setup-files/icon.ico
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
publish/setup-files/installbanner-small.bmp
Executable file
After Width: | Height: | Size: 6.8 KiB |
BIN
publish/setup-files/installbanner.bmp
Executable file
After Width: | Height: | Size: 153 KiB |
@ -67,9 +67,9 @@ AppSupportURL=http://zaa.nephrowiki.de
|
|||||||
AppUpdatesURL=http://zaa.nephrowiki.de
|
AppUpdatesURL=http://zaa.nephrowiki.de
|
||||||
|
|
||||||
; Setup wizard
|
; Setup wizard
|
||||||
;SetupIconFile=setup-files\xltoolbox.ico
|
SetupIconFile=setup-files\icon.ico
|
||||||
;WizardImageFile=setup-files\installbanner.bmp
|
WizardImageFile=setup-files\installbanner.bmp
|
||||||
;WizardSmallImageFile=setup-files\icon-48.bmp
|
WizardSmallImageFile=setup-files\installbanner-small.bmp
|
||||||
ArchitecturesAllowed=x86 x64
|
ArchitecturesAllowed=x86 x64
|
||||||
ArchitecturesInstallIn64BitMode=x64
|
ArchitecturesInstallIn64BitMode=x64
|
||||||
DisableProgramGroupPage=true
|
DisableProgramGroupPage=true
|
||||||
|
BIN
www/img/elementbearbeiten.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
www/img/elementpicker.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
www/img/nachher.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
www/img/ribbon.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
www/img/stilauswahl.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
www/img/stilbearbeiten.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
www/img/vorher.png
Normal file
After Width: | Height: | Size: 78 KiB |
172
www/index.html
@ -1,20 +1,186 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>zaaReloaded2 by Daniel Kraus</title>
|
<title>zaaReloaded2 by Daniel Kraus</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="author" content="Daniel Kraus">
|
||||||
|
<style type="text/css"><!--
|
||||||
|
* {
|
||||||
|
font-family: Arial; font-size: 16px; line-height: 125%;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
body { margin: 16px 24px; max-width: 800px; }
|
||||||
|
|
||||||
|
h1, h2 { color: #5e2750; }
|
||||||
|
h1 { font-size: 300%; margin: 48px 0 24px 0; }
|
||||||
|
h2 { font-size: 200%; margin: 32px 0 16px 0; }
|
||||||
|
|
||||||
|
p { text-align: justify; }
|
||||||
|
|
||||||
|
img {
|
||||||
|
box-shadow: 2px 2px 8px #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download {
|
||||||
|
width: 500px; margin: 16px auto;
|
||||||
|
padding: 8px; border: 1px solid #888;
|
||||||
|
box-shadow: 2px 2px 8px #444;
|
||||||
|
background-color: #eef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-right {
|
||||||
|
float: right;
|
||||||
|
margin: 8px 0 8px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
--></style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>zaaReloaded2</h1>
|
<h1>zaaReloaded2</h1>
|
||||||
<p>
|
<p style="font-weight: bold;">
|
||||||
Erweiterung für Microsoft® Word 2010-2013, das die <a
|
Erweiterung für Microsoft® Word 2010-2013, das die <a
|
||||||
href="http://www.smi.ukw.de/sap-klinische-verfahren/archivsysteme/zentrale-arztbriefablage.html">
|
href="http://www.smi.ukw.de/sap-klinische-verfahren/archivsysteme/zentrale-arztbriefablage.html">
|
||||||
Zentrale Arztbriefablage (ZAA)</a> um Funktionen für das Formatieren
|
Zentrale Arztbriefablage (ZAA)</a> um Funktionen für das Formatieren
|
||||||
von Laborwerten erweitert.
|
von Laborwerten erweitert.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div class="download">
|
||||||
|
<h2 style="margin-top:0">Download</h2>
|
||||||
|
<p><a href="downloads/">zaa.nephrowiki.de/downloads</a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Vorher</h2>
|
||||||
|
<p class="center"><img src="img/vorher.png" alt="Vorher" /></p>
|
||||||
|
|
||||||
|
<h2>Nachher</h2>
|
||||||
|
<p>Am Beispiel des Ambulanz-Stils:</p>
|
||||||
|
<p class="center"><img src="img/nachher.png" alt="Nachher" /></p>
|
||||||
|
|
||||||
|
<h2>Anleitung</h2>
|
||||||
|
|
||||||
|
<p class="center">
|
||||||
|
<img src="img/ribbon.png" alt="zaaReloaded2-Ribbon" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Laborwerte auf üblichem Wege in einen Arztbrief einfügen
|
||||||
|
(alternativ kann der Befehl "Demo" ausgeführt werden, dann wird
|
||||||
|
ein Beispieldokument mit Laborwerten geöffnet).</li>
|
||||||
|
<li>Im zaaReloaded-Tab (s.o.) den linken Knopf "Formatieren"
|
||||||
|
klicken.</li>
|
||||||
|
<p class="center">
|
||||||
|
<img src="img/stilauswahl.png" alt="Stil auswählen" />
|
||||||
|
</p>
|
||||||
|
<li>
|
||||||
|
Beim ersten Mal erscheint eine Liste mit Stilen, aus der man den
|
||||||
|
gewünschten Stil auswählt (siehe Abbildung). Beim nächsten Mal,
|
||||||
|
wenn man auf diesen Knopf drückt, wird der zuletzt verwendete Stil
|
||||||
|
genommen.</li>
|
||||||
|
<li>Einen Moment warten... Voilà.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 class="clear">Anpassen</h2>
|
||||||
|
<p>
|
||||||
|
Das Addin enthält einen Stil-Editor, mit dem die eingebauten Stile
|
||||||
|
bearbeitet und neue Stile entworfen werden können:
|
||||||
|
</p>
|
||||||
|
<p class="center">
|
||||||
|
<img src="img/stilbearbeiten.png" alt="Stil bearbeiten" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="clear">
|
||||||
|
<img src="img/elementpicker.png" alt="Elemente" class="float-right" />
|
||||||
|
Jeder Stil setzt sich aus sog. <i>Elementen</i> zusammen. Es gibt
|
||||||
|
<i>Steuerelemente</i>, die zum Beispiel für die Auswahl eines Tages
|
||||||
|
(erster Tag/letzter Tag) zuständig sind, und es gibt
|
||||||
|
<i>Ausgabeelemente</i>, die die eigentliche Formatierung und Ausgabe
|
||||||
|
der Laborwerte übernehmen.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Steuerelemente:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Ersten Tag auswählen</li>
|
||||||
|
<li>Letzten Tag auswählen</li>
|
||||||
|
<li>Jeden Tag nacheinander auswählen</li>
|
||||||
|
<li>Zwei Spalten einfügen/zur nächsten Spalte wechseln</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Ausgabeelemente:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Laborparameter</li>
|
||||||
|
<li>Beliebiger Text</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
"Beliebiger Text" kann, wie der Name schon sagt, beliebigen Text
|
||||||
|
enthalten, der nicht weiter bearbeitet wird. Auf diese Weise kann
|
||||||
|
man z.B. Platzhalter für Urinsedimente ausgeben lassen, die dann
|
||||||
|
noch händisch vervollständigt werden.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
"Laborparameter" enthalten eine durch Kommata getrennte Auflistung
|
||||||
|
von Parametern, die ausgegeben werden sollen. Jedes Element
|
||||||
|
"Laborparameter" kann optional einen Titel enthalten:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Beispiel:
|
||||||
|
</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>
|
||||||
|
<img src="img/elementbearbeiten.png" alt="Element bearbeiten" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Klinische Chemie: Na, K, Cl, (usw.)
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>
|
||||||
|
In diesem Fall ist "Klinische Chemie:" der optionale Titel.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Die Bezeichnungen der einzelnen Parameter sind fest einprogrammiert.
|
||||||
|
Teils decken sie sich mit den Bezeichnungen, wie sie in der
|
||||||
|
Zentralen Arztbriefablage erscheinen; teils sind sie aber auch
|
||||||
|
Surrogate (z.B. "eGFR (CKD-EPI)" anstatt "glomerul. Filtrationsr.
|
||||||
|
CKD-EP").
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Die Platzhalter "SU-*", "U-*" und "*" geben die noch nicht
|
||||||
|
verwendeten Werte für Sammelurin, Spontanurin und alles weitere aus.
|
||||||
|
"*" sollte daher als letztes verwendet werden.
|
||||||
|
<p>
|
||||||
|
Die Liste der möglichen Parameternamen ist momentan fest
|
||||||
|
einprogrammiert und kann auch noch nicht angezeigt werden. Man kann
|
||||||
|
beim Entwickeln eines Stils aber probehalber den Platzhalter "*"
|
||||||
|
verwenden und sieht dann, welche Parameternamen noch verwendet
|
||||||
|
werden könnten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Updates</h2>
|
||||||
|
<p>
|
||||||
|
Das Addin sucht täglich nach Updates und lädt und installiert diese
|
||||||
|
bei Bedarf im Hintergrund.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>Weitere Informationen</h2>
|
<h2>Weitere Informationen</h2>
|
||||||
<p><a href="doc/md_history.html">Versionsgeschichte</a></p>
|
<p><a href="doc/md_HISTORY.html">Versionsgeschichte</a></p>
|
||||||
<p><a href="doc/index.html">Quellcode-Dokumentation</a></p>
|
<p><a href="doc/index.html">Quellcode-Dokumentation</a></p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<p>© 2015 Daniel Kraus</p>
|
<p>© 2015 <a href="http://www.bovender.de">Daniel Kraus</a></p>
|
||||||
</body>
|
</body>
|
||||||
<!-- vim: set tw=72 ai sts=2 ts=2 sw=2 : -->
|
<!-- vim: set tw=72 ai sts=2 ts=2 sw=2 : -->
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
2.0.0-alpha.5
|
2.0.0-beta.3
|
||||||
http://zaa.nephrowiki.de/downloads/zaaReloaded-2.0.0-alpha.5.exe
|
http://zaa.nephrowiki.de/downloads/zaaReloaded-2.0.0-beta.3.exe
|
||||||
423cbe81b42ddfc293cf5b387c1d8d269dce3f61 publish/release/zaaReloaded-2.0.0-alpha.5.exe
|
7453cdb91221fe4d9dabd8259be2dc7703274706 publish/release/zaaReloaded-2.0.0-beta.3.exe
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* ControlElementBase.cs
|
using System;
|
||||||
|
/* ControlElementBase.cs
|
||||||
* part of zaaReloaded2
|
* part of zaaReloaded2
|
||||||
*
|
*
|
||||||
* Copyright 2015 Daniel Kraus
|
* Copyright 2015 Daniel Kraus
|
||||||
@ -16,6 +17,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
{
|
{
|
||||||
@ -23,25 +26,90 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
/// Base class for control elements that control e.g. the working
|
/// Base class for control elements that control e.g. the working
|
||||||
/// set of time points in a Formatter object.
|
/// set of time points in a Formatter object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class ControlElementBase : ElementBase
|
[Serializable]
|
||||||
|
public abstract class ControlElementBase : ElementBase, ISerializable
|
||||||
{
|
{
|
||||||
|
#region Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a list of child elements, all of which must be derived
|
/// Gets a list of child elements, all of which must be derived
|
||||||
/// from FormatElementBase.
|
/// from FormatElementBase.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IList<FormatElementBase> FormatElements { get; private set; }
|
public IList<FormatElementBase> Children { get; internal set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Informs whether this control element can have child elements.
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool CanHaveChildren { get { return true; } }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
public ControlElementBase()
|
public ControlElementBase()
|
||||||
: this(new List<FormatElementBase>())
|
: this(new List<FormatElementBase>())
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public ControlElementBase(IList<FormatElementBase> formatElements)
|
public ControlElementBase(IList<FormatElementBase> children)
|
||||||
{
|
{
|
||||||
FormatElements = formatElements;
|
Children = children;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ControlElementBase(FormatElementBase formatElement)
|
public ControlElementBase(FormatElementBase children)
|
||||||
: this(new List<FormatElementBase>() { formatElement })
|
: this(new List<FormatElementBase>() { children })
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Serialization
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected ControlElementBase(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
int version = info.GetInt32("Version");
|
||||||
|
int childrenCount = info.GetInt32("ChildrenCount");
|
||||||
|
Children = new List<FormatElementBase>();
|
||||||
|
for (int i = 0; i < childrenCount; i++)
|
||||||
|
{
|
||||||
|
Type typeOfChild = info.GetValue(SerializedChildName(i, "Type"), typeof(Type)) as Type;
|
||||||
|
Children.Add(info.GetValue(SerializedChildName(i, "Object"), typeOfChild) as FormatElementBase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
info.AddValue("Version", Properties.Settings.Default.SerializationVersion);
|
||||||
|
info.AddValue("ChildrenCount", Children.Count);
|
||||||
|
int i = 0;
|
||||||
|
foreach (FormatElementBase child in Children)
|
||||||
|
{
|
||||||
|
info.AddValue(SerializedChildName(i, "Type"), child.GetType());
|
||||||
|
info.AddValue(SerializedChildName(i, "Object"), child);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string SerializedChildName(int index, string info)
|
||||||
|
{
|
||||||
|
return String.Format("Child{0}{1}", index, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Protected methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a clone of the Children list (for use in cloning
|
||||||
|
/// derived classes).
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Clone of the Children list.</returns>
|
||||||
|
protected IList<FormatElementBase> CloneChildren()
|
||||||
|
{
|
||||||
|
return Children.Select(child => child.Clone() as FormatElementBase).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
@ -25,11 +26,22 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Controller element that writes arbitrary text to the document.
|
/// Controller element that writes arbitrary text to the document.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class CustomText : FormatElementBase
|
[Serializable]
|
||||||
|
public class CustomText : FormatElementBase, ISerializable
|
||||||
{
|
{
|
||||||
public override string Label
|
public override string Label
|
||||||
{
|
{
|
||||||
get { return String.Format("\"{0}\"", Content); }
|
get
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(Content))
|
||||||
|
{
|
||||||
|
return "Beliebiger Text";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return String.Format("\"{0}\"", Content);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Run(Formatter.Formatter formatter)
|
public override void Run(Formatter.Formatter formatter)
|
||||||
@ -43,5 +55,20 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
clone.Content = Content;
|
clone.Content = Content;
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public CustomText () { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected CustomText(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
int version = info.GetInt32("Version");
|
||||||
|
Content = info.GetString("Content");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,13 +21,13 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
using zaaReloaded2.LabModel;
|
using zaaReloaded2.LabModel;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Base class for formatting elements.
|
/// Base class for formatting elements.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
|
||||||
public abstract class ElementBase : ICloneable
|
public abstract class ElementBase : ICloneable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -16,12 +16,14 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Base class for elements that perform actual formatting.
|
/// Base class for elements that perform actual formatting.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class FormatElementBase : ElementBase
|
public abstract class FormatElementBase : ElementBase, ISerializable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the content of this format element.
|
/// Gets or sets the content of this format element.
|
||||||
@ -32,7 +34,6 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
_content = value;
|
_content = value;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,5 +43,15 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
protected virtual void OnContentChanged() {}
|
protected virtual void OnContentChanged() {}
|
||||||
|
|
||||||
private string _content;
|
private string _content;
|
||||||
|
|
||||||
|
#region Serialization
|
||||||
|
|
||||||
|
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
info.AddValue("Version", Properties.Settings.Default.SerializationVersion);
|
||||||
|
info.AddValue("Content", Content);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ using System.Diagnostics;
|
|||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
using zaaReloaded2.LabModel;
|
using zaaReloaded2.LabModel;
|
||||||
using zaaReloaded2.Formatter;
|
using zaaReloaded2.Formatter;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
{
|
{
|
||||||
@ -31,13 +32,23 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
/// to a Word document.
|
/// to a Word document.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
class Items : CustomText
|
public class Items : CustomText
|
||||||
{
|
{
|
||||||
#region ElementBase implementation
|
#region ElementBase implementation
|
||||||
|
|
||||||
public override string Label
|
public override string Label
|
||||||
{
|
{
|
||||||
get { return Content; }
|
get
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(Content))
|
||||||
|
{
|
||||||
|
return "Laborparameter";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Content;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Run(zaaReloaded2.Formatter.Formatter formatter)
|
public override void Run(zaaReloaded2.Formatter.Formatter formatter)
|
||||||
@ -74,6 +85,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
Items clone = new Items();
|
||||||
|
clone.Content = Content;
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
@ -86,6 +104,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
Content = content;
|
Content = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected Items(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private methods
|
#region Private methods
|
||||||
@ -132,7 +157,6 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
{
|
{
|
||||||
items.AddRange(CollectByName(formatter, itemName));
|
items.AddRange(CollectByName(formatter, itemName));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
@ -148,9 +172,12 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
foreach (TimePointFormatter tpf in formatter.WorkingTimePoints.Values)
|
foreach (TimePointFormatter tpf in formatter.WorkingTimePoints.Values)
|
||||||
{
|
{
|
||||||
List<ItemFormatter> newItems = tpf.ItemFormatters.Values
|
List<ItemFormatter> newItems = tpf.ItemFormatters.Values
|
||||||
.Where(i => !i.HasBeenUsed && i.LabItem.QualifiedName.StartsWith(material))
|
.Where(i => !i.HasBeenUsed && !i.IsBlacklisted && i.LabItem.QualifiedName.StartsWith(material))
|
||||||
.ToList();
|
.ToList();
|
||||||
newItems.ForEach(i => i.HasBeenUsed = true);
|
newItems.ForEach(i => i.HasBeenUsed = true);
|
||||||
|
// Include the material prefix only if this item was collected by a
|
||||||
|
// general wildcard ("*" rather than "SU-*" etc.).
|
||||||
|
newItems.ForEach(i => i.IncludeMaterial = String.IsNullOrEmpty(material));
|
||||||
items.AddRange(newItems);
|
items.AddRange(newItems);
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
@ -172,6 +199,7 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
// item with itemName.
|
// item with itemName.
|
||||||
ItemFormatter i = tpf.ItemFormatters[name];
|
ItemFormatter i = tpf.ItemFormatters[name];
|
||||||
i.HasBeenUsed = true;
|
i.HasBeenUsed = true;
|
||||||
|
i.IncludeMaterial = false;
|
||||||
items.Add(i);
|
items.Add(i);
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
|
69
zaaReloaded2/Controller/Elements/NextColumn.cs
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
/* NextColumn.cs
|
||||||
|
* part of zaaReloaded2
|
||||||
|
*
|
||||||
|
* Copyright 2015 Daniel Kraus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace zaaReloaded2.Controller.Elements
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Format element that causes a Formatter object to move the
|
||||||
|
/// insertion point to the next colum in a layout table.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class NextColumn : ControlElementBase, ISerializable
|
||||||
|
{
|
||||||
|
public override string Label
|
||||||
|
{
|
||||||
|
get { return "Nächste Spalte"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanHaveChildren
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Run(Formatter.Formatter formatter)
|
||||||
|
{
|
||||||
|
formatter.NextColumn();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
return new NextColumn();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public NextColumn() : base() { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected NextColumn(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
@ -18,15 +18,17 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
{
|
{
|
||||||
class SelectEachDay : ControlElementBase
|
[Serializable]
|
||||||
|
public class SelectEachDay : ControlElementBase
|
||||||
{
|
{
|
||||||
public override string Label
|
public override string Label
|
||||||
{
|
{
|
||||||
get { return "Jeden Tag auswählen"; }
|
get { return "Jeder Tag"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Run(Formatter.Formatter formatter)
|
public override void Run(Formatter.Formatter formatter)
|
||||||
@ -34,6 +36,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
formatter.ProcessEachDay(this);
|
formatter.ProcessEachDay(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
return new SelectEachDay(CloneChildren());
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
public SelectEachDay() : base() { }
|
public SelectEachDay() : base() { }
|
||||||
|
|
||||||
public SelectEachDay(FormatElementBase formatElement)
|
public SelectEachDay(FormatElementBase formatElement)
|
||||||
@ -44,9 +53,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
: base(formatElements)
|
: base(formatElements)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
protected override ElementBase CreateInstance()
|
/// <summary>
|
||||||
{
|
/// Deserialization constructor.
|
||||||
return new SelectEachDay();
|
/// </summary>
|
||||||
}
|
protected SelectEachDay(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
@ -26,11 +27,12 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
/// Selects the time points of the first day in a given Formatter
|
/// Selects the time points of the first day in a given Formatter
|
||||||
/// object.
|
/// object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class SelectFirstDay : ControlElementBase
|
[Serializable]
|
||||||
|
public class SelectFirstDay : ControlElementBase, ISerializable
|
||||||
{
|
{
|
||||||
public override string Label
|
public override string Label
|
||||||
{
|
{
|
||||||
get { return "Ersten Tag auswählen"; }
|
get { return "Erster Tag"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Run(Formatter.Formatter formatter)
|
public override void Run(Formatter.Formatter formatter)
|
||||||
@ -38,6 +40,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
formatter.ProcessFirstDay(this);
|
formatter.ProcessFirstDay(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
return new SelectFirstDay(CloneChildren());
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
public SelectFirstDay() : base() { }
|
public SelectFirstDay() : base() { }
|
||||||
|
|
||||||
public SelectFirstDay(FormatElementBase formatElement)
|
public SelectFirstDay(FormatElementBase formatElement)
|
||||||
@ -48,9 +57,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
: base(formatElements)
|
: base(formatElements)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
protected override ElementBase CreateInstance()
|
/// <summary>
|
||||||
{
|
/// Deserialization constructor.
|
||||||
return new SelectFirstDay();
|
/// </summary>
|
||||||
}
|
protected SelectFirstDay(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller.Elements
|
namespace zaaReloaded2.Controller.Elements
|
||||||
@ -27,11 +28,12 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
/// Selects the time points of the last day in a given Formatter
|
/// Selects the time points of the last day in a given Formatter
|
||||||
/// object.
|
/// object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class SelectLastDay : ControlElementBase
|
[Serializable]
|
||||||
|
public class SelectLastDay : ControlElementBase, ISerializable
|
||||||
{
|
{
|
||||||
public override string Label
|
public override string Label
|
||||||
{
|
{
|
||||||
get { return "Letzten Tag auswählen"; }
|
get { return "Letzter Tag"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Run(Formatter.Formatter formatter)
|
public override void Run(Formatter.Formatter formatter)
|
||||||
@ -39,6 +41,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
formatter.ProcessLastDay(this);
|
formatter.ProcessLastDay(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
return new SelectLastDay(CloneChildren());
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
public SelectLastDay() : base() { }
|
public SelectLastDay() : base() { }
|
||||||
|
|
||||||
public SelectLastDay(FormatElementBase formatElement)
|
public SelectLastDay(FormatElementBase formatElement)
|
||||||
@ -49,9 +58,13 @@ namespace zaaReloaded2.Controller.Elements
|
|||||||
: base(formatElements)
|
: base(formatElements)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
protected override ElementBase CreateInstance()
|
/// <summary>
|
||||||
{
|
/// Deserialization constructor.
|
||||||
return new SelectLastDay();
|
/// </summary>
|
||||||
}
|
protected SelectLastDay(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
69
zaaReloaded2/Controller/Elements/TwoColumns.cs
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
/* TwoColumns.cs
|
||||||
|
* part of zaaReloaded2
|
||||||
|
*
|
||||||
|
* Copyright 2015 Daniel Kraus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace zaaReloaded2.Controller.Elements
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Format element that causes a Formatter object to insert a table with
|
||||||
|
/// two columns and one row into the documents.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class TwoColumns : ControlElementBase, ISerializable
|
||||||
|
{
|
||||||
|
public override string Label
|
||||||
|
{
|
||||||
|
get { return "Zwei Spalten einfügen"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanHaveChildren
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Run(Formatter.Formatter formatter)
|
||||||
|
{
|
||||||
|
formatter.InsertTwoColumns();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override ElementBase CreateInstance()
|
||||||
|
{
|
||||||
|
return new TwoColumns();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public TwoColumns() : base() { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected TwoColumns(SerializationInfo info, StreamingContext context)
|
||||||
|
: base(info, context)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
@ -21,6 +21,10 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using zaaReloaded2.Formatter;
|
using zaaReloaded2.Formatter;
|
||||||
using zaaReloaded2.Controller.Elements;
|
using zaaReloaded2.Controller.Elements;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Runtime.Serialization.Formatters.Soap;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller
|
namespace zaaReloaded2.Controller
|
||||||
{
|
{
|
||||||
@ -28,8 +32,43 @@ namespace zaaReloaded2.Controller
|
|||||||
/// Holds settings related to controlling laboratory output.
|
/// Holds settings related to controlling laboratory output.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class Settings : ICloneable
|
public class Settings : ICloneable, ISerializable
|
||||||
{
|
{
|
||||||
|
#region Persistence
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserializes a Settings object from SOAP XML that is read from a file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fileName">File to read.</param>
|
||||||
|
/// <returns>Deserialized Settings object with new unique ID.</returns>
|
||||||
|
/// <exception cref="InvalidDataException">if the file does not contain
|
||||||
|
/// SOAP XML that can be deserialized to a Settings object.</exception>
|
||||||
|
public static Settings LoadFromFile(string fileName)
|
||||||
|
{
|
||||||
|
StreamReader reader = new StreamReader(fileName);
|
||||||
|
SoapFormatter formatter = new SoapFormatter();
|
||||||
|
Settings settings = formatter.Deserialize(reader.BaseStream) as Settings;
|
||||||
|
if (settings == null)
|
||||||
|
{
|
||||||
|
throw new InvalidDataException("Datei enthält keine Stil-Daten oder ist beschädigt.");
|
||||||
|
}
|
||||||
|
settings.Uid = Guid.NewGuid();
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serializes a Settings object to SOAP XML that is written to a file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fileName">File to write to.</param>
|
||||||
|
public void SaveToFile(string fileName)
|
||||||
|
{
|
||||||
|
StreamWriter writer = new StreamWriter(fileName);
|
||||||
|
SoapFormatter formatter = new SoapFormatter();
|
||||||
|
formatter.Serialize(writer.BaseStream, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -51,14 +90,14 @@ namespace zaaReloaded2.Controller
|
|||||||
/// Gets the unique ID of this Settings object. The unique
|
/// Gets the unique ID of this Settings object. The unique
|
||||||
/// ID is not included in deep-copying (cloning).
|
/// ID is not included in deep-copying (cloning).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid Uid { get; private set; }
|
public Guid Uid { get; internal set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
public Settings()
|
public Settings()
|
||||||
: this(string.Empty, new List<ElementBase>())
|
: this(string.Empty, null)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public Settings(string name)
|
public Settings(string name)
|
||||||
@ -87,6 +126,44 @@ namespace zaaReloaded2.Controller
|
|||||||
Uid = Guid.NewGuid();
|
Uid = Guid.NewGuid();
|
||||||
Name = name;
|
Name = name;
|
||||||
Elements = initialElements;
|
Elements = initialElements;
|
||||||
|
ReferenceStyle = Properties.Settings.Default.ReferenceStyle;
|
||||||
|
if (Elements == null)
|
||||||
|
{
|
||||||
|
Elements = new List<ElementBase>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new Settings object with an initial
|
||||||
|
/// set of elements, a name, and a unique ID.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="initialElements">Set of ElementBase
|
||||||
|
/// object (or derived ones).</param>
|
||||||
|
/// <param name="name">Name of these settings.</param>
|
||||||
|
/// <param name="Uid">Unique ID for this Settings object.</param>
|
||||||
|
public Settings(string name, IList<ElementBase> initialElements, Guid uid)
|
||||||
|
: this(name, initialElements)
|
||||||
|
{
|
||||||
|
Uid = uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialization constructor.
|
||||||
|
/// </summary>
|
||||||
|
protected Settings(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
int version = info.GetInt32("Version");
|
||||||
|
Uid = (Guid)info.GetValue("Uid", typeof(Guid));
|
||||||
|
Name = info.GetString("Name");
|
||||||
|
ReferenceStyle = (ReferenceStyle)info.GetValue("ReferenceStyle", typeof(ReferenceStyle));
|
||||||
|
int elementsCount = info.GetInt32("ElementsCount");
|
||||||
|
Elements = new List<ElementBase>();
|
||||||
|
for (int i = 0; i < elementsCount; i++)
|
||||||
|
{
|
||||||
|
Type type = info.GetValue(SerializationElementName(i, "Type"), typeof(Type)) as Type;
|
||||||
|
ElementBase element = info.GetValue(SerializationElementName(i, "Object"), type) as ElementBase;
|
||||||
|
Elements.Add(element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -117,5 +194,37 @@ namespace zaaReloaded2.Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Implementation of ISerializable
|
||||||
|
|
||||||
|
public void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
info.AddValue("Version", Properties.Settings.Default.SerializationVersion);
|
||||||
|
info.AddValue("Uid", Uid);
|
||||||
|
info.AddValue("Name", Name);
|
||||||
|
info.AddValue("ReferenceStyle", ReferenceStyle);
|
||||||
|
info.AddValue("ElementsCount", Elements.Count);
|
||||||
|
int i = 0;
|
||||||
|
foreach (ElementBase e in Elements)
|
||||||
|
{
|
||||||
|
info.AddValue(SerializationElementName(i, "Type"), e.GetType());
|
||||||
|
info.AddValue(SerializationElementName(i, "Object"), e);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string SerializationElementName(int index, string info)
|
||||||
|
{
|
||||||
|
return String.Format("Element{0}{1}", index, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
|
||||||
|
// Defines header lines for the persistence file: "[My name]" and so on.
|
||||||
|
static readonly Regex _persistenceHeaderRegex = new Regex(@"^\[(?<name>.+?)]$");
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,15 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Configuration;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
using System.Reflection;
|
||||||
using zaaReloaded2.Controller.Elements;
|
using zaaReloaded2.Controller.Elements;
|
||||||
|
using System.Runtime.Serialization.Formatters.Soap;
|
||||||
|
using System.Web;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace zaaReloaded2.Controller
|
namespace zaaReloaded2.Controller
|
||||||
{
|
{
|
||||||
@ -35,30 +40,69 @@ namespace zaaReloaded2.Controller
|
|||||||
/// different from zaaReloaded's Settings.
|
/// different from zaaReloaded's Settings.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class SettingsRepository : ApplicationSettingsBase
|
public class SettingsRepository : ISerializable
|
||||||
{
|
{
|
||||||
#region Persistence
|
#region Properties persistence
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads the SettingsRepository instance that was persisted in
|
||||||
|
/// the assembly properties.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>SettingsRepository that was last stored in the
|
||||||
|
/// assembly properties, or a newly created SettingsRepository
|
||||||
|
/// if no previously stored exists.</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// The SettingsRepository is serialized using a SoapFormatter, which
|
||||||
|
/// creates SOAP XML. Since the assembly properties are stored as
|
||||||
|
/// XML as well, the serialized SettingsRepository is converted to
|
||||||
|
/// a base-64 string, which does not mess with the properties XML.
|
||||||
|
/// </remarks>
|
||||||
public static SettingsRepository Load()
|
public static SettingsRepository Load()
|
||||||
{
|
{
|
||||||
return
|
string s = Properties.Settings.Default.SettingsRepository;
|
||||||
zaaReloaded2.Properties.Settings.Default.SettingsRepository ??
|
if (String.IsNullOrEmpty(s))
|
||||||
new SettingsRepository();
|
{
|
||||||
|
return new SettingsRepository();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MemoryStream stream = new MemoryStream();
|
||||||
|
string encoded = Properties.Settings.Default.SettingsRepository;
|
||||||
|
byte[] bytes = Convert.FromBase64String(encoded);
|
||||||
|
stream.Write(bytes, 0, bytes.Length);
|
||||||
|
stream.Position = 0;
|
||||||
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
SettingsRepository repo = serializer.Deserialize(stream) as SettingsRepository;
|
||||||
|
repo.LoadDefaults();
|
||||||
|
return repo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stores the SettingsRepository in the assembly properties.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The SettingsRepository is serialized using a SoapFormatter, which
|
||||||
|
/// creates SOAP XML. Since the assembly properties are stored as
|
||||||
|
/// XML as well, the serialized SettingsRepository is converted to
|
||||||
|
/// a base-64 string, which does not mess with the properties XML.
|
||||||
|
/// </remarks>
|
||||||
public void Store()
|
public void Store()
|
||||||
{
|
{
|
||||||
zaaReloaded2.Properties.Settings.Default.SettingsRepository = this;
|
MemoryStream stream = new MemoryStream();
|
||||||
zaaReloaded2.Properties.Settings.Default.Save();
|
SoapFormatter serializer = new SoapFormatter();
|
||||||
|
serializer.Serialize(stream, this);
|
||||||
|
stream.Position = 0;
|
||||||
|
string encoded = Convert.ToBase64String(stream.ToArray());
|
||||||
|
Properties.Settings.Default.SettingsRepository = encoded;
|
||||||
|
Properties.Settings.Default.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
[UserScopedSetting()]
|
public IList<Settings> SettingsList { get; protected set; }
|
||||||
[SettingsSerializeAs(SettingsSerializeAs.Xml)]
|
|
||||||
public IList<Settings> SettingsList { get; private set; }
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -71,7 +115,42 @@ namespace zaaReloaded2.Controller
|
|||||||
public SettingsRepository()
|
public SettingsRepository()
|
||||||
{
|
{
|
||||||
SettingsList = new List<Settings>();
|
SettingsList = new List<Settings>();
|
||||||
CreateDefault();
|
Reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Serialization
|
||||||
|
|
||||||
|
protected SettingsRepository(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
int version = info.GetInt32("Version");
|
||||||
|
int settingsCount = info.GetInt32("SettingsCount");
|
||||||
|
SettingsList = new List<Settings>();
|
||||||
|
for (int i = 0; i < settingsCount; i++)
|
||||||
|
{
|
||||||
|
Type type = info.GetValue(SerializationSettingsName(i, "Type"), typeof(Type)) as Type;
|
||||||
|
Settings s = info.GetValue(SerializationSettingsName(i, "Object"), typeof(Settings)) as Settings;
|
||||||
|
SettingsList.Add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||||
|
{
|
||||||
|
info.AddValue("Version", Properties.Settings.Default.SerializationVersion);
|
||||||
|
info.AddValue("SettingsCount", SettingsList.Count);
|
||||||
|
int i = 0;
|
||||||
|
foreach (Settings s in SettingsList)
|
||||||
|
{
|
||||||
|
info.AddValue(SerializationSettingsName(i, "Type"), s.GetType());
|
||||||
|
info.AddValue(SerializationSettingsName(i, "Object"), s);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string SerializationSettingsName(int index, string info)
|
||||||
|
{
|
||||||
|
return String.Format("Settings{0}{1}", index, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -89,6 +168,13 @@ namespace zaaReloaded2.Controller
|
|||||||
{
|
{
|
||||||
return SettingsList.FirstOrDefault(s => s.Uid == uid);
|
return SettingsList.FirstOrDefault(s => s.Uid == uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsDefaultSettings(Settings settings)
|
||||||
|
{
|
||||||
|
return (settings.Name == Properties.Settings.Default.SettingsNameClinic + BUILTIN_LABEL ||
|
||||||
|
settings.Name == Properties.Settings.Default.SettingsNameWard + BUILTIN_LABEL);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private methods
|
#region Private methods
|
||||||
@ -97,53 +183,66 @@ namespace zaaReloaded2.Controller
|
|||||||
/// Resets the Settings contained in this SettingsRepository
|
/// Resets the Settings contained in this SettingsRepository
|
||||||
/// to the default set of settings.
|
/// to the default set of settings.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void CreateDefault()
|
private void Reset()
|
||||||
{
|
{
|
||||||
SettingsList.Clear();
|
SettingsList.Clear();
|
||||||
|
LoadDefaults();
|
||||||
// Shortcut to assembly properties
|
|
||||||
zaaReloaded2.Properties.Settings def = zaaReloaded2.Properties.Settings.Default;
|
|
||||||
|
|
||||||
// TODO: May want to create deep copies of this list below
|
|
||||||
List<FormatElementBase> defaultItems = new List<FormatElementBase>()
|
|
||||||
{
|
|
||||||
new Items(def.DefaultItemsClinicalChem),
|
|
||||||
new Items(def.DefaultItemsInflammation),
|
|
||||||
new Items(def.DefaultItemsCardio),
|
|
||||||
new Items(def.DefaultItemsKidney),
|
|
||||||
new Items(def.DefaultItemsLiver),
|
|
||||||
new Items(def.DefaultItemsLipids),
|
|
||||||
new Items(def.DefaultItemsHematology),
|
|
||||||
new Items(def.DefaultItemsCoagulation),
|
|
||||||
new Items(def.DefaultItemsDrugs),
|
|
||||||
new Items(def.DefaultItemsCollectedUrine),
|
|
||||||
new Items(def.DefaultItemsSpotUrine),
|
|
||||||
new Items(def.DefaultItemsOther),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Configure the settings for the ward
|
|
||||||
SettingsList.Add(
|
|
||||||
new Settings(
|
|
||||||
def.SettingsNameWard,
|
|
||||||
new List<ElementBase>()
|
|
||||||
{
|
|
||||||
new SelectFirstDay(defaultItems),
|
|
||||||
new SelectLastDay(defaultItems)
|
|
||||||
}
|
}
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Configure the settings for the outpatient clinic
|
/// <summary>
|
||||||
SettingsList.Add(
|
/// Loads default, built-in settings, replacing existing default
|
||||||
new Settings(
|
/// settings that might have been persisted.
|
||||||
def.SettingsNameClinic,
|
/// </summary>
|
||||||
new List<ElementBase>()
|
private void LoadDefaults()
|
||||||
{
|
{
|
||||||
new SelectEachDay(defaultItems),
|
Assembly myAssembly = this.GetType().Assembly;
|
||||||
|
SoapFormatter deserializer = new SoapFormatter();
|
||||||
|
Stream stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.ward.zaaReloaded");
|
||||||
|
Settings settings = deserializer.Deserialize(stream) as Settings;
|
||||||
|
settings.Name = Properties.Settings.Default.SettingsNameWard + BUILTIN_LABEL;
|
||||||
|
settings.Uid = Guid.Parse(DEFAULT_SETTINGS_1_UID);
|
||||||
|
ReplaceOrAdd(settings);
|
||||||
|
|
||||||
|
stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.clinic.zaaReloaded");
|
||||||
|
settings = deserializer.Deserialize(stream) as Settings;
|
||||||
|
settings.Name = Properties.Settings.Default.SettingsNameClinic + BUILTIN_LABEL;
|
||||||
|
settings.Uid = Guid.Parse(DEFAULT_SETTINGS_2_UID);
|
||||||
|
ReplaceOrAdd(settings);
|
||||||
}
|
}
|
||||||
)
|
|
||||||
);
|
private void ReplaceOrAdd(Settings settings)
|
||||||
|
{
|
||||||
|
Settings existing = SettingsList.FirstOrDefault(s => s.Uid == settings.Uid);
|
||||||
|
if (existing == null)
|
||||||
|
{
|
||||||
|
SettingsList.Add(settings);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int index = SettingsList.IndexOf(existing);
|
||||||
|
SettingsList.RemoveAt(index);
|
||||||
|
SettingsList.Insert(index, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Label that is appended to the default Settings' names.
|
||||||
|
/// </summary>
|
||||||
|
public const string BUILTIN_LABEL = " (eingebaut)";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constant GUID for the first default Settings.
|
||||||
|
/// </summary>
|
||||||
|
const string DEFAULT_SETTINGS_1_UID = "EA79DE6C-E999-44F1-9122-929A8AA404CB";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constant GUID for the second default Settings.
|
||||||
|
/// </summary>
|
||||||
|
const string DEFAULT_SETTINGS_2_UID = "783C63B5-A964-4368-B2D0-D4595DCCB952";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
158
zaaReloaded2/Defaults/clinic.zaaReloaded
Executable file
@ -0,0 +1,158 @@
|
|||||||
|
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
|
||||||
|
<SOAP-ENV:Body>
|
||||||
|
<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<_a>82184435</_a>
|
||||||
|
<_b>11851</_b>
|
||||||
|
<_c>19443</_c>
|
||||||
|
<_d>139</_d>
|
||||||
|
<_e>251</_e>
|
||||||
|
<_f>157</_f>
|
||||||
|
<_g>33</_g>
|
||||||
|
<_h>11</_h>
|
||||||
|
<_i>13</_i>
|
||||||
|
<_j>118</_j>
|
||||||
|
<_k>225</_k>
|
||||||
|
</Uid>
|
||||||
|
<Name id="ref-3">Kopie von Standard für NepA</Name>
|
||||||
|
<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialOrAbnormal</ReferenceStyle>
|
||||||
|
<ElementsCount>1</ElementsCount>
|
||||||
|
<Element0Type href="#ref-4"/>
|
||||||
|
<Element0Object href="#ref-5"/>
|
||||||
|
</a1:Settings>
|
||||||
|
<a2:UnitySerializationHolder id="ref-4" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-6">zaaReloaded2.Controller.Elements.SelectEachDay</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName id="ref-7">zaaReloaded2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ec8d075a1ab1383</AssemblyName>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:SelectEachDay id="ref-5" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<ChildrenCount>19</ChildrenCount>
|
||||||
|
<Child0Type href="#ref-8"/>
|
||||||
|
<Child0Object href="#ref-9"/>
|
||||||
|
<Child1Type href="#ref-8"/>
|
||||||
|
<Child1Object href="#ref-10"/>
|
||||||
|
<Child2Type href="#ref-8"/>
|
||||||
|
<Child2Object href="#ref-11"/>
|
||||||
|
<Child3Type href="#ref-8"/>
|
||||||
|
<Child3Object href="#ref-12"/>
|
||||||
|
<Child4Type href="#ref-8"/>
|
||||||
|
<Child4Object href="#ref-13"/>
|
||||||
|
<Child5Type href="#ref-8"/>
|
||||||
|
<Child5Object href="#ref-14"/>
|
||||||
|
<Child6Type href="#ref-8"/>
|
||||||
|
<Child6Object href="#ref-15"/>
|
||||||
|
<Child7Type href="#ref-8"/>
|
||||||
|
<Child7Object href="#ref-16"/>
|
||||||
|
<Child8Type href="#ref-8"/>
|
||||||
|
<Child8Object href="#ref-17"/>
|
||||||
|
<Child9Type href="#ref-8"/>
|
||||||
|
<Child9Object href="#ref-18"/>
|
||||||
|
<Child10Type href="#ref-8"/>
|
||||||
|
<Child10Object href="#ref-19"/>
|
||||||
|
<Child11Type href="#ref-8"/>
|
||||||
|
<Child11Object href="#ref-20"/>
|
||||||
|
<Child12Type href="#ref-8"/>
|
||||||
|
<Child12Object href="#ref-21"/>
|
||||||
|
<Child13Type href="#ref-8"/>
|
||||||
|
<Child13Object href="#ref-22"/>
|
||||||
|
<Child14Type href="#ref-8"/>
|
||||||
|
<Child14Object href="#ref-23"/>
|
||||||
|
<Child15Type href="#ref-8"/>
|
||||||
|
<Child15Object href="#ref-24"/>
|
||||||
|
<Child16Type href="#ref-25"/>
|
||||||
|
<Child16Object href="#ref-26"/>
|
||||||
|
<Child17Type href="#ref-25"/>
|
||||||
|
<Child17Object href="#ref-27"/>
|
||||||
|
<Child18Type href="#ref-25"/>
|
||||||
|
<Child18Object href="#ref-28"/>
|
||||||
|
</a4:SelectEachDay>
|
||||||
|
<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-29">zaaReloaded2.Controller.Elements.Items</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-7"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:Items id="ref-9" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-30">Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-10" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-31">Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-11" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-32">Kardiale Marker: CK, CKMB, Trop, NTproBNP</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-12" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-33">Niere: Krea, Hst, eGFR (CKD-EPI)</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-13" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-34">Sammelurin: SU-Proteinurie, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Natrium, SU-Zeit, SU-Volumen</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-14" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-35">Spot-Urin: TPCR, ACR, U-Ery, U-Leu, U-Bakt</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-15" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-36">Leber: GOT, GGT, GPT, AP, Bilirubin, CHE</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-16" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-37">Blutfette: TG, Chol, LDL, HDL, Lp(a)</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-17" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-38">Hämatologie: Hb, Hkt, Reti, Leu, Thr, MCV, HbA1c, Retikulozyten, Fragmentozyten</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-18" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-39">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-19" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-40">Diff.-BB: Neu, Lym, Mon, Baso, Eos</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-20" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-41">Hormone: iPTH, TSH</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-21" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-42">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-22" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-43">BGA: pH, Std.-Bic., BE</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-23" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-44">Hepatitis-Serologie: Anti-HBs, Anti-HBc</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-24" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-45">Medikamente: TAC, CSA, SIR, Vancomycin, Gentamicin, Tobramicin</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a2:UnitySerializationHolder id="ref-25" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-46">zaaReloaded2.Controller.Elements.CustomText</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-7"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:CustomText id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-47">Virologie (EDTA-Blut): CMV-PCR, BKV-PCR</Content>
|
||||||
|
</a4:CustomText>
|
||||||
|
<a4:CustomText id="ref-27" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-48">Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden</Content>
|
||||||
|
</a4:CustomText>
|
||||||
|
<a4:CustomText id="ref-28" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-49">Autoantikörper: ANCA (IF), MPO-ANCA (ELISA), PR3-ANCA (ELISA), ANA (IF), AnDNA (ELISA), AnDNA (RIA)</Content>
|
||||||
|
</a4:CustomText>
|
||||||
|
</SOAP-ENV:Body>
|
||||||
|
</SOAP-ENV:Envelope>
|
117
zaaReloaded2/Defaults/parameters.txt
Executable file
@ -0,0 +1,117 @@
|
|||||||
|
# LAURIS-NAME "KANONISCHER NAME" MATERIAL "IMMER REFERENZBEREICH" "BLACKLIST"
|
||||||
|
# =========== ================== ======== ======================= ===========
|
||||||
|
"Übergangsepithelien (U)" Übergangsep. U
|
||||||
|
"a1-Microglobulin (SU)" a1-Microglobulin SU
|
||||||
|
"a1-Microglobulin (SU)/die" a1-Microglobulin SU
|
||||||
|
"aktuelles Bicarbonat" Bic BGA
|
||||||
|
"Albumin (PU)" Alb U
|
||||||
|
"Albumin (SU)" Alb SU
|
||||||
|
"Albumin (SU)/die" Alb SU
|
||||||
|
Albumin Alb S
|
||||||
|
"Albumin/Creatinin (PU)" ACR U
|
||||||
|
"Alk. Phosphatase" AP S
|
||||||
|
Amylase Amylase S
|
||||||
|
"anorg. Phosphat" P S
|
||||||
|
"Bakterien (U)" Bakt U
|
||||||
|
Basenabweichung BE BGA
|
||||||
|
Basophile Baso E
|
||||||
|
"Bilirubin (U)" Bilirubin U
|
||||||
|
"C-reaktives Protein" CRP S
|
||||||
|
"Calcium (SU)" Ca SU
|
||||||
|
"Calcium (SU)/die" Ca SU
|
||||||
|
Calcium Ca S
|
||||||
|
Calcium-Phosphat-Produkt CaxP S
|
||||||
|
Cholesterin Chol S
|
||||||
|
CK gesamt" CK S
|
||||||
|
"CK MB" CK-MB S
|
||||||
|
"Creatinin (PU)" Krea U
|
||||||
|
"Creatinin (SU)" Krea SU
|
||||||
|
Creatinin Krea S
|
||||||
|
"Creatinin-Clearance (SU)/min" CrCl SU
|
||||||
|
"Cyclosporin-A vor Gabe" "CsA (C0)" S X
|
||||||
|
"Cystatin C (N Latex)" "Cystatin C" S X
|
||||||
|
Eisen Fe S
|
||||||
|
Eosinophile Eos E
|
||||||
|
"Erythrozyten (U)" Ery U
|
||||||
|
Erythrozyten Ery E
|
||||||
|
Ferritin Ferr S
|
||||||
|
Gesamt-Bilirubin Bilirubin S
|
||||||
|
"Gesamt-Eiweiss (PU)" Protein U
|
||||||
|
"Gesamt-Eiweiss (SU)" Protein SU
|
||||||
|
"Gesamt-Eiweiss (SU)/die" Proteinurie SU
|
||||||
|
Gesamt-Eiweiss Protein S
|
||||||
|
"Gesamt-Eiweiss/Creatinin (PU)" TPCR U
|
||||||
|
GGT GGT S
|
||||||
|
"glomeruläre Filtrationsrate" GFR SU
|
||||||
|
"glomerul. Filtrationsr. (MDRD)" "eGFR (MDRD)" S --- X
|
||||||
|
"glomerul. Filtrationsr. CKD-EP" "eGFR (CKD-EPI)" S
|
||||||
|
"Glucose (U)" Glukose U
|
||||||
|
Glucose Glukose S
|
||||||
|
"GOT (ASAT)" GOT S
|
||||||
|
"GPT (ALAT)" GPT S
|
||||||
|
Hämatokrit Hkt E
|
||||||
|
Hämoglobin Hb E
|
||||||
|
Haptoglobin Haptoglobin S X
|
||||||
|
Harnsäure Harnsäure S
|
||||||
|
"Harnstoff (SU)" Hst SU
|
||||||
|
"Harnstoff (SU)/die" Hst/Tag SU
|
||||||
|
Harnstoff" Hst S
|
||||||
|
"Harnstoff-Clearance (SU)/min" HstCl SU
|
||||||
|
"HbA1c (NGSP)" HbA1c E
|
||||||
|
"HDL - Cholesterin" HDL S
|
||||||
|
"hyaline Zylinder (U)" "hyal. Zyl." U
|
||||||
|
"Kalium (SU)" K U
|
||||||
|
"Kalium (SU)/die" K SU
|
||||||
|
Kalium K S
|
||||||
|
"Ketonkörper (U)" KK U
|
||||||
|
"Lactat Dehydrogenase" LDH S
|
||||||
|
"LDL - Cholesterin" LDL S
|
||||||
|
"Leukozyten (U)" Leu U
|
||||||
|
Leukozyten Leu E
|
||||||
|
Lymphozyten Lym E
|
||||||
|
Magnesium Mg S X
|
||||||
|
"MCH (HbE)" MCH E
|
||||||
|
MCHC MCHC E
|
||||||
|
MCV MCV E
|
||||||
|
"Mittleres Plättchenvolumen" MPV E
|
||||||
|
Monozyten Mon E
|
||||||
|
"Natrium (SU)" Na SU
|
||||||
|
"Natrium (SU)/die" Na SU
|
||||||
|
Natrium Na S
|
||||||
|
Neutrophile Neu E
|
||||||
|
"Nitrit (U)" Nitrit U
|
||||||
|
NT-proBNP NT-proBNP S
|
||||||
|
"PCO2 (art.)" pCO2 BGA
|
||||||
|
"pH (U)" pH U
|
||||||
|
pH pH BGA
|
||||||
|
"Plattenepithelien (U)" Plattenep U
|
||||||
|
"PO2 (art.)" pO2 BGA
|
||||||
|
"Protein (U)" Protein U
|
||||||
|
"Sammelmenge (U)" Volumen SU
|
||||||
|
"Sammelzeit (U)" Zeit SU
|
||||||
|
"Sauerstoffsättigung (art.)" SO2 BGA
|
||||||
|
Sirolimus SIR S
|
||||||
|
"spezifisches Gewicht (U)" "spez. Gew." U
|
||||||
|
"Standard Bicarbonat" "Std.-Bic." BGA
|
||||||
|
"Tacrolimus (FK506)" TAC S
|
||||||
|
Thrombozyten Thr E
|
||||||
|
Transferrin Transferrin S
|
||||||
|
"Transferrinsättigung" Tf.-Sätt. S
|
||||||
|
"Triglyceride" TG S
|
||||||
|
"Troponin T (high sensitive)" hsTnT S
|
||||||
|
Unreife Granulozyten" Gran E
|
||||||
|
"Urobilinogen (U)" Urobilinogen U
|
||||||
|
"Niedermol. Heparin (Anti-Xa)" Anti-Xa Z
|
||||||
|
"Thromboplastinzeit n. Quick" Quick Z
|
||||||
|
PTT PTT Z
|
||||||
|
"Ratio int. norm." INR Z
|
||||||
|
"Komplementfaktor C3c" C3c S X
|
||||||
|
"Komplementfaktor C4" C4 S X
|
||||||
|
"Anti-DNAse B" "Anti-DNAse B" S
|
||||||
|
Anti-Streptolysin ASL S
|
||||||
|
"PTH intakt" iPTH S
|
||||||
|
TSH TSH S
|
||||||
|
HAPTOGLOBIN Haptoglobin S
|
||||||
|
FRAGMENTOZYTEN Fragmentozyten E
|
||||||
|
"HBc-Antikörper (gesamt)" Anti-HBc S
|
||||||
|
HBs-Antikörper Anti-HBs S
|
@ -2,6 +2,10 @@
|
|||||||
# ============== ====================
|
# ============== ====================
|
||||||
# WICHTIG: Nur direkt austauschbare Einheiten verwenden,
|
# WICHTIG: Nur direkt austauschbare Einheiten verwenden,
|
||||||
# weil (bislang) keine Umrechnung der Werte vorgesehen ist!
|
# weil (bislang) keine Umrechnung der Werte vorgesehen ist!
|
||||||
"ml/min/ 1,73qm" "ml/min/1,73 m²"
|
"ml/min /1,73qm" "ml/min/1,73 m²"
|
||||||
ng/ml µg/l
|
ng/ml µg/l
|
||||||
mmol/l mM
|
mmol/l mM
|
||||||
|
n*1000/µl /nl
|
||||||
|
n*10E6/µl /fl
|
||||||
|
Bak/µl /µl
|
||||||
|
"mg/g Crea" mg/g
|
200
zaaReloaded2/Defaults/ward.zaaReloaded
Executable file
@ -0,0 +1,200 @@
|
|||||||
|
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
|
||||||
|
<SOAP-ENV:Body>
|
||||||
|
<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<_a>1443045381</_a>
|
||||||
|
<_b>29162</_b>
|
||||||
|
<_c>17774</_c>
|
||||||
|
<_d>182</_d>
|
||||||
|
<_e>243</_e>
|
||||||
|
<_f>111</_f>
|
||||||
|
<_g>227</_g>
|
||||||
|
<_h>16</_h>
|
||||||
|
<_i>47</_i>
|
||||||
|
<_j>142</_j>
|
||||||
|
<_k>57</_k>
|
||||||
|
</Uid>
|
||||||
|
<Name id="ref-3">Kopie von Standard für Station</Name>
|
||||||
|
<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialOrAbnormal</ReferenceStyle>
|
||||||
|
<ElementsCount>4</ElementsCount>
|
||||||
|
<Element0Type href="#ref-4"/>
|
||||||
|
<Element0Object href="#ref-5"/>
|
||||||
|
<Element1Type href="#ref-6"/>
|
||||||
|
<Element1Object href="#ref-7"/>
|
||||||
|
<Element2Type href="#ref-8"/>
|
||||||
|
<Element2Object href="#ref-9"/>
|
||||||
|
<Element3Type href="#ref-10"/>
|
||||||
|
<Element3Object href="#ref-11"/>
|
||||||
|
</a1:Settings>
|
||||||
|
<a2:UnitySerializationHolder id="ref-4" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-12">zaaReloaded2.Controller.Elements.TwoColumns</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName id="ref-13">zaaReloaded2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ec8d075a1ab1383</AssemblyName>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:TwoColumns id="ref-5" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<ChildrenCount>0</ChildrenCount>
|
||||||
|
</a4:TwoColumns>
|
||||||
|
<a2:UnitySerializationHolder id="ref-6" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-14">zaaReloaded2.Controller.Elements.SelectFirstDay</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-13"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:SelectFirstDay id="ref-7" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<ChildrenCount>16</ChildrenCount>
|
||||||
|
<Child0Type href="#ref-15"/>
|
||||||
|
<Child0Object href="#ref-16"/>
|
||||||
|
<Child1Type href="#ref-15"/>
|
||||||
|
<Child1Object href="#ref-17"/>
|
||||||
|
<Child2Type href="#ref-15"/>
|
||||||
|
<Child2Object href="#ref-18"/>
|
||||||
|
<Child3Type href="#ref-15"/>
|
||||||
|
<Child3Object href="#ref-19"/>
|
||||||
|
<Child4Type href="#ref-15"/>
|
||||||
|
<Child4Object href="#ref-20"/>
|
||||||
|
<Child5Type href="#ref-15"/>
|
||||||
|
<Child5Object href="#ref-21"/>
|
||||||
|
<Child6Type href="#ref-15"/>
|
||||||
|
<Child6Object href="#ref-22"/>
|
||||||
|
<Child7Type href="#ref-15"/>
|
||||||
|
<Child7Object href="#ref-23"/>
|
||||||
|
<Child8Type href="#ref-15"/>
|
||||||
|
<Child8Object href="#ref-24"/>
|
||||||
|
<Child9Type href="#ref-15"/>
|
||||||
|
<Child9Object href="#ref-25"/>
|
||||||
|
<Child10Type href="#ref-15"/>
|
||||||
|
<Child10Object href="#ref-26"/>
|
||||||
|
<Child11Type href="#ref-15"/>
|
||||||
|
<Child11Object href="#ref-27"/>
|
||||||
|
<Child12Type href="#ref-15"/>
|
||||||
|
<Child12Object href="#ref-28"/>
|
||||||
|
<Child13Type href="#ref-15"/>
|
||||||
|
<Child13Object href="#ref-29"/>
|
||||||
|
<Child14Type href="#ref-15"/>
|
||||||
|
<Child14Object href="#ref-30"/>
|
||||||
|
<Child15Type href="#ref-15"/>
|
||||||
|
<Child15Object href="#ref-31"/>
|
||||||
|
</a4:SelectFirstDay>
|
||||||
|
<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-32">zaaReloaded2.Controller.Elements.NextColumn</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-13"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:NextColumn id="ref-9" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<ChildrenCount>0</ChildrenCount>
|
||||||
|
</a4:NextColumn>
|
||||||
|
<a2:UnitySerializationHolder id="ref-10" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-33">zaaReloaded2.Controller.Elements.SelectLastDay</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-13"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:SelectLastDay id="ref-11" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<ChildrenCount>16</ChildrenCount>
|
||||||
|
<Child0Type href="#ref-15"/>
|
||||||
|
<Child0Object href="#ref-16"/>
|
||||||
|
<Child1Type href="#ref-15"/>
|
||||||
|
<Child1Object href="#ref-17"/>
|
||||||
|
<Child2Type href="#ref-15"/>
|
||||||
|
<Child2Object href="#ref-18"/>
|
||||||
|
<Child3Type href="#ref-15"/>
|
||||||
|
<Child3Object href="#ref-19"/>
|
||||||
|
<Child4Type href="#ref-15"/>
|
||||||
|
<Child4Object href="#ref-20"/>
|
||||||
|
<Child5Type href="#ref-15"/>
|
||||||
|
<Child5Object href="#ref-21"/>
|
||||||
|
<Child6Type href="#ref-15"/>
|
||||||
|
<Child6Object href="#ref-22"/>
|
||||||
|
<Child7Type href="#ref-15"/>
|
||||||
|
<Child7Object href="#ref-23"/>
|
||||||
|
<Child8Type href="#ref-15"/>
|
||||||
|
<Child8Object href="#ref-24"/>
|
||||||
|
<Child9Type href="#ref-15"/>
|
||||||
|
<Child9Object href="#ref-25"/>
|
||||||
|
<Child10Type href="#ref-15"/>
|
||||||
|
<Child10Object href="#ref-26"/>
|
||||||
|
<Child11Type href="#ref-15"/>
|
||||||
|
<Child11Object href="#ref-27"/>
|
||||||
|
<Child12Type href="#ref-15"/>
|
||||||
|
<Child12Object href="#ref-28"/>
|
||||||
|
<Child13Type href="#ref-15"/>
|
||||||
|
<Child13Object href="#ref-29"/>
|
||||||
|
<Child14Type href="#ref-15"/>
|
||||||
|
<Child14Object href="#ref-30"/>
|
||||||
|
<Child15Type href="#ref-15"/>
|
||||||
|
<Child15Object href="#ref-31"/>
|
||||||
|
</a4:SelectLastDay>
|
||||||
|
<a2:UnitySerializationHolder id="ref-15" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
|
||||||
|
<Data id="ref-34">zaaReloaded2.Controller.Elements.Items</Data>
|
||||||
|
<UnityType>4</UnityType>
|
||||||
|
<AssemblyName href="#ref-13"/>
|
||||||
|
</a2:UnitySerializationHolder>
|
||||||
|
<a4:Items id="ref-16" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-35">Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-17" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-36">Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-18" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-37">Kardiale Marker: CK, CKMB, Trop, NTproBNP</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-19" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-38">Niere: Krea, Hst, eGFR (CKD-EPI)</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-20" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-39">Sammelurin: SU-Proteinurie, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Natrium, SU-Zeit, SU-Volumen</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-21" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-40">Spot-Urin: U-*</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-22" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-41">Leber: GOT, GGT, GPT, AP, Bilirubin, CHE</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-23" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-42">Blutfette: TG, Chol, LDL, HDL, Lp(a)</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-24" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-43">Hämatologie: Hb, Hkt, Reti, Leu, Thr, Ery, Neu, Lym, Mon, Baso, Eos, MCV, HbA1c, Retikulozyten, Fragmentozyten</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-25" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-44">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-45">Hormone: iPTH, TSH</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-27" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-46">Medikamente: TAC, CSA, SIR, Vancomycin, Gentamicin, Tobramicin</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-28" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-47">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-29" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-48">BGA: pH, Std.-Bic., BE</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-30" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-49">Hepatitis-Serologie: Anti-HBs, Anti-HBc</Content>
|
||||||
|
</a4:Items>
|
||||||
|
<a4:Items id="ref-31" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
|
||||||
|
<Version>1</Version>
|
||||||
|
<Content id="ref-50">Weitere Werte: *</Content>
|
||||||
|
</a4:Items>
|
||||||
|
</SOAP-ENV:Body>
|
||||||
|
</SOAP-ENV:Envelope>
|
@ -25,7 +25,8 @@
|
|||||||
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
|
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
|
||||||
xmlns:settings="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
|
xmlns:settings="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
|
||||||
xmlns:converter="clr-namespace:Bovender.Mvvm.Converters;assembly=Bovender"
|
xmlns:converter="clr-namespace:Bovender.Mvvm.Converters;assembly=Bovender"
|
||||||
SizeToContent="Height" Width="700"
|
SizeToContent="Height" Width="700" ShowInTaskbar="False"
|
||||||
|
WindowStyle="ToolWindow" Topmost="True" ResizeMode="CanResizeWithGrip"
|
||||||
x:Name="exceptionDetailView"
|
x:Name="exceptionDetailView"
|
||||||
Title="Technische Fehlerdetails"
|
Title="Technische Fehlerdetails"
|
||||||
settings:WindowState.Save="True"
|
settings:WindowState.Save="True"
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
xmlns:actions="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
|
xmlns:actions="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
|
||||||
xmlns:settings="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
|
xmlns:settings="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
|
||||||
SizeToContent="WidthAndHeight" ResizeMode="CanResizeWithGrip"
|
SizeToContent="WidthAndHeight" ResizeMode="CanResizeWithGrip"
|
||||||
|
WindowStyle="ToolWindow" ShowInTaskbar="False" Topmost="True"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
Title="zaaReloaded2: Fehler!"
|
Title="zaaReloaded2: Fehler!"
|
||||||
settings:WindowState.Save="True"
|
settings:WindowState.Save="True"
|
||||||
|
@ -32,8 +32,7 @@ namespace zaaReloaded2.ExceptionHandler
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
// TODO: Get Word version
|
return Globals.ThisAddIn.Application.Build;
|
||||||
return "n/a";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +83,7 @@ namespace zaaReloaded2.ExceptionHandler
|
|||||||
|
|
||||||
protected override string DevPath()
|
protected override string DevPath()
|
||||||
{
|
{
|
||||||
return @"x:\Code\zaaReloaded2\";
|
return @"x:\Code\zaaReloaded2\zaaReloaded2\";
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -79,12 +79,12 @@ namespace zaaReloaded2.Formatter
|
|||||||
|
|
||||||
static void FixSalutation(Document document)
|
static void FixSalutation(Document document)
|
||||||
{
|
{
|
||||||
Regex sal = new Regex(@"^Mit.*?Grüßen");
|
Regex sal = new Regex(@"^Mit.*?Grüßen\r");
|
||||||
Regex med = new Regex(@"^((Häusl|Empf).*?Medikat)|Therapieempf");
|
Regex med = new Regex(@"^((Häusl|Empf).*?Medikat)|Therapieempf");
|
||||||
foreach (Paragraph p in document.Paragraphs)
|
foreach (Paragraph p in document.Paragraphs)
|
||||||
{
|
{
|
||||||
if (sal.IsMatch(p.Range.Text)) p.Range.Text = "Mit freundlichen, kollegialen Grüßen,";
|
if (sal.IsMatch(p.Range.Text)) p.Range.Text = "Mit freundlichen, kollegialen Grüßen,\r";
|
||||||
if (med.IsMatch(p.Range.Text)) p.Range.Text = "Aktuelle Medikation:";
|
if (med.IsMatch(p.Range.Text)) p.Range.Text = "Aktuelle Medikation:\r";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.Office.Interop.Word;
|
using Microsoft.Office.Interop.Word;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace zaaReloaded2.Formatter
|
namespace zaaReloaded2.Formatter
|
||||||
{
|
{
|
||||||
@ -30,8 +31,19 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// depending on whether there is text in the buffer or not.
|
/// depending on whether there is text in the buffer or not.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
|
/// <para>
|
||||||
/// Linking several DocumentWriters permits a cascading work flow
|
/// Linking several DocumentWriters permits a cascading work flow
|
||||||
/// with several buffers.
|
/// with several buffers.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// Markup support: The DocumentWriter supports basic markup to control
|
||||||
|
/// the text styles in the Word document.
|
||||||
|
/// </para>
|
||||||
|
/// <list type="unordered">
|
||||||
|
/// <item><b> and </b> - bold/unbold</item>
|
||||||
|
/// <item><style:NAME> - set the paragraph or character style</item>
|
||||||
|
/// <item></style> - remove *character* style</item>
|
||||||
|
/// </list>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
class DocumentWriter
|
class DocumentWriter
|
||||||
{
|
{
|
||||||
@ -53,6 +65,20 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasBufferedText { get { return _buffer.Length > 0; } }
|
public bool HasBufferedText { get { return _buffer.Length > 0; } }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns text without markup from the buffer.
|
||||||
|
/// </summary>
|
||||||
|
public string Text
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!HasBufferedText)
|
||||||
|
throw new InvalidOperationException("This DocumentWriter does not have any text.");
|
||||||
|
|
||||||
|
return _markupRegex.Replace(_buffer.ToString(), String.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
@ -113,7 +139,10 @@ namespace zaaReloaded2.Formatter
|
|||||||
|
|
||||||
if (Document != null)
|
if (Document != null)
|
||||||
{
|
{
|
||||||
Document.Range().Text = _buffer.ToString();
|
Selection s = Document.ActiveWindow.Selection;
|
||||||
|
s.ClearCharacterDirectFormatting();
|
||||||
|
s.ClearParagraphDirectFormatting();
|
||||||
|
MarkupToDocument(_buffer.ToString());
|
||||||
}
|
}
|
||||||
if (Parent != null)
|
if (Parent != null)
|
||||||
{
|
{
|
||||||
@ -153,9 +182,54 @@ namespace zaaReloaded2.Formatter
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Private methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parses a string containing markup (e.g., "<b>", "</b>")
|
||||||
|
/// and writes formatted text to the current Document.
|
||||||
|
/// </summary>
|
||||||
|
void MarkupToDocument(string text)
|
||||||
|
{
|
||||||
|
string[] substrings = _markupRegex.Split(text);
|
||||||
|
Selection sel = Document.ActiveWindow.Selection;
|
||||||
|
foreach (string substring in substrings)
|
||||||
|
{
|
||||||
|
switch (substring)
|
||||||
|
{
|
||||||
|
case "<b>":
|
||||||
|
sel.Font.Bold = 1;
|
||||||
|
break;
|
||||||
|
case "</b>":
|
||||||
|
sel.Font.Bold = 0;
|
||||||
|
break;
|
||||||
|
case "</style>":
|
||||||
|
sel.ClearCharacterStyle();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Match styleMatch = _styleRegex.Match(substring);
|
||||||
|
if (styleMatch.Success)
|
||||||
|
{
|
||||||
|
sel.set_Style(styleMatch.Groups["style"].Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sel.TypeText(substring);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
StringBuilder _buffer;
|
StringBuilder _buffer;
|
||||||
|
// Put pattern in parentheses so they will not be discarded by Regex.Split
|
||||||
|
// The splitting pattern must not contain subgroups!
|
||||||
|
static readonly Regex _markupRegex = new Regex(@"(<[^ >]+>)");
|
||||||
|
static readonly Regex _styleRegex = new Regex(@"<style:(?<style>[^>]+)>");
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,12 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Dictionary<DateTime, TimePointFormatter> WorkingTimePoints { get; private set; }
|
public Dictionary<DateTime, TimePointFormatter> WorkingTimePoints { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is true if this Formatter object carries a Laboratory with
|
||||||
|
/// at least one time point.
|
||||||
|
/// </summary>
|
||||||
|
public bool CanRun { get { return Laboratory.TimePoints.Count > 0; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
@ -113,6 +119,8 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// current position of the cursor).</param>
|
/// current position of the cursor).</param>
|
||||||
public void Run()
|
public void Run()
|
||||||
{
|
{
|
||||||
|
if (!CanRun) throw new NoLaboratoryDataException("No laboratory data to format.");
|
||||||
|
|
||||||
int current = 0;
|
int current = 0;
|
||||||
while (current < Settings.Elements.Count)
|
while (current < Settings.Elements.Count)
|
||||||
{
|
{
|
||||||
@ -137,7 +145,14 @@ namespace zaaReloaded2.Formatter
|
|||||||
current++;
|
current++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write everything to the Word document
|
||||||
|
Globals.ThisAddIn.Application.UndoRecord.StartCustomRecord(
|
||||||
|
String.Format("Laborformatierung ({0})", Properties.Settings.Default.AddinName)
|
||||||
|
);
|
||||||
|
CreateStyles();
|
||||||
_secondaryBuffer.Flush();
|
_secondaryBuffer.Flush();
|
||||||
|
Globals.ThisAddIn.Application.UndoRecord.EndCustomRecord();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -195,7 +210,106 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// FormatElementBase children to process.</param>
|
/// FormatElementBase children to process.</param>
|
||||||
public void ProcessAllTimePoints(ControlElementBase controlElement)
|
public void ProcessAllTimePoints(ControlElementBase controlElement)
|
||||||
{
|
{
|
||||||
ProcessAllTimePoints(controlElement.FormatElements);
|
ProcessAllTimePoints(controlElement.Children);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inserts a table with two columns into the document.
|
||||||
|
/// </summary>
|
||||||
|
public void InsertTwoColumns()
|
||||||
|
{
|
||||||
|
_secondaryBuffer.Flush();
|
||||||
|
if (Document != null)
|
||||||
|
{
|
||||||
|
Range r = Document.ActiveWindow.Selection.Range;
|
||||||
|
_table = Document.Tables.Add(r, NumRows: 1, NumColumns: 2);
|
||||||
|
_table.AllowAutoFit = true;
|
||||||
|
_table.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);
|
||||||
|
_table.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent;
|
||||||
|
_table.PreferredWidth = 100;
|
||||||
|
_table.Borders.Enable = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Moves the insertion point to the next column in a layout
|
||||||
|
/// table.
|
||||||
|
/// </summary>
|
||||||
|
public void NextColumn()
|
||||||
|
{
|
||||||
|
if (_table == null)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException(
|
||||||
|
"Kann nicht zur nächsten Spalte wechseln, da bislang keine Tabelle eingefügt wurde.");
|
||||||
|
}
|
||||||
|
_secondaryBuffer.Flush();
|
||||||
|
Document.ActiveWindow.Selection.MoveRight(WdUnits.wdCell);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a paragraph and character styles in the document.
|
||||||
|
/// </summary>
|
||||||
|
public void CreateStyles()
|
||||||
|
{
|
||||||
|
if (Document != null)
|
||||||
|
{
|
||||||
|
Style style;
|
||||||
|
// Don't see a better way to check for the existence of a particular
|
||||||
|
// paragraph style than by using a try...catch construction.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
style = Document.Styles[Properties.Settings.Default.StyleParagraph];
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Add default paragraph style for laboratory
|
||||||
|
style = Document.Styles.Add(Properties.Settings.Default.StyleParagraph);
|
||||||
|
style.Font.Size = 10; // pt
|
||||||
|
style.Font.Bold = 0;
|
||||||
|
style.Font.Italic = 0;
|
||||||
|
style.Font.Underline = 0;
|
||||||
|
style.ParagraphFormat.SpaceAfter = 0;
|
||||||
|
style.ParagraphFormat.SpaceBefore = 0;
|
||||||
|
style.ParagraphFormat.LeftIndent = 36; // pt
|
||||||
|
style.ParagraphFormat.FirstLineIndent = -36; // pt
|
||||||
|
style.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
style = Document.Styles[Properties.Settings.Default.StyleHeader];
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Add header paragraph style for laboratory
|
||||||
|
style = Document.Styles.Add(Properties.Settings.Default.StyleHeader);
|
||||||
|
style.Font.Size = 10; // pt
|
||||||
|
style.Font.Bold = 1;
|
||||||
|
style.Font.Italic = 0;
|
||||||
|
style.Font.Underline = WdUnderline.wdUnderlineSingle;
|
||||||
|
style.ParagraphFormat.SpaceAfter = 0;
|
||||||
|
style.ParagraphFormat.SpaceBefore = 12;
|
||||||
|
style.ParagraphFormat.LeftIndent = 36; // pt
|
||||||
|
style.ParagraphFormat.FirstLineIndent = -36; // pt
|
||||||
|
style.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
|
||||||
|
style.set_NextParagraphStyle(Document.Styles[Properties.Settings.Default.StyleParagraph]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
try
|
||||||
|
{
|
||||||
|
style = Document.Styles[Properties.Settings.Default.StyleAbnormal];
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Add character style for abnormal parameters
|
||||||
|
style = Document.Styles.Add(
|
||||||
|
Properties.Settings.Default.StyleAbnormal,
|
||||||
|
WdStyleType.wdStyleTypeCharacter);
|
||||||
|
style.Font.Bold = 1;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -259,7 +373,7 @@ namespace zaaReloaded2.Formatter
|
|||||||
throw new ArgumentNullException("workingTimePoints");
|
throw new ArgumentNullException("workingTimePoints");
|
||||||
|
|
||||||
WorkingTimePoints = workingTimePoints;
|
WorkingTimePoints = workingTimePoints;
|
||||||
ProcessElements(controlElement.FormatElements);
|
ProcessElements(controlElement.Children);
|
||||||
if (_primaryBuffer.HasBufferedText)
|
if (_primaryBuffer.HasBufferedText)
|
||||||
{
|
{
|
||||||
_primaryBuffer.Prepend(
|
_primaryBuffer.Prepend(
|
||||||
@ -286,6 +400,7 @@ namespace zaaReloaded2.Formatter
|
|||||||
Laboratory _laboratory;
|
Laboratory _laboratory;
|
||||||
DocumentWriter _primaryBuffer;
|
DocumentWriter _primaryBuffer;
|
||||||
DocumentWriter _secondaryBuffer;
|
DocumentWriter _secondaryBuffer;
|
||||||
|
Table _table;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,23 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasBeenUsed { get; set; }
|
public bool HasBeenUsed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a flag that tells the formatter to include or
|
||||||
|
/// not include the material indicator in the formatted output.
|
||||||
|
/// Default is true.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// For example, items that are selected with a wildcard may
|
||||||
|
/// contain the material info, while expressly chosen items
|
||||||
|
/// may not.
|
||||||
|
/// </remarks>
|
||||||
|
public bool IncludeMaterial { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether the Item is marked as blacklisted in the thesaurus.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsBlacklisted { get { return LabItem.IsBlacklisted; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructor
|
#region Constructor
|
||||||
@ -58,6 +75,7 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// <param name="labItem">LabItem to wrap in this ItemFormatter.</param>
|
/// <param name="labItem">LabItem to wrap in this ItemFormatter.</param>
|
||||||
public ItemFormatter(LabItem labItem, ReferenceStyle referenceStyle)
|
public ItemFormatter(LabItem labItem, ReferenceStyle referenceStyle)
|
||||||
{
|
{
|
||||||
|
IncludeMaterial = true;
|
||||||
LabItem = labItem;
|
LabItem = labItem;
|
||||||
ReferenceStyle = referenceStyle;
|
ReferenceStyle = referenceStyle;
|
||||||
}
|
}
|
||||||
@ -114,7 +132,8 @@ namespace zaaReloaded2.Formatter
|
|||||||
string unit;
|
string unit;
|
||||||
if (LabItem.HasUnit)
|
if (LabItem.HasUnit)
|
||||||
{
|
{
|
||||||
unit = String.Format(" {0}", LabItem.Unit);
|
string space = LabItem.Unit.StartsWith("/") ? String.Empty : " ";
|
||||||
|
unit = String.Format("{0}{1}", space, LabItem.Unit);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -133,15 +152,24 @@ namespace zaaReloaded2.Formatter
|
|||||||
value = LabItem.Value;
|
value = LabItem.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert the formatted text into the document.
|
string name = IncludeMaterial ? LabItem.QualifiedName : LabItem.Name;
|
||||||
formatter.Write(
|
|
||||||
|
string output =
|
||||||
String.Format(
|
String.Format(
|
||||||
"{0} {1}{2}{3}",
|
"{0} {1}{2}{3}",
|
||||||
LabItem.QualifiedName,
|
name,
|
||||||
value,
|
value,
|
||||||
unit,
|
unit,
|
||||||
reference
|
reference
|
||||||
));
|
);
|
||||||
|
if (!LabItem.IsNormal)
|
||||||
|
{
|
||||||
|
output = String.Format(
|
||||||
|
"<b>{0}</b>",
|
||||||
|
output);
|
||||||
|
}
|
||||||
|
|
||||||
|
formatter.Write(output);
|
||||||
HasBeenUsed = true;
|
HasBeenUsed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
35
zaaReloaded2/Formatter/NoLaboratoryDataException.cs
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
/* NoLaboratoryDataException.cs
|
||||||
|
* part of zaaReloaded2
|
||||||
|
*
|
||||||
|
* Copyright 2015 Daniel Kraus
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace zaaReloaded2.Formatter
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
class NoLaboratoryDataException : Exception
|
||||||
|
{
|
||||||
|
public NoLaboratoryDataException() { }
|
||||||
|
public NoLaboratoryDataException(string message) : base(message) { }
|
||||||
|
public NoLaboratoryDataException(string message,
|
||||||
|
Exception innerException)
|
||||||
|
: base(message, innerException) { }
|
||||||
|
public NoLaboratoryDataException(SerializationInfo info,
|
||||||
|
StreamingContext context)
|
||||||
|
: base(info, context) { }
|
||||||
|
}
|
||||||
|
}
|
@ -26,37 +26,36 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes the style of normal range references.
|
/// Describes the style of normal range references.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
|
||||||
public enum ReferenceStyle
|
public enum ReferenceStyle
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Never write normal ranges
|
/// Never write normal ranges
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("Referenzbereich nie ausgeben")]
|
[Description("Niemals")]
|
||||||
Never,
|
Never,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Write normal range if item is marked in dictionary
|
/// Write normal range if item is marked in dictionary
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("Referenzbereich ausgeben, falls Parameter so markiert ist")]
|
[Description("Bei speziellen Parametern immer")]
|
||||||
IfSpecialItem,
|
IfSpecialItem,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Write normal range if value is abnormal
|
/// Write normal range if value is abnormal
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("Referenzbereich ausgeben, falls Wert nicht normal ist")]
|
[Description("Bei pathologischem Wert")]
|
||||||
IfAbnormal,
|
IfAbnormal,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Write normal range if item is marked in dictionary, or if value is abnormal
|
/// Write normal range if item is marked in dictionary, or if value is abnormal
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("Referenzbereich ausgeben, falls Parameter so markiert ist oder falls Wert nicht normal ist")]
|
[Description("Bei pathologischem Wert oder speziellem Parameter")]
|
||||||
IfSpecialOrAbnormal,
|
IfSpecialOrAbnormal,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Always write normal range reference
|
/// Always write normal range reference
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Description("Referenzbereich immer ausgeben")]
|
[Description("Immer")]
|
||||||
Always
|
Always
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,57 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class TimePointFormatter
|
public class TimePointFormatter
|
||||||
{
|
{
|
||||||
|
#region Static methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Builds a header paragraph from a Date,
|
||||||
|
/// but only if the Date structure has a value.
|
||||||
|
/// </summary>
|
||||||
|
public static string DateHeader(DateTime date)
|
||||||
|
{
|
||||||
|
if (date != _nullTimeStamp.Date)
|
||||||
|
{
|
||||||
|
return FormatHeader(date.ToShortDateString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return String.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Builds a header paragraph from a DateTime structure,
|
||||||
|
/// but only if the DateTime structure has a value.
|
||||||
|
/// </summary>
|
||||||
|
public static string DateAndTimeHeader(DateTime dateTime)
|
||||||
|
{
|
||||||
|
if (dateTime != _nullTimeStamp)
|
||||||
|
{
|
||||||
|
return FormatHeader(dateTime.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return String.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private static methods
|
||||||
|
|
||||||
|
static string FormatHeader(string text)
|
||||||
|
{
|
||||||
|
return String.Format("<style:{0}>Laborwerte vom {1}:{2}<style:{3}>",
|
||||||
|
// Environment.NewLine,
|
||||||
|
Properties.Settings.Default.StyleHeader,
|
||||||
|
text,
|
||||||
|
Environment.NewLine,
|
||||||
|
Properties.Settings.Default.StyleParagraph
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -77,7 +128,7 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string GetDateHeader()
|
public string GetDateHeader()
|
||||||
{
|
{
|
||||||
return FormatHeader(TimeStamp.ToShortDateString());
|
return DateHeader(TimeStamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,21 +139,14 @@ namespace zaaReloaded2.Formatter
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string GetDateAndTimeHeader()
|
public string GetDateAndTimeHeader()
|
||||||
{
|
{
|
||||||
return FormatHeader(TimeStamp.ToString());
|
return DateAndTimeHeader(TimeStamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private methods
|
#region Fields
|
||||||
|
|
||||||
string FormatHeader(string text)
|
static readonly DateTime _nullTimeStamp = new DateTime();
|
||||||
{
|
|
||||||
return String.Format("{0}{1}:{2}",
|
|
||||||
Environment.NewLine,
|
|
||||||
text,
|
|
||||||
Environment.NewLine
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
BIN
zaaReloaded2/Icons/down.png
Normal file
After Width: | Height: | Size: 545 B |
BIN
zaaReloaded2/Icons/duplicate.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
zaaReloaded2/Icons/exit.png
Normal file
After Width: | Height: | Size: 751 B |
BIN
zaaReloaded2/Icons/export.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
zaaReloaded2/Icons/gear.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
zaaReloaded2/Icons/icon.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
zaaReloaded2/Icons/import.png
Normal file
After Width: | Height: | Size: 470 B |
BIN
zaaReloaded2/Icons/minus.png
Normal file
After Width: | Height: | Size: 280 B |
BIN
zaaReloaded2/Icons/pen.png
Normal file
After Width: | Height: | Size: 739 B |
BIN
zaaReloaded2/Icons/plus-child.png
Normal file
After Width: | Height: | Size: 557 B |
BIN
zaaReloaded2/Icons/plus.png
Normal file
After Width: | Height: | Size: 393 B |
BIN
zaaReloaded2/Icons/reset.png
Normal file
After Width: | Height: | Size: 743 B |
BIN
zaaReloaded2/Icons/up.png
Normal file
After Width: | Height: | Size: 537 B |
@ -30,6 +30,11 @@ namespace zaaReloaded2.Importer
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
Laboratory Laboratory { get; set; }
|
Laboratory Laboratory { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates whether the import was successful.
|
||||||
|
/// </summary>
|
||||||
|
bool Success { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Imports laboratory data contained in a string.
|
/// Imports laboratory data contained in a string.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -74,7 +74,9 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
if (parameterDictionary != null)
|
if (parameterDictionary != null)
|
||||||
{
|
{
|
||||||
Name = parameterDictionary.GetCanonicalName(OriginalName);
|
Name = parameterDictionary.GetCanonicalName(OriginalName);
|
||||||
AlwaysPrintLimits = parameterDictionary.GetForceReferenceDisplay(Name);
|
AlwaysPrintLimits = parameterDictionary.GetForceReferenceDisplay(OriginalName);
|
||||||
|
IsBlacklisted = parameterDictionary.GetIsBlacklisted(OriginalName);
|
||||||
|
Material = parameterDictionary.GetMaterial(OriginalName, Material);
|
||||||
}
|
}
|
||||||
if (unitDictionary != null)
|
if (unitDictionary != null)
|
||||||
{
|
{
|
||||||
@ -132,7 +134,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
{
|
{
|
||||||
if (match.Groups["limits"].Success)
|
if (match.Groups["limits"].Success)
|
||||||
{
|
{
|
||||||
Regex limitRegex = new Regex(@"\[(?<limit1>[\d.]+)?\s*(?<operator>\S+)\s*(?<limit2>[\d.]+)?]");
|
Regex limitRegex = new Regex(@"\[(?<limit1>[-\d.]+)?\s*(?<operator>\S+)\s*(?<limit2>[-\d.]+)?]");
|
||||||
Match limitMatch = limitRegex.Match(match.Groups["limits"].Value);
|
Match limitMatch = limitRegex.Match(match.Groups["limits"].Value);
|
||||||
if (limitMatch.Groups["limit1"].Success && limitMatch.Groups["limit2"].Success)
|
if (limitMatch.Groups["limit1"].Success && limitMatch.Groups["limit2"].Success)
|
||||||
{
|
{
|
||||||
@ -164,10 +166,12 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Analyses the Lauris name for a material abbreviation.
|
/// Parses the original Lauris name for a material abbreviation.
|
||||||
/// If the parameter does not refer to blood (serum, whole
|
/// This may be misleading in certain cases, e.g. "Sammelmenge (U)"
|
||||||
/// blood, etc.), Lauris appends an abbreviation in parentheses
|
/// appears to be spot urine ("U"), but is collected urine instead
|
||||||
/// to the parameter name.
|
/// ("SU"). Therefore, in the constructor that takes the thesaurus
|
||||||
|
/// parameters, the material is looked up in the Parameters thesaurus.
|
||||||
|
/// ("Sammelmenge (U)" is contained in the Parameters thesaurus.)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <example>
|
/// <example>
|
||||||
/// Gesamt-Eiweiss (SU), Albumin (SU)/die, Gesamt-Eiweiss (PU)
|
/// Gesamt-Eiweiss (SU), Albumin (SU)/die, Gesamt-Eiweiss (PU)
|
||||||
|
@ -32,6 +32,19 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class LaurisParagraph
|
public class LaurisParagraph
|
||||||
{
|
{
|
||||||
|
#region Static methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Investigates a paragraph and determines whether it looks
|
||||||
|
/// like a Lauris laboratory items paragraph.
|
||||||
|
/// </summary>
|
||||||
|
public static bool ResemblesLaurisParagraph(string paragraph)
|
||||||
|
{
|
||||||
|
return _expectedFormat.IsMatch(paragraph);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Public properties
|
#region Public properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -122,7 +135,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
static readonly Regex _expectedFormat = new Regex(@"(?<caption>[^:]+:\s*)?(?<items>[^:]+:\s*[^;]+;)*");
|
static readonly Regex _expectedFormat = new Regex(@"(?<caption>[^:]+:\s*)?(?<items>[^:]+:\s*[^;]+;)+");
|
||||||
Thesaurus.Parameters _parameterDictionary;
|
Thesaurus.Parameters _parameterDictionary;
|
||||||
Thesaurus.Units _unitDictionary;
|
Thesaurus.Units _unitDictionary;
|
||||||
|
|
||||||
|
@ -65,11 +65,15 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets an array of paragraphs in this LaurisText.
|
/// Gets an array of paragraphs in this LaurisText.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string[] Paragraphs
|
public IList<String> Paragraphs
|
||||||
{
|
{
|
||||||
[DebuggerStepThrough]
|
[DebuggerStepThrough]
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
if (_paragraphs == null)
|
||||||
|
{
|
||||||
|
_paragraphs = new List<String>();
|
||||||
|
}
|
||||||
return _paragraphs;
|
return _paragraphs;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
@ -83,7 +87,13 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// Is true if the LaurisText has time stamp in the first
|
/// Is true if the LaurisText has time stamp in the first
|
||||||
/// paragraph and <see cref="LabItem"/>s in the others.
|
/// paragraph and <see cref="LabItem"/>s in the others.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsValidTimePoint { get; private set; }
|
public bool IsValidTimePoint
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Items.Count > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the original Lauris text for this timepoint.
|
/// Gets or sets the original Lauris text for this timepoint.
|
||||||
@ -101,7 +111,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
{
|
{
|
||||||
Paragraphs = value.Split(
|
Paragraphs = value.Split(
|
||||||
new string[] { Environment.NewLine },
|
new string[] { Environment.NewLine },
|
||||||
StringSplitOptions.None);
|
StringSplitOptions.None).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,19 +138,41 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
public LaurisTimePoint(
|
public LaurisTimePoint(
|
||||||
string[] paragraphs,
|
IList<String> paragraphs,
|
||||||
|
Parameters parameterDictionary,
|
||||||
|
Units unitDictionary)
|
||||||
|
: this(parameterDictionary, unitDictionary)
|
||||||
|
{
|
||||||
|
Paragraphs = paragraphs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LaurisTimePoint(IList<String> paragraphs)
|
||||||
|
: this(paragraphs, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public LaurisTimePoint(
|
||||||
Parameters parameterDictionary,
|
Parameters parameterDictionary,
|
||||||
Units unitDictionary)
|
Units unitDictionary)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
_parameterDictionary = parameterDictionary;
|
_parameterDictionary = parameterDictionary;
|
||||||
_unitDictionary = unitDictionary;
|
_unitDictionary = unitDictionary;
|
||||||
Paragraphs = paragraphs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LaurisTimePoint(string[] paragraphs)
|
#endregion
|
||||||
: this(paragraphs, null, null)
|
|
||||||
|
#region Public methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a new paragraph to this time point by parsing
|
||||||
|
/// the paragraph for laboratory items.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="paragraph">Paragraph to add.</param>
|
||||||
|
public void AddParagraph(string paragraph)
|
||||||
{
|
{
|
||||||
|
Paragraphs.Add(paragraph);
|
||||||
|
ParseParagraph(paragraph);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -151,20 +183,36 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// Analyzes each Lauris paragraph in this time point, sets the date
|
/// Analyzes each Lauris paragraph in this time point, sets the date
|
||||||
/// and time, and collects LabItem data.
|
/// and time, and collects LabItem data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>True if the LaurisText has time stamp in the first paragraphs
|
void ParseParagraphs()
|
||||||
/// and contains <see cref="LabItem"/>s in the others.</returns>
|
|
||||||
bool ParseParagraphs()
|
|
||||||
{
|
{
|
||||||
if (Paragraphs.Length > 0)
|
if (Paragraphs != null)
|
||||||
{
|
{
|
||||||
if (!ParseTimeStamp()) return false;
|
foreach (string paragraph in Paragraphs)
|
||||||
LaurisParagraph lp;
|
|
||||||
if (IsValidTimePoint)
|
|
||||||
{
|
{
|
||||||
for (int i = 1; i < Paragraphs.Length; i++)
|
ParseParagraph(paragraph);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ParseParagraph(string paragraph)
|
||||||
{
|
{
|
||||||
lp = new LaurisParagraph(
|
if (_timeStampRegex.IsMatch(paragraph))
|
||||||
Paragraphs[i],
|
{
|
||||||
|
DateTime dt;
|
||||||
|
if (DateTime.TryParseExact(
|
||||||
|
_timeStampRegex.Match(paragraph).Groups["datetime"].Value,
|
||||||
|
"dd.MM.yyyy HH:mm",
|
||||||
|
CultureInfo.InvariantCulture,
|
||||||
|
DateTimeStyles.AllowWhiteSpaces,
|
||||||
|
out dt))
|
||||||
|
{
|
||||||
|
TimeStamp = dt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LaurisParagraph lp = new LaurisParagraph(
|
||||||
|
paragraph,
|
||||||
_parameterDictionary,
|
_parameterDictionary,
|
||||||
_unitDictionary);
|
_unitDictionary);
|
||||||
if (lp.IsLaurisParagraph)
|
if (lp.IsLaurisParagraph)
|
||||||
@ -173,38 +221,6 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
IsValidTimePoint = Items.Count > 0;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Analyzes the date and time information that is expected to be
|
|
||||||
/// in the first paragraph.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>True if the LaurisText contains a time stamp in the
|
|
||||||
/// first paragraph.</returns>
|
|
||||||
bool ParseTimeStamp()
|
|
||||||
{
|
|
||||||
if (Paragraphs.Length == 0)
|
|
||||||
throw new InvalidOperationException("The time point has no paragraphs.");
|
|
||||||
|
|
||||||
Match m = _timeStampRegex.Match(Paragraphs[0]);
|
|
||||||
bool success = false;
|
|
||||||
if (m.Success)
|
|
||||||
{
|
|
||||||
DateTime dt;
|
|
||||||
success = DateTime.TryParseExact(
|
|
||||||
m.Groups["datetime"].Value,
|
|
||||||
"dd.MM.yyyy HH:mm",
|
|
||||||
CultureInfo.InvariantCulture,
|
|
||||||
DateTimeStyles.AllowWhiteSpaces,
|
|
||||||
out dt);
|
|
||||||
TimeStamp = dt;
|
|
||||||
}
|
|
||||||
IsValidTimePoint = success;
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddItems(IItemDictionary items)
|
void AddItems(IItemDictionary items)
|
||||||
{
|
{
|
||||||
@ -220,8 +236,8 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// paragraph of a LaurisText.
|
/// paragraph of a LaurisText.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
static readonly Regex _timeStampRegex = new Regex(
|
static readonly Regex _timeStampRegex = new Regex(
|
||||||
@"^\s*\(?\s*(?<datetime>\d\d\.\d\d\.\d\d\d\d\s+\d\d:\d\d)");
|
@"^(Labor:)?\s*\(?\s*(?<datetime>\d\d\.\d\d\.\d\d\d\d\s+\d\d:\d\d)");
|
||||||
string[] _paragraphs;
|
IList<String> _paragraphs;
|
||||||
Parameters _parameterDictionary;
|
Parameters _parameterDictionary;
|
||||||
Units _unitDictionary;
|
Units _unitDictionary;
|
||||||
|
|
||||||
|
@ -52,6 +52,14 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool Success
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Laboratory.TimePoints.Count > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Splits the <paramref name="text"/> into individual time points
|
/// Splits the <paramref name="text"/> into individual time points
|
||||||
/// and creates <see cref="LaurisTimePoint"/> objects from them.
|
/// and creates <see cref="LaurisTimePoint"/> objects from them.
|
||||||
@ -59,45 +67,45 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
|||||||
/// <param name="text">ZAA-formatted Lauris output to import.</param>
|
/// <param name="text">ZAA-formatted Lauris output to import.</param>
|
||||||
public void Import(string text)
|
public void Import(string text)
|
||||||
{
|
{
|
||||||
|
// Split the text into parargraphs. This implementation relies on the fact
|
||||||
|
// that the order or splitting strings in C#'s String.Split() method is
|
||||||
|
// important; see http://stackoverflow.com/a/8664639/270712
|
||||||
string[] paragraphs = text.Split(
|
string[] paragraphs = text.Split(
|
||||||
new string[] { Environment.NewLine },
|
new string[] { "\r\n", "\n\r", "\r", "\n" },
|
||||||
StringSplitOptions.RemoveEmptyEntries);
|
StringSplitOptions.RemoveEmptyEntries);
|
||||||
int i = 0;
|
LaurisTimePoint timePoint = null;
|
||||||
int start = 0;
|
|
||||||
int numParagraphs = paragraphs.Length;
|
|
||||||
|
|
||||||
while (i < numParagraphs)
|
foreach (string paragraph in paragraphs)
|
||||||
{
|
{
|
||||||
// Search for the next occurrence of a time stamp line
|
// If the current paragraph looks like a Lauris time stamp,
|
||||||
while (i < numParagraphs
|
// create a new time point.
|
||||||
&& !LaurisTimePoint.IsTimeStampLine(paragraphs[i]))
|
if (LaurisTimePoint.IsTimeStampLine(paragraph))
|
||||||
{
|
{
|
||||||
i++;
|
timePoint = new LaurisTimePoint(paragraph, _parameters, _units);
|
||||||
|
// Add the time point to the laboratory only if none
|
||||||
|
// with the same time stamp exists yet.
|
||||||
|
TimePoint existing = null;
|
||||||
|
if (Laboratory.TryGetTimePoint(timePoint.TimeStamp, ref existing))
|
||||||
|
{
|
||||||
|
timePoint = existing as LaurisTimePoint;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// TODO: Find an alternative to returning in the middle of the method.
|
|
||||||
if (i >= numParagraphs) return;
|
|
||||||
|
|
||||||
if (LaurisTimePoint.IsTimeStampLine(paragraphs[i]))
|
|
||||||
{
|
{
|
||||||
// Remember the time stamp line's index
|
Laboratory.AddTimePoint(timePoint);
|
||||||
start = i;
|
|
||||||
|
|
||||||
// Seek the next time stamp line
|
|
||||||
while (i + 1 < numParagraphs
|
|
||||||
&& !LaurisTimePoint.IsTimeStampLine(paragraphs[i + 1]))
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// If the current paragraph looks like a paragraph with
|
||||||
Laboratory.AddTimePoint(
|
// laboratory items, add it to the current time point;
|
||||||
new LaurisTimePoint(
|
// if no time point exists yet, create one.
|
||||||
paragraphs.Slice(start, i - start + 1),
|
else if (LaurisParagraph.ResemblesLaurisParagraph(paragraph))
|
||||||
_parameters,
|
{
|
||||||
_units
|
if (timePoint == null)
|
||||||
)
|
{
|
||||||
);
|
timePoint = new LaurisTimePoint(_parameters, _units);
|
||||||
|
Laboratory.AddTimePoint(timePoint);
|
||||||
|
}
|
||||||
|
timePoint.AddParagraph(paragraph);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,8 @@ namespace zaaReloaded2.LabModel
|
|||||||
public bool HasUpperLimit { get; protected set; }
|
public bool HasUpperLimit { get; protected set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is true if <see cref="Value"/> is normal.
|
/// Is true if <see cref="Value"/> is normal. Returns true
|
||||||
|
/// if no limits and no normal value are known.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsNormal
|
public bool IsNormal
|
||||||
{
|
{
|
||||||
@ -147,7 +148,7 @@ namespace zaaReloaded2.LabModel
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (Value == Normal);
|
return String.IsNullOrEmpty(Normal) || (Value == Normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,6 +206,12 @@ namespace zaaReloaded2.LabModel
|
|||||||
|
|
||||||
public Material Material { get; protected set; }
|
public Material Material { get; protected set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether the LabItem is marked as blacklisted
|
||||||
|
/// in the thesaurus.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsBlacklisted { get; protected set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
@ -66,6 +66,30 @@ namespace zaaReloaded2.LabModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if the Laboratory contains a TimePoint with an identical
|
||||||
|
/// time stamp to the one being queried.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="timePoint">TimePoint whose time stamp to look for.</param>
|
||||||
|
/// <returns>True if a TimePoint with identical time stamp exists.</returns>
|
||||||
|
public bool HasTimePoint(TimePoint timePoint)
|
||||||
|
{
|
||||||
|
return TimePoints.ContainsKey(timePoint.TimeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks for a TimePoint with a given timeStamp and returns
|
||||||
|
/// it as a reference parameter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="timeStamp">Time stamp to look for.</param>
|
||||||
|
/// <param name="timePoint">Resulting TimePoint (if any).</param>
|
||||||
|
/// <returns>True if TimePoints contains a TimePoint with
|
||||||
|
/// the requested timeStamp.</returns>
|
||||||
|
public bool TryGetTimePoint(DateTime timeStamp, ref TimePoint timePoint)
|
||||||
|
{
|
||||||
|
return TimePoints.TryGetValue(timeStamp, out timePoint);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,9 +9,9 @@ using System.Security;
|
|||||||
[assembly: AssemblyTitle("zaaReloaded2")]
|
[assembly: AssemblyTitle("zaaReloaded2")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Microsoft")]
|
[assembly: AssemblyCompany("Daniel Kraus")]
|
||||||
[assembly: AssemblyProduct("zaaReloaded2")]
|
[assembly: AssemblyProduct("zaaReloaded2")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
|
[assembly: AssemblyCopyright("Copyright © Daniel Kraus 2015")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: InternalsVisibleTo("Tests, PublicKey=002400000480000094000000060200000024000052534131000400000100010061ecc0718277dee13e7dae2dad33787a981c9883ba80a659bebbdbec76563e201a7a3a6a5852e01bb5eb328d24d5889244b4626da9af9f93db663565441a3120e3985789e6f2a39289f4eed063725b84152cbef472d9dd2f7495f51dad6c91f4dc6fb7c72cb6bd9381335ac9878ec0a6369e880f35b8eca3063e16468d7704eb")]
|
[assembly: InternalsVisibleTo("Tests, PublicKey=002400000480000094000000060200000024000052534131000400000100010061ecc0718277dee13e7dae2dad33787a981c9883ba80a659bebbdbec76563e201a7a3a6a5852e01bb5eb328d24d5889244b4626da9af9f93db663565441a3120e3985789e6f2a39289f4eed063725b84152cbef472d9dd2f7495f51dad6c91f4dc6fb7c72cb6bd9381335ac9878ec0a6369e880f35b8eca3063e16468d7704eb")]
|
||||||
|
188
zaaReloaded2/Properties/Settings.Designer.cs
generated
@ -25,9 +25,10 @@ namespace zaaReloaded2.Properties {
|
|||||||
|
|
||||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
public global::zaaReloaded2.Controller.SettingsRepository SettingsRepository {
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string SettingsRepository {
|
||||||
get {
|
get {
|
||||||
return ((global::zaaReloaded2.Controller.SettingsRepository)(this["SettingsRepository"]));
|
return ((string)(this["SettingsRepository"]));
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
this["SettingsRepository"] = value;
|
this["SettingsRepository"] = value;
|
||||||
@ -126,114 +127,6 @@ namespace zaaReloaded2.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Klinische Chemie: Na, K, Cl, Mg, Pi, Alb, Prot, LDH, Hsre")]
|
|
||||||
public string DefaultItemsClinicalChem {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsClinicalChem"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Hämatologie: Hb, Hkt, Reti, Leu, Thr, Neu, HbA1c")]
|
|
||||||
public string DefaultItemsHematology {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsHematology"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa")]
|
|
||||||
public string DefaultItemsCoagulation {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsCoagulation"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Spot-Urin: U-*")]
|
|
||||||
public string DefaultItemsSpotUrine {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsSpotUrine"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Sammelurin: SU-*")]
|
|
||||||
public string DefaultItemsCollectedUrine {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsCollectedUrine"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Weitere Werte: *")]
|
|
||||||
public string DefaultItemsOther {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsOther"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Kardiale Marker: CK, CKMB, Trop, NTproBNP")]
|
|
||||||
public string DefaultItemsCardio {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsCardio"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Blutfette: TG, Chol, LDL, HDL, Lp(a)")]
|
|
||||||
public string DefaultItemsLipids {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsLipids"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Leber: GOT, GGT, GPT, AP, Bili, CHE")]
|
|
||||||
public string DefaultItemsLiver {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsLiver"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Niere: Krea, Hst, eGFR")]
|
|
||||||
public string DefaultItemsKidney {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsKidney"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Entzündung/Immunsystem: CRP, Pct, C3, C4")]
|
|
||||||
public string DefaultItemsInflammation {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsInflammation"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Medikamente: TAC, CSA, SIR, Vancomycin, Gentamicin, Tobramicin")]
|
|
||||||
public string DefaultItemsDrugs {
|
|
||||||
get {
|
|
||||||
return ((string)(this["DefaultItemsDrugs"]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("00000000-0000-0000-0000-000000000000")]
|
[global::System.Configuration.DefaultSettingValueAttribute("00000000-0000-0000-0000-000000000000")]
|
||||||
@ -245,5 +138,80 @@ namespace zaaReloaded2.Properties {
|
|||||||
this["LastSettings"] = value;
|
this["LastSettings"] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Laborwerte")]
|
||||||
|
public string StyleParagraph {
|
||||||
|
get {
|
||||||
|
return ((string)(this["StyleParagraph"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("IfSpecialOrAbnormal")]
|
||||||
|
public global::zaaReloaded2.Formatter.ReferenceStyle ReferenceStyle {
|
||||||
|
get {
|
||||||
|
return ((global::zaaReloaded2.Formatter.ReferenceStyle)(this["ReferenceStyle"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("Ausgabe-Elemente")]
|
||||||
|
public string FormatElementLabel {
|
||||||
|
get {
|
||||||
|
return ((string)(this["FormatElementLabel"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("Steuerungs-Elemente")]
|
||||||
|
public string ControlElementLabel {
|
||||||
|
get {
|
||||||
|
return ((string)(this["ControlElementLabel"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("1")]
|
||||||
|
public int SerializationVersion {
|
||||||
|
get {
|
||||||
|
return ((int)(this["SerializationVersion"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string ImportExportPath {
|
||||||
|
get {
|
||||||
|
return ((string)(this["ImportExportPath"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["ImportExportPath"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Überschrift")]
|
||||||
|
public string StyleHeader {
|
||||||
|
get {
|
||||||
|
return ((string)(this["StyleHeader"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Pathologisch")]
|
||||||
|
public string StyleAbnormal {
|
||||||
|
get {
|
||||||
|
return ((string)(this["StyleAbnormal"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="zaaReloaded2.Properties" GeneratedClassName="Settings">
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="zaaReloaded2.Properties" GeneratedClassName="Settings">
|
||||||
<Profiles />
|
<Profiles />
|
||||||
<Settings>
|
<Settings>
|
||||||
<Setting Name="SettingsRepository" Type="zaaReloaded2.Controller.SettingsRepository" Scope="User">
|
<Setting Name="SettingsRepository" Type="System.String" Scope="User">
|
||||||
<Value Profile="(Default)" />
|
<Value Profile="(Default)" />
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="AddinName" Type="System.String" Scope="Application">
|
<Setting Name="AddinName" Type="System.String" Scope="Application">
|
||||||
@ -35,44 +35,32 @@
|
|||||||
<Setting Name="SettingsNameClinic" Type="System.String" Scope="Application">
|
<Setting Name="SettingsNameClinic" Type="System.String" Scope="Application">
|
||||||
<Value Profile="(Default)">Standard für NepA</Value>
|
<Value Profile="(Default)">Standard für NepA</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="DefaultItemsClinicalChem" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Klinische Chemie: Na, K, Cl, Mg, Pi, Alb, Prot, LDH, Hsre</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsHematology" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Hämatologie: Hb, Hkt, Reti, Leu, Thr, Neu, HbA1c</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsCoagulation" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsSpotUrine" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Spot-Urin: U-*</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsCollectedUrine" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Sammelurin: SU-*</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsOther" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Weitere Werte: *</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsCardio" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Kardiale Marker: CK, CKMB, Trop, NTproBNP</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsLipids" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Blutfette: TG, Chol, LDL, HDL, Lp(a)</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsLiver" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Leber: GOT, GGT, GPT, AP, Bili, CHE</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsKidney" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Niere: Krea, Hst, eGFR</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsInflammation" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Entzündung/Immunsystem: CRP, Pct, C3, C4</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="DefaultItemsDrugs" Type="System.String" Scope="Application">
|
|
||||||
<Value Profile="(Default)">Medikamente: TAC, CSA, SIR, Vancomycin, Gentamicin, Tobramicin</Value>
|
|
||||||
</Setting>
|
|
||||||
<Setting Name="LastSettings" Type="System.Guid" Scope="User">
|
<Setting Name="LastSettings" Type="System.Guid" Scope="User">
|
||||||
<Value Profile="(Default)">00000000-0000-0000-0000-000000000000</Value>
|
<Value Profile="(Default)">00000000-0000-0000-0000-000000000000</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
|
<Setting Name="StyleParagraph" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">zaaReloaded2-Laborwerte</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="ReferenceStyle" Type="zaaReloaded2.Formatter.ReferenceStyle" Scope="Application">
|
||||||
|
<Value Profile="(Default)">IfSpecialOrAbnormal</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="FormatElementLabel" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">Ausgabe-Elemente</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="ControlElementLabel" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">Steuerungs-Elemente</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SerializationVersion" Type="System.Int32" Scope="Application">
|
||||||
|
<Value Profile="(Default)">1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="ImportExportPath" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="StyleHeader" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">zaaReloaded2-Überschrift</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="StyleAbnormal" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">zaaReloaded2-Pathologisch</Value>
|
||||||
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
@ -31,6 +31,9 @@ using zaaReloaded2.ViewModels;
|
|||||||
using zaaReloaded2.Importer.ZaaImporter;
|
using zaaReloaded2.Importer.ZaaImporter;
|
||||||
using zaaReloaded2.Formatter;
|
using zaaReloaded2.Formatter;
|
||||||
using zaaReloaded2.Controller;
|
using zaaReloaded2.Controller;
|
||||||
|
using Word = Microsoft.Office.Interop.Word;
|
||||||
|
using Bovender.Mvvm.Actions;
|
||||||
|
using Bovender.Mvvm.Messaging;
|
||||||
|
|
||||||
// TODO: Follow these steps to enable the Ribbon (XML) item:
|
// TODO: Follow these steps to enable the Ribbon (XML) item:
|
||||||
|
|
||||||
@ -79,7 +82,8 @@ namespace zaaReloaded2
|
|||||||
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
|
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
|
||||||
{
|
{
|
||||||
_ribbon = ribbonUI;
|
_ribbon = ribbonUI;
|
||||||
Globals.ThisAddIn.Application.WindowSelectionChange += Application_WindowSelectionChange;
|
Microsoft.Office.Interop.Word.Application word = Globals.ThisAddIn.Application;
|
||||||
|
word.WindowSelectionChange += Application_WindowSelectionChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -152,9 +156,19 @@ namespace zaaReloaded2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if there is at least one paragraph selected.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The Selection object in Word is a bit tricky: Its Length property
|
||||||
|
/// is never 0, because even if no text passage is selected, the character
|
||||||
|
/// after the cursor is the content of the Selection.
|
||||||
|
/// </remarks>
|
||||||
public bool CanFormat(Office.IRibbonControl control)
|
public bool CanFormat(Office.IRibbonControl control)
|
||||||
{
|
{
|
||||||
return Globals.ThisAddIn.Application.Selection.Paragraphs.Count > 0;
|
Word.Selection s = Globals.ThisAddIn.Application.ActiveWindow.Selection;
|
||||||
|
return s.Paragraphs.Count > 1 ||
|
||||||
|
(s.Text.Length > 1 && s.Text.EndsWith("\r"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -182,13 +196,24 @@ namespace zaaReloaded2
|
|||||||
void DoFormat(Settings settings)
|
void DoFormat(Settings settings)
|
||||||
{
|
{
|
||||||
ZaaImporter importer = new ZaaImporter();
|
ZaaImporter importer = new ZaaImporter();
|
||||||
importer.Import(Globals.ThisAddIn.Application.Selection.Text);
|
importer.Import(Globals.ThisAddIn.Application.ActiveWindow.Selection.Text);
|
||||||
Formatter.Formatter formatter =new Formatter.Formatter(
|
Formatter.Formatter formatter = new Formatter.Formatter(
|
||||||
Globals.ThisAddIn.Application.ActiveDocument);
|
Globals.ThisAddIn.Application.ActiveDocument);
|
||||||
formatter.Settings = settings;
|
formatter.Settings = settings;
|
||||||
formatter.Laboratory = importer.Laboratory;
|
formatter.Laboratory = importer.Laboratory;
|
||||||
|
try
|
||||||
|
{
|
||||||
formatter.Run();
|
formatter.Run();
|
||||||
}
|
}
|
||||||
|
catch (NoLaboratoryDataException)
|
||||||
|
{
|
||||||
|
NotificationAction a = new NotificationAction();
|
||||||
|
a.Caption = "Formatieren nicht möglich";
|
||||||
|
a.Message = "Die aktuelle Markierung scheint keine Labordaten zu enthalten.";
|
||||||
|
a.OkButtonLabel = "Schließen";
|
||||||
|
a.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DoChooseSettings()
|
void DoChooseSettings()
|
||||||
{
|
{
|
||||||
@ -200,10 +225,7 @@ namespace zaaReloaded2
|
|||||||
Settings settings = settingsVM.RevealModelObject() as Settings;
|
Settings settings = settingsVM.RevealModelObject() as Settings;
|
||||||
DoFormat(settings);
|
DoFormat(settings);
|
||||||
Properties.Settings.Default.LastSettings = settings.Uid;
|
Properties.Settings.Default.LastSettings = settings.Uid;
|
||||||
};
|
Properties.Settings.Default.Save();
|
||||||
vm.RequestCloseView += (sender, args) =>
|
|
||||||
{
|
|
||||||
repository.Save();
|
|
||||||
};
|
};
|
||||||
vm.InjectInto<SettingsRepositoryView>().ShowDialog();
|
vm.InjectInto<SettingsRepositoryView>().ShowDialog();
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,13 @@
|
|||||||
<Setter Property="Control.ToolTip" Value="{Binding Path=ToolTip, Mode=OneWay}" />
|
<Setter Property="Control.ToolTip" Value="{Binding Path=ToolTip, Mode=OneWay}" />
|
||||||
<Setter Property="IsEnabled" Value="{Binding Path=IsEnabled, Mode=OneWay}" />
|
<Setter Property="IsEnabled" Value="{Binding Path=IsEnabled, Mode=OneWay}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
<Style TargetType="Image">
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsEnabled" Value="False">
|
||||||
|
<Setter Property="Opacity" Value="0.3" />
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
<conv:EnumBooleanConverter x:Key="enumBoolConv" />
|
<conv:EnumBooleanConverter x:Key="enumBoolConv" />
|
||||||
<conv:VisibilityBooleanConverter x:Key="visBoolConv" />
|
<conv:VisibilityBooleanConverter x:Key="visBoolConv" />
|
||||||
<conv:BooleanNegationConverter x:Key="boolNegConv" />
|
<conv:BooleanNegationConverter x:Key="boolNegConv" />
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
# LAURIS-NAME "KANONISCHER NAME" MATERIAL "IMMER REFERENZBEREICH"
|
|
||||||
# =========== ================== ======== =======================
|
|
||||||
"Übergangsepithelien (U)" Übergangsep. U
|
|
||||||
"a1-Microglobulin (SU)" a1-Microglobulin SU
|
|
||||||
"a1-Microglobulin (SU)/die" a1-Microglobulin SU
|
|
||||||
"aktuelles Bicarbonat" Bic BGA
|
|
||||||
"Albumin (PU)" Alb U
|
|
||||||
"Albumin (SU)" Alb SU
|
|
||||||
"Albumin (SU)/die" Alb SU
|
|
||||||
Albumin Alb S
|
|
||||||
Albumin/Creatinin (PU)" ACR U
|
|
||||||
"Alk. Phosphatase" AP S
|
|
||||||
Amylase Amylase S
|
|
||||||
anorg. Phosphat" Phosphat S
|
|
||||||
Bakterien (U)" Bakt U
|
|
||||||
Basenabweichung BE BGA
|
|
||||||
Basophile Baso E
|
|
||||||
Bilirubin (U)" Bilirubin U
|
|
||||||
C-reaktives Protein" CRP S
|
|
||||||
Calcium (SU)" Ca SU
|
|
||||||
Calcium (SU)/die" Ca SU
|
|
||||||
Calcium Ca S
|
|
||||||
Calcium-Phosphat-Produkt CaxP S
|
|
||||||
Cholesterin Chol S
|
|
||||||
CK gesamt" CK S
|
|
||||||
CK MB" CK-MB S
|
|
||||||
Creatinin (PU)" Krea U
|
|
||||||
Creatinin (SU)" Krea SU
|
|
||||||
Creatinin Krea S
|
|
||||||
Creatinin-Clearance (SU)/min" CrCl SU
|
|
||||||
Cyclosporin-A vor Gabe" "CsA (C0)" S X
|
|
||||||
Cystatin C (N Latex)" "Cystatin C" S X
|
|
||||||
Eisen Fe S
|
|
||||||
Eosinophile Eos E
|
|
||||||
Erythrozyten (U)" Ery U
|
|
||||||
Erythrozyten Ery E
|
|
||||||
Ferritin Ferr S
|
|
||||||
Gesamt-Bilirubin Bilirubin S
|
|
||||||
Gesamt-Eiweiss (PU)" Protein U
|
|
||||||
Gesamt-Eiweiss (SU)" Protein SU
|
|
||||||
Gesamt-Eiweiss (SU)/die" Proteinurie SU
|
|
||||||
Gesamt-Eiweiss Protein S
|
|
||||||
Gesamt-Eiweiss/Creatinin (PU)" TPCR U
|
|
||||||
GGT GGT S
|
|
||||||
glomeruläre Filtrationsrate" GFR SU
|
|
||||||
glomerul. Filtrationsr. (MDRD)" "eGFR (MDRD)" S
|
|
||||||
glomerul. Filtrationsr. CKD-EP" "eGFR (CKD-EPI)" S
|
|
||||||
Glucose (U)" Glukose U
|
|
||||||
Glucose Glukose S
|
|
||||||
GOT (ASAT)" GOT S
|
|
||||||
GPT (ALAT)" GPT S
|
|
||||||
Hämatokrit Hkt E
|
|
||||||
Hämoglobin Hb E
|
|
||||||
Haptoglobin Haptoglobin S X
|
|
||||||
Harnsäure Harnsäure S
|
|
||||||
Harnstoff (SU)" Hst SU
|
|
||||||
Harnstoff (SU)/die" Hst/Tag SU
|
|
||||||
Harnstoff" Hst S
|
|
||||||
Harnstoff-Clearance (SU)/min" HstCl SU
|
|
||||||
HbA1c (NGSP)" HbA1c E
|
|
||||||
HDL - Cholesterin" HDL S
|
|
||||||
hyaline Zylinder (U)" "hyal. Zyl." U
|
|
||||||
Kalium (SU)" K U
|
|
||||||
Kalium (SU)/die" K SU
|
|
||||||
Kalium K S
|
|
||||||
Ketonkörper (U)" KK U
|
|
||||||
Lactat Dehydrogenase" LDH S
|
|
||||||
LDL - Cholesterin" LDL S
|
|
||||||
Leukozyten (U)" Leu U
|
|
||||||
Leukozyten Leu E
|
|
||||||
Lymphozyten Lym E
|
|
||||||
MCH (HbE) MCH E
|
|
||||||
MCHC MCHC E
|
|
||||||
MCV MCV E
|
|
||||||
Mittleres Plättchenvolumen MPV E
|
|
||||||
Monozyten Mon E
|
|
||||||
Natrium (SU)" Na SU
|
|
||||||
Natrium (SU)/die" Na SU
|
|
||||||
Natrium Na S
|
|
||||||
Neutrophile Neu E
|
|
||||||
Nitrit (U)" Nitrit U
|
|
||||||
NT-proBNP NT-proBNP S
|
|
||||||
PCO2 (art.)" pCO2 BGA
|
|
||||||
pH (U)" pH U
|
|
||||||
pH" pH BGA
|
|
||||||
Plattenepithelien (U)" Plattenep U
|
|
||||||
PO2 (art.)" pO2 BGA
|
|
||||||
Protein (U)" Protein U
|
|
||||||
Sammelmenge (U)" Volumen SU
|
|
||||||
Sammelzeit (U)" Zeit SU
|
|
||||||
Sauerstoffsättigung (art.)" SO2 BGA
|
|
||||||
Sirolimus SIR S
|
|
||||||
spezifisches Gewicht (U)" "spez. Gew." U
|
|
||||||
Standard Bicarbonat" "Std.-Bic." BGA
|
|
||||||
Tacrolimus (FK506)" TAC S
|
|
||||||
Thrombozyten Thr E
|
|
||||||
Transferrin Transferrin S
|
|
||||||
Transferrinsättigung" Tf.-Sätt. S
|
|
||||||
Triglyceride" TG S
|
|
||||||
Troponin T (high sensitive)" hsTnT S
|
|
||||||
Unreife Granulozyten" Gran E
|
|
||||||
Urobilinogen (U)" Urobilinogen U
|
|
||||||
Niedermol. Heparin (Anti-Xa)" Anti-Xa Z
|
|
||||||
Thromboplastinzeit n. Quick" Quick Z
|
|
||||||
PTT aPTT Z
|
|
||||||
Ratio int. norm." INR Z
|
|
||||||
Komplementfaktor C3c C3c S X
|
|
||||||
Komplementfaktor C4 C4 S X
|
|
||||||
Anti-DNAse B "Anti-DNAse B" S
|
|
||||||
Anti-Streptolysin ASL S
|
|
||||||
PTH intakt" iPTH S
|
|
||||||
TSH TSH S
|
|
||||||
HAPTOGLOBIN Haptoglobin S
|
|
||||||
FRAGMENTOZYTEN Fragmentozyten E
|
|