ADT_A01_Handler.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Transactions;
  6. using System.Data;
  7. using System.Data.Common;
  8. using IL.Common;
  9. namespace MediII.Adapter.BizComponent.ADT
  10. {
  11. /// <summary>
  12. /// 住院就诊记录
  13. /// </summary>
  14. public class ADT_A01_Handler : ADTHandler
  15. {
  16. public override void Handler(string m)
  17. {
  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^A04[B01]") > 0)
  34. {
  35. return;//存在任务则无需增加
  36. }
  37. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
  38. {
  39. 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)";
  40. //住院就诊
  41. var cmd = ctx.DBGetSqlStringCommand(isql);
  42. SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString());
  43. SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
  44. SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
  45. SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
  46. SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
  47. SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
  48. SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息登记");
  49. SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A01[B01]");
  50. SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
  51. SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
  52. SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
  53. SqlDataAccess.ExecuteNonQuery(ctx, cmd);
  54. //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
  55. //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
  56. //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
  57. //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
  58. //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
  59. //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
  60. //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
  61. //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
  62. //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
  63. //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
  64. //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
  65. //ctx.DBExecuteNonQuery(cmd);
  66. scope.Complete();
  67. }
  68. }
  69. /// <summary>
  70. /// 获取门诊就诊次数
  71. /// </summary>
  72. /// <returns></returns>
  73. private int GetOutNumByChartNo(string chartNo)
  74. {
  75. string OutPatientSql = @"select count(1)
  76. from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b
  77. where a.VisitNo = b.VisitNo AND b.ChartNo= @ChartNo
  78. AND a.VisitStatus<>'D' ";
  79. var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
  80. SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
  81. return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd))); //看诊次数
  82. }
  83. /// <summary>
  84. /// 获取急诊就诊次数
  85. /// </summary>
  86. /// <returns></returns>
  87. private int GetEmgNumByChartNo(string chartNo)
  88. {
  89. string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b
  90. where a.VisitNo = b.VisitNo
  91. AND b.ChartNo= @ChartNo AND a.VisitStatus<>'D' ";
  92. var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
  93. SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
  94. return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd))); //看诊次数
  95. }
  96. }
  97. }