/* ParameterDictionary.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.Reflection; using System.Text; using System.IO; using zaaReloaded2.LabModel; namespace zaaReloaded2.Thesaurus { /// /// Thesaurus that is used to convert Lauris parameter names to /// canonical parameter names, and to assign categories and determine /// which parameters always require the output of reference intervals. /// public class Parameters : ThesaurusBase { #region Singleton private static readonly Parameters _default = new Parameters(); /// /// Gets the default singleton instance of the Parameters /// thesaurus. /// /// /// http://csharpindepth.com/Articles/General/Singleton.aspx#cctor /// public static Parameters Default { get { return _default; } } static Parameters() { } private Parameters() { } #endregion #region Public methods /// /// Looks up the canonical name for a given . /// /// Lauris item name to look up. /// Canonical name, or original Lauris name if no canonical name /// is defined for this item. public string GetCanonicalName(string laurisName) { return LookUpValue(laurisName, 1, laurisName); } /// /// Looks up the material for a given . /// /// Lauris item name to look up. /// enum; if no material is /// found in the dictionary, the default material "S" (serum) is returned. public Material GetMaterial(string laurisName, Material def) { string textValue = LookUpValue(laurisName, 2); if (String.IsNullOrEmpty(textValue)) { return def; } else { try { return MaterialFactory.FromAbbreviation(textValue); } catch { return Material.B; } } } /// /// Returns the desired number of decimals for a given parameter. /// /// Laboratory item to look up; /// this must be an original Lauris string. /// Number of decimals for the parameter, or -1 if /// undefined. public int GetPrecision(string laurisName) { return LookUpValue(laurisName, 3, -1); } /// /// Returns whether or not reference limits shall always /// be displayed for a given item, regardless whether it /// is normal or not. /// /// Laboratory item to look up; this must /// be an original Lauris string. /// public bool GetForceReferenceDisplay(string laurisName) { return LookUpValue(laurisName, 4, false); } /// /// Checks whether an item is marked as blacklisted in the /// thesaurus. /// /// Laboratory item to lok up; /// this must be an original Lauris string. /// True if the item is marked as blacklisted, /// false if not. Default is false. public bool GetIsBlacklisted(string laurisName) { return LookUpValue(laurisName, 5, false); } #endregion #region Overrides /// /// Returns the resource stream for Defaults\parameters.txt. /// protected override System.IO.Stream GetDefaultStream() { return Assembly.GetExecutingAssembly().GetManifestResourceStream( "zaaReloaded2.Defaults.parameters.txt"); } /// /// Returns a path to a file parameters.txt in the addin directory /// as provided by . /// protected override string GetUserFileName() { return Path.Combine(ThisAddIn.Subdir, "parameters.txt"); } #endregion } }