Add importer for clinic system.
- Neu: Laborwerte, die vom Ambulanzsystem ausgegeben wurden, können jetzt auch verarbeitet werden.
This commit is contained in:
55
Tests/Importer/ClinicImporter/ClinicImporterTest.cs
Executable file
55
Tests/Importer/ClinicImporter/ClinicImporterTest.cs
Executable 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);
|
||||
}
|
||||
}
|
||||
}
|
56
Tests/Importer/ClinicImporter/ClinicItemTest.cs
Executable file
56
Tests/Importer/ClinicImporter/ClinicItemTest.cs
Executable 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");
|
||||
}
|
||||
}
|
||||
}
|
45
Tests/Importer/ClinicImporter/ClinicLineTest.cs
Executable file
45
Tests/Importer/ClinicImporter/ClinicLineTest.cs
Executable 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);
|
||||
}
|
||||
}
|
||||
}
|
67
Tests/Importer/ClinicImporter/TimePointTest.cs
Executable file
67
Tests/Importer/ClinicImporter/TimePointTest.cs
Executable 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'.");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user