ADT_A04B01_Handler.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Practices.EnterpriseLibrary.Data;
  6. using System.Transactions;
  7. using System.Data;
  8. using IL.Common;
  9. using System.Xml;
  10. namespace MediII.Adapter.BizComponent.ADT
  11. {
  12. public class ADT_A04B01_Handler : ADTHandler
  13. {
  14. public override void Handler(string m,string ID)
  15. {
  16. //门诊就诊,处方单
  17. //初始化
  18. var rtnMsg = string.Empty;
  19. var msgHead = string.Empty;
  20. var msgBody = string.Empty;
  21. var resultCode = string.Empty;
  22. var result = string.Empty;
  23. WebService server = new WebService();
  24. OperateXmlUtil xmlHelper = new OperateXmlUtil();
  25. //读取配置的凭证号
  26. var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
  27. //读取就诊流水号
  28. string visitNo = m;
  29. //拼接接口访问参数
  30. msgBody = xmlHelper.GetMsgBody(visitNo, "id", index, size);
  31. msgHead = xmlHelper.GetMsgHead("getOutPresc", cert);
  32. //接口访问
  33. rtnMsg = server.TestInterface(msgHead, msgBody);
  34. //存储访问记录
  35. MessageHelper.SaveSendMsg(Scanctx, ID, "ADT^A04[B01]", msgHead, msgBody, rtnMsg);
  36. //消息判断是否成功
  37. if (!xmlHelper.isSuccess(rtnMsg, ref resultCode, ref result))
  38. {
  39. throw new Exception(result);
  40. }
  41. //更新发送表,保存留档
  42. //返回数据解析
  43. XmlNode root= xmlHelper.GetContentRootNode(rtnMsg);
  44. XmlNodeList list = root.SelectNodes("//returnContents//returnContent");
  45. if (list.Count <= 0)
  46. return;
  47. using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  48. {
  49. var delSql = @"delete from dbo.menzhen_medical_order where id=@id";
  50. var cmd = ctx.DBGetSqlStringCommand(delSql);
  51. ctx.AddInParameter(cmd, "id", System.Data.DbType.String, visitNo);
  52. ctx.DBExecuteNonQuery(cmd);//
  53. var dsql = @"INSERT INTO dbo.menzhen_medical_order
  54. (id,medical_order_id,fee_date,yfdm,yfmc,cflx,cfje,sycfbz,yjts,kdksdm,kdys)
  55. VALUES(@id,@medical_order_id,@fee_date,@yfdm,@yfmc,@cflx,@cfje,@sycfbz,@yjts,@kdksdm,@kdys)";
  56. foreach (XmlElement xn in list)
  57. {
  58. var dcmd = ctx.DBGetSqlStringCommand(dsql);
  59. ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, xn.SelectSingleNode("id").InnerText);
  60. ctx.AddInParameter(dcmd, "medical_order_id", System.Data.DbType.String, xn.SelectSingleNode("medical_order_id").InnerText);
  61. ctx.AddInParameter(dcmd, "fee_date", System.Data.DbType.DateTime, xn.SelectSingleNode("fee_date").InnerText);
  62. ctx.AddInParameter(dcmd, "yfdm", System.Data.DbType.String, xn.SelectSingleNode("yfdm").InnerText);
  63. ctx.AddInParameter(dcmd, "yfmc", System.Data.DbType.String, xn.SelectSingleNode("yfmc").InnerText);
  64. ctx.AddInParameter(dcmd, "cflx", System.Data.DbType.String, xn.SelectSingleNode("cflx").InnerText);
  65. decimal cfje = 0;
  66. try
  67. {
  68. decimal.TryParse(xn.SelectSingleNode("cfje").InnerText, out cfje);
  69. }
  70. catch
  71. {
  72. }
  73. ctx.AddInParameter(dcmd, "cfje", System.Data.DbType.Decimal, cfje);
  74. ctx.AddInParameter(dcmd, "sycfbz", System.Data.DbType.String, xn.SelectSingleNode("sycfbz").InnerText);
  75. decimal yjts = 0;
  76. try
  77. {
  78. decimal.TryParse(xn.SelectSingleNode("yjts").InnerText, out yjts);
  79. }
  80. catch
  81. {
  82. }
  83. ctx.AddInParameter(dcmd, "yjts", System.Data.DbType.Decimal, yjts);
  84. ctx.AddInParameter(dcmd, "kdksdm", System.Data.DbType.String, xn.SelectSingleNode("kdksdm").InnerText);
  85. ctx.AddInParameter(dcmd, "kdys", System.Data.DbType.String, xn.SelectSingleNode("kdys").InnerText);
  86. ctx.DBExecuteNonQuery(dcmd);//
  87. }
  88. scope.Complete();
  89. //DiagFlag = 20;
  90. }
  91. }
  92. public string GetDiagNo(string icdCode)
  93. {
  94. try
  95. {
  96. var sql = string.Format("SELECT DiagNo FROM HealthCare.dbo.Diag WHERE IcdCode='{0}'", icdCode);
  97. var obj = ctx.DBExecuteScalar(CommandType.Text, sql);
  98. var val = StrHelepr.Obj2StrTrim(obj);
  99. if (string.IsNullOrWhiteSpace(val))
  100. {
  101. val = icdCode;
  102. }
  103. return val;
  104. }
  105. catch (Exception ex)
  106. {
  107. IL.Common.LogHelper.LogError(string.Format("获取DiagNo错误:{0} {1}\r\n{2}", icdCode, ex.Message, ex.StackTrace), LogCatagories.MQAccess);
  108. return string.Empty;
  109. }
  110. }
  111. public string GetBedNo(Database ctx, string roombed)
  112. {
  113. var sql = "SELECT Top 1 BedNo FROM HealthCare.dbo.Bed WHERE RoomBed=@RoomBed";
  114. var cmd = ctx.DBGetSqlStringCommand(sql);
  115. ctx.AddInParameter(cmd, "RoomBed", DbType.String, roombed);
  116. var obj = StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd));
  117. if (string.IsNullOrWhiteSpace(obj))
  118. {
  119. obj = roombed;
  120. }
  121. return obj;
  122. }
  123. }
  124. }