using System.Collections.Generic; using System.Linq; using Vinno.vCloud.Report.Interfaces; using Vinno.vCloud.Report.Models; namespace ReportConverter { class GenderTranslater { private readonly IEnumerable _maleList = new List { "男", "雄", "公", "雄性" }; private readonly IEnumerable _femaleList = new List { "女", "雌", "母", "雌性" }; private const string Female = "Female"; private const string Male = "Male"; /// /// translate gender /// /// report info entity public void TranslateGender(ReportInfo reportInfo) { var genderElement = reportInfo.Template.Blocks.SelectMany(b => b.Elements) .FirstOrDefault(e => ElementTag.PatientGender.Equals(e.Tag)); if (genderElement is SingleSelected singleSelected) { if (reportInfo.ElementValues.TryGetValue(ElementTag.PatientGender, out var genderValue)) { if (genderValue is TextElementValue textElementValue) { textElementValue.Value = TranslateGenderValueToSelecteItem(textElementValue.Value, singleSelected.Items); } } } } private string TranslateGenderValueToSelecteItem(string value, List items) { if (value == Male) { var matchedValue = items.FirstOrDefault(i => _maleList.Contains(i)); if (!string.IsNullOrEmpty(matchedValue)) { return matchedValue; } } else if (value == Female) { var matchedValue = items.FirstOrDefault(i => _femaleList.Contains(i)); if (!string.IsNullOrEmpty(matchedValue)) { return matchedValue; } } return value; } } }