ADT_A04_Handler.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. namespace MediII.Adapter.BizComponent.ADT
  10. {
  11. public class ADT_A04_Handler : ADTHandler
  12. {
  13. public override void Handler(string m)
  14. {
  15. //初始化
  16. var rtnMsg = string.Empty;
  17. var msgHead = string.Empty;
  18. var msgBody = string.Empty;
  19. var resultCode = string.Empty;
  20. var result = string.Empty;
  21. WebService server = new WebService();
  22. OperateXmlUtil xmlHelper = new OperateXmlUtil();
  23. //读取配置的凭证号
  24. var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
  25. //读取就诊流水号
  26. string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
  27. var tmp=xmlHelper.XpathRead(m,"//*[name()='effectiveTime']");
  28. var visitDate=tmp[0].LastChild.Attributes["value"].Value;
  29. DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
  30. if (GetScanTaskCount(visitNo, "ADT^A04[B01]") > 0)
  31. {
  32. return;//存在任务则无需增加
  33. }
  34. using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  35. {
  36. var isql = @"INSERT INTO HL7_Platform.dbo.HL7_Scan (ID ,ChartNo,VisitNo,OtherNo1,OtherNo2,OtherNo3,OtherName , TaskType , TaskStatus , UpdateUser , UpdateTime,Reserve1) VALUES (@ID ,@ChartNo ,@VisitNo ,@OtherNo1 , @OtherNo2 ,@OtherNo3 ,@OtherName ,@TaskType ,@TaskStatus , @UpdateUser , GETDATE(),@Reserve1)";
  37. //门诊处方单
  38. if (GetScanTaskCount(visitNo, "ADT^A04[B01]") <= 0)
  39. {
  40. var dcmd = ctx.DBGetSqlStringCommand(isql);
  41. ctx.DBAddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  42. ctx.DBAddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
  43. ctx.DBAddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
  44. ctx.DBAddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  45. ctx.DBAddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
  46. ctx.DBAddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
  47. ctx.DBAddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
  48. ctx.DBAddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B01]");
  49. ctx.DBAddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  50. ctx.DBAddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
  51. ctx.DBAddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
  52. ctx.DBExecuteNonQuery(dcmd);
  53. }
  54. if (GetScanTaskCount(visitNo, "ADT^A01[B02]")<= 0)
  55. {
  56. //门诊收费明细
  57. var lcmd = ctx.DBGetSqlStringCommand(isql);
  58. ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  59. ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
  60. ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
  61. ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  62. ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
  63. ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
  64. ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
  65. ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B02]");
  66. ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  67. ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
  68. ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
  69. ctx.DBExecuteNonQuery(lcmd);
  70. }
  71. if (GetScanTaskCount(visitNo, "ADT^A01[B03]") <= 0)
  72. {
  73. //门诊挂号
  74. var gcmd = ctx.DBGetSqlStringCommand(isql);
  75. ctx.AddInParameter(gcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  76. ctx.AddInParameter(gcmd, "ChartNo", System.Data.DbType.String, visitNo);
  77. ctx.AddInParameter(gcmd, "VisitNo", System.Data.DbType.String, visitNo);
  78. ctx.AddInParameter(gcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  79. ctx.AddInParameter(gcmd, "OtherNo2", System.Data.DbType.String, "");
  80. ctx.AddInParameter(gcmd, "OtherNo3", System.Data.DbType.String, "");
  81. ctx.AddInParameter(gcmd, "OtherName", System.Data.DbType.String, "门诊挂号明细");
  82. ctx.AddInParameter(gcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B03]");
  83. ctx.AddInParameter(gcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  84. ctx.AddInParameter(gcmd, "UpdateUser", System.Data.DbType.String, "9999");
  85. ctx.AddInParameter(gcmd, "Reserve1", System.Data.DbType.String, "");
  86. ctx.DBExecuteNonQuery(gcmd);
  87. }
  88. scope.Complete();
  89. }
  90. }
  91. public string GetDiagNo(string icdCode)
  92. {
  93. try
  94. {
  95. var sql = string.Format("SELECT DiagNo FROM HealthCare.dbo.Diag WHERE IcdCode='{0}'", icdCode);
  96. var obj = ctx.DBExecuteScalar(CommandType.Text, sql);
  97. var val = StrHelepr.Obj2StrTrim(obj);
  98. if (string.IsNullOrWhiteSpace(val))
  99. {
  100. val = icdCode;
  101. }
  102. return val;
  103. }
  104. catch (Exception ex)
  105. {
  106. IL.Common.LogHelper.LogError(string.Format("获取DiagNo错误:{0} {1}\r\n{2}", icdCode, ex.Message, ex.StackTrace), LogCatagories.MQAccess);
  107. return string.Empty;
  108. }
  109. }
  110. public string GetBedNo(Database ctx, string roombed)
  111. {
  112. var sql = "SELECT Top 1 BedNo FROM HealthCare.dbo.Bed WHERE RoomBed=@RoomBed";
  113. var cmd = ctx.DBGetSqlStringCommand(sql);
  114. ctx.AddInParameter(cmd, "RoomBed", DbType.String, roombed);
  115. var obj = StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd));
  116. if (string.IsNullOrWhiteSpace(obj))
  117. {
  118. obj = roombed;
  119. }
  120. return obj;
  121. }
  122. }
  123. }