46 Commits

Author SHA1 Message Date
cc28229c74 Merge branch 'release-2.4.2' 2017-09-29 06:13:39 +02:00
bc041d4288 Prepare release 2.4.2. 2017-09-29 06:13:29 +02:00
de9d6b3095 Upate default clinic style to include MSU.
- Verbessert: Der Standard-Ambulanzstil gibt jetzt auch den MSU-Befund mit aus (sofern vorhanden).
2017-09-29 06:10:47 +02:00
b7cda4c9a7 Accept clinic-system time stamps with lab data.
- Geändert: Wenn das Laborsystem Zeitstempel ausgibt, die in derselben Zeile auch noch einen Laborwert enthalten, wird das jetzt korrekt erkannt.
2017-09-29 06:07:36 +02:00
24dc95f7a8 Upload symlinked files into downloads dir as well. 2017-09-28 11:24:11 +02:00
1a49eb18e1 Fix settings repository UI.
- Verbessert: Benutzer-Interface der Stile-Verwaltung.
2017-09-22 17:29:59 +02:00
253a7f24f5 Fix importing of styles.
- Repariert: Stile konnten nicht importiert werden.
2017-09-22 17:03:32 +02:00
4c3198afce Add ability to suppress an item's label.
- Verbessert: Für bestimmte Parameter kann die Beschriftung unterdrückt werden (derzeit implementiert im Urin-Hygienebefund, wo "Keim" und "Multiresistenz" nicht mit ausgegeben werden, sondern nur z.B. "E. coli, 3MRGN" bei entsprechender Vorlage "MSU-Keim, MSU-Multiresistenz").
2017-09-22 11:48:40 +02:00
13832fa833 Merge branch 'release-2.4.1' into develop 2017-09-21 21:46:48 +02:00
0e955dc7a1 Merge branch 'release-2.4.1' 2017-09-21 21:46:16 +02:00
2b102bb157 Prepare release 2.4.1. 2017-09-21 21:46:13 +02:00
a2346aedf4 Fix lab detection for urine microbiology.
- Verbessert: Ambulanzausgabe von Hygienebefunden wird jetzt korrekt erkannt.
- Neu: Parameter für Hygienebefunde hinzugefügt ("MSU-Keim" und "MSU-Multiresistenz").
2017-09-21 21:42:52 +02:00
a6b6966c77 Merge branch 'release-2.4.0' into develop 2017-09-18 22:12:17 +02:00
8b1525efbb Merge branch 'release-2.4.0' 2017-09-18 21:59:46 +02:00
fea5d3780e Prepare release 2.4.0. 2017-09-18 21:59:35 +02:00
a1931da04e Update VstoAddinInstaller. 2017-09-18 21:56:15 +02:00
0d451d4624 Fix publication year. 2017-09-18 21:54:00 +02:00
ec8e277b85 Fix mode detection for selections. 2017-09-18 21:52:15 +02:00
443a6b48e7 Fix exception reporting.
- Repariert: Fehlerberichte konnten nicht gesendet werden.
2017-09-18 21:19:49 +02:00
08bd137e94 Make AutoDetector aware of clinic mode. 2017-09-18 06:06:10 +02:00
ba485ac560 Merge branch 'import-from-clinic' into develop 2017-09-17 13:28:43 +02:00
cf765c4c40 Add importer for clinic system.
- Neu: Laborwerte, die vom Ambulanzsystem ausgegeben wurden, können jetzt auch verarbeitet werden.
2017-09-17 13:28:12 +02:00
6a7508bca0 Merge branch 'release-v2.3.2' into develop 2017-03-06 06:20:32 +01:00
a38d0d76d4 Merge branch 'release-v2.3.2' 2017-03-06 06:20:12 +01:00
b417107d33 Write version info. 2017-03-06 06:19:46 +01:00
118a822332 Bump version, write history. 2017-03-06 06:19:25 +01:00
12bb372137 Use 500 ms delay to display FirstRunView. 2017-03-06 06:17:24 +01:00
c23fd4986d Fix SettingsRepositoryTest. 2017-03-06 06:17:11 +01:00
cc0573c326 Fix display of welcome screen.
- Repariert: Willkommensdialog mit der Auswahl des Modus wurde technisch nicht gut angezeigt.
2017-03-06 06:12:16 +01:00
dc6e1f9eaf Update some screenshots. 2017-03-04 05:48:15 +01:00
b9be245227 Merge branch 'release-2.3.1' into develop 2017-03-03 21:52:29 +01:00
eb524689b2 Merge branch 'release-2.3.1' 2017-03-03 21:52:09 +01:00
14b4de52c7 Update version info file. 2017-03-03 21:52:04 +01:00
f0f234ad9f Bump version and write history. 2017-03-03 21:50:51 +01:00
9653403189 Fix some views.
- Repariert: Der Begrüßungsdialog war manchmal hinter Word verborgen.
2017-03-03 21:49:49 +01:00
da2057bd26 Merge branch 'release-2.3.0' into develop 2017-03-03 16:25:03 +01:00
85b0356971 Merge branch 'release-2.3.0' 2017-03-03 16:24:22 +01:00
1361bcf739 Write version info. 2017-03-03 16:24:13 +01:00
fb5af6a581 Bump version, write history. 2017-03-03 16:22:32 +01:00
c783fdb64d Enable verbose molar units (mmol/l instead of mM).
- Verbessert: Benutzeroption für die Ausgabe von "mmol/l" anstatt "mM" (einstellbar pro Stil).
2017-03-03 16:20:15 +01:00
0896f007da Serialize settings to YAML, rather than XML.
- Verbesserung: Einstellungen werden in einem Format (YAML) gespeichert, das für Menschen besser lesbar und bearbeitbar ist als das bisher verwendete XML.
2017-03-03 15:04:41 +01:00
9f7b0313a3 Improve IoErrorView. 2017-03-02 16:32:46 +01:00
2cbfe5c3fa Update VstoAddinInstaller to v1.4.1.
- Verbessert: Das Installationsprogramm versucht jetzt nicht mehr, einen Zero Client zu erkennen, weil der Workaround für Zero Clients ohnehin nicht funktioniert hat.
2017-03-02 15:34:04 +01:00
40fbcd279b Bump copyright year. 2017-03-02 15:30:11 +01:00
3a1559c4a3 Fix views.
- Verbessert: Technische Verbesserungen bei Dialogen.
2017-03-02 15:27:37 +01:00
acbd3833ed Merge branch 'release-2.2.6' into develop 2017-02-23 17:14:24 +01:00
82 changed files with 1929 additions and 852 deletions

24
.nuget/packages.config Executable file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="runtime.debian.8-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.fedora.23-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.fedora.24-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple" version="4.3.0" />
<package id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.rhel.7-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
<package id="runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography" version="4.3.0" />
<package id="runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" version="4.3.0" />
</packages>

View File

@ -1,3 +1,60 @@
Version 2.4.2 (2017-09-29)
------------------------------------------------------------------------
- Geändert: Wenn das Laborsystem Zeitstempel ausgibt, die in derselben Zeile auch noch einen Laborwert enthalten, wird das jetzt korrekt erkannt.
- Repariert: Stile konnten nicht importiert werden.
- Verbessert: Benutzer-Interface der Stile-Verwaltung.
- Verbessert: Der Standard-Ambulanzstil gibt jetzt auch den MSU-Befund mit aus (sofern vorhanden).
- Verbessert: Für bestimmte Parameter kann die Beschriftung unterdrückt werden (derzeit implementiert im Urin-Hygienebefund, wo "Keim" und "Multiresistenz" nicht mit ausgegeben werden, sondern nur z.B. "E. coli, 3MRGN" bei entsprechender Vorlage "MSU-Keim, MSU-Multiresistenz").
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.4.1 (2017-09-21)
------------------------------------------------------------------------
- Neu: Parameter für Hygienebefunde hinzugefügt ("MSU-Keim" und "MSU-Multiresistenz").
- Verbessert: Ambulanzausgabe von Hygienebefunden wird jetzt korrekt erkannt.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.4.0 (2017-09-18)
------------------------------------------------------------------------
- Neu: Laborwerte, die vom Ambulanzsystem ausgegeben wurden, können jetzt auch verarbeitet werden.
- Repariert: Fehlerberichte konnten nicht gesendet werden.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.3.2 (2017-03-06)
------------------------------------------------------------------------
- Repariert: Willkommensdialog mit der Auswahl des Modus wurde technisch nicht gut angezeigt.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.3.1 (2017-03-03)
------------------------------------------------------------------------
- Repariert: Der Begrüßungsdialog war manchmal hinter Word verborgen.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.3.0 (2017-03-03)
------------------------------------------------------------------------
- Verbessert: Benutzeroption für die Ausgabe von "mmol/l" anstatt "mM" (einstellbar pro Stil).
- Verbessert: Das Installationsprogramm versucht jetzt nicht mehr, einen Zero Client zu erkennen, weil der Workaround für Zero Clients ohnehin nicht funktioniert hat.
- Verbessert: Technische Verbesserungen bei Dialogen.
- Verbesserung: Einstellungen werden in einem Format (YAML) gespeichert, das für Menschen besser lesbar und bearbeitbar ist als das bisher verwendete XML.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Version 2.2.6 (2017-02-23) Version 2.2.6 (2017-02-23)
------------------------------------------------------------------------ ------------------------------------------------------------------------

View File

@ -23,7 +23,7 @@ versioninfo:
mv www/versioninfo.tmp www/versioninfo.txt mv www/versioninfo.tmp www/versioninfo.txt
upload: upload:
rsync -ruvz --progress deploy/releases/* bovender.de:/var/www/html/zaareloaded/downloads/ rsync -ruvzL --progress deploy/releases/* bovender.de:/var/www/html/zaareloaded/downloads/
website: website:
rsync -ruvz www/ bovender.de:/var/www/html/zaareloaded/ rsync -ruvz www/ bovender.de:/var/www/html/zaareloaded/

View File

@ -27,18 +27,18 @@ namespace Tests.Controller
[TestFixture] [TestFixture]
class SettingsRepositoryTest class SettingsRepositoryTest
{ {
string _savedSettings; SettingsRepository _savedRepository;
[SetUp] [SetUp]
public void SetUp() public void SetUp()
{ {
_savedSettings = zaaReloaded2.UserSettings.Default.SettingsRepository; _savedRepository = zaaReloaded2.UserSettings.Default.SettingsRepository;
} }
[TearDown] [TearDown]
public void TearDown() public void TearDown()
{ {
zaaReloaded2.UserSettings.Default.SettingsRepository = _savedSettings; zaaReloaded2.UserSettings.Default.SettingsRepository = _savedRepository;
zaaReloaded2.UserSettings.Default.Save(); zaaReloaded2.UserSettings.Default.Save();
} }

View File

@ -0,0 +1,55 @@
/* ClinicImporterTest.cs
* part of zaaReloaded2
*
* Copyright 2017 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 System.IO;
using zaa = zaaReloaded2.Importer.ClinicImporter;
using NUnit.Framework;
namespace Tests.Importer.ClinicImporter
{
[TestFixture]
class ClinicImporterTest
{
/// <summary>
/// Parses the demo-output.txt file that is built into the assembly.
/// Note that this demo text contains seven time points, only six of
/// which are distinct. Thus, the two time points with identical time
/// stamps should be merged in the <see cref="Laboratory"/>.
/// </summary>
[Test]
public void ParseTimePoints()
{
zaa.ClinicImporter importer = TestHelpers.ClinicImporterFromResource();
// Only 6 distinct time points (see method documentation above).
Assert.AreEqual(5, importer.Laboratory.TimePoints.Count);
}
[Test]
public void ParseInvalidInput()
{
zaa.ClinicImporter importer = new zaa.ClinicImporter();
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\n\tNatrium 135 [135 - 145] mmol/l;");
Assert.IsTrue(importer.Success);
}
}
}

View File

@ -0,0 +1,56 @@
/* LaurisItemTest.cs
* part of zaaReloaded2
*
* Copyright 2017 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.LabModel;
using zaaReloaded2.Importer.ZaaImporter;
namespace Tests.Importer.ClinicImporter
{
/// <summary>
/// The ClinicItemTest really just tests the zaaReloaded2.Importer.ZaaImporter.LaurisItem
/// class with text formatted by the outpatient clinic system to make sure LaurisItem works
/// with clinic-formatted lab data as well.
/// </summary>
[TestFixture]
class ClinicItemTest
{
[Test]
[TestCase(" Natrium: 137 [135 - 145] mmol/l", "Natrium", 137, "mmol/l", 135, 145, true)]
public void ParseClinicWithBothLimits(
string laurisString, string name, double value,
string unit, double lowerLimit, double upperLimit, bool isNormal)
{
LaurisItem i = new LaurisItem(laurisString);
Assert.AreEqual(name, i.Name, "Name");
Assert.AreEqual(unit, i.Unit, "Unit");
Assert.IsFalse(i.IsExtreme, "IsExtreme");
Assert.IsTrue(i.IsNumerical, "IsNumerical");
Assert.AreEqual(value, i.NumericalValue, "NumericalValue");
Assert.AreEqual(lowerLimit, i.LowerLimit, "Lower limit");
Assert.AreEqual(upperLimit, i.UpperLimit, "Upper limit");
Assert.AreEqual(isNormal, i.IsNormal, "IsNormal");
Assert.IsTrue(i.HasLimits, "HasLimits");
Assert.IsTrue(i.HasLowerLimit, "HasLowerLimit");
Assert.IsTrue(i.HasUpperLimit, "HasUpperLimit");
}
}
}

View File

@ -0,0 +1,45 @@
/* ClinicLineTest.cs
* part of zaaReloaded2
*
* Copyright 2017 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 NUnit.Framework;
using zaaReloaded2.LabModel;
using zaaReloaded2.Importer.ClinicImporter;
namespace Tests.Importer.ClinicImporter
{
[TestFixture]
class ClinicLineTest
{
[Test]
public void ParseLine()
{
string demo = "\tNatrium:\t137\t[135 - 145]\tmmol/l";
ClinicLine line = new ClinicLine(demo);
Assert.IsTrue(line.IsClinicLine);
Assert.AreEqual(137, line.Item.NumericalValue);
}
[Test]
public void ParseInvalidLine()
{
// Missing leading tab
string demo = "Natrium:\t137\t[135 - 145]\tmmol/l";
ClinicLine line = new ClinicLine(demo);
Assert.IsFalse(line.IsClinicLine);
}
}
}

View File

@ -0,0 +1,67 @@
/* TimePointTest.cs
* part of zaaReloaded2
*
* Copyright 2017 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.LabModel;
using zaaReloaded2.Importer.ClinicImporter;
namespace Tests.Importer.ClinicImporter
{
[TestFixture]
class ClinicTimePointTest
{
[Test]
public void ParseValidClinicTimePoint()
{
ClinicTimePoint tp = new ClinicTimePoint(
"(06.09.2017 09:45:00)" + Environment.NewLine +
"\tKalium:\t4.6\t[3.5 - 5]\tmmol/l");
Assert.IsTrue(tp.IsValidTimePoint);
}
[Test]
public void ParseInvalidClinicTimePoints()
{
ClinicTimePoint tp = new ClinicTimePoint("Mit freundlichen Grüßen");
Assert.IsFalse(tp.IsValidTimePoint,
"Bogus paragraph should be invalid LaurisTimePoint");
tp.ClinicText = "(22.10.2013 12:30:00)";
Assert.IsFalse(tp.IsValidTimePoint,
"LaurisTimePoint should be invalid if it consists of time stamp only.");
}
[Test]
public void ParseClinicTimePointWithDuplicateItems()
{
ClinicTimePoint tp = new ClinicTimePoint(
"(22.10.2013 12:30:00)" + Environment.NewLine +
"\tNatrium:\t137\t[135 - 145]\tmmol/l" + Environment.NewLine +
"\tNatrium:\t140\t[135 - 145]\tmmol/l"
);
Assert.IsTrue(tp.Items.ContainsKey("Natrium"),
"LaurisTimePoint should contain 'Natrium' item.");
Assert.AreEqual(140, tp.Items["Natrium"].NumericalValue,
"LaurisTimePoint does not use last occurrence of 'Natrium'.");
}
}
}

View File

@ -21,6 +21,7 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using zaaReloaded2.Importer.ZaaImporter; using zaaReloaded2.Importer.ZaaImporter;
using zaaReloaded2.Importer.ClinicImporter;
namespace Tests namespace Tests
{ {
@ -38,5 +39,18 @@ namespace Tests
importer.Import(r.ReadToEnd()); importer.Import(r.ReadToEnd());
return importer; return importer;
} }
/// <summary>
/// Creates a ClinicImporter object and imports demo-output-clinic.txt.
/// </summary>
/// <returns></returns>
public static ClinicImporter ClinicImporterFromResource()
{
Stream s = typeof(TestHelpers).Assembly.GetManifestResourceStream("Tests.demo-output-clinic.txt");
StreamReader r = new StreamReader(s);
ClinicImporter importer = new ClinicImporter();
importer.Import(r.ReadToEnd());
return importer;
}
} }
} }

View File

@ -41,19 +41,19 @@
<AssemblyOriginatorKeyFile>zaaReloaded2.pfx</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>zaaReloaded2.pfx</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Bovender, Version=0.16.2.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL"> <Reference Include="Bovender, Version=0.17.0.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
<HintPath>..\packages\Bovender.0.16.2.0\lib\net40\Bovender.dll</HintPath> <HintPath>..\packages\Bovender.0.17.0.0\lib\net40\Bovender.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Microsoft.Office.Interop.Word, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL"> <Reference Include="Microsoft.Office.Interop.Word, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath> <HintPath>..\packages\NLog.4.4.12\lib\net40\NLog.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="nunit.framework, Version=3.4.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL"> <Reference Include="nunit.framework, Version=3.8.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.4.1\lib\net40\nunit.framework.dll</HintPath> <HintPath>..\packages\NUnit.3.8.1\lib\net40\nunit.framework.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
@ -70,8 +70,8 @@
<Reference Include="System.Xaml" /> <Reference Include="System.Xaml" />
<Reference Include="System.XML" /> <Reference Include="System.XML" />
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="YamlDotNet, Version=3.9.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL"> <Reference Include="YamlDotNet, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
<HintPath>..\packages\YamlDotNet.Signed.3.9.0\lib\net35\YamlDotNet.dll</HintPath> <HintPath>..\packages\YamlDotNet.Signed.4.1.0\lib\net35\YamlDotNet.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
@ -91,6 +91,10 @@
<Compile Include="Controller\Comments\CommentPoolTest.cs" /> <Compile Include="Controller\Comments\CommentPoolTest.cs" />
<Compile Include="Controller\Comments\ItemCommentTest.cs" /> <Compile Include="Controller\Comments\ItemCommentTest.cs" />
<Compile Include="Controller\Elements\CloneTest.cs" /> <Compile Include="Controller\Elements\CloneTest.cs" />
<Compile Include="Importer\ClinicImporter\ClinicItemTest.cs" />
<Compile Include="Importer\ClinicImporter\ClinicLineTest.cs" />
<Compile Include="Importer\ClinicImporter\TimePointTest.cs" />
<Compile Include="Importer\ClinicImporter\ClinicImporterTest.cs" />
<Compile Include="Medication\ImporterTest.cs" /> <Compile Include="Medication\ImporterTest.cs" />
<Compile Include="Medication\PrescriptionTest.cs" /> <Compile Include="Medication\PrescriptionTest.cs" />
<Compile Include="SerializationTest.cs" /> <Compile Include="SerializationTest.cs" />
@ -144,6 +148,10 @@
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Formatter\FormatterTest-all.txt" /> <EmbeddedResource Include="Formatter\FormatterTest-all.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="demo-output-clinic.txt" />
</ItemGroup>
<ItemGroup />
<Choose> <Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'"> <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup> <ItemGroup>

View File

@ -52,5 +52,11 @@ namespace Tests.Thesaurus
{ {
Assert.IsTrue(Parameters.Default.GetIsBlacklisted("glomerul. Filtrationsr. (MDRD)")); Assert.IsTrue(Parameters.Default.GetIsBlacklisted("glomerul. Filtrationsr. (MDRD)"));
} }
[Test]
public void GetSuppressLabel()
{
Assert.IsTrue(Parameters.Default.GetSuppressLabel("- Multiresistenz"));
}
} }
} }

View File

@ -22,7 +22,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" /> <assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.9.0.0" newVersion="3.9.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>

90
Tests/demo-output-clinic.txt Executable file
View File

@ -0,0 +1,90 @@
# This file contains 5 distinct time points.
# This leading text should be ignored.
# DO NOT CHANGE THE FOLLOWING TEXT, LEST THE TESTS WILL FAIL!
(06.09.2017 09:54:00)
Gesamt-Eiweiss (PU): 54 [<= 120] mg/l
Gesamt-Eiweiss/Creatinin (PU): 59 [<= 70] mg/g Crea
Albumin (PU): 4 [<= 30] mg/l
Albumin/Creatinin (PU): 4.4 [<= 30] mg/g Crea
Creatinin (PU): 91.1 [29 - 226] mg/dl
(06.09.2017 09:54:00)
Erythrozyten (U): negativ [negativ]
Leukozyten (U): + [negativ]
Nitrit (U): negativ [negativ]
Protein (U): negativ [negativ]
Glucose (U): negativ [negativ]
Ketonkörper (U): + [negativ]
Bilirubin (U): negativ [negativ]
Urobilinogen (U): negativ [negativ]
pH (U): 6.500 [4.8 - 7.4]
spezifisches Gewicht (U): 1.015 [1.00 - 1.04] g/ml
Erythrozyten (U): 3 [<= 25] Ery/µl
Leukozyten (U): 4 [<= 20] Leu/µl
Bakterien (U): 193 Bak/µl
Plattenepithelien (U): 25 Epi/µl
Übergangsepithelien (U): 0 Uge/µl
hyaline Zylinder (U): 0 Zyh/µl
(06.09.2017 09:52:00)
Gesamt-Eiweiss (SU): < 40 [<= 120] mg/l
Albumin (SU): < 3 mg/l
a1-Microglobulin (SU): < 5 mg/l
Immunglobulin G (SU): < 4 mg/l
Sammelzeit (U): 24 h
Sammelmenge (U): 3200 ml
Calcium (SU): 0.26 mmol/l
Calcium (SU)/die: 0.83 [2.5 - 8] mmol/d
Creatinin (SU): 30.2 mg/dl
Harnstoff (SU): 674 [900 - 3000] mg/dl
Harnstoff (SU)/die: 21.6 [<= 35] g/d
Kalium (SU): 45.4 [20 - 80] mmol/l
Kalium (SU)/die: 145.28 [25 - 125] mmol/d
Natrium (SU): 28.9 [54 - 150] mmol/l
Natrium (SU)/die: 92.5 [40 - 220] mmol/d
(06.09.2017 09:50:00)
Cystatin C (Latex Gen. 2): 1.04 [0.61 - 0.95] mg/l
(06.09.2017 09:45:00)
Natrium: 137 [135 - 145] mmol/l
Kalium: 4.6 [3.5 - 5] mmol/l
Calcium: 2.4 [2.0 - 2.7] mmol/l
anorg. Phosphat: 1.29 [0.87 - 1.45] mmol/l
Calcium-Phosphat-Produkt: 3.10 [<= 4.4] mmol²/l²
glomerul. Filtrationsr. CKD-EP: 62 ml/min /1,73qm
glomerul. Filtrationsr. (MDRD): 59 ml/min /1,73qm
Creatinin: 1.06 [0 - 0.95] mg/dl
Harnstoff: 52.1 [10 - 50] mg/dl
Lactat Dehydrogenase: 175 [<= 250] U/l
Cholesterin: 180 [130 - 220] mg/dl
Triglyceride: 51 [74 - 172] mg/dl
LDL - Cholesterin: 91 [0 - 150] mg/dl
HDL - Cholesterin: 79 [>= 35] mg/dl
Albumin: 4.5 [3.5 - 5.5] g/dl
Leukozyten: 4.7 [5 - 10] n*1000/µl
Erythrozyten: 4.09 [4 - 5] n*10E6/µl
Hämoglobin: 11.9 [12 - 16] g/dl
Hämatokrit: 36.6 [35 - 47] %
MCV: 89.5 [82 - 96] fl
MCH (HbE): 29.1 [27 - 33] pg
MCHC: 32.5 [32 - 36] g/dl
Thrombozyten: 302 [150 - 450] n*1000/µl
Mittleres Plättchenvolumen: 11.3 [9.6 - 12.0] fl
Neutrophile: 2.60 [1.8 - 7.2] n*1000/µl
Lymphozyten: 1.35 [1 - 4.05] n*1000/µl
Monozyten: 0.47 [0.08 - 0.8] n*1000/µl
Eosinophile: 0.2 [0.04 - 0.36] n*1000/µl
Basophile: 0.1 [0 - 0.08] n*1000/µl
% Neutrophile: 55.1 [41 - 70] %
% Lymphozyten: 28.7 [25 - 40] %
% Monozyten: 10.0 [2 - 8] %
% Eosinophile: 4.7 [0.8 - 6.2] %
% Basophile: 1.3 [0 - 1] %
Unreife Granulozyten: 0.01 n*1000/µl
% Unreife Granulozyten: 0.2 %
C-reaktives Protein: 0.02 [0 - 0.5] mg/dl
(06.09.2017 09:15:00)
TSH: 1.30 [0.3 - 4.0] mIU/l
PTH intakt: 106.0 [12 - 65] ng/l

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Bovender" version="0.16.2.0" targetFramework="net40" /> <package id="Bovender" version="0.17.0.0" targetFramework="net40" />
<package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" /> <package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" />
<package id="NLog" version="4.3.7" targetFramework="net40" /> <package id="NLog" version="4.4.12" targetFramework="net40" />
<package id="NUnit" version="3.4.1" targetFramework="net40" /> <package id="NUnit" version="3.8.1" targetFramework="net40" />
<package id="YamlDotNet.Signed" version="3.9.0" targetFramework="net40" /> <package id="YamlDotNet.Signed" version="4.2.1" targetFramework="net40" />
</packages> </packages>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -1,53 +1,52 @@
<?php <?php
require(__DIR__ . '/PHPMailer/PHPMailerAutoload.php'); function sendMail() {
$reportId = $_POST['report_id']; $to = 'dk@doktorkraus.de';
$mail = new PHPMailer; $headers = "From: \"zaaReloaded\" <dk@doktorkraus.de>";
$mail->isSMTP(); $reportId = $_POST['report_id'];
$mail->SMTPAuth = true; $info = print_r( $_POST, true ); // this will be a string, not an array!
$mail->Host = 'nephrowiki.de'; $body = <<<EOF
$mail->Username = 'zaareloaded@nephrowiki.de'; zaaReloaded hat einen Fehler ausgelöst.
$mail->Password = 'ooZ1eiJa';
// $mail->SMTPSecure = 'tls';
$mail->Port = 25;
$mail->From = 'zaareloaded@nephrowiki.de'; -----
$mail->FromName = 'zaaReloaded';
$mail->addAddress('dk@doktorkraus.de');
$mail->Subject = "[zaaReloaded] Exception $reportId";
if ( $_POST['ccUser'] ) { Benutzerkommentar:
{$_POST['comment']}
-----
Technische Info: $info
--
www.doktorkraus.de/zaareloaded
EOF;
if ( $_POST['ccUser'] ) {
$validMail = filter_var( $_POST['usersMail'], FILTER_VALIDATE_EMAIL ); $validMail = filter_var( $_POST['usersMail'], FILTER_VALIDATE_EMAIL );
$validUser = filter_var( $_POST['usersName'], FILTER_SANITIZE_STRING ); $validUser = filter_var( $_POST['usersName'], FILTER_SANITIZE_STRING );
if ( $validUser ) { if ( $validUser ) {
$validUser = "\"$validUser\" "; // space character deliberately placed $validUser = "\"$validUser\" "; // space character deliberately placed
}; };
if ( $validMail ) { if ( $validMail ) {
$mail->addCC($validMail, $validUser); $headers .= "\r\nCc: $validUser<$validMail>";
}; };
}; };
mail($to, "Exception report [$reportId]", $body, $headers);
$info = print_r( $_POST, true );
$mail->Body = <<<EOF
zaaReloaded exception
User's comment on submission:
{$_POST['comment']}
***
Technical details: $info
--
http://zaa.nephrowiki.de
EOF;
if ($mail->send())
{
// Must return the report ID to indicate success
echo($reportId);
} }
else
{ // =============================================================
echo($mail->ErrorInfo); // Begin main script
// =============================================================
if (!isset($_POST['report_id'])) {
http_response_code(400);
exit;
} }
sendMail();
// Return the report ID and the issue URL to signal all is well.
$reportId = $_POST['report_id'];
$load = "{\"ReportId\": \"$reportId\", \"IssueUrl\": \"https://www.doktorkraus.de/zaareloaded\"}";
error_log( __FILE__ . ": Load = $load" );
header('Content-Type: application/json');
echo $load;

View File

@ -1,4 +1,4 @@
2.2.6 2.4.2
https://doktorkraus.de/zaareloaded/downloads/zaaReloaded-$VERSION.exe https://doktorkraus.de/zaareloaded/downloads/zaaReloaded-$VERSION.exe
b6cc9ef2730cf86debeb4b0a5192e18eaa0ae555a330e2853772e0ebf317331f deploy/releases/zaaReloaded-2.2.6.exe 2df8d1cd62b2a6b422099e6d59c8f2022ddd2177a649784a7cab8f7c23e734e2 deploy/releases/zaaReloaded-2.4.2.exe

View File

@ -1,12 +1,17 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013 # Visual Studio 2013
VisualStudioVersion = 12.0.31101.0 VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zaaReloaded2", "zaaReloaded2\zaaReloaded2.csproj", "{0478F1B0-17F2-4151-8F93-1CB6EB9732C5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zaaReloaded2", "zaaReloaded2\zaaReloaded2.csproj", "{0478F1B0-17F2-4151-8F93-1CB6EB9732C5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{529544E3-3C26-4688-B39D-04DA30F05E20}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{529544E3-3C26-4688-B39D-04DA30F05E20}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{386B2FA0-E39A-4BC4-930F-0BCF3787DC5E}"
ProjectSection(SolutionItems) = preProject
.nuget\packages.config = .nuget\packages.config
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU

View File

@ -20,6 +20,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Bovender.Extensions;
using zaaReloaded2.Controller; using zaaReloaded2.Controller;
using zaaReloaded2.Controller.Comments; using zaaReloaded2.Controller.Comments;
using zaaReloaded2.Formatter; using zaaReloaded2.Formatter;
@ -74,7 +75,7 @@ namespace zaaReloaded2
DoFormat(settings); DoFormat(settings);
UserSettings.Default.LastSettings = settings.Uid; UserSettings.Default.LastSettings = settings.Uid;
}; };
vm.InjectInto<SettingsRepositoryView>().ShowDialog(); vm.InjectInto<SettingsRepositoryView>().ShowDialogInForm();
} }
/// <summary> /// <summary>
@ -121,13 +122,13 @@ namespace zaaReloaded2
public static void ShowAbout() public static void ShowAbout()
{ {
ViewModels.AboutViewModel vm = new ViewModels.AboutViewModel(); ViewModels.AboutViewModel vm = new ViewModels.AboutViewModel();
vm.InjectInto<Views.AboutView>().ShowDialog(); vm.InjectInto<Views.AboutView>().ShowDialogInForm();
} }
public static void ShowPreferences() public static void ShowPreferences()
{ {
ViewModels.PreferencesViewModel vm = new PreferencesViewModel(); ViewModels.PreferencesViewModel vm = new PreferencesViewModel();
vm.InjectInto<Views.PreferencesView>().ShowDialog(); vm.InjectInto<Views.PreferencesView>().ShowDialogInForm();
} }
public static void ApplyDanielsStyle() public static void ApplyDanielsStyle()
@ -202,12 +203,14 @@ namespace zaaReloaded2
Word.Window activeWindow = word.ActiveWindow; Word.Window activeWindow = word.ActiveWindow;
Word.Selection selection = activeWindow.Selection; Word.Selection selection = activeWindow.Selection;
Word.Paragraphs paragraphs = selection.Paragraphs; Word.Paragraphs paragraphs = selection.Paragraphs;
Importer.IImporter importer = null;
Importer.AutoDetector autoDetector = new Importer.AutoDetector();
if (!(paragraphs.Count > 1 if (!(paragraphs.Count > 1
|| (selection.Text.Length > 1 && selection.Text.EndsWith("\r")))) || (selection.Text.Length > 1 && selection.Text.EndsWith("\r"))))
{ {
Logger.Info("DoFormat: Attempting to auto-detect"); Logger.Info("DoFormat: Attempting to auto-detect");
Word.Document doc = activeWindow.Document; Word.Document doc = activeWindow.Document;
if (!AutoDetect.Detect(doc)) if (!autoDetector.Detect(doc))
{ {
Logger.Info("DoFormat: Automatic detection failed"); Logger.Info("DoFormat: Automatic detection failed");
NotificationAction a = new NotificationAction(); NotificationAction a = new NotificationAction();
@ -219,10 +222,16 @@ namespace zaaReloaded2
} }
// Don't release the COM object here // Don't release the COM object here
// Bovender.ComHelpers.ReleaseComObject(doc); // Bovender.ComHelpers.ReleaseComObject(doc);
importer = autoDetector.CreateImporter();
} }
else if (paragraphs.Count >= 1)
{
Logger.Info("DoFormat: Detecting mode of selection");
autoDetector.Detect(selection);
}
importer = autoDetector.CreateImporter();
Logger.Info("DoFormat: Importing"); Logger.Info("DoFormat: Importing");
ZaaImporter importer = new ZaaImporter();
importer.Import(selection.Text); importer.Import(selection.Text);
Formatter.Formatter formatter = new Formatter.Formatter(activeDocument); Formatter.Formatter formatter = new Formatter.Formatter(activeDocument);
@ -263,7 +272,7 @@ namespace zaaReloaded2
{ {
Logger.Info("CommentPool_FillInComment: Requesting user interaction"); Logger.Info("CommentPool_FillInComment: Requesting user interaction");
ItemCommentViewModel vm = new ItemCommentViewModel(e.Comment); ItemCommentViewModel vm = new ItemCommentViewModel(e.Comment);
vm.InjectInto<ItemCommentView>().ShowDialog(); vm.InjectInto<ItemCommentView>().ShowDialogInForm();
} }
} }

View File

@ -29,6 +29,7 @@ namespace zaaReloaded2.Controller.Elements
[Serializable] [Serializable]
public class CustomText : FormatElementBase, ISerializable public class CustomText : FormatElementBase, ISerializable
{ {
[YamlDotNet.Serialization.YamlIgnore]
public override string Label public override string Label
{ {
get get

View File

@ -33,6 +33,7 @@ namespace zaaReloaded2.Controller.Elements
/// <summary> /// <summary>
/// Returns the label for this formatting element. /// Returns the label for this formatting element.
/// </summary> /// </summary>
[YamlDotNet.Serialization.YamlIgnore]
abstract public string Label { get; } abstract public string Label { get; }
/// <summary> /// <summary>

View File

@ -37,6 +37,7 @@ namespace zaaReloaded2.Controller.Elements
{ {
#region ElementBase implementation #region ElementBase implementation
[YamlDotNet.Serialization.YamlIgnore]
public override string Label public override string Label
{ {
get get

View File

@ -26,6 +26,7 @@ namespace zaaReloaded2.Controller.Elements
[Serializable] [Serializable]
public class SelectEachDay : ControlElementBase public class SelectEachDay : ControlElementBase
{ {
[YamlDotNet.Serialization.YamlIgnore]
public override string Label public override string Label
{ {
get { return "Jeder Tag"; } get { return "Jeder Tag"; }

View File

@ -25,6 +25,7 @@ using System.IO;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap; using System.Runtime.Serialization.Formatters.Soap;
using YamlDotNet.Serialization;
namespace zaaReloaded2.Controller namespace zaaReloaded2.Controller
{ {
@ -45,14 +46,29 @@ namespace zaaReloaded2.Controller
/// SOAP XML that can be deserialized to a Settings object.</exception> /// SOAP XML that can be deserialized to a Settings object.</exception>
public static Settings LoadFromFile(string fileName) public static Settings LoadFromFile(string fileName)
{ {
Logger.Info("LoadFromFile: {0}", fileName);
StreamReader reader = new StreamReader(fileName); StreamReader reader = new StreamReader(fileName);
SoapFormatter formatter = new SoapFormatter(); Deserializer deserializer = new DeserializerBuilder().Build();
Settings settings = formatter.Deserialize(reader.BaseStream) as Settings; Settings settings;
try
{
settings = deserializer.Deserialize<Settings>(reader);
}
catch (Exception e)
{
Logger.Fatal("LoadFromFile: Exception during deserialization");
Logger.Fatal(e);
throw;
}
// SoapFormatter formatter = new SoapFormatter();
// Settings settings = formatter.Deserialize(reader.BaseStream) as Settings;
if (settings == null) if (settings == null)
{ {
throw new InvalidDataException("Datei enthält keine Stil-Daten oder ist beschädigt."); throw new InvalidDataException("Datei enthält keine Stil-Daten oder ist beschädigt.");
} }
Logger.Info("LoadFromFile: Successfully loaded '{0}", settings.Name);
settings.Uid = Guid.NewGuid(); settings.Uid = Guid.NewGuid();
Logger.Debug("LoadFromFile: new GUID is '{0}", settings.Uid);
return settings; return settings;
} }
@ -62,9 +78,17 @@ namespace zaaReloaded2.Controller
/// <param name="fileName">File to write to.</param> /// <param name="fileName">File to write to.</param>
public void SaveToFile(string fileName) public void SaveToFile(string fileName)
{ {
StreamWriter writer = new StreamWriter(fileName); Logger.Info("SaveToFile: Settings name: {0}", Name);
SoapFormatter formatter = new SoapFormatter(); using (StreamWriter writer = new StreamWriter(fileName))
formatter.Serialize(writer.BaseStream, this); {
Serializer serializer = new SerializerBuilder()
.EnsureRoundtrip()
.Build();
serializer.Serialize(writer, this);
}
Logger.Info("SaveToFile: Successfully saved to file '{0}'", fileName);
// SoapFormatter formatter = new SoapFormatter();
// formatter.Serialize(writer.BaseStream, this);
} }
#endregion #endregion
@ -87,6 +111,11 @@ namespace zaaReloaded2.Controller
/// </summary> /// </summary>
public AbnormalStyle AbnormalStyle { get; set; } public AbnormalStyle AbnormalStyle { get; set; }
/// <summary>
/// Indicates whether to prefer the more verbose "mmol/l" over "mM".
/// </summary>
public bool PreferVerboseMolar { get; set; }
/// <summary> /// <summary>
/// Gets the list of controlling elements. /// Gets the list of controlling elements.
/// </summary> /// </summary>
@ -238,5 +267,13 @@ namespace zaaReloaded2.Controller
static readonly Regex _persistenceHeaderRegex = new Regex(@"^\[(?<name>.+?)]$"); static readonly Regex _persistenceHeaderRegex = new Regex(@"^\[(?<name>.+?)]$");
#endregion #endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
} }
} }

View File

@ -59,20 +59,13 @@ namespace zaaReloaded2.Controller
/// </remarks> /// </remarks>
public static SettingsRepository Load() public static SettingsRepository Load()
{ {
string s = UserSettings.Default.SettingsRepository; SettingsRepository repo = UserSettings.Default.SettingsRepository;
if (String.IsNullOrEmpty(s)) if (repo == null)
{ {
return new SettingsRepository(); return new SettingsRepository();
} }
else else
{ {
MemoryStream stream = new MemoryStream();
string encoded = UserSettings.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(); repo.LoadDefaults();
return repo; return repo;
} }
@ -89,12 +82,7 @@ namespace zaaReloaded2.Controller
/// </remarks> /// </remarks>
public void Store() public void Store()
{ {
MemoryStream stream = new MemoryStream(); UserSettings.Default.SettingsRepository = this;
SoapFormatter serializer = new SoapFormatter();
serializer.Serialize(stream, this);
stream.Position = 0;
string encoded = Convert.ToBase64String(stream.ToArray());
UserSettings.Default.SettingsRepository = encoded;
} }
#endregion #endregion
@ -195,19 +183,25 @@ namespace zaaReloaded2.Controller
private void LoadDefaults() private void LoadDefaults()
{ {
Assembly myAssembly = this.GetType().Assembly; Assembly myAssembly = this.GetType().Assembly;
SoapFormatter deserializer = new SoapFormatter(); // SoapFormatter deserializer = new SoapFormatter();
Stream stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.ward.zaaReloaded"); var deserializer = new YamlDotNet.Serialization.DeserializerBuilder().Build();
Settings settings = deserializer.Deserialize(stream) as Settings; using (Stream stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.ward.zaaReloaded2"))
{
StreamReader reader = new StreamReader(stream);
Settings settings = deserializer.Deserialize<Settings>(reader);
settings.Name = Properties.Settings.Default.SettingsNameWard + BUILTIN_LABEL; settings.Name = Properties.Settings.Default.SettingsNameWard + BUILTIN_LABEL;
settings.Uid = Guid.Parse(DEFAULT_SETTINGS_1_UID); settings.Uid = Guid.Parse(DEFAULT_SETTINGS_1_UID);
ReplaceOrAdd(settings); ReplaceOrAdd(settings);
}
stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.clinic.zaaReloaded"); using (Stream stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.clinic.zaaReloaded2"))
settings = deserializer.Deserialize(stream) as Settings; {
StreamReader reader = new StreamReader(stream);
Settings settings = deserializer.Deserialize<Settings>(reader);
settings.Name = Properties.Settings.Default.SettingsNameClinic + BUILTIN_LABEL; settings.Name = Properties.Settings.Default.SettingsNameClinic + BUILTIN_LABEL;
settings.Uid = Guid.Parse(DEFAULT_SETTINGS_2_UID); settings.Uid = Guid.Parse(DEFAULT_SETTINGS_2_UID);
ReplaceOrAdd(settings); ReplaceOrAdd(settings);
} }
}
private void ReplaceOrAdd(Settings settings) private void ReplaceOrAdd(Settings settings)
{ {

View File

@ -1,177 +0,0 @@
<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>2</Version>
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<_a>-903942278</_a>
<_b>-22298</_b>
<_c>17811</_c>
<_d>139</_d>
<_e>190</_e>
<_f>233</_f>
<_g>83</_g>
<_h>158</_h>
<_i>73</_i>
<_j>21</_j>
<_k>115</_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">IfSpecialItem</ReferenceStyle>
<AbnormalStyle xsi:type="a3:AbnormalStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">None</AbnormalStyle>
<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>2</Version>
<ChildrenCount>22</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-8"/>
<Child16Object href="#ref-25"/>
<Child17Type href="#ref-8"/>
<Child17Object href="#ref-26"/>
<Child18Type href="#ref-8"/>
<Child18Object href="#ref-27"/>
<Child19Type href="#ref-28"/>
<Child19Object href="#ref-29"/>
<Child20Type href="#ref-28"/>
<Child20Object href="#ref-30"/>
<Child21Type href="#ref-28"/>
<Child21Object href="#ref-31"/>
</a4:SelectEachDay>
<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-32">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>2</Version>
<Content id="ref-33">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>2</Version>
<Content id="ref-34">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>2</Version>
<Content id="ref-35">Kardiale Marker: CK, CK-MB, hsTnT, NT-proBNP</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>2</Version>
<Content id="ref-36">Niere: Krea, Hst, eGFR (CKD-EPI), Cystatin C</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>2</Version>
<Content id="ref-37">Sammelurin: SU-Prot, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Na, 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>2</Version>
<Content id="ref-38">Spot-Urin: U-TPCR, U-ACR, U-Alb, U-Ery, U-Leu, U-Bakt, U-Schwangerschaftstest</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>2</Version>
<Content id="ref-39">Leber: GOT, GGT, GPT, AP, Bilirubin, CHE, CDT</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>2</Version>
<Content id="ref-40">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>2</Version>
<Content id="ref-41">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>2</Version>
<Content id="ref-42">Diff.-BB: Neu, Lym, Mon, Baso, Eos</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>2</Version>
<Content id="ref-43">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</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>2</Version>
<Content id="ref-44">Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin</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>2</Version>
<Content id="ref-45">Hormone: iPTH, TSH, fT3, fT4, Aldosteron, Renin, ARQ</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>2</Version>
<Content id="ref-46">Vitamine: B12, Folsäure</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>2</Version>
<Content id="ref-47">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</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>2</Version>
<Content id="ref-48">BGA: pH, Std.-Bic., BE</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>2</Version>
<Content id="ref-49">Hepatitis-Serologie: Anti-HBs, Anti-HBc</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>2</Version>
<Content id="ref-50">Medikamente: TAC &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, CsA (C0) &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, SIR &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, Vancomycin, Gentamicin, Tobramicin</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>2</Version>
<Content id="ref-51">Tumormarker: PSA, AFP</Content>
</a4:Items>
<a2:UnitySerializationHolder id="ref-28" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-52">zaaReloaded2.Controller.Elements.CustomText</Data>
<UnityType>4</UnityType>
<AssemblyName href="#ref-7"/>
</a2:UnitySerializationHolder>
<a4:CustomText 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>2</Version>
<Content id="ref-53">Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden</Content>
</a4:CustomText>
<a4:CustomText 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>2</Version>
<Content id="ref-54">Virologie (EDTA-Blut): CMV-PCR, BKV-PCR</Content>
</a4:CustomText>
<a4:CustomText 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>2</Version>
<Content id="ref-55">Autoantikörper: ANCA (IF) 1: (Ref. &#60; 1:40), MPO-ANCA (ELISA) IU/ml (Ref. &#60; 9), PR3-ANCA (ELISA) IU/ml (Ref. &#60; 3,5), ANA (IF), AnDNA (ELISA), AnDNA (RIA)</Content>
</a4:CustomText>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

View File

@ -0,0 +1,53 @@
!zaaReloaded2.Controller.Settings,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Name: Kopie von Standard für NepA
ReferenceStyle: IfSpecialItem
Elements: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.ElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089
- !zaaReloaded2.Controller.Elements.SelectEachDay,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Children: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.FormatElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Kardiale Marker: CK, CK-MB, hsTnT, NT-proBNP'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Niere: Krea, Hst, eGFR (CKD-EPI), Cystatin C'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Sammelurin: SU-Prot, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Na, SU-Zeit, SU-Volumen'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Spot-Urin: U-TPCR, U-ACR, U-Alb, U-Ery, U-Leu, U-Bakt, U-Schwangerschaftstest'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Leber: GOT, GGT, GPT, AP, Bilirubin, CHE, CDT'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Blutfette: TG, Chol, LDL, HDL, Lp(a)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hämatologie: Hb, Hkt, Reti, Leu, Thr, MCV, HbA1c, Retikulozyten, Fragmentozyten'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Diff.-BB: Neu, Lym, Mon, Baso, Eos'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hormone: iPTH, TSH, fT3, fT4, Aldosteron, Renin, ARQ'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Vitamine: B12, Folsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'BGA: pH, Std.-Bic., BE'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hepatitis-Serologie: Anti-HBs, Anti-HBc'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Medikamente: TAC "(Ziel-Talspiegel: <> µg/l)", CsA (C0) "(Ziel-Talspiegel: <> µg/l)", SIR "(Ziel-Talspiegel: <> µg/l)", Vancomycin, Gentamicin, Tobramicin'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Tumormarker: PSA, AFP'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Virologie (EDTA-Blut): CMV-PCR, BKV-PCR'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Autoantikörper: ANCA (IF) 1: (Ref. < 1:40), MPO-ANCA (ELISA) IU/ml (Ref. < 9), PR3-ANCA (ELISA) IU/ml (Ref. < 3,5), ANA (IF), AnDNA (ELISA), AnDNA (RIA)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'MSU: MSU-Keim, MSU-Multiresistenz'
Uid: 581d378c-8f7a-4a1c-8490-36e257770a09

View File

@ -1,7 +1,9 @@
# LAURIS-NAME "KANONISCHER NAME" MATERIAL DEZIMALSTELLEN "IMMER REFERENZBEREICH" "BLACKLIST" # LAURIS-NAME "KANONISCHER NAME" MATERIAL DEZIMALSTELLEN "IMMER REFERENZBEREICH" "BLACKLIST" "NO-LABEL"
# =========== ================== ======== ============== ======================= =========== # =========== ================== ======== ============== ======================= =========== ==========
"- Multiresistenz" Multiresistenz MSU --- --- --- X
"a1-Microglobulin (SU)" a1-Microglobulin SU "a1-Microglobulin (SU)" a1-Microglobulin SU
"a1-Microglobulin (SU)/die" a1-Microglobulin SU "a1-Microglobulin (SU)/die" a1-Microglobulin SU
"Aerobe Kultur" Keim MSU --- --- --- X
"AFP (ECL, Elecsys, Roche)" AFP S --- X "AFP (ECL, Elecsys, Roche)" AFP S --- X
"aktuelles Bicarbonat" Bic BGA "aktuelles Bicarbonat" Bic BGA
Albumin Alb S Albumin Alb S
@ -132,6 +134,7 @@ Transferrin Transferrin S
TSH TSH S TSH TSH S
"Übergangsepithelien (U)" Übergangsep. U "Übergangsepithelien (U)" Übergangsep. U
"Unreife Granulozyten" Gran E "Unreife Granulozyten" Gran E
"Untersuchungsmaterial" Material MSU
"Urobilinogen (U)" Urobilinogen U "Urobilinogen (U)" Urobilinogen U
"Vitamin B12" B12 S --- X "Vitamin B12" B12 S --- X
# vim: tw=160 et nowrap fo-=t # vim: tw=160 et nowrap fo-=t

View File

@ -1,254 +0,0 @@
<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>2</Version>
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<_a>1038630179</_a>
<_b>-1437</_b>
<_c>19419</_c>
<_d>151</_d>
<_e>122</_e>
<_f>7</_f>
<_g>44</_g>
<_h>130</_h>
<_i>195</_i>
<_j>52</_j>
<_k>194</_k>
</Uid>
<Name id="ref-3">Station ganz neu</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">IfSpecialItem</ReferenceStyle>
<AbnormalStyle xsi:type="a3:AbnormalStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">None</AbnormalStyle>
<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>2</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>2</Version>
<ChildrenCount>22</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"/>
<Child16Type href="#ref-15"/>
<Child16Object href="#ref-32"/>
<Child17Type href="#ref-15"/>
<Child17Object href="#ref-33"/>
<Child18Type href="#ref-34"/>
<Child18Object href="#ref-35"/>
<Child19Type href="#ref-34"/>
<Child19Object href="#ref-36"/>
<Child20Type href="#ref-34"/>
<Child20Object href="#ref-37"/>
<Child21Type href="#ref-15"/>
<Child21Object href="#ref-38"/>
</a4:SelectFirstDay>
<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-39">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>2</Version>
<ChildrenCount>0</ChildrenCount>
</a4:NextColumn>
<a2:UnitySerializationHolder id="ref-10" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-40">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>2</Version>
<ChildrenCount>22</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"/>
<Child16Type href="#ref-15"/>
<Child16Object href="#ref-32"/>
<Child17Type href="#ref-15"/>
<Child17Object href="#ref-33"/>
<Child18Type href="#ref-34"/>
<Child18Object href="#ref-35"/>
<Child19Type href="#ref-34"/>
<Child19Object href="#ref-36"/>
<Child20Type href="#ref-34"/>
<Child20Object href="#ref-37"/>
<Child21Type href="#ref-15"/>
<Child21Object href="#ref-38"/>
</a4:SelectLastDay>
<a2:UnitySerializationHolder id="ref-15" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-41">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>2</Version>
<Content id="ref-42">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>2</Version>
<Content id="ref-43">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>2</Version>
<Content id="ref-44">Kardiale Marker: CK, CKMB, hsTnT, NT-proBNP</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>2</Version>
<Content id="ref-45">Niere: Krea, Hst, eGFR (CKD-EPI), Cystatin C</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>2</Version>
<Content id="ref-46">Sammelurin: SU-Prot, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Na, 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>2</Version>
<Content id="ref-47">Spot-Urin: U-TPCR, U-ACR, U-Alb, U-Ery, U-Leu, U-Bakt</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>2</Version>
<Content id="ref-48">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>2</Version>
<Content id="ref-49">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>2</Version>
<Content id="ref-50">Hämatologie: Hb, Hkt, Reti, Leu, Thr, 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>2</Version>
<Content id="ref-51">Diff.-BB: Neu, Lym, Mon, Baso, Eos</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>2</Version>
<Content id="ref-52">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</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>2</Version>
<Content id="ref-53">Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin</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>2</Version>
<Content id="ref-54">Hormone: iPTH, TSH, fT3, fT4</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>2</Version>
<Content id="ref-55">Vitamine: B12, Folsäure</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>2</Version>
<Content id="ref-56">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</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>2</Version>
<Content id="ref-57">BGA: pH, Std.-Bic., BE</Content>
</a4:Items>
<a4:Items id="ref-32" 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>2</Version>
<Content id="ref-58">Hepatitis-Serologie: Anti-HBs, Anti-HBc</Content>
</a4:Items>
<a4:Items id="ref-33" 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>2</Version>
<Content id="ref-59">Medikamente: TAC &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, CsA (C0) &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, SIR &#34;(Ziel-Talspiegel: &#60;&#62; µg/l)&#34;, Vancomycin, Gentamicin, Tobramicin</Content>
</a4:Items>
<a2:UnitySerializationHolder id="ref-34" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
<Data id="ref-60">zaaReloaded2.Controller.Elements.CustomText</Data>
<UnityType>4</UnityType>
<AssemblyName href="#ref-13"/>
</a2:UnitySerializationHolder>
<a4:CustomText id="ref-35" 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>2</Version>
<Content id="ref-61">Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden</Content>
</a4:CustomText>
<a4:CustomText id="ref-36" 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>2</Version>
<Content id="ref-62">Virologie (EDTA-Blut): CMV-PCR, BKV-PCR</Content>
</a4:CustomText>
<a4:CustomText id="ref-37" 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>2</Version>
<Content id="ref-63">Autoantikörper: ANCA (IF), MPO-ANCA (ELISA), PR3-ANCA (ELISA), ANA (IF), AnDNA (ELISA), AnDNA (RIA)</Content>
</a4:CustomText>
<a4:Items id="ref-38" 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>2</Version>
<Content id="ref-64">Tumormarker: PSA</Content>
</a4:Items>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

View File

@ -0,0 +1,101 @@
!zaaReloaded2.Controller.Settings,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Name: Kopie von Standard für Station
ReferenceStyle: IfSpecialItem
Elements: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.ElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089
- !zaaReloaded2.Controller.Elements.TwoColumns,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Children: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.FormatElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089 []
- !zaaReloaded2.Controller.Elements.SelectFirstDay,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Children: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.FormatElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Kardiale Marker: CK, CKMB, hsTnT, NT-proBNP'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Niere: Krea, Hst, eGFR (CKD-EPI), Cystatin C'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Sammelurin: SU-Prot, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Na, SU-Zeit, SU-Volumen'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Spot-Urin: U-TPCR, U-ACR, U-Alb, U-Ery, U-Leu, U-Bakt'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Leber: GOT, GGT, GPT, AP, Bilirubin, CHE'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Blutfette: TG, Chol, LDL, HDL, Lp(a)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hämatologie: Hb, Hkt, Reti, Leu, Thr, MCV, HbA1c, Retikulozyten, Fragmentozyten'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Diff.-BB: Neu, Lym, Mon, Baso, Eos'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hormone: iPTH, TSH, fT3, fT4'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Vitamine: B12, Folsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'BGA: pH, Std.-Bic., BE'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hepatitis-Serologie: Anti-HBs, Anti-HBc'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Medikamente: TAC "(Ziel-Talspiegel: <> µg/l)", CsA (C0) "(Ziel-Talspiegel: <> µg/l)", SIR "(Ziel-Talspiegel: <> µg/l)", Vancomycin, Gentamicin, Tobramicin'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Virologie (EDTA-Blut): CMV-PCR, BKV-PCR'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Autoantikörper: ANCA (IF), MPO-ANCA (ELISA), PR3-ANCA (ELISA), ANA (IF), AnDNA (ELISA), AnDNA (RIA)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Tumormarker: PSA'
- !zaaReloaded2.Controller.Elements.NextColumn,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Children: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.FormatElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089 []
- !zaaReloaded2.Controller.Elements.SelectLastDay,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Children: !System.Collections.Generic.List%601[[zaaReloaded2.Controller.Elements.FormatElementBase,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383]],%20mscorlib,%20Version=4.0.0.0,%20Culture=neutral,%20PublicKeyToken=b77a5c561934e089
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Kardiale Marker: CK, CKMB, hsTnT, NT-proBNP'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Niere: Krea, Hst, eGFR (CKD-EPI), Cystatin C'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Sammelurin: SU-Prot, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Na, SU-Zeit, SU-Volumen'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Spot-Urin: U-TPCR, U-ACR, U-Alb, U-Ery, U-Leu, U-Bakt'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Leber: GOT, GGT, GPT, AP, Bilirubin, CHE'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Blutfette: TG, Chol, LDL, HDL, Lp(a)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hämatologie: Hb, Hkt, Reti, Leu, Thr, MCV, HbA1c, Retikulozyten, Fragmentozyten'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Diff.-BB: Neu, Lym, Mon, Baso, Eos'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hormone: iPTH, TSH, fT3, fT4'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Vitamine: B12, Folsäure'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'BGA: pH, Std.-Bic., BE'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Hepatitis-Serologie: Anti-HBs, Anti-HBc'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Medikamente: TAC "(Ziel-Talspiegel: <> µg/l)", CsA (C0) "(Ziel-Talspiegel: <> µg/l)", SIR "(Ziel-Talspiegel: <> µg/l)", Vancomycin, Gentamicin, Tobramicin'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Virologie (EDTA-Blut): CMV-PCR, BKV-PCR'
- !zaaReloaded2.Controller.Elements.CustomText,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Autoantikörper: ANCA (IF), MPO-ANCA (ELISA), PR3-ANCA (ELISA), ANA (IF), AnDNA (ELISA), AnDNA (RIA)'
- !zaaReloaded2.Controller.Elements.Items,%20zaaReloaded2,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=6ec8d075a1ab1383
Content: 'Tumormarker: PSA'
Uid: 216d9bbb-94d8-47e5-b13b-59e0edd24d91

Binary file not shown.

View File

@ -2,7 +2,7 @@
ExceptionDetailView.xaml ExceptionDetailView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -25,8 +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" ShowInTaskbar="False" SizeToContent="Height" Width="720"
WindowStyle="ToolWindow" Topmost="True" ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" ResizeMode="NoResize"
x:Name="exceptionDetailView" x:Name="exceptionDetailView"
Title="Technische Fehlerdetails" Title="Technische Fehlerdetails"
settings:WindowState.Save="True" settings:WindowState.Save="True"

View File

@ -2,7 +2,7 @@
ExceptionView.xaml ExceptionView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -26,8 +26,8 @@
xmlns:ex="clr-namespace:zaaReloaded2.ExceptionHandler" xmlns:ex="clr-namespace:zaaReloaded2.ExceptionHandler"
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="NoResize"
WindowStyle="ToolWindow" ShowInTaskbar="False" Topmost="True" ShowInTaskbar="False"
WindowStartupLocation="CenterScreen" WindowStartupLocation="CenterScreen"
Title="zaaReloaded2: Fehler!" Title="zaaReloaded2: Fehler!"
settings:WindowState.Save="True" settings:WindowState.Save="True"

View File

@ -83,7 +83,7 @@ namespace zaaReloaded2.ExceptionHandler
protected override string DevPath() protected override string DevPath()
{ {
return @"x:\Code\zaaReloaded2\zaaReloaded2\"; return @"x:\\Code\\zaaReloaded2\\zaaReloaded2\\";
} }
protected override Bovender.UserSettings.UserSettingsBase UserSettings protected override Bovender.UserSettings.UserSettingsBase UserSettings

View File

@ -34,12 +34,12 @@ namespace zaaReloaded2.ExceptionHandler
{ {
protected override Window CreateSuccessWindow() protected override Window CreateSuccessWindow()
{ {
return Content.InjectInto<SubmissionSuccessView>(); return new SubmissionSuccessView();
} }
protected override Window CreateFailureWindow() protected override Window CreateFailureWindow()
{ {
return Content.InjectInto<SubmissionFailureView>(); return new SubmissionFailureView();
} }
protected override Window CreateCancelledWindow() protected override Window CreateCancelledWindow()

View File

@ -2,7 +2,7 @@
SubmissionFailureView.xaml SubmissionFailureView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,14 +21,14 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:zaaReloaded2" xmlns:l="clr-namespace:zaaReloaded2"
SizeToContent="WidthAndHeight" SizeToContent="Height" Width="540"
Title="Fehlerbericht versenden" Title="Fehlerbericht versenden"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />
</Window.Resources> </Window.Resources>
<StackPanel Margin="10" Orientation="Horizontal"> <DockPanel Margin="10">
<TextBlock FontSize="72" FontWeight="Bold" Foreground="Red" Margin="0,0,10,0" <TextBlock DockPanel.Dock="Left" FontSize="72" FontWeight="Bold" Foreground="Red" Margin="0,0,10,0"
LineHeight="48" LineStackingStrategy="BlockLineHeight"> LineHeight="48" LineStackingStrategy="BlockLineHeight">
&#x00d7; &#x00d7;
<TextBlock.Effect> <TextBlock.Effect>
@ -36,11 +36,13 @@
</TextBlock.Effect> </TextBlock.Effect>
</TextBlock> </TextBlock>
<StackPanel> <StackPanel>
<TextBlock Text="Beim Senden des Fehlerberichtes ist wiederum leider ein Fehler aufgetreten... (Funktioniert das Netzwerk?)" /> <TextBlock TextWrapping="Wrap"
<TextBlock Text="{Binding Exception}" Margin="0,10,0,0" Foreground="LightSlateGray" /> Text="Beim Senden des Fehlerberichtes ist wiederum leider ein Fehler aufgetreten... (Funktioniert das Netzwerk?)" />
<TextBlock TextWrapping="Wrap"
Text="{Binding Exception}" Margin="0,10,0,0" Foreground="LightSlateGray" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Command="{Binding CloseViewCommand}" Content="Schließen" /> <Button Command="{Binding CloseViewCommand}" Content="Schließen" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</StackPanel> </DockPanel>
</Window> </Window>

View File

@ -28,7 +28,7 @@ namespace zaaReloaded2.ExceptionHandler
{ {
protected override System.Windows.Window CreateView() protected override System.Windows.Window CreateView()
{ {
return Content.InjectInto<SubmissionProcessView>(); return new SubmissionProcessView();
} }
} }
} }

View File

@ -2,7 +2,7 @@
SubmissionProcessView.xaml SubmissionProcessView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -2,7 +2,7 @@
SubmissionSuccessView.xaml SubmissionSuccessView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,14 +21,15 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:zaaReloaded2" xmlns:l="clr-namespace:zaaReloaded2"
SizeToContent="WidthAndHeight" SizeToContent="Height" Width="400"
Title="Fehlerbericht versenden" Title="Fehlerbericht versenden"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />
</Window.Resources> </Window.Resources>
<StackPanel Margin="10" Orientation="Horizontal"> <DockPanel Margin="10">
<TextBlock FontSize="48" FontWeight="Bold" Foreground="GreenYellow" Margin="0,0,10,0" <TextBlock DockPanel.Dock="Left"
FontSize="48" FontWeight="Bold" Foreground="GreenYellow" Margin="0,0,10,0"
LineHeight="48" LineStackingStrategy="BlockLineHeight"> LineHeight="48" LineStackingStrategy="BlockLineHeight">
&#x2714; &#x2714;
<TextBlock.Effect> <TextBlock.Effect>
@ -36,10 +37,10 @@
</TextBlock.Effect> </TextBlock.Effect>
</TextBlock> </TextBlock>
<StackPanel> <StackPanel>
<TextBlock Text="Der Fehlerbericht wurde erfolgreich versandt." /> <TextBlock TextWrapping="Wrap" Text="Der Fehlerbericht wurde erfolgreich versandt." />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 10 0 0"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 10 0 0">
<Button Command="{Binding CloseViewCommand}" Content="Schließen" /> <Button Command="{Binding CloseViewCommand}" Content="Schließen" />
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</StackPanel> </DockPanel>
</Window> </Window>

View File

@ -57,7 +57,8 @@ namespace zaaReloaded2.Formatter
foreach (TimePoint tp in _laboratory.TimePoints.Values) foreach (TimePoint tp in _laboratory.TimePoints.Values)
{ {
_timePointFormatters[tp.TimeStamp] = _timePointFormatters[tp.TimeStamp] =
new TimePointFormatter(tp, Settings.ReferenceStyle, Settings.AbnormalStyle); new TimePointFormatter(tp, Settings.ReferenceStyle,
Settings.AbnormalStyle, Settings.PreferVerboseMolar);
} }
} }
} }

View File

@ -47,6 +47,11 @@ namespace zaaReloaded2.Formatter
/// </summary> /// </summary>
public AbnormalStyle AbnormalStyle { get; set; } public AbnormalStyle AbnormalStyle { get; set; }
/// <summary>
/// Indicates whether to prefer the more verbose "mmol/l" over "mM".
/// </summary>
public bool PreferVerboseMolar { get; set; }
/// <summary> /// <summary>
/// Gets or sets a flag that indicates whether this ItemFormatter /// Gets or sets a flag that indicates whether this ItemFormatter
/// has been used, i.e. whether the LabItem was written to a /// has been used, i.e. whether the LabItem was written to a
@ -71,6 +76,11 @@ namespace zaaReloaded2.Formatter
/// </summary> /// </summary>
public bool IsBlacklisted { get { return LabItem.IsBlacklisted; } } public bool IsBlacklisted { get { return LabItem.IsBlacklisted; } }
/// <summary>
/// Gets whether the Item is marked to suppress its label in the thesaurus.
/// </summary>
public bool SuppressLabel { get { return LabItem.SuppressLabel; } }
/// <summary> /// <summary>
/// Gets or sets the item's comment. /// Gets or sets the item's comment.
/// </summary> /// </summary>
@ -86,12 +96,14 @@ 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, public ItemFormatter(LabItem labItem,
ReferenceStyle referenceStyle, ReferenceStyle referenceStyle,
AbnormalStyle abnormalStyle) AbnormalStyle abnormalStyle,
bool preferVerboseMolar)
{ {
IncludeMaterial = true; IncludeMaterial = true;
LabItem = labItem; LabItem = labItem;
ReferenceStyle = referenceStyle; ReferenceStyle = referenceStyle;
AbnormalStyle = abnormalStyle; AbnormalStyle = abnormalStyle;
PreferVerboseMolar = preferVerboseMolar;
} }
#endregion #endregion
@ -147,7 +159,12 @@ namespace zaaReloaded2.Formatter
if (LabItem.HasUnit) if (LabItem.HasUnit)
{ {
string space = LabItem.Unit.StartsWith("/") ? String.Empty : " "; string space = LabItem.Unit.StartsWith("/") ? String.Empty : " ";
unit = String.Format("{0}{1}", space, LabItem.Unit); unit = LabItem.Unit;
if (PreferVerboseMolar)
{
unit = LabItem.Unit.Replace("mM", "mmol/l");
}
unit = String.Format("{0}{1}", space, unit);
} }
else else
{ {
@ -182,12 +199,20 @@ namespace zaaReloaded2.Formatter
if (comment != String.Empty) comment = " " + comment; if (comment != String.Empty) comment = " " + comment;
} }
string name = IncludeMaterial ? LabItem.QualifiedName : LabItem.Name; string name;
if (LabItem.SuppressLabel)
{
name = String.Empty;
}
else
{
name = (IncludeMaterial ? LabItem.QualifiedName : LabItem.Name) + " ";
}
string output = string output =
String.Format( String.Format(
"{0} {1}{2}{3}{4}", "{0}{1}{2}{3}{4}",
name, name,
value, value,
unit, unit,

View File

@ -105,14 +105,15 @@ namespace zaaReloaded2.Formatter
/// used to create ItemFormatter objects.</param> /// used to create ItemFormatter objects.</param>
public TimePointFormatter(TimePoint timePoint, public TimePointFormatter(TimePoint timePoint,
ReferenceStyle referenceStyle, ReferenceStyle referenceStyle,
AbnormalStyle abnormalStyle) AbnormalStyle abnormalStyle,
bool preferVerboseMolar)
{ {
TimeStamp = timePoint.TimeStamp; TimeStamp = timePoint.TimeStamp;
ItemFormatters = new ItemFormatterDictionary(); ItemFormatters = new ItemFormatterDictionary();
foreach (LabItem item in timePoint.Items.Values) foreach (LabItem item in timePoint.Items.Values)
{ {
ItemFormatters[item.QualifiedName] = new ItemFormatter( ItemFormatters[item.QualifiedName] = new ItemFormatter(
item, referenceStyle, abnormalStyle); item, referenceStyle, abnormalStyle, preferVerboseMolar);
} }
} }

View File

@ -0,0 +1,262 @@
using Microsoft.Office.Interop.Word;
/* AutoDetect.cs
* part of zaaReloaded2
*
* Copyright 2015-2017 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 zaaReloaded2.Importer.ZaaImporter;
using zaaReloaded2.Importer.ClinicImporter;
namespace zaaReloaded2.Importer
{
class AutoDetector
{
#region Properties
public ImportMode ImportMode { get; private set; }
#endregion
#region Public methods
/// <summary>
/// Attempts to automatically detect laboratory data in the Word
/// document.
/// </summary>
/// <param name="document">Document which to parse for laboratory
/// data.</param>
/// <returns>True if laboratory data was detected, false if not.</returns>
/// <exception cref="ArgumentNullException">if <paramref name="document"/>
/// is null.</exception>
public bool Detect(Document document)
{
if (document == null)
{
throw new ArgumentNullException(
"Automatic laboratory detection requires a document.");
}
int startParagraph = 1;
if (document.Bookmarks.Exists("Labor"))
{
Logger.Info("Detect: Found lab bookmark");
startParagraph = GetParagraphIndex(
document,
document.Bookmarks["Labor"].Range.Paragraphs[1]);
}
return DetectRange(document, startParagraph, document.Paragraphs.Count);
}
public bool Detect(Selection selection)
{
if (selection == null)
{
throw new ArgumentNullException(
"Automatic laboratory detection requires a selection.");
}
return DetectRange(selection.Document,
GetParagraphIndex(selection.Document, selection.Paragraphs.First),
GetParagraphIndex(selection.Document, selection.Paragraphs.Last) + 1);
}
public IImporter CreateImporter()
{
switch (ImportMode)
{
case ImportMode.Zaa:
return new ZaaImporter.ZaaImporter();
case ImportMode.Clinic:
return new ClinicImporter.ClinicImporter();
default:
throw new InvalidOperationException("Cannot create Importer for undefined import mode!");
}
}
#endregion
#region Private methods
private bool DetectRange(Document document, int startParagraph, int endParagraph)
{
if (document == null)
{
throw new ArgumentNullException(
"Automatic laboratory detection requires a document.");
}
if (startParagraph < 1 || startParagraph > document.Paragraphs.Count)
{
Logger.Fatal("Start paragraph index must be between {0} and {1}, was {2}!",
1, document.Paragraphs.Count, startParagraph);
throw new ArgumentOutOfRangeException("startParagraph");
}
if (endParagraph < startParagraph || endParagraph > document.Paragraphs.Count)
{
Logger.Fatal("End paragraph index must be between {0} and {1}, was {2}!",
startParagraph, document.Paragraphs.Count, endParagraph);
throw new ArgumentOutOfRangeException("endParagraph");
}
Logger.Info("DetectRange: Start paragraph is #{0}, end is #{1}, document has #{2} paragraphs",
startParagraph, endParagraph, document.Paragraphs.Count);
// TODO: Try to make this algorithm more elegant.
Paragraph start = null;
Paragraph end = null;
int i = startParagraph;
while (i <= endParagraph)
{
// Expect the first paragraph of a Lauris block to be
// a time stamp. This prevents erroneous detection of
// lines such as "Tel. (09 31) 201-39432; -39126", which
// happen to structurally resemble a paragraph with
// laboratory items.
if (IsTimeStampParagraph(document.Paragraphs[i]))
{
start = document.Paragraphs[i];
Logger.Info("DetectRange: Found time stamp line in paragraph #{0}", i);
break;
}
i++;
}
if (start != null)
{
Logger.Info("DetectRange: Determining lab block");
while (i <= endParagraph - 1)
{
Paragraph p = document.Paragraphs[i + 1];
if (!IsLabParagraph(p) && !IsEmptyParagraph(p))
{
Logger.Info("Detect: Last lab paragraph is #{0}", i);
end = document.Paragraphs[i];
break;
}
i++;
}
if (end == null)
{
end = document.Paragraphs[endParagraph];
}
document.Range(start.Range.Start, end.Range.End).Select();
return true;
}
Logger.Warn("DetectRange: Did not find lab block!");
return false;
}
/// <summary>
/// Returns true if a paragraph is a time stamp line.
/// </summary>
private bool IsTimeStampParagraph(Paragraph paragraph)
{
string text = paragraph.Range.Text;
bool isCinicTimePoint = ClinicTimePoint.IsTimeStampLine(text);
bool isZaaTimePoint = LaurisTimePoint.IsTimeStampLine(text);
// // If the line is a ZAA time point, but not a clinic timepoint, we can deduct that
// // the lab mode *must* be ZAA, because it will be a line in the form
// // "(17.09.2015-201710:44:00) Cyclosporin-A vor Gabe: 130 µg/l;" which does not
// // occur in the clinic format.
// if ((ImportMode == ImportMode.Undefined) && isZaaTimePoint && !isCinicTimePoint)
// {
// Logger.Info("IsTimeStampParagraph: Found ZAA time stamp, setting mode to ZAA");
// ImportMode = ImportMode.Zaa;
// }
return isCinicTimePoint || isZaaTimePoint;
}
/// <summary>
/// Returns true if a paragraph is either a time stamp line
/// or a paragraph with laboratory items.
/// </summary>
/// <remarks>
/// This method determines the mode: either ZAA-generated output or clinic system-generated
/// output. ZAA is given priority over clinic. Once a mode is detected, it will stick to
/// that mode.
/// </remarks>
/// <param name="paragraph"></param>
/// <returns></returns>
private bool IsLabParagraph(Paragraph paragraph)
{
string text = paragraph.Range.Text;
bool isLabParagraph = false;
switch (ImportMode)
{
case ImportMode.Undefined:
if (LaurisParagraph.ResemblesLaurisParagraph(text) || LaurisTimePoint.IsTimeStampLine(text))
{
ImportMode = ImportMode.Zaa;
Logger.Info("IsLabParagraph: Setting mode to ZAA");
isLabParagraph = true;
}
else if (ClinicLine.ResemblesClinicLine(text) || ClinicTimePoint.IsTimeStampLine(text))
{
ImportMode = ImportMode.Clinic;
Logger.Info("IsLabParagraph: Setting mode to Clinic");
isLabParagraph = true;
}
break;
case ImportMode.Zaa:
isLabParagraph = LaurisParagraph.ResemblesLaurisParagraph(text) || LaurisTimePoint.IsTimeStampLine(text);
break;
case ImportMode.Clinic:
isLabParagraph = ClinicLine.ResemblesClinicLine(text) || ClinicTimePoint.IsTimeStampLine(text);
break;
default:
break;
}
return isLabParagraph;
}
/// <summary>
/// Returns the index of a paragraph.
/// </summary>
/// <remarks>
/// http://word.mvps.org/faqs/macrosvba/GetIndexNoOfPara.htm
/// </remarks>
/// <param name="paragraph">Paragraph whose index to return.</param>
/// <returns>Index of the paragraph.</returns>
private int GetParagraphIndex(Document document, Paragraph paragraph)
{
return document.Range(0, paragraph.Range.Start).Paragraphs.Count;
}
private bool IsEmptyParagraph(Paragraph paragraph)
{
string text = paragraph.Range.Text;
return String.IsNullOrWhiteSpace(text);
}
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
}
}

View File

@ -0,0 +1,170 @@
/* ZaaImporter.cs
* part of zaaReloaded2
*
* Copyright 2017 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.Diagnostics;
using System.Linq;
using System.Text;
using Bovender.Extensions;
using zaaReloaded2.LabModel;
using zaaReloaded2.Thesaurus;
namespace zaaReloaded2.Importer
{
/// <summary>
/// Base class for certain importers such as ZaaImporter, ClinicImporter.
/// </summary>
public class BaseImporter : IImporter
{
#region IImporter implementation
public Laboratory Laboratory
{
[DebuggerStepThrough]
get
{
if (_laboratory == null)
{
_laboratory = new Laboratory();
}
return _laboratory;
}
[DebuggerStepThrough]
set
{
_laboratory = value;
}
}
public bool Success
{
get
{
return Laboratory.TimePoints.Count > 0;
}
}
/// <summary>
/// Splits the <paramref name="text"/> into individual time points
/// and creates <see cref="TimePoint"/> objects from them.
/// </summary>
public void Import(string text)
{
Logger.Info("Import: \"{0}\"", text.TruncateWithEllipsis(120));
string[] paragraphs = Helpers.SplitParagraphs(text);
Logger.Info("Import: {0} paragraph(s)", paragraphs.Length);
TimePoint timePoint = null;
foreach (string paragraph in paragraphs)
{
Logger.Info("Import: \"{0}\"", paragraph.TruncateWithEllipsis(40));
// If the current paragraph looks like a time stamp,
// create a new time point.
if (IsTimeStamp(paragraph))
{
Logger.Info("Import: Time stamp detected", paragraph);
timePoint = CreateTimePoint(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;
}
else
{
Laboratory.AddTimePoint(timePoint);
}
}
// If the current paragraph looks like a paragraph with
// laboratory items, add it to the current time point;
// if no time point exists yet, create one.
else if (IsItemsParagraph(paragraph))
{
Logger.Info("Import: Paragraph with lab items detected");
if (timePoint == null)
{
timePoint = CreateTimePoint(paragraph, _parameters, _units);
Laboratory.AddTimePoint(timePoint);
}
else
{
timePoint.Parse(paragraph);
}
}
else
{
Logger.Debug("Import: Neither time stamp, nor Lauris paragraph");
}
}
}
#endregion
#region Constructor
public BaseImporter()
{
_parameters = Parameters.Default;
_units = Units.Default;
}
#endregion
#region Virtual methods
protected virtual TimePoint CreateTimePoint(string paragraph, Parameters parameters, Units units)
{
NotImplementedException e = new NotImplementedException("Cannot create TimePoint in base class - derived class must override CreateTimePoint");
Logger.Fatal(e);
throw e;
}
protected virtual bool IsTimeStamp(string paragraph)
{
NotImplementedException e = new NotImplementedException("Cannot test time stamp in base class - derived class must override IsTimeStamp");
Logger.Fatal(e);
throw e;
}
protected virtual bool IsItemsParagraph(string paragraph)
{
NotImplementedException e = new NotImplementedException("Cannot test items in base class - derived class must override IsItemsParagraph");
Logger.Fatal(e);
throw e;
}
#endregion
#region Fields
Laboratory _laboratory;
Parameters _parameters;
Units _units;
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
}
}

View File

@ -0,0 +1,68 @@
/* ZaaImporter.cs
* part of zaaReloaded2
*
* Copyright 2017 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.Diagnostics;
using System.Linq;
using System.Text;
using Bovender.Extensions;
using zaaReloaded2.LabModel;
using zaaReloaded2.Thesaurus;
namespace zaaReloaded2.Importer.ClinicImporter
{
/// <summary>
/// Imports laboratory items by parsing the Lauris data from a
/// physician's letter.
/// </summary>
public class ClinicImporter : BaseImporter
{
#region Constructor
public ClinicImporter() : base() { }
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
#region Implementation of BaseImporter
protected override TimePoint CreateTimePoint(string paragraph, Parameters parameters, Units units)
{
return new ClinicTimePoint(paragraph, parameters, units);
}
protected override bool IsTimeStamp(string paragraph)
{
return ClinicTimePoint.IsTimeStampLine(paragraph);
}
protected override bool IsItemsParagraph(string paragraph)
{
return ClinicLine.ResemblesClinicLine(paragraph);
}
#endregion
}
}

View File

@ -0,0 +1,140 @@
/* ClinicLine.cs
* part of zaaReloaded2
*
* Copyright 2017 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.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using zaaReloaded2.Thesaurus;
using zaaReloaded2.LabModel;
using zaaReloaded2.Importer.ZaaImporter;
using Bovender.Extensions;
namespace zaaReloaded2.Importer.ClinicImporter
{
/// <summary>
/// Parses a line in a lab section produced by the outpatients clinic system,
/// and creates a list of <see cref="zaaReloaded2.Importer.BaseImporter.LabItem"/>s.
/// </summary>
public class ClinicLine
{
#region Static methods
/// <summary>
/// Investigates a paragraph and determines whether it looks
/// like a clinic laboratory items line.
/// </summary>
public static bool ResemblesClinicLine(string line)
{
return _expectedFormat.IsMatch(line);
}
#endregion
#region Public properties
public LaurisItem Item { get; private set; }
/// <summary>
/// Gets the original line that this object was constructed from.
/// </summary>
public string OriginalLine{ get; private set; }
/// <summary>
/// Is true if the <see cref="OriginalLine"/> matches the expected
/// format and contains <see cref="LabItem"/>s.
/// </summary>
public bool IsClinicLine{ get; private set; }
#endregion
#region Constructor
public ClinicLine(string line)
{
OriginalLine = line;
Parse();
}
/// <summary>
/// Constructs a <see cref="ClinicLine"/> object from a given line,
/// using a <paramref name="parameterDictionary"/> and a
/// <paramref name="unitDictionary"/> to translate the individual
/// items' properties.
/// </summary>
/// <param name="line">line to parse.</param>
/// <param name="parameterDictionary">ParameterDictionary that contains
/// canonical names and material types.</param>
/// <param name="unitDictionary">Unit dictionary that contains canonical
/// unit names.</param>
public ClinicLine(string line,
Thesaurus.Parameters parameterDictionary,
Thesaurus.Units unitDictionary)
{
OriginalLine = line;
_parameterDictionary = parameterDictionary;
_unitDictionary = unitDictionary;
Parse();
}
#endregion
#region Private methods
/// <summary>
/// Attempts to parse a line.
/// </summary>
void Parse()
{
Logger.Info("Parse: \"{0}\"", OriginalLine.TruncateWithEllipsis(40).Replace("\t", " "));
Match m = _expectedFormat.Match(OriginalLine);
if (m.Success)
{
Logger.Info("Parse: Matches clinic line format");
Item = new LaurisItem(m.Groups["item"].Value, _parameterDictionary, _unitDictionary);
IsClinicLine = true;
}
else
{
Logger.Info("Parse: Does not match clinic line format");
IsClinicLine = false;
}
}
#endregion
#region Fields
// Microbiology report has different format, gets special treatment
// static readonly Regex _expectedFormat = new Regex(@"^\t(?<item>[^:]+:(\t([^\t]+)?){3})|\t(?<item>(- Multiresistenz|Aerobe Kultur|Befundstatus Auftrag|Negatives Kulturergebnis|Untersuchungsmaterial:|Wachstum):(\t([^\t]+)))");
static readonly Regex _expectedFormat = new Regex(@"^\t(?<item>[^:]+:{1,2}(\t([^\t]+)?){1,3})");
Thesaurus.Parameters _parameterDictionary;
Thesaurus.Units _unitDictionary;
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
}
}

View File

@ -0,0 +1,258 @@
/* ClinicTimePoint.cs
* part of zaaReloaded2
*
* Copyright 2017 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.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using zaaReloaded2.Thesaurus;
using zaaReloaded2.LabModel;
namespace zaaReloaded2.Importer.ClinicImporter
{
/// <summary>
/// Holds all laboratory items for a given time point.
/// </summary>
class ClinicTimePoint : TimePoint
{
#region Static methods
/// <summary>
/// Examines a string and returns true if it resembles
/// a time stamp line in the clinic output.
/// </summary>
/// <param name="line">Line to examine.</param>
/// <returns>True if line resembles a time stamp line
/// in the clinic output.</returns>
static public bool IsTimeStampLine(string line)
{
return _timeStampRegex.IsMatch(line);
}
/// <summary>
/// Gets a Regex object that matches a clinic time stamp
/// line.
/// </summary>
static public Regex TimeStampRegex
{
get
{
return _timeStampRegex;
}
}
#endregion
#region Properties
/// <summary>
/// Gets an array of lines in this ClinicText.
/// </summary>
public IList<String> Lines
{
[DebuggerStepThrough]
get
{
if (_lines == null)
{
_lines = new List<String>();
}
return _lines;
}
set
{
_lines = value;
ParseLines();
}
}
/// <summary>
/// Is true if the LaurisText has time stamp in the first
/// paragraph and <see cref="LabItem"/>s in the others.
/// </summary>
public bool IsValidTimePoint
{
get
{
return Items.Count > 0;
}
}
/// <summary>
/// Gets or sets the original Lauris text for this timepoint.
/// </summary>
public string ClinicText
{
[DebuggerStepThrough]
get
{
return String.Join(Environment.NewLine, Lines);
}
set
{
if (!String.IsNullOrEmpty(value))
{
Lines = value.Split(
new string[] { Environment.NewLine },
StringSplitOptions.None).ToList();
}
}
}
#endregion
#region Constructors
public ClinicTimePoint() { }
public ClinicTimePoint(
string clinicText,
Parameters parameterDictionary,
Units unitDictionary)
: this()
{
_parameterDictionary = parameterDictionary;
_unitDictionary = unitDictionary;
ClinicText = clinicText;
}
public ClinicTimePoint(string clinicText)
: this(clinicText, null, null)
{ }
public ClinicTimePoint(
IList<String> lines,
Parameters parameterDictionary,
Units unitDictionary)
: this(parameterDictionary, unitDictionary)
{
Lines = lines;
}
public ClinicTimePoint(IList<String> lines)
: this(lines, null, null)
{
}
public ClinicTimePoint(
Parameters parameterDictionary,
Units unitDictionary)
: this()
{
_parameterDictionary = parameterDictionary;
_unitDictionary = unitDictionary;
}
#endregion
#region Public methods
/// <summary>
/// Adds a new line to this time point by parsing
/// the line for a laboratory item.
/// </summary>
/// <param name="paragraph">Line to add.</param>
public override void Parse(string paragraph)
{
Lines.Add(paragraph);
ParseLine(paragraph);
}
#endregion
#region Private methods
/// <summary>
/// Analyzes each clinic line in this time point, sets the date
/// and time, and collects LabItem data.
/// </summary>
void ParseLines()
{
if (Lines != null)
{
foreach (string paragraph in Lines)
{
ParseLine(paragraph);
}
}
}
void ParseLine(string line)
{
Match m = _timeStampRegex.Match(line);
if (m.Success)
{
Logger.Info("ParseLine: Matches time stamp");
DateTime dt;
if (DateTime.TryParseExact(
m.Groups["datetime"].Value,
"dd.MM.yyyy HH:mm",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces,
out dt))
{
TimeStamp = dt;
}
}
else
{
Logger.Info("ParseLine: Not a time stamp");
ClinicLine clinicLine = new ClinicLine(
line,
_parameterDictionary,
_unitDictionary);
if (clinicLine.IsClinicLine)
{
Logger.Debug("ParseParagraph: Merging Lauris paragraph");
Items[clinicLine.Item.QualifiedName] = clinicLine.Item;
}
}
}
void AddItems(IItemDictionary items)
{
Items.Merge(items);
}
#endregion
#region Private fields
/// <summary>
/// A regular expression that matches the time stamp in the first
/// paragraph of a LaurisText.
/// </summary>
static readonly Regex _timeStampRegex = new Regex(
@"^(Labor:?)?\s*\(?\s*(?<datetime>\d\d\.\d\d\.\d\d\d\d\s+\d\d:\d\d)(:00)?\)");
IList<String> _lines;
Parameters _parameterDictionary;
Units _unitDictionary;
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion
}
}

View File

@ -0,0 +1,31 @@
/* ImportMode.cs
* part of zaaReloaded2
*
* Copyright 2017 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;
namespace zaaReloaded2.Importer
{
public enum ImportMode
{
Undefined,
Zaa,
Clinic
}
}

View File

@ -1,118 +0,0 @@
using Microsoft.Office.Interop.Word;
/* AutoDetect.cs
* part of zaaReloaded2
*
* Copyright 2015-2017 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;
namespace zaaReloaded2.Importer.ZaaImporter
{
static class AutoDetect
{
/// <summary>
/// Attempts to automatically detect laboratory data in the Word
/// document.
/// </summary>
/// <param name="document">Document which to parse for laboratory
/// data.</param>
/// <returns>True if laboratory data was detected, false if not.</returns>
/// <exception cref="ArgumentNullException">if <paramref name="document"/>
/// is null.</exception>
public static bool Detect(Document document)
{
if (document == null)
{
throw new ArgumentNullException(
"Automatic laboratory detection requires a document.");
}
// TODO: Try to make this algorithm more elegant.
Paragraph start = null;
Paragraph end = null;
int i = 1;
if (document.Bookmarks.Exists("Labor"))
{
i = GetParagraphIndex(
document,
document.Bookmarks["Labor"].Range.Paragraphs[1]);
}
while (i <= document.Paragraphs.Count)
{
// Expect the first paragraph of a Lauris block to be
// a time stamp. This prevents erroneous detection of
// lines such as "Tel. (09 31) 201-39432; -39126", which
// happen to structurally resemble a paragraph with
// laboratory items.
if (LaurisTimePoint.IsTimeStampLine(
document.Paragraphs[i].Range.Text))
{
start = document.Paragraphs[i];
break;
}
i++;
}
if (start != null)
{
end = start;
while (i <= document.Paragraphs.Count - 1)
{
if (!IsLabParagraph(document.Paragraphs[i+1]))
{
end = document.Paragraphs[i];
break;
}
i++;
}
document.Range(start.Range.Start, end.Range.End).Select();
return true;
}
return false;
}
/// <summary>
/// Returns true if a paragraph is either a time stamp line
/// or a paragraph with laboratory items.
/// </summary>
/// <param name="paragraph"></param>
/// <returns></returns>
private static bool IsLabParagraph(Paragraph paragraph)
{
string text = paragraph.Range.Text;
return (LaurisParagraph.ResemblesLaurisParagraph(text)
|| LaurisTimePoint.IsTimeStampLine(text));
}
/// <summary>
/// Returns the index of a paragraph.
/// </summary>
/// <remarks>
/// http://word.mvps.org/faqs/macrosvba/GetIndexNoOfPara.htm
/// </remarks>
/// <param name="paragraph">Paragraph whose index to return.</param>
/// <returns>Index of the paragraph.</returns>
private static int GetParagraphIndex(Document document, Paragraph paragraph)
{
return document.Range(0, paragraph.Range.Start).Paragraphs.Count;
}
}
}

View File

@ -76,6 +76,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
Name = parameterDictionary.GetCanonicalName(OriginalName); Name = parameterDictionary.GetCanonicalName(OriginalName);
AlwaysPrintLimits = parameterDictionary.GetForceReferenceDisplay(OriginalName); AlwaysPrintLimits = parameterDictionary.GetForceReferenceDisplay(OriginalName);
IsBlacklisted = parameterDictionary.GetIsBlacklisted(OriginalName); IsBlacklisted = parameterDictionary.GetIsBlacklisted(OriginalName);
SuppressLabel = parameterDictionary.GetSuppressLabel(OriginalName);
Material = parameterDictionary.GetMaterial(OriginalName, Material); Material = parameterDictionary.GetMaterial(OriginalName, Material);
PreferredPrecision = parameterDictionary.GetPrecision(OriginalName); PreferredPrecision = parameterDictionary.GetPrecision(OriginalName);
} }

View File

@ -169,7 +169,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
/// the paragraph for laboratory items. /// the paragraph for laboratory items.
/// </summary> /// </summary>
/// <param name="paragraph">Paragraph to add.</param> /// <param name="paragraph">Paragraph to add.</param>
public void AddParagraph(string paragraph) public override void Parse(string paragraph)
{ {
Paragraphs.Add(paragraph); Paragraphs.Add(paragraph);
ParseParagraph(paragraph); ParseParagraph(paragraph);

View File

@ -30,106 +30,30 @@ namespace zaaReloaded2.Importer.ZaaImporter
/// Imports laboratory items by parsing the Lauris data from a /// Imports laboratory items by parsing the Lauris data from a
/// physician's letter. /// physician's letter.
/// </summary> /// </summary>
public class ZaaImporter : IImporter public class ZaaImporter : BaseImporter
{ {
#region IImporter implementation
public Laboratory Laboratory
{
[DebuggerStepThrough]
get
{
if (_laboratory == null)
{
_laboratory = new Laboratory();
}
return _laboratory;
}
[DebuggerStepThrough]
set
{
_laboratory = value;
}
}
public bool Success
{
get
{
return Laboratory.TimePoints.Count > 0;
}
}
/// <summary>
/// Splits the <paramref name="text"/> into individual time points
/// and creates <see cref="LaurisTimePoint"/> objects from them.
/// </summary>
/// <param name="text">ZAA-formatted Lauris output to import.</param>
public void Import(string text)
{
Logger.Info("Import: \"{0}\"", text.TruncateWithEllipsis(120));
string[] paragraphs = Helpers.SplitParagraphs(text);
Logger.Info("Import: {0} paragraph(s)", paragraphs.Length);
LaurisTimePoint timePoint = null;
foreach (string paragraph in paragraphs)
{
Logger.Info("Import: \"{0}\"", paragraph.TruncateWithEllipsis(40));
// If the current paragraph looks like a Lauris time stamp,
// create a new time point.
if (LaurisTimePoint.IsTimeStampLine(paragraph))
{
Logger.Info("Import: Time stamp detected", paragraph);
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
{
Laboratory.AddTimePoint(timePoint);
}
}
// If the current paragraph looks like a paragraph with
// laboratory items, add it to the current time point;
// if no time point exists yet, create one.
else if (LaurisParagraph.ResemblesLaurisParagraph(paragraph))
{
Logger.Info("Import: Lauris paragraph detected");
if (timePoint == null)
{
timePoint = new LaurisTimePoint(_parameters, _units);
Laboratory.AddTimePoint(timePoint);
}
timePoint.AddParagraph(paragraph);
}
else
{
Logger.Debug("Import: Neither time stamp, nor Lauris paragraph");
}
}
}
#endregion
#region Constructor #region Constructor
public ZaaImporter() public ZaaImporter() : base() { }
{
_parameters = Parameters.Default;
_units = Units.Default;
}
#endregion #endregion
#region Fields #region Implementation of BaseImporter
Laboratory _laboratory; protected override TimePoint CreateTimePoint(string paragraph, Parameters parameters, Units units)
Parameters _parameters; {
Units _units; return new LaurisTimePoint(paragraph, parameters, units);
}
protected override bool IsTimeStamp(string paragraph)
{
return LaurisTimePoint.IsTimeStampLine(paragraph);
}
protected override bool IsItemsParagraph(string paragraph)
{
return LaurisParagraph.ResemblesLaurisParagraph(paragraph);
}
#endregion #endregion

View File

@ -230,6 +230,11 @@ namespace zaaReloaded2.LabModel
/// </summary> /// </summary>
public bool IsBlacklisted { get; protected set; } public bool IsBlacklisted { get; protected set; }
/// <summary>
/// Gets whether the item's label should be suppressed.
/// </summary>
public bool SuppressLabel { get; protected set; }
#endregion #endregion
#region Constructors #region Constructors

View File

@ -43,6 +43,9 @@ namespace zaaReloaded2.LabModel
[Description("Sammelurin")] [Description("Sammelurin")]
/// Collected urine /// Collected urine
SU, SU,
[Description("Mittelstrahlurin")]
/// Collected urine
MSU,
} }
/// <summary> /// <summary>

View File

@ -68,6 +68,7 @@ namespace zaaReloaded2.LabModel
{ {
if (String.IsNullOrEmpty(item.QualifiedName)) if (String.IsNullOrEmpty(item.QualifiedName))
{ {
Logger.Fatal("Cannot add item without QualifiedName!");
throw new ArgumentException("Cannot add item that has no qualified name."); throw new ArgumentException("Cannot add item that has no qualified name.");
} }
Items.Add(item.QualifiedName, item); Items.Add(item.QualifiedName, item);
@ -84,8 +85,10 @@ namespace zaaReloaded2.LabModel
public void MergeItems(TimePoint otherTimePoint) public void MergeItems(TimePoint otherTimePoint)
{ {
if (otherTimePoint == null) if (otherTimePoint == null)
{
Logger.Fatal("Cannot merge null!");
throw new ArgumentNullException("otherTimePoint"); throw new ArgumentNullException("otherTimePoint");
}
Items.Merge(otherTimePoint.Items); Items.Merge(otherTimePoint.Items);
} }
@ -101,6 +104,21 @@ namespace zaaReloaded2.LabModel
return Items.ContainsKey(item); return Items.ContainsKey(item);
} }
public virtual void Parse(string paragraph)
{
NotImplementedException e = new NotImplementedException("Cannot parse paragraph in base class - derived class must override Parse");
Logger.Fatal(e);
throw e;
}
#endregion
#region Class logger
private static NLog.Logger Logger { get { return _logger.Value; } }
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
#endregion #endregion
} }
} }

View File

@ -34,7 +34,7 @@ namespace zaaReloaded2.Properties {
[global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("2016")] [global::System.Configuration.DefaultSettingValueAttribute("2017")]
public string PubYear { public string PubYear {
get { get {
return ((string)(this["PubYear"])); return ((string)(this["PubYear"]));
@ -52,7 +52,7 @@ namespace zaaReloaded2.Properties {
[global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded")] [global::System.Configuration.DefaultSettingValueAttribute("https://www.doktorkraus.de/zaareloaded")]
public global::System.Uri Homepage { public global::System.Uri Homepage {
get { get {
return ((global::System.Uri)(this["Homepage"])); return ((global::System.Uri)(this["Homepage"]));
@ -61,7 +61,7 @@ namespace zaaReloaded2.Properties {
[global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded/versioninfo.txt")] [global::System.Configuration.DefaultSettingValueAttribute("https://www.doktorkraus.de/zaareloaded/versioninfo.txt")]
public string VersionInfoFile { public string VersionInfoFile {
get { get {
return ((string)(this["VersionInfoFile"])); return ((string)(this["VersionInfoFile"]));
@ -70,7 +70,7 @@ namespace zaaReloaded2.Properties {
[global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded/postreport.php")] [global::System.Configuration.DefaultSettingValueAttribute("https://www.doktorkraus.de/zaareloaded/postreport.php")]
public string ExceptionPostUrl { public string ExceptionPostUrl {
get { get {
return ((string)(this["ExceptionPostUrl"])); return ((string)(this["ExceptionPostUrl"]));

View File

@ -6,19 +6,19 @@
<Value Profile="(Default)">zaaReloaded2</Value> <Value Profile="(Default)">zaaReloaded2</Value>
</Setting> </Setting>
<Setting Name="PubYear" Type="System.String" Scope="Application"> <Setting Name="PubYear" Type="System.String" Scope="Application">
<Value Profile="(Default)">2016</Value> <Value Profile="(Default)">2017</Value>
</Setting> </Setting>
<Setting Name="Authors" Type="System.String" Scope="Application"> <Setting Name="Authors" Type="System.String" Scope="Application">
<Value Profile="(Default)">Daniel Kraus</Value> <Value Profile="(Default)">Daniel Kraus</Value>
</Setting> </Setting>
<Setting Name="Homepage" Type="System.Uri" Scope="Application"> <Setting Name="Homepage" Type="System.Uri" Scope="Application">
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded</Value> <Value Profile="(Default)">https://www.doktorkraus.de/zaareloaded</Value>
</Setting> </Setting>
<Setting Name="VersionInfoFile" Type="System.String" Scope="Application"> <Setting Name="VersionInfoFile" Type="System.String" Scope="Application">
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded/versioninfo.txt</Value> <Value Profile="(Default)">https://www.doktorkraus.de/zaareloaded/versioninfo.txt</Value>
</Setting> </Setting>
<Setting Name="ExceptionPostUrl" Type="System.String" Scope="Application"> <Setting Name="ExceptionPostUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded/postreport.php</Value> <Value Profile="(Default)">https://www.doktorkraus.de/zaareloaded/postreport.php</Value>
</Setting> </Setting>
<Setting Name="LicenseUrl" Type="System.Uri" Scope="Application"> <Setting Name="LicenseUrl" Type="System.Uri" Scope="Application">
<Value Profile="(Default)">http://www.apache.org/licenses/LICENSE-2.0</Value> <Value Profile="(Default)">http://www.apache.org/licenses/LICENSE-2.0</Value>

View File

@ -4,7 +4,7 @@
Ribbon.xml Ribbon.xml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -27,7 +27,7 @@
<button id="zrlFormatLab" label="Formatieren" image="f.png" onAction="Ribbon_Click" size="large" <button id="zrlFormatLab" label="Formatieren" image="f.png" onAction="Ribbon_Click" size="large"
supertip="Formatiert den ausgewählten Bereich mit dem zuletzt verwendeten Stil." supertip="Formatiert den ausgewählten Bereich mit dem zuletzt verwendeten Stil."
getEnabled="CanFormat" /> getEnabled="CanFormat" />
<button id="zrlSettings" label="Stilauswahl" image="fff.png" onAction="Ribbon_Click" size="large" <button id="zrlSettings" label="Stile verwalten" image="fff.png" onAction="Ribbon_Click" size="large"
supertip="Zeigt eine Liste vorhandener Stile an. Stile können bearbeitet, hinzugefügt, gelöscht werden." /> supertip="Zeigt eine Liste vorhandener Stile an. Stile können bearbeitet, hinzugefügt, gelöscht werden." />
</group> </group>
<group id="zrlGroupDrugs" label="Medikamente"> <group id="zrlGroupDrugs" label="Medikamente">

View File

@ -2,7 +2,7 @@
Style.xaml Style.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -126,6 +126,19 @@ namespace zaaReloaded2.Thesaurus
{ {
return LookUpValue(laurisName, 5, false); return LookUpValue(laurisName, 5, false);
} }
/// <summary>
/// Checks whether an item's label should be suppressed or not.
/// </summary>
/// <param name="laurisName">Laboratory item to lok up;
/// this must be an original Lauris string.</param>
/// <returns>True if the item should *not* be labelled,
/// false if not. Default is false (i.e., labels are .</returns>
public bool GetSuppressLabel(string laurisName)
{
return LookUpValue(laurisName, 6, false);
}
#endregion #endregion
#region Overrides #region Overrides

View File

@ -19,12 +19,14 @@ using System;
using System.IO; using System.IO;
using Bovender.Versioning; using Bovender.Versioning;
using Bovender.Mvvm.Messaging; using Bovender.Mvvm.Messaging;
using Bovender.Extensions;
using zaaReloaded2.ExceptionHandler; using zaaReloaded2.ExceptionHandler;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Media; using System.Windows.Media;
using System.Configuration; using System.Configuration;
using System.Windows.Threading;
namespace zaaReloaded2 namespace zaaReloaded2
{ {
@ -71,7 +73,8 @@ namespace zaaReloaded2
Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback; Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback;
Bovender.Win32Window.MainWindowHandleProvider = () => Bovender.Win32Window.MainWindowHandleProvider = () =>
{ {
return IntPtr.Zero; return System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
// return IntPtr.Zero;
}; };
Bovender.WpfHelpers.RegisterTextBoxSelectAll(); Bovender.WpfHelpers.RegisterTextBoxSelectAll();
UserSettings userSettings = UserSettings.Default; UserSettings userSettings = UserSettings.Default;
@ -87,7 +90,12 @@ namespace zaaReloaded2
Updater.Version.Current.ToString() Updater.Version.Current.ToString()
); );
ViewModels.FirstRunViewModel.InjectIntoIfNeeded<Views.FirstRunView>(); _dispatcher = Dispatcher.CurrentDispatcher;
System.Threading.Timer timer = new System.Threading.Timer((obj) =>
{
_dispatcher.Invoke((Action)(() => ViewModels.FirstRunViewModel.InjectIntoIfNeeded<Views.FirstRunView>()), null);
}, null, 500, System.Threading.Timeout.Infinite);
Logger.Info("ThisAddIn_Startup: Finished startup"); Logger.Info("ThisAddIn_Startup: Finished startup");
} }
@ -172,7 +180,7 @@ namespace zaaReloaded2
{ {
e.IsHandled = true; e.IsHandled = true;
ExceptionViewModel vm = new ExceptionViewModel(e.Exception); ExceptionViewModel vm = new ExceptionViewModel(e.Exception);
vm.InjectInto<ExceptionView>().ShowDialog(); vm.InjectInto<ExceptionView>().ShowDialogInForm();
} }
#endregion #endregion
@ -182,6 +190,7 @@ namespace zaaReloaded2
Ribbon _ribbon; Ribbon _ribbon;
string _oldCaption; string _oldCaption;
UpdaterViewModel _updaterVM; UpdaterViewModel _updaterVM;
Dispatcher _dispatcher;
#endregion #endregion

View File

@ -150,7 +150,7 @@ namespace zaaReloaded2
} }
} }
public string SettingsRepository { get; set; } public Controller.SettingsRepository SettingsRepository { get; set; }
[YamlDotNet.Serialization.YamlIgnore] [YamlDotNet.Serialization.YamlIgnore]
public bool FirstRun { get { return LastVersionSeen == DEFAULT_VERSION; } } public bool FirstRun { get { return LastVersionSeen == DEFAULT_VERSION; } }
@ -174,6 +174,11 @@ namespace zaaReloaded2
return UserSettingsFile; return UserSettingsFile;
} }
protected override YamlDotNet.Serialization.SerializerBuilder ConstructSerializerBuilder()
{
return base.ConstructSerializerBuilder().EnsureRoundtrip();
}
#endregion #endregion
#region Constructor #region Constructor

View File

@ -1,2 +1,2 @@
2.2.6 2.4.2
2.2.6.0 2.4.2.0

View File

@ -19,6 +19,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Bovender.Extensions;
using Bovender.Mvvm; using Bovender.Mvvm;
using Bovender.Mvvm.ViewModels; using Bovender.Mvvm.ViewModels;
@ -43,7 +44,7 @@ namespace zaaReloaded2.ViewModels
if (UserSettings.Default.FirstRun) if (UserSettings.Default.FirstRun)
{ {
FirstRunViewModel vm = new FirstRunViewModel(); FirstRunViewModel vm = new FirstRunViewModel();
vm.InjectInto<T>().Show(); vm.InjectInto<T>().ShowInForm();
} }
} }

View File

@ -350,11 +350,17 @@ namespace zaaReloaded2.ViewModels
void ConfirmDeleteSettings(ViewModelMessageContent content) void ConfirmDeleteSettings(ViewModelMessageContent content)
{ {
SettingsViewModel vm = content.ViewModel as SettingsViewModel; SettingsViewModel vm = content.ViewModel as SettingsViewModel;
int oldIndex = SettingsList.IndexOf(vm);
if (CanDeleteSettings() && content.Confirmed) if (CanDeleteSettings() && content.Confirmed)
{ {
_repository.SettingsList.Remove(vm.RevealModelObject() as Settings); _repository.SettingsList.Remove(vm.RevealModelObject() as Settings);
SettingsList.Remove(vm); SettingsList.Remove(vm);
} }
int newIndex = (oldIndex < SettingsList.Count) ? oldIndex : SettingsList.Count - 1;
if (newIndex >= 0)
{
SettingsList[newIndex].IsSelected = true;
}
} }
void DoResetSettings() void DoResetSettings()
@ -424,6 +430,7 @@ namespace zaaReloaded2.ViewModels
{ {
settingsViewModel.PropertyChanged += SettingsViewModel_PropertyChanged; settingsViewModel.PropertyChanged += SettingsViewModel_PropertyChanged;
SettingsList.Add(settingsViewModel); SettingsList.Add(settingsViewModel);
settingsViewModel.IsSelected = true;
} }
void DoExportSettings() void DoExportSettings()
@ -431,7 +438,7 @@ namespace zaaReloaded2.ViewModels
if (CanExportSettings()) if (CanExportSettings())
{ {
ChooseExportFileNameMessage.Send( ChooseExportFileNameMessage.Send(
new FileNameMessageContent(SuggestImportExportPath(), FILE_FILTER), new FileNameMessageContent(SuggestExportPath(), FILE_FILTER),
msg => ConfirmExportSettings(msg)); msg => ConfirmExportSettings(msg));
} }
} }
@ -445,7 +452,7 @@ namespace zaaReloaded2.ViewModels
{ {
if (message.Confirmed) if (message.Confirmed)
{ {
UserSettings.Default.ImportExportPath = message.Value; SaveImportExportDir(message.Value);
Settings settings = LastSelected.RevealModelObject() as Settings; Settings settings = LastSelected.RevealModelObject() as Settings;
try try
{ {
@ -463,7 +470,7 @@ namespace zaaReloaded2.ViewModels
void DoImportSettings() void DoImportSettings()
{ {
ChooseImportFileNameMessage.Send( ChooseImportFileNameMessage.Send(
new FileNameMessageContent(SuggestImportExportPath(), FILE_FILTER), new FileNameMessageContent(SuggestImportPath(), FILE_FILTER),
msg => ConfirmImportSettings(msg)); msg => ConfirmImportSettings(msg));
} }
@ -476,10 +483,19 @@ namespace zaaReloaded2.ViewModels
{ {
if (message.Confirmed) if (message.Confirmed)
{ {
UserSettings.Default.ImportExportPath = message.Value; SaveImportExportDir(message.Value);
try try
{ {
Settings settings = Settings.LoadFromFile(message.Value); Settings settings = Settings.LoadFromFile(message.Value);
// Attempt to find a unique name by adding a suffix, if necessary
string suffixedName = settings.Name;
while (_repository.SettingsList.FirstOrDefault(s => s.Name == suffixedName) != null)
{
string suffix = System.DateTime.Now.ToString();
suffixedName = String.Format("{0} ({1})", settings.Name, suffix);
}
settings.Name = suffixedName;
_repository.SettingsList.Add(settings);
AddSettingsViewModel(new SettingsViewModel(settings)); AddSettingsViewModel(new SettingsViewModel(settings));
} }
catch (Exception e) catch (Exception e)
@ -491,9 +507,9 @@ namespace zaaReloaded2.ViewModels
} }
} }
string SuggestImportExportPath() string SuggestImportPath()
{ {
string path = UserSettings.Default.ImportExportPath; string path = Bovender.PathHelpers.GetDirectoryPart(UserSettings.Default.ImportExportPath);
if (String.IsNullOrEmpty(path)) if (String.IsNullOrEmpty(path))
{ {
return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
@ -504,6 +520,18 @@ namespace zaaReloaded2.ViewModels
} }
} }
string SuggestExportPath()
{
Settings settings = LastSelected.RevealModelObject() as Settings;
string fileName = settings.Name;
return System.IO.Path.Combine(SuggestImportPath(), fileName);
}
void SaveImportExportDir(string path)
{
UserSettings.Default.ImportExportPath = Bovender.PathHelpers.GetDirectoryPart(path);
}
#endregion #endregion
#region Implementation of ViewModelBase #region Implementation of ViewModelBase
@ -543,7 +571,7 @@ namespace zaaReloaded2.ViewModels
/// File filter that is used for the import and export /// File filter that is used for the import and export
/// of settings. /// of settings.
/// </summary> /// </summary>
const string FILE_FILTER = "zaaReloaded-Stildatei (*.zaaReloaded)|*.zaaReloaded"; const string FILE_FILTER = "zaaReloaded-Stildatei (*.zaaReloaded2)|*.zaaReloaded2";
#endregion #endregion
} }

View File

@ -185,6 +185,19 @@ namespace zaaReloaded2.ViewModels
} }
} }
public bool PreferVerboseMolar
{
get
{
return _settings.PreferVerboseMolar;
}
set
{
_settings.PreferVerboseMolar = value;
OnPropertyChanged("PreferVerboseMolar");
}
}
#endregion #endregion
#region Constructors #region Constructors

View File

@ -2,7 +2,7 @@
AboutView.xaml AboutView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,6 +23,7 @@
Width="360" SizeToContent="Height" ResizeMode="NoResize" ShowInTaskbar="False" Width="360" SizeToContent="Height" ResizeMode="NoResize" ShowInTaskbar="False"
b:WindowState.CenterScreen="True" b:WindowState.CenterScreen="True"
Title="Über..." Title="Über..."
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />

View File

@ -2,7 +2,7 @@
ElementPickerView.xaml ElementPickerView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,11 +21,12 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
Width="280" Height="320" ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" Width="360" Height="320"
WindowStyle="ToolWindow" Topmost="True" ShowInTaskbar="False" ResizeMode="NoResize"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Neues Element auswählen" Title="Neues Element auswählen"
FocusManager.FocusedElement="{Binding ElementName=treeview}" FocusManager.FocusedElement="{Binding ElementName=treeview}"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />

View File

@ -2,7 +2,7 @@
ElementView.xaml ElementView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,12 +21,12 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" ResizeMode="NoResize" ShowInTaskbar="False"
WindowStyle="ToolWindow" Topmost="True" Width="460" Height="180" MinWidth="280" MinHeight="180"
Width="280" Height="180" MinWidth="280" MinHeight="180"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Element bearbeiten" Title="Element bearbeiten"
FocusManager.FocusedElement="{Binding ElementName=ContentTextBox}" FocusManager.FocusedElement="{Binding ElementName=ContentTextBox}"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />

View File

@ -2,7 +2,7 @@
FirstRunView.xaml FirstRunView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,10 +23,11 @@
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender" xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True" ResizeMode="NoResize" ShowInTaskbar="False"
SizeToContent="Height" Width="480" SizeToContent="Height" Width="480"
b:WindowState.CenterScreen="True" b:WindowState.CenterScreen="True"
Title="Willkommen bei zaaReloaded" Title="Willkommen bei zaaReloaded"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />

View File

@ -2,7 +2,7 @@
IoErrorView.xaml IoErrorView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -22,10 +22,10 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
SizeToContent="WidthAndHeight" MaxWidth="480" SizeToContent="WidthAndHeight" MaxWidth="480"
WindowStyle="ToolWindow" Topmost="True"
ResizeMode="NoResize" ShowInTaskbar="False" ResizeMode="NoResize" ShowInTaskbar="False"
b:WindowState.CenterScreen="True" b:WindowState.CenterScreen="True"
Title="Import/Export-Fehler" Title="Import/Export-Fehler"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />
@ -38,7 +38,7 @@
</TextBlock.Effect> </TextBlock.Effect>
</TextBlock> </TextBlock>
<StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Right" Margin="0 10 0 0"> <StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Right" Margin="0 10 0 0">
<Button Content="Schließen" Command="{Binding CloseViewCommand}" /> <Button Content="Schließen" IsCancel="True" IsDefault="True" Command="{Binding CloseViewCommand}" />
</StackPanel> </StackPanel>
<StackPanel> <StackPanel>
<TextBlock TextWrapping="Wrap"> <TextBlock TextWrapping="Wrap">
@ -47,7 +47,8 @@
<TextBlock Margin="0 10 0 0"> <TextBlock Margin="0 10 0 0">
Fehlermeldung: Fehlermeldung:
</TextBlock> </TextBlock>
<TextBlock Margin="0 5 0 0" Text="{Binding Message}" /> <TextBlock Margin="0 5 0 0" Text="{Binding Message}"
TextWrapping="Wrap" Foreground="Crimson" />
</StackPanel> </StackPanel>
</DockPanel> </DockPanel>
</Window> </Window>

View File

@ -2,7 +2,7 @@
ItemCommentView.xaml ItemCommentView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,12 +21,12 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" ResizeMode="NoResize" ShowInTaskbar="False"
WindowStyle="ToolWindow" Topmost="True"
SizeToContent="WidthAndHeight" MaxWidth="500" SizeToContent="WidthAndHeight" MaxWidth="500"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Kommentar angeben" Title="Kommentar angeben"
FocusManager.FocusedElement="{Binding ElementName=ValueTextBox}" FocusManager.FocusedElement="{Binding ElementName=ValueTextBox}"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />
@ -42,7 +42,7 @@
<TextBlock DockPanel.Dock="Left" Text="{Binding Prefix}" VerticalAlignment="Center" /> <TextBlock DockPanel.Dock="Left" Text="{Binding Prefix}" VerticalAlignment="Center" />
<TextBlock DockPanel.Dock="Right" Text="{Binding Suffix}" VerticalAlignment="Center" /> <TextBlock DockPanel.Dock="Right" Text="{Binding Suffix}" VerticalAlignment="Center" />
<TextBox Text="{Binding Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" <TextBox Text="{Binding Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
MinWidth="120" MaxWidth="240" VerticalAlignment="Center" MinWidth="240" MaxWidth="240" VerticalAlignment="Center"
x:Name="ValueTextBox" Margin="5 0 5 0" /> x:Name="ValueTextBox" />
</DockPanel> </DockPanel>
</Window> </Window>

View File

@ -2,7 +2,7 @@
PreferencesView.xaml PreferencesView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -24,9 +24,10 @@
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender" xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
SizeToContent="WidthAndHeight" ResizeMode="NoResize" SizeToContent="WidthAndHeight" ResizeMode="NoResize"
ShowInTaskbar="False" Topmost="True" ShowInTaskbar="False"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Einstellungen" Title="Einstellungen"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />

View File

@ -2,7 +2,7 @@
AboutView - Copy.xaml AboutView - Copy.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,9 +23,9 @@
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender" xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
Width="480" Height="340" Width="540" Height="360"
MinWidth="420" MinHeight="340" WindowStyle="ToolWindow" Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" ShowInTaskbar="False" ResizeMode="NoResize"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Stil auswählen" Title="Stil auswählen"
FocusManager.FocusedElement="{Binding ElementName=settingsList}" FocusManager.FocusedElement="{Binding ElementName=settingsList}"
@ -66,7 +66,7 @@
ToolTip="Stil auswählen und Textblock damit formatieren (Enter)"> ToolTip="Stil auswählen und Textblock damit formatieren (Enter)">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Image Source="/zaaReloaded2;component/Icons/f.png" Width="32" /> <Image Source="/zaaReloaded2;component/Icons/f.png" Width="32" />
<TextBlock VerticalAlignment="Center" Margin="10 0 0 0">Auswählen</TextBlock> <TextBlock VerticalAlignment="Center" Margin="10 0 0 0">Auswählen &amp; formatieren</TextBlock>
</StackPanel> </StackPanel>
</Button> </Button>
<UniformGrid Columns="2" Margin="0 10 0 0" x:Name="buttonsPanel"> <UniformGrid Columns="2" Margin="0 10 0 0" x:Name="buttonsPanel">

View File

@ -2,7 +2,7 @@
SettingsView.xaml SettingsView.xaml
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -23,12 +23,13 @@
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender" xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender" xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
Width="460" Height="400" ResizeMode="CanResizeWithGrip" ShowInTaskbar="False" Width="640" Height="460"
MinWidth="460" MinHeight="400" ResizeMode="CanResizeWithGrip" ShowInTaskbar="True"
WindowStyle="ToolWindow" Topmost="True" MinWidth="460" MinHeight="460"
b:WindowState.CenterScreen="True" b:WindowState.Save="True" b:WindowState.CenterScreen="True" b:WindowState.Save="True"
Title="Stil bearbeiten" Title="Stil bearbeiten"
FocusManager.FocusedElement="{Binding ElementName=NameTextBox}" FocusManager.FocusedElement="{Binding ElementName=NameTextBox}"
Icon="pack://application:,,,/zaaReloaded2;component/Icons/icon.png"
> >
<Window.Resources> <Window.Resources>
<ResourceDictionary Source="/Bovender;component/Style.xaml" /> <ResourceDictionary Source="/Bovender;component/Style.xaml" />
@ -77,6 +78,14 @@
</ToggleButton> </ToggleButton>
</StackPanel> </StackPanel>
</DockPanel> </DockPanel>
<DockPanel DockPanel.Dock="Top" Margin="5 10 0 0">
<StackPanel Orientation="Horizontal">
<Label Content="Einheiten:" Padding="0 0 10 0" />
<CheckBox IsChecked="{Binding PreferVerboseMolar}">
mmol/l statt mM
</CheckBox>
</StackPanel>
</DockPanel>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right"> <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Command="{Binding CloseViewCommand}" Content="Schließen" IsDefault="True" IsCancel="True" <Button Command="{Binding CloseViewCommand}" Content="Schließen" IsDefault="True" IsCancel="True"
Margin="0 10 0 0" /> Margin="0 10 0 0" />

View File

@ -4,7 +4,7 @@
app.config app.config
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -30,19 +30,19 @@
<value>zaaReloaded2</value> <value>zaaReloaded2</value>
</setting> </setting>
<setting name="PubYear" serializeAs="String"> <setting name="PubYear" serializeAs="String">
<value>2016</value> <value>2017</value>
</setting> </setting>
<setting name="Authors" serializeAs="String"> <setting name="Authors" serializeAs="String">
<value>Daniel Kraus</value> <value>Daniel Kraus</value>
</setting> </setting>
<setting name="Homepage" serializeAs="String"> <setting name="Homepage" serializeAs="String">
<value>https://doktorkraus.de/zaareloaded</value> <value>https://www.doktorkraus.de/zaareloaded</value>
</setting> </setting>
<setting name="VersionInfoFile" serializeAs="String"> <setting name="VersionInfoFile" serializeAs="String">
<value>https://doktorkraus.de/zaareloaded/versioninfo.txt</value> <value>https://www.doktorkraus.de/zaareloaded/versioninfo.txt</value>
</setting> </setting>
<setting name="ExceptionPostUrl" serializeAs="String"> <setting name="ExceptionPostUrl" serializeAs="String">
<value>https://doktorkraus.de/zaareloaded/postreport.php</value> <value>https://www.doktorkraus.de/zaareloaded/postreport.php</value>
</setting> </setting>
<setting name="LicenseUrl" serializeAs="String"> <setting name="LicenseUrl" serializeAs="String">
<value>http://www.apache.org/licenses/LICENSE-2.0</value> <value>http://www.apache.org/licenses/LICENSE-2.0</value>
@ -101,7 +101,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" /> <assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.9.0.0" newVersion="3.9.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>

View File

@ -4,7 +4,7 @@
packages.config packages.config
part of zaaReloaded2 part of zaaReloaded2
Copyright 2015 Daniel Kraus Copyright 2015-2017 Daniel Kraus
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -19,8 +19,8 @@
limitations under the License. limitations under the License.
--> -->
<packages> <packages>
<package id="Bovender" version="0.16.2.0" targetFramework="net40" /> <package id="Bovender" version="0.17.0.0" targetFramework="net40" />
<package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" /> <package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" />
<package id="NLog" version="4.3.7" targetFramework="net40" /> <package id="YamlDotNet.Signed" version="4.1.0" targetFramework="net40" />
<package id="YamlDotNet.Signed" version="3.9.0" targetFramework="net40" /> <package id="NLog" version="4.4.12" targetFramework="net40" />
</packages> </packages>

View File

@ -134,13 +134,13 @@
--> -->
<ItemGroup> <ItemGroup>
<Reference Include="Accessibility" /> <Reference Include="Accessibility" />
<Reference Include="Bovender, Version=0.16.2.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL"> <Reference Include="Bovender, Version=0.17.0.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
<HintPath>..\packages\Bovender.0.16.2.0\lib\net40\Bovender.dll</HintPath> <HintPath>..\packages\Bovender.0.17.0.0\lib\net40\Bovender.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Microsoft.Expression.Interactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> <Reference Include="Microsoft.Expression.Interactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath> <HintPath>..\packages\NLog.4.4.12\lib\net40\NLog.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
@ -161,8 +161,8 @@
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="YamlDotNet, Version=3.9.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL"> <Reference Include="YamlDotNet, Version=4.1.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
<HintPath>..\packages\YamlDotNet.Signed.3.9.0\lib\net35\YamlDotNet.dll</HintPath> <HintPath>..\packages\YamlDotNet.Signed.4.1.0\lib\net35\YamlDotNet.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
@ -204,7 +204,11 @@
<ItemGroup> <ItemGroup>
<Compile Include="Commands.cs" /> <Compile Include="Commands.cs" />
<Compile Include="Helpers.cs" /> <Compile Include="Helpers.cs" />
<Compile Include="Importer\ZaaImporter\AutoDetect.cs" /> <Compile Include="Importer\ClinicImporter\ClinicLine.cs" />
<Compile Include="Importer\ClinicImporter\ClinicTimePoint.cs" />
<Compile Include="Importer\ClinicImporter\ClinicImporter.cs" />
<Compile Include="Importer\BaseImporter.cs" />
<Compile Include="Importer\AutoDetector.cs" />
<Compile Include="Controller\Comments\CommentPool.cs" /> <Compile Include="Controller\Comments\CommentPool.cs" />
<Compile Include="Controller\Elements\ControlElementBase.cs" /> <Compile Include="Controller\Elements\ControlElementBase.cs" />
<Compile Include="Controller\Elements\FormatElementBase.cs" /> <Compile Include="Controller\Elements\FormatElementBase.cs" />
@ -231,6 +235,7 @@
<Compile Include="Formatter\DanielsStyle.cs" /> <Compile Include="Formatter\DanielsStyle.cs" />
<Compile Include="Formatter\DocumentWriter.cs" /> <Compile Include="Formatter\DocumentWriter.cs" />
<Compile Include="Formatter\NoLaboratoryDataException.cs" /> <Compile Include="Formatter\NoLaboratoryDataException.cs" />
<Compile Include="Importer\ImportMode.cs" />
<Compile Include="LogFile.cs" /> <Compile Include="LogFile.cs" />
<Compile Include="Medication\Formatter.cs" /> <Compile Include="Medication\Formatter.cs" />
<Compile Include="Medication\Importer.cs" /> <Compile Include="Medication\Importer.cs" />
@ -319,8 +324,8 @@
</Compile> </Compile>
<None Include="app.config" /> <None Include="app.config" />
<EmbeddedResource Include="Demo\Demo.docx" /> <EmbeddedResource Include="Demo\Demo.docx" />
<EmbeddedResource Include="Defaults\clinic.zaaReloaded" /> <EmbeddedResource Include="Defaults\clinic.zaaReloaded2" />
<EmbeddedResource Include="Defaults\ward.zaaReloaded" /> <EmbeddedResource Include="Defaults\ward.zaaReloaded2" />
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
@ -466,6 +471,7 @@
<ItemGroup> <ItemGroup>
<Resource Include="Icons\mm.png" /> <Resource Include="Icons\mm.png" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<PropertyGroup> <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>