GenderTranslater.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Vinno.vCloud.Report.Interfaces;
  4. using Vinno.vCloud.Report.Models;
  5. namespace ReportConverter
  6. {
  7. class GenderTranslater
  8. {
  9. private readonly IEnumerable<string> _maleList = new List<string> { "男", "雄", "公", "雄性" };
  10. private readonly IEnumerable<string> _femaleList = new List<string> { "女", "雌", "母", "雌性" };
  11. private const string Female = "Female";
  12. private const string Male = "Male";
  13. /// <summary>
  14. /// translate gender
  15. /// </summary>
  16. /// <param name="reportInfo">report info entity</param>
  17. public void TranslateGender(ReportInfo reportInfo)
  18. {
  19. var genderElement = reportInfo.Template.Blocks.SelectMany(b => b.Elements)
  20. .FirstOrDefault(e => ElementTag.PatientGender.Equals(e.Tag));
  21. if (genderElement is SingleSelected singleSelected)
  22. {
  23. if (reportInfo.ElementValues.TryGetValue(ElementTag.PatientGender, out var genderValue))
  24. {
  25. if (genderValue is TextElementValue textElementValue)
  26. {
  27. textElementValue.Value =
  28. TranslateGenderValueToSelecteItem(textElementValue.Value, singleSelected.Items);
  29. }
  30. }
  31. }
  32. }
  33. private string TranslateGenderValueToSelecteItem(string value, List<string> items)
  34. {
  35. if (value == Male)
  36. {
  37. var matchedValue = items.FirstOrDefault(i => _maleList.Contains(i));
  38. if (!string.IsNullOrEmpty(matchedValue))
  39. {
  40. return matchedValue;
  41. }
  42. }
  43. else if (value == Female)
  44. {
  45. var matchedValue = items.FirstOrDefault(i => _femaleList.Contains(i));
  46. if (!string.IsNullOrEmpty(matchedValue))
  47. {
  48. return matchedValue;
  49. }
  50. }
  51. return value;
  52. }
  53. }
  54. }