ADT_A05_Handler.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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 MediII.Adapter.ReceiveToScanModel;
  8. using IL.Common;
  9. using System.Data.Common;
  10. using System.Data;
  11. namespace MediII.Adapter.BizComponent.ADT
  12. {
  13. public class ADT_A05_Handler : ADTHandler
  14. {
  15. public override void Handler(string m)
  16. {
  17. #region 门诊就诊更新
  18. //初始化
  19. var rtnMsg = string.Empty;
  20. var msgHead = string.Empty;
  21. var msgBody = string.Empty;
  22. var resultCode = string.Empty;
  23. var result = string.Empty;
  24. WebService server = new WebService();
  25. OperateXmlUtil xmlHelper = new OperateXmlUtil();
  26. //读取配置的凭证号
  27. var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
  28. //读取就诊流水号
  29. string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
  30. var tmp = xmlHelper.XpathRead(m, "//*[name()='effectiveTime']");
  31. var visitDate = tmp[0].LastChild.Attributes["value"].Value;
  32. DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
  33. if (GetScanTaskCount(visitNo, "ADT^A05[B01]") > 0)
  34. {
  35. return;//存在任务则无需增加
  36. }
  37. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  38. {
  39. #region 门诊就诊更新
  40. 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)";
  41. //门诊处方单
  42. if (GetScanTaskCount(visitNo, "ADT^A01[B01]") <= 0)
  43. {
  44. var dcmd = ctx.DBGetSqlStringCommand(isql);
  45. ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  46. ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
  47. ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
  48. ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  49. ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
  50. ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
  51. ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
  52. ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B01]");
  53. ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  54. ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
  55. ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
  56. ctx.DBExecuteNonQuery(dcmd);
  57. }
  58. #endregion
  59. //门诊收费明细
  60. if (GetScanTaskCount(visitNo, "ADT^A01[B02]") <= 0)
  61. {
  62. var lcmd = ctx.DBGetSqlStringCommand(isql);
  63. ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  64. ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
  65. ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
  66. ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  67. ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
  68. ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
  69. ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
  70. ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B02]");
  71. ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  72. ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
  73. ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
  74. ctx.DBExecuteNonQuery(lcmd);
  75. }
  76. if (GetScanTaskCount(visitNo, "ADT^A01[B03]") <= 0)
  77. {
  78. //门诊挂号
  79. var gcmd = ctx.DBGetSqlStringCommand(isql);
  80. ctx.AddInParameter(gcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
  81. ctx.AddInParameter(gcmd, "ChartNo", System.Data.DbType.String, visitNo);
  82. ctx.AddInParameter(gcmd, "VisitNo", System.Data.DbType.String, visitNo);
  83. ctx.AddInParameter(gcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  84. ctx.AddInParameter(gcmd, "OtherNo2", System.Data.DbType.String, "");
  85. ctx.AddInParameter(gcmd, "OtherNo3", System.Data.DbType.String, "");
  86. ctx.AddInParameter(gcmd, "OtherName", System.Data.DbType.String, "门诊挂号明细");
  87. ctx.AddInParameter(gcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B03]");
  88. ctx.AddInParameter(gcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  89. ctx.AddInParameter(gcmd, "UpdateUser", System.Data.DbType.String, "9999");
  90. ctx.AddInParameter(gcmd, "Reserve1", System.Data.DbType.String, "");
  91. ctx.DBExecuteNonQuery(gcmd);
  92. }
  93. scope.Complete();
  94. }
  95. #endregion
  96. }
  97. /// <summary>
  98. /// 获取急诊病人床位
  99. /// </summary>
  100. /// <param name="ctx"></param>
  101. /// <param name="visitNo"></param>
  102. /// <returns></returns>
  103. private string GetDepartNo(Database ctx, string roomBed)
  104. {
  105. var sql = string.Format("SELECT top 1 DepartNo FROM dbo.Depart WHERE DepartCode='{0}' AND DepartType='99' AND IsDel=0", roomBed);
  106. var dr = ctx.DBExecuteScalar(CommandType.Text, sql);
  107. return StrHelepr.Obj2StrTrim(dr);
  108. }
  109. }
  110. }