BaseBizComponent.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using MediII.Common;
  6. using System.ComponentModel.Composition;
  7. using Microsoft.Practices.EnterpriseLibrary.Data;
  8. using System.Data.Common;
  9. using IL.Common;
  10. namespace MediII.Adapter.BizComponent.Base
  11. {
  12. [Export]
  13. public abstract class BaseBizComponent : IBizComponent
  14. {
  15. //数据库连接
  16. protected Database ctx;
  17. protected Database HealthCarectx;
  18. static IBizBehavior BizBehavior { get; set; }
  19. public BaseBizComponent()
  20. {
  21. DatabaseProviderFactory factory = new DatabaseProviderFactory();
  22. ctx = factory.CreateDefault();
  23. HealthCarectx = factory.Create("HealthCare");
  24. }
  25. static BaseBizComponent()
  26. {
  27. string bizBehavior = System.Configuration.ConfigurationManager.AppSettings["BizBehavior"];
  28. if (string.IsNullOrEmpty(bizBehavior))
  29. {
  30. BizBehavior = new DefaultBizBehavior();
  31. }
  32. else
  33. {
  34. string[] ar = bizBehavior.Split(',');
  35. string assemblyName = ar[0];
  36. string typeName = ar[1];
  37. try
  38. {
  39. BizBehavior = Activator.CreateInstance(assemblyName, typeName).Unwrap() as IBizBehavior;
  40. }
  41. catch
  42. {
  43. BizBehavior = new DefaultBizBehavior();
  44. }
  45. }
  46. }
  47. /// <summary>
  48. /// 处理消息
  49. /// </summary>
  50. /// <param name="message">解析后消息的抽象类型</param>
  51. public abstract string DoProcess(string message,string msgType);
  52. /// <summary>
  53. ///实现处理的接口
  54. /// </summary>
  55. /// <param name="message">传入的消息字符</param>
  56. /// <returns></returns>
  57. public string Process(string message,string msgType)
  58. {
  59. OperateXmlUtil xmlHelper = new OperateXmlUtil();
  60. string messageID = xmlHelper.XpathRead(message, "//*[@root='2.16.156.10011.2.5.1.1']", "extension");
  61. string guid = MediII.Common.GUIDHelper.NewGUID();
  62. OnProcessing(guid, messageID, message, "HL7v3");
  63. string ack = DoProcess(message,msgType);
  64. OnProcessed(guid, "", ack, true);
  65. return ack;
  66. }
  67. /// <summary>
  68. /// 保存回复
  69. /// </summary>
  70. /// <param name="ack"></param>
  71. private void OnProcessed(string id, string messageID, string ack, bool successed)
  72. {
  73. BizBehavior.AfterProcess(id, messageID, ack, successed);
  74. }
  75. /// <summary>
  76. /// 保存接受信息
  77. /// </summary>
  78. /// <param name="message"></param>
  79. private void OnProcessing(string id, string messageID, string message, string Version)
  80. {
  81. BizBehavior.BeforeProcess(id, messageID, message, Version);
  82. }
  83. #region 取DB服务器当前时间
  84. public static DateTime GetNow(Database ctx)
  85. {
  86. DbCommand command = SqlDataAccess.GetSqlStringCommand(ctx, "SELECT GETDATE() sysdate ");
  87. object obj = SqlDataAccess.ExecuteScalar(ctx, command);
  88. if (obj != null)
  89. return Convert.ToDateTime(obj.ToString());
  90. else
  91. return Convert.ToDateTime(null);
  92. }
  93. #endregion
  94. }
  95. }