Fix material convertsion and units detection.

This commit is contained in:
Daniel Kraus 2015-08-10 06:55:57 +02:00
parent 6c9f003134
commit 947b53cf97
5 changed files with 44 additions and 12 deletions

View File

@ -99,6 +99,25 @@ namespace Tests.Formatter
_document.Range().Text); _document.Range().Text);
} }
[Test]
public void FormatSpecialItems()
{
ZaaImporter importer = new ZaaImporter();
importer.Import(
"Klinische Chemie: glomerul. Filtrationsr. CKD-EP: 36 ml/min /1,73qm; " +
"Sammelmenge (U): 12300 ml; "
);
Document document = new Document();
f.Formatter formatter = new f.Formatter(document);
formatter.Laboratory = importer.Laboratory;
formatter.Settings = new zaaReloaded2.Controller.Settings(
new List<ElementBase>() { new Items("*") } );
formatter.Run();
Assert.AreEqual(
"eGFR (CKD-EPI) 36 ml/min/1,73 m², SU-Volumen 12300 ml\r\r",
document.Range().Text);
}
string GetResourceText(string resource) string GetResourceText(string resource)
{ {
try try

View File

@ -139,7 +139,6 @@ namespace zaaReloaded2.Controller.Elements
{ {
items.AddRange(CollectByName(formatter, itemName)); items.AddRange(CollectByName(formatter, itemName));
} }
} }
return items; return items;
} }
@ -158,6 +157,9 @@ namespace zaaReloaded2.Controller.Elements
.Where(i => !i.HasBeenUsed && !i.IsBlacklisted && i.LabItem.QualifiedName.StartsWith(material)) .Where(i => !i.HasBeenUsed && !i.IsBlacklisted && i.LabItem.QualifiedName.StartsWith(material))
.ToList(); .ToList();
newItems.ForEach(i => i.HasBeenUsed = true); newItems.ForEach(i => i.HasBeenUsed = true);
// Include the material prefix only if this item was collected by a
// general wildcard ("*" rather than "SU-*" etc.).
newItems.ForEach(i => i.IncludeMaterial = String.IsNullOrEmpty(material));
items.AddRange(newItems); items.AddRange(newItems);
} }
return items; return items;

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);
Material = parameterDictionary.GetMaterial(OriginalName, Material);
} }
if (unitDictionary != null) if (unitDictionary != null)
{ {
@ -165,10 +166,12 @@ namespace zaaReloaded2.Importer.ZaaImporter
} }
/// <summary> /// <summary>
/// Analyses the Lauris name for a material abbreviation. /// Parses the original Lauris name for a material abbreviation.
/// If the parameter does not refer to blood (serum, whole /// This may be misleading in certain cases, e.g. "Sammelmenge (U)"
/// blood, etc.), Lauris appends an abbreviation in parentheses /// appears to be spot urine ("U"), but is collected urine instead
/// to the parameter name. /// ("SU"). Therefore, in the constructor that takes the thesaurus
/// parameters, the material is looked up in the Parameters thesaurus.
/// ("Sammelmenge (U)" is contained in the Parameters thesaurus.)
/// </summary> /// </summary>
/// <example> /// <example>
/// Gesamt-Eiweiss (SU), Albumin (SU)/die, Gesamt-Eiweiss (PU) /// Gesamt-Eiweiss (SU), Albumin (SU)/die, Gesamt-Eiweiss (PU)

View File

@ -2,7 +2,8 @@
# ============== ==================== # ============== ====================
# WICHTIG: Nur direkt austauschbare Einheiten verwenden, # WICHTIG: Nur direkt austauschbare Einheiten verwenden,
# weil (bislang) keine Umrechnung der Werte vorgesehen ist! # weil (bislang) keine Umrechnung der Werte vorgesehen ist!
"ml/min/ 1,73qm" "ml/min/1,73 m²" "ml/min /1,73qm" "ml/min/1,73 m²"
ng/ml µg/l ng/ml µg/l
mmol/l mM mmol/l mM
n*1000/µl /nl n*1000/µl /nl
Bak/µl /µl

View File

@ -69,9 +69,15 @@ namespace zaaReloaded2.Thesaurus
/// <param name="laurisName">Lauris item name to look up.</param> /// <param name="laurisName">Lauris item name to look up.</param>
/// <returns><see cref="zaaReloaded2.LabModel.Material"/> enum; if no material is /// <returns><see cref="zaaReloaded2.LabModel.Material"/> enum; if no material is
/// found in the dictionary, the default material "S" (serum) is returned.</returns> /// found in the dictionary, the default material "S" (serum) is returned.</returns>
public Material GetMaterial(string laurisName) public Material GetMaterial(string laurisName, Material def)
{ {
string textValue = LookUpValue(laurisName, 2); string textValue = LookUpValue(laurisName, 2);
if (String.IsNullOrEmpty(textValue))
{
return def;
}
else
{
try try
{ {
return MaterialFactory.FromAbbreviation(textValue); return MaterialFactory.FromAbbreviation(textValue);
@ -81,6 +87,7 @@ namespace zaaReloaded2.Thesaurus
return Material.B; return Material.B;
} }
} }
}
/// <summary> /// <summary>
/// Returns whether or not reference limits shall always /// Returns whether or not reference limits shall always