Kaynağa Gözat

1、修改ID格式
2、调整类型归类
3、补充挂号类消息任务

singlese7en 2 yıl önce
ebeveyn
işleme
194cfce9cf
37 değiştirilmiş dosya ile 445 ekleme ve 470 silme
  1. 15 4
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADTHandler.cs
  2. 67 67
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01_Handler.cs
  3. 66 52
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A02_Handler.cs
  4. 93 61
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A04_Handler.cs
  5. 80 62
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A05_Handler.cs
  6. 3 3
      IL.BizComponent/MediII.Adapter.BizComponent.ADT/MediII.Adapter.BizComponent.ADT.csproj
  7. 115 118
      IL.BizComponent/MediII.Adapter.BizComponent.MFN/MFN_Z2B_GY_KESHI.cs
  8. 2 2
      MediII.Adapter.MsgToScanServer/Properties/AssemblyInfo.cs
  9. BIN
      MessageToScan/UE/IL.Common.dll
  10. BIN
      MessageToScan/UE/KC_HN_Tools.dll
  11. BIN
      MessageToScan/UE/MediII.Adapter.BizComponent.ADT.dll
  12. BIN
      MessageToScan/UE/MediII.Adapter.BizComponent.Base.dll
  13. BIN
      MessageToScan/UE/MediII.Adapter.BizComponent.MFN.dll
  14. BIN
      MessageToScan/UE/MediII.Adapter.BizComponent.PMU.dll
  15. BIN
      MessageToScan/UE/MediII.Adapter.BizComponent.UE.dll
  16. BIN
      MessageToScan/UE/MediII.Adapter.ReceiveToScanModel.dll
  17. BIN
      MessageToScan/UE/MediII.Adapter.Scan.Interface.dll
  18. BIN
      MessageToScan/UE/MediII.Adapter.Scanner.dll
  19. BIN
      MessageToScanServer/IL.Common.dll
  20. BIN
      MessageToScanServer/KC_HN_Tools.dll
  21. BIN
      MessageToScanServer/MediII.Adapter.MsgToSIServer.exe
  22. 0 97
      MessageToScanServer/MediII.Adapter.MsgToSIServer.exe.config
  23. BIN
      MessageToScanServer/MediII.Adapter.MsgToScanServer.exe
  24. BIN
      MessageToScanServer/MediII.Adapter.Scan.Interface.dll
  25. BIN
      MessageToScanServer/MediII.Adapter.Scanner.dll
  26. BIN
      MessageToScanServer/UE/IL.Common.dll
  27. BIN
      MessageToScanServer/UE/KC_HN_Tools.dll
  28. BIN
      MessageToScanServer/UE/MediII.Adapter.BizComponent.ADT.dll
  29. BIN
      MessageToScanServer/UE/MediII.Adapter.BizComponent.Base.dll
  30. BIN
      MessageToScanServer/UE/MediII.Adapter.BizComponent.MFN.dll
  31. BIN
      MessageToScanServer/UE/MediII.Adapter.BizComponent.PMU.dll
  32. BIN
      MessageToScanServer/UE/MediII.Adapter.BizComponent.UE.dll
  33. BIN
      MessageToScanServer/UE/MediII.Adapter.ReceiveToSIModel.dll
  34. BIN
      MessageToScanServer/UE/MediII.Adapter.ReceiveToScanModel.dll
  35. BIN
      MessageToScanServer/UE/MediII.Adapter.Scan.Interface.dll
  36. BIN
      MessageToScanServer/UE/MediII.Adapter.Scanner.dll
  37. 4 4
      README.md

+ 15 - 4
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADTHandler.cs

@@ -55,10 +55,10 @@ namespace MediII.Adapter.BizComponent.ADT
             {
                 switch (evntType)
                 {
-                    case "ADT^A01": return new ADT_A01_Handler();// 患者入院
-                    case "ADT^A02": return new ADT_A02_Handler();//患者位置转移:转科、转病区、转床
-                    case "ADT^A05": return new ADT_A05_Handler();//住院更新
-                    case "ADT^A04": return new ADT_A04_Handler();//住院患者                    
+                    case "ADT^A01": return new ADT_A01_Handler();// 住院患者
+                    case "ADT^A02": return new ADT_A02_Handler();//住院更新
+                    case "ADT^A05": return new ADT_A05_Handler();//门诊患者更新
+                    case "ADT^A04": return new ADT_A04_Handler();// 门诊患者入院                
                     //case "A08": return new ADT_A08_Handler();//患者信息修改:
                     //case "A10": return new ADT_A10_Handler();//入科
                     //case "A11": return new ADT_A11_Handler();//取消入院
@@ -219,5 +219,16 @@ namespace MediII.Adapter.BizComponent.ADT
             }
 
         }
+
+
+        protected int GetScanTaskCount(string visitNo,string type)
+        {
+            var sql = "SELECT count(1) FROM dbo.HL7_Scan WITH(NOLOCK) WHERE VisitNo=@VisitNo and TaskType=@TaskType and TaskStatus=1 and UpdateTime>'2023-01-01'";
+            var cmd = ctx.DBGetSqlStringCommand(sql);
+            ctx.AddInParameter(cmd, "VisitNo", DbType.String, visitNo);
+            ctx.AddInParameter(cmd, "TaskType", DbType.String, type);
+            var obj = int.Parse(StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd)));
+            return obj;
+        }
     }
 }

+ 67 - 67
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01_Handler.cs

@@ -2,18 +2,20 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-using Microsoft.Practices.EnterpriseLibrary.Data;
 using System.Transactions;
 using System.Data;
+using System.Data.Common;
 using IL.Common;
 
 namespace MediII.Adapter.BizComponent.ADT
 {
+    /// <summary>
+    /// 住院就诊记录
+    /// </summary>
     public class ADT_A01_Handler : ADTHandler
     {
         public override void Handler(string m)
         {
-
             //初始化
             var rtnMsg = string.Empty;
             var msgHead = string.Empty;
@@ -26,84 +28,82 @@ namespace MediII.Adapter.BizComponent.ADT
             var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
             //读取就诊流水号
             string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
-            var tmp=xmlHelper.XpathRead(m,"//*[name()='effectiveTime']");
-            var visitDate=tmp[0].LastChild.Attributes["value"].Value;
+            var tmp = xmlHelper.XpathRead(m, "//*[name()='effectiveTime']");
+            var visitDate = tmp[0].LastChild.Attributes["value"].Value;
             DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
-
-            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            if (GetScanTaskCount(visitNo, "ADT^A04[B01]") > 0)
+            {
+                return;//存在任务则无需增加
+            }
+            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
             {
-
                 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)";
-                //门诊处方单
-                var dcmd = ctx.DBGetSqlStringCommand(isql);
-                ctx.DBAddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-                ctx.DBAddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
-                ctx.DBAddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
-                ctx.DBAddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                ctx.DBAddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
-                ctx.DBAddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
-                ctx.DBAddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
-                ctx.DBAddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
-                ctx.DBAddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-                ctx.DBAddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
-                ctx.DBAddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
-                ctx.DBExecuteNonQuery(dcmd);
+                //住院就诊
+                var cmd = ctx.DBGetSqlStringCommand(isql);
+                SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString());
+                SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
+                SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息登记");
+                SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A01[B01]");
+                SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
+                SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
+                SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
+                SqlDataAccess.ExecuteNonQuery(ctx, cmd);
 
-                //门诊收费明细
-                var lcmd = ctx.DBGetSqlStringCommand(isql);
-                ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-                ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
-                ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
-                ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
-                ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
-                ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
-                ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B02]");
-                ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-                ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
-                ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
-                ctx.DBExecuteNonQuery(lcmd);
-
-                scope.Complete();
+                //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
+                //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
+                //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
+                //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
+                //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
+                //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
+                //ctx.DBExecuteNonQuery(cmd);
+                
+               
+                scope.Complete(); 
             }
-        }
 
 
-        public string GetDiagNo(string icdCode)
+        }
+
+        /// <summary>
+        /// 获取门诊就诊次数
+        /// </summary> 
+        /// <returns></returns>
+        private int GetOutNumByChartNo(string chartNo)
         {
-            try
-            {
-                var sql = string.Format("SELECT DiagNo FROM HealthCare.dbo.Diag WHERE IcdCode='{0}'", icdCode);
-                var obj = ctx.DBExecuteScalar(CommandType.Text, sql);
-                var val = StrHelepr.Obj2StrTrim(obj);
-                if (string.IsNullOrWhiteSpace(val))
-                {
-                    val = icdCode;
-                }
 
-                return val;
-            }
-            catch (Exception ex)
-            {
-                IL.Common.LogHelper.LogError(string.Format("获取DiagNo错误:{0}  {1}\r\n{2}", icdCode, ex.Message, ex.StackTrace), LogCatagories.MQAccess);
-                return string.Empty;
-            }
+            string OutPatientSql = @"select count(1)	 
+                                             from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b	 
+                                             where a.VisitNo = b.VisitNo  AND b.ChartNo= @ChartNo  
+                                             AND a.VisitStatus<>'D'  ";
+            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
+            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
+            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));  //看诊次数 
+
         }
 
-        public string GetBedNo(Database ctx, string roombed)
+        /// <summary>
+        /// 获取急诊就诊次数
+        /// </summary> 
+        /// <returns></returns>
+        private int GetEmgNumByChartNo(string chartNo)
         {
-            var sql = "SELECT Top 1 BedNo FROM HealthCare.dbo.Bed WHERE RoomBed=@RoomBed";
-            var cmd = ctx.DBGetSqlStringCommand(sql);
-            ctx.AddInParameter(cmd, "RoomBed", DbType.String, roombed);
-            var obj = StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd));
-            if (string.IsNullOrWhiteSpace(obj))
-            {
-                obj = roombed;
-            }
-            return obj;
+            string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b	 
+                                             where a.VisitNo = b.VisitNo  
+                                             AND b.ChartNo= @ChartNo   AND a.VisitStatus<>'D'  ";
+            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
+            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
+            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));   //看诊次数 
 
         }
-    }
-
 
+    }
 }

+ 66 - 52
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A02_Handler.cs

@@ -2,21 +2,20 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-
-using Microsoft.Practices.EnterpriseLibrary.Data;
 using System.Transactions;
-using MediII.Adapter.ReceiveToScanModel;
-using IL.Common;
-using System.Data.Common;
 using System.Data;
+using System.Data.Common;
+using IL.Common;
 
 namespace MediII.Adapter.BizComponent.ADT
 {
+    /// <summary>
+    /// 住院就诊记录更新
+    /// </summary>
     public class ADT_A02_Handler : ADTHandler
     {
         public override void Handler(string m)
         {
-            #region 门诊就诊更新
             //初始化
             var rtnMsg = string.Empty;
             var msgHead = string.Empty;
@@ -32,64 +31,79 @@ namespace MediII.Adapter.BizComponent.ADT
             var tmp = xmlHelper.XpathRead(m, "//*[name()='effectiveTime']");
             var visitDate = tmp[0].LastChild.Attributes["value"].Value;
             DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
+            if (GetScanTaskCount(visitNo, "ADT^A02[B01]") > 0)
+            {
+                return;//存在任务则无需增加
+            }
             using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
-           {
-               #region 门诊就诊更新 
+            {
+                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)";
+                //住院就诊
+                var cmd = ctx.DBGetSqlStringCommand(isql);
+                SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString());
+                SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
+                SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
+                SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息更新");
+                SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A02[B01]");
+                SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
+                SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
+                SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
+                SqlDataAccess.ExecuteNonQuery(ctx, cmd);
 
-               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)";
-               //门诊处方单
-               var dcmd = ctx.DBGetSqlStringCommand(isql);
-               ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-               ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
-               ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
-               ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-               ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
-               ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
-               ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
-               ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A02[B01]");
-               ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-               ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
-               ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
-               ctx.DBExecuteNonQuery(dcmd);
-        
-               #endregion
-               //门诊收费明细
-               var lcmd = ctx.DBGetSqlStringCommand(isql);
-               ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-               ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
-               ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
-               ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-               ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
-               ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
-               ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
-               ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A02[B02]");
-               ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-               ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
-               ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
-               ctx.DBExecuteNonQuery(lcmd);
-    
-               scope.Complete();
+                //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
+                //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
+                //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
+                //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
+                //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
+                //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
+                //ctx.DBExecuteNonQuery(cmd);
+                
+               
+                scope.Complete(); 
             }
-            #endregion
-            
+
 
         }
 
         /// <summary>
-        /// 获取急诊病人床位
-        /// </summary>
-        /// <param name="ctx"></param>
-        /// <param name="visitNo"></param>
+        /// 获取门诊就诊次数
+        /// </summary> 
         /// <returns></returns>
-        private string GetDepartNo(Database ctx, string roomBed)
+        private int GetOutNumByChartNo(string chartNo)
         {
 
-            var sql = string.Format("SELECT top 1 DepartNo FROM dbo.Depart WHERE DepartCode='{0}' AND DepartType='99' AND IsDel=0", roomBed);
-            var dr = ctx.DBExecuteScalar(CommandType.Text, sql);
-            return StrHelepr.Obj2StrTrim(dr);
+            string OutPatientSql = @"select count(1)	 
+                                             from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b	 
+                                             where a.VisitNo = b.VisitNo  AND b.ChartNo= @ChartNo  
+                                             AND a.VisitStatus<>'D'  ";
+            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
+            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
+            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));  //看诊次数 
+
         }
 
+        /// <summary>
+        /// 获取急诊就诊次数
+        /// </summary> 
+        /// <returns></returns>
+        private int GetEmgNumByChartNo(string chartNo)
+        {
+            string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b	 
+                                             where a.VisitNo = b.VisitNo  
+                                             AND b.ChartNo= @ChartNo   AND a.VisitStatus<>'D'  ";
+            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
+            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
+            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));   //看诊次数 
 
+        }
 
     }
-}
+}

+ 93 - 61
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A04_Handler.cs

@@ -2,20 +2,18 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using Microsoft.Practices.EnterpriseLibrary.Data;
 using System.Transactions;
 using System.Data;
-using System.Data.Common;
 using IL.Common;
 
 namespace MediII.Adapter.BizComponent.ADT
 {
-    /// <summary>
-    /// 住院就诊记录
-    /// </summary>
     public class ADT_A04_Handler : ADTHandler
     {
         public override void Handler(string m)
         {
+
             //初始化
             var rtnMsg = string.Empty;
             var msgHead = string.Empty;
@@ -28,79 +26,113 @@ namespace MediII.Adapter.BizComponent.ADT
             var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
             //读取就诊流水号
             string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
-            var tmp = xmlHelper.XpathRead(m, "//*[name()='effectiveTime']");
-            var visitDate = tmp[0].LastChild.Attributes["value"].Value;
+            var tmp=xmlHelper.XpathRead(m,"//*[name()='effectiveTime']");
+            var visitDate=tmp[0].LastChild.Attributes["value"].Value;
             DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
 
-            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            if (GetScanTaskCount(visitNo, "ADT^A04[B01]") > 0)
+            {
+                return;//存在任务则无需增加
+            }
+            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
             {
+               
                 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)";
-                //住院就诊
-                var cmd = ctx.DBGetSqlStringCommand(isql);
-                SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString("N"));
-                SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
-                SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息登记");
-                SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A04[B01]");
-                SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
-                SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
-                SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
-                SqlDataAccess.ExecuteNonQuery(ctx, cmd);
+                    //门诊处方单
+                if (GetScanTaskCount(visitNo, "ADT^A04[B01]") <= 0)
+                {
+                    var dcmd = ctx.DBGetSqlStringCommand(isql);
+                    ctx.DBAddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                    ctx.DBAddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                    ctx.DBAddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                    ctx.DBAddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                    ctx.DBAddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
+                    ctx.DBAddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
+                    ctx.DBAddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
+                    ctx.DBAddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B01]");
+                    ctx.DBAddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                    ctx.DBAddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                    ctx.DBAddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
+                    ctx.DBExecuteNonQuery(dcmd);
+                }
 
-                //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-                //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
-                //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
-                //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
-                //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
-                //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
-                //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
-                //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-                //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
-                //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
-                //ctx.DBExecuteNonQuery(cmd);
-                
-               
-                scope.Complete(); 
-            }
+                if (GetScanTaskCount(visitNo, "ADT^A01[B02]")<= 0)
+                {
+                    //门诊收费明细
+                    var lcmd = ctx.DBGetSqlStringCommand(isql);
+                    ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                    ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                    ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                    ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                    ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
+                    ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
+                    ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
+                    ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B02]");
+                    ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                    ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                    ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
+                    ctx.DBExecuteNonQuery(lcmd);
+                }
 
+                if (GetScanTaskCount(visitNo, "ADT^A01[B03]") <= 0)
+                {
+                    //门诊挂号
+                    var gcmd = ctx.DBGetSqlStringCommand(isql);
+                    ctx.AddInParameter(gcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                    ctx.AddInParameter(gcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                    ctx.AddInParameter(gcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                    ctx.AddInParameter(gcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                    ctx.AddInParameter(gcmd, "OtherNo2", System.Data.DbType.String, "");
+                    ctx.AddInParameter(gcmd, "OtherNo3", System.Data.DbType.String, "");
+                    ctx.AddInParameter(gcmd, "OtherName", System.Data.DbType.String, "门诊挂号明细");
+                    ctx.AddInParameter(gcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B03]");
+                    ctx.AddInParameter(gcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                    ctx.AddInParameter(gcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                    ctx.AddInParameter(gcmd, "Reserve1", System.Data.DbType.String, "");
+                    ctx.DBExecuteNonQuery(gcmd);
+                }
 
+                scope.Complete();
+            }
         }
 
-        /// <summary>
-        /// 获取门诊就诊次数
-        /// </summary> 
-        /// <returns></returns>
-        private int GetOutNumByChartNo(string chartNo)
-        {
 
-            string OutPatientSql = @"select count(1)	 
-                                             from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b	 
-                                             where a.VisitNo = b.VisitNo  AND b.ChartNo= @ChartNo  
-                                             AND a.VisitStatus<>'D'  ";
-            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
-            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
-            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));  //看诊次数 
+        public string GetDiagNo(string icdCode)
+        {
+            try
+            {
+                var sql = string.Format("SELECT DiagNo FROM HealthCare.dbo.Diag WHERE IcdCode='{0}'", icdCode);
+                var obj = ctx.DBExecuteScalar(CommandType.Text, sql);
+                var val = StrHelepr.Obj2StrTrim(obj);
+                if (string.IsNullOrWhiteSpace(val))
+                {
+                    val = icdCode;
+                }
 
+                return val;
+            }
+            catch (Exception ex)
+            {
+                IL.Common.LogHelper.LogError(string.Format("获取DiagNo错误:{0}  {1}\r\n{2}", icdCode, ex.Message, ex.StackTrace), LogCatagories.MQAccess);
+                return string.Empty;
+            }
         }
 
-        /// <summary>
-        /// 获取急诊就诊次数
-        /// </summary> 
-        /// <returns></returns>
-        private int GetEmgNumByChartNo(string chartNo)
+        public string GetBedNo(Database ctx, string roombed)
         {
-            string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b	 
-                                             where a.VisitNo = b.VisitNo  
-                                             AND b.ChartNo= @ChartNo   AND a.VisitStatus<>'D'  ";
-            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
-            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
-            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));   //看诊次数 
+            var sql = "SELECT Top 1 BedNo FROM HealthCare.dbo.Bed WHERE RoomBed=@RoomBed";
+            var cmd = ctx.DBGetSqlStringCommand(sql);
+            ctx.AddInParameter(cmd, "RoomBed", DbType.String, roombed);
+            var obj = StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd));
+            if (string.IsNullOrWhiteSpace(obj))
+            {
+                obj = roombed;
+            }
+            return obj;
 
         }
 
     }
+
+
 }

+ 80 - 62
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A05_Handler.cs

@@ -2,20 +2,21 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+
+using Microsoft.Practices.EnterpriseLibrary.Data;
 using System.Transactions;
-using System.Data;
-using System.Data.Common;
+using MediII.Adapter.ReceiveToScanModel;
 using IL.Common;
+using System.Data.Common;
+using System.Data;
 
 namespace MediII.Adapter.BizComponent.ADT
 {
-    /// <summary>
-    /// 住院就诊记录更新
-    /// </summary>
     public class ADT_A05_Handler : ADTHandler
     {
         public override void Handler(string m)
         {
+            #region 门诊就诊更新
             //初始化
             var rtnMsg = string.Empty;
             var msgHead = string.Empty;
@@ -32,75 +33,92 @@ namespace MediII.Adapter.BizComponent.ADT
             var visitDate = tmp[0].LastChild.Attributes["value"].Value;
             DateTime date = DateTime.ParseExact(visitDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
 
-            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            if (GetScanTaskCount(visitNo, "ADT^A05[B01]") > 0)
             {
-                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)";
-                //住院就诊
-                var cmd = ctx.DBGetSqlStringCommand(isql);
-                SqlDataAccess.AddInParameter(ctx, cmd, "ID", DbType.AnsiString, Guid.NewGuid().ToString("N"));
-                SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, visitNo);
-                SqlDataAccess.AddInParameter(ctx, cmd, "VisitNo", DbType.AnsiString, visitNo);
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo1", DbType.AnsiString, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo2", DbType.AnsiString, "");
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherNo3", DbType.AnsiString, "");
-                SqlDataAccess.AddInParameter(ctx, cmd, "OtherName", DbType.AnsiString, "住院就诊信息更新");
-                SqlDataAccess.AddInParameter(ctx, cmd, "TaskType", DbType.AnsiString, "ADT^A04[B02]");
-                SqlDataAccess.AddInParameter(ctx, cmd, "TaskStatus", DbType.Int32, 1);
-                SqlDataAccess.AddInParameter(ctx, cmd, "UpdateUser", DbType.AnsiString, "9999");
-                SqlDataAccess.AddInParameter(ctx, cmd, "Reserve1", DbType.AnsiString, "");
-                SqlDataAccess.ExecuteNonQuery(ctx, cmd);
-
-                //ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString("N"));
-                //ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
-                //ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
-                //ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
-                //ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
-                //ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
-                //ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
-                //ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A01[B01]");
-                //ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
-                //ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
-                //ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
-                //ctx.DBExecuteNonQuery(cmd);
-                
-               
-                scope.Complete(); 
+                return;//存在任务则无需增加
             }
+            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+           {
+               #region 门诊就诊更新 
 
+               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)";
+               //门诊处方单
+               if (GetScanTaskCount(visitNo, "ADT^A01[B01]") <= 0)
+               {
+                   var dcmd = ctx.DBGetSqlStringCommand(isql);
+                   ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                   ctx.AddInParameter(dcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(dcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(dcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                   ctx.AddInParameter(dcmd, "OtherNo2", System.Data.DbType.String, "");
+                   ctx.AddInParameter(dcmd, "OtherNo3", System.Data.DbType.String, "");
+                   ctx.AddInParameter(dcmd, "OtherName", System.Data.DbType.String, "门诊处方单");
+                   ctx.AddInParameter(dcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B01]");
+                   ctx.AddInParameter(dcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                   ctx.AddInParameter(dcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                   ctx.AddInParameter(dcmd, "Reserve1", System.Data.DbType.String, "");
+                   ctx.DBExecuteNonQuery(dcmd);
+               }
+        
+               #endregion
 
-        }
-
-        /// <summary>
-        /// 获取门诊就诊次数
-        /// </summary> 
-        /// <returns></returns>
-        private int GetOutNumByChartNo(string chartNo)
-        {
+               //门诊收费明细
+               if (GetScanTaskCount(visitNo, "ADT^A01[B02]") <= 0)
+               {
+                   var lcmd = ctx.DBGetSqlStringCommand(isql);
+                   ctx.AddInParameter(lcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                   ctx.AddInParameter(lcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(lcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(lcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                   ctx.AddInParameter(lcmd, "OtherNo2", System.Data.DbType.String, "");
+                   ctx.AddInParameter(lcmd, "OtherNo3", System.Data.DbType.String, "");
+                   ctx.AddInParameter(lcmd, "OtherName", System.Data.DbType.String, "门诊收费明细");
+                   ctx.AddInParameter(lcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B02]");
+                   ctx.AddInParameter(lcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                   ctx.AddInParameter(lcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                   ctx.AddInParameter(lcmd, "Reserve1", System.Data.DbType.String, "");
+                   ctx.DBExecuteNonQuery(lcmd);
+               }
 
-            string OutPatientSql = @"select count(1)	 
-                                             from HealthCare.dbo.OutPatient a, HealthCare.dbo.VisitRecord b	 
-                                             where a.VisitNo = b.VisitNo  AND b.ChartNo= @ChartNo  
-                                             AND a.VisitStatus<>'D'  ";
-            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, OutPatientSql);
-            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
-            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));  //看诊次数 
+               if (GetScanTaskCount(visitNo, "ADT^A01[B03]") <= 0)
+               {
+                   //门诊挂号
+                   var gcmd = ctx.DBGetSqlStringCommand(isql);
+                   ctx.AddInParameter(gcmd, "id", System.Data.DbType.String, Guid.NewGuid().ToString());
+                   ctx.AddInParameter(gcmd, "ChartNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(gcmd, "VisitNo", System.Data.DbType.String, visitNo);
+                   ctx.AddInParameter(gcmd, "OtherNo1", System.Data.DbType.String, date.ToString("yyyy-MM-dd HH:mm:ss"));
+                   ctx.AddInParameter(gcmd, "OtherNo2", System.Data.DbType.String, "");
+                   ctx.AddInParameter(gcmd, "OtherNo3", System.Data.DbType.String, "");
+                   ctx.AddInParameter(gcmd, "OtherName", System.Data.DbType.String, "门诊挂号明细");
+                   ctx.AddInParameter(gcmd, "TaskType", System.Data.DbType.String, "ADT^A04[B03]");
+                   ctx.AddInParameter(gcmd, "TaskStatus", System.Data.DbType.Int32, 1);
+                   ctx.AddInParameter(gcmd, "UpdateUser", System.Data.DbType.String, "9999");
+                   ctx.AddInParameter(gcmd, "Reserve1", System.Data.DbType.String, "");
+                   ctx.DBExecuteNonQuery(gcmd);
+               }
+               scope.Complete();
+            }
+            #endregion
+            
 
         }
 
         /// <summary>
-        /// 获取急诊就诊次数
-        /// </summary> 
+        /// 获取急诊病人床位
+        /// </summary>
+        /// <param name="ctx"></param>
+        /// <param name="visitNo"></param>
         /// <returns></returns>
-        private int GetEmgNumByChartNo(string chartNo)
+        private string GetDepartNo(Database ctx, string roomBed)
         {
-            string EmgPatientSql = @"select count(1) from HealthCare.dbo.Emergency a, HealthCare.dbo.VisitRecord b	 
-                                             where a.VisitNo = b.VisitNo  
-                                             AND b.ChartNo= @ChartNo   AND a.VisitStatus<>'D'  ";
-            var cmd = SqlDataAccess.GetSqlStringCommand(ctx, EmgPatientSql);
-            SqlDataAccess.AddInParameter(ctx, cmd, "ChartNo", DbType.AnsiString, chartNo);
-            return int.Parse(StrHelepr.Obj2StrTrim(SqlDataAccess.ExecuteScalar(ctx, cmd)));   //看诊次数 
 
+            var sql = string.Format("SELECT top 1 DepartNo FROM dbo.Depart WHERE DepartCode='{0}' AND DepartType='99' AND IsDel=0", roomBed);
+            var dr = ctx.DBExecuteScalar(CommandType.Text, sql);
+            return StrHelepr.Obj2StrTrim(dr);
         }
 
+
+
     }
-}
+}

+ 3 - 3
IL.BizComponent/MediII.Adapter.BizComponent.ADT/MediII.Adapter.BizComponent.ADT.csproj

@@ -93,10 +93,10 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="ADTHandler.cs" />
-    <Compile Include="ADT_A01_Handler.cs" />
-    <Compile Include="ADT_A02_Handler.cs" />
-    <Compile Include="ADT_A05_Handler.cs" />
     <Compile Include="ADT_A04_Handler.cs" />
+    <Compile Include="ADT_A05_Handler.cs" />
+    <Compile Include="ADT_A02_Handler.cs" />
+    <Compile Include="ADT_A01_Handler.cs" />
     <Compile Include="BizComponent_ADT.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <EmbeddedResource Include="Properties\Resources.resx">

+ 115 - 118
IL.BizComponent/MediII.Adapter.BizComponent.MFN/MFN_Z2B_GY_KESHI.cs

@@ -1,118 +1,115 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Data.Common;
-using System.Transactions;
-using Microsoft.Practices.EnterpriseLibrary.Data;
-using System.Data;
-using IL.Common;
-using System.Xml;
-//using MediII.Adapter.Model.UE;
-
-
-namespace MediII.Adapter.BizComponent.MFN
-{
-    /// <summary>
-    /// 公用科室
-    /// zengfan 2012-09-04
-    /// </summary>
-    /// <remarks></remarks>
-    public class MFN_Z2B_GY_KESHI : MFNBase
-    {
-        //数据库连接
-        //HealthCareContainer HealthCareContainer = new HealthCareContainer();
-        private Database ctx = null;
-        public MFN_Z2B_GY_KESHI(Database dbCtx)
-        {
-            ctx = dbCtx;
-        }
-        /// <summary>
-        /// 消息处理,入库
-        /// </summary>
-        /// <param name="message">转化过的强类型消息</param>
-        /// <returns></returns>
-        /// <remarks></remarks>
-        public override int Process(string message,string msgType)
-        {
-            string strMsgType;
-            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
-            {
-                string sqlSel = "select count(*) from dbo.dic_department where id=@id";
-                OperateXmlUtil helper = new OperateXmlUtil();
-                string pkid = helper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension");
-                DbCommand cmd = ctx.DBGetSqlStringCommand(sqlSel);
-                ctx.AddInParameter(cmd, "id", System.Data.DbType.String, pkid);
-                int counts = Convert.ToInt32(ctx.ExecuteScalar(cmd));
-                
-                if (counts == 0)
-                {
-                    string sql = @"insert into dbo.dic_department(id,
-                                                                name,
-									                            status,
-									                            search_code)
-							                            VALUES(@id,
-                                                                @name,
-									                            @status,
-									                            @search_code)";
-
-                    OperateXmlUtil xmlHelper = new OperateXmlUtil();
-                    DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
-                    Resolving(message, ctx, command);
-
-                    ctx.ExecuteNonQuery(command);
-                }
-                else
-                {
-                    string sql = "update dbo.dic_department set name=@name,search_code=@search_code where id=@id";
-                    OperateXmlUtil xmlHelper = new OperateXmlUtil();
-                    DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
-                    Resolving(message, ctx, command);
-
-                    ctx.ExecuteNonQuery(command);
-                }
-                scope.Complete();
-            }
-            return 1;
-        }
-
-
-        /// <summary>
-        /// 科室删除
-        /// </summary>
-        /// <param name="seg">传入资料</param>
-        /// <param name="HealthCareContainer">连线</param>
-        /// <param name="scope">交易</param>
-        public void Division_SyncDel(string pkid)
-        {
-            //string sql4 = "update HealthCare.dbo.Division set IsIss=1 where DivNo=@DivNo";
-            string sql4 = "delete from HealthCare.dbo.Division where DivNo=@DivNo";
-            DbCommand command4 = ctx.GetSqlStringCommand(sql4.ToString());
-            ctx.AddInParameter(command4, "DivNo", System.Data.DbType.AnsiString, pkid);
-            ctx.ExecuteNonQuery(command4);
-        }
-
-        public void Resolving(string Content, Database ctx, DbCommand command)
-        {
-            string value = string.Empty;
-            OperateXmlUtil xmlHelper = new OperateXmlUtil();
-
-            value = xmlHelper.XpathRead(Content, "//*[@root='2.16.156.10011.1.26']", "extension");
-            ctx.AddInParameter(command, "id", System.Data.DbType.String, value);
-            var valueNode = xmlHelper.XpathRead(Content, "//*[name()='assignedPrincipalOrganization']").Item(0);
-
-            foreach (XmlNode xe in valueNode.ChildNodes)
-            {
-                if (xe.Name == "name")
-                {
-                    value = xe.LastChild.LastChild.Attributes["value"].Value;
-                    ctx.AddInParameter(command, "name", System.Data.DbType.String, value);
-                    value = xe.LastChild.LastChild.Attributes["code"].Value;
-                    ctx.AddInParameter(command, "search_code", System.Data.DbType.String, value);
-                    ctx.AddInParameter(command, "status", System.Data.DbType.String, "1");
-                    break;
-                }
-            }
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data.Common;
+using System.Transactions;
+using Microsoft.Practices.EnterpriseLibrary.Data;
+using System.Data;
+using IL.Common;
+using System.Xml;
+//using MediII.Adapter.Model.UE;
+
+
+namespace MediII.Adapter.BizComponent.MFN
+{
+    /// <summary>
+    /// 公用科室
+    /// zengfan 2012-09-04
+    /// </summary>
+    /// <remarks></remarks>
+    public class MFN_Z2B_GY_KESHI : MFNBase
+    {
+        //数据库连接
+        //HealthCareContainer HealthCareContainer = new HealthCareContainer();
+        private Database ctx = null;
+        public MFN_Z2B_GY_KESHI(Database dbCtx)
+        {
+            ctx = dbCtx;
+        }
+        /// <summary>
+        /// 消息处理,入库
+        /// </summary>
+        /// <param name="message">转化过的强类型消息</param>
+        /// <returns></returns>
+        /// <remarks></remarks>
+        public override int Process(string message,string msgType)
+        {
+            string strMsgType;
+            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            {
+                string sqlSel = "select count(*) from dbo.his_unit where id=@id";
+                OperateXmlUtil helper = new OperateXmlUtil();
+                string pkid = helper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension");
+                DbCommand cmd = ctx.DBGetSqlStringCommand(sqlSel);
+                ctx.AddInParameter(cmd, "id", System.Data.DbType.String, pkid);
+                int counts = Convert.ToInt32(ctx.ExecuteScalar(cmd));
+                
+                if (counts == 0)
+                {
+                    string sql = @"insert into dbo.his_unit(id,
+                                                                name,
+									                            pym)
+							                            VALUES(@id,
+                                                                @name,
+									                            @pym)";
+
+                    OperateXmlUtil xmlHelper = new OperateXmlUtil();
+                    DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
+                    Resolving(message, ctx, command);
+
+                    ctx.ExecuteNonQuery(command);
+                }
+                else
+                {
+                    string sql = "update dbo.his_unit set name=@name,pym=@pym where id=@id";
+                    OperateXmlUtil xmlHelper = new OperateXmlUtil();
+                    DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
+                    Resolving(message, ctx, command);
+
+                    ctx.ExecuteNonQuery(command);
+                }
+                scope.Complete();
+            }
+            return 1;
+        }
+
+
+        /// <summary>
+        /// 科室删除
+        /// </summary>
+        /// <param name="seg">传入资料</param>
+        /// <param name="HealthCareContainer">连线</param>
+        /// <param name="scope">交易</param>
+        public void Division_SyncDel(string pkid)
+        {
+            //string sql4 = "update HealthCare.dbo.Division set IsIss=1 where DivNo=@DivNo";
+            string sql4 = "delete from HealthCare.dbo.Division where DivNo=@DivNo";
+            DbCommand command4 = ctx.GetSqlStringCommand(sql4.ToString());
+            ctx.AddInParameter(command4, "DivNo", System.Data.DbType.AnsiString, pkid);
+            ctx.ExecuteNonQuery(command4);
+        }
+
+        public void Resolving(string Content, Database ctx, DbCommand command)
+        {
+            string value = string.Empty;
+            OperateXmlUtil xmlHelper = new OperateXmlUtil();
+
+            value = xmlHelper.XpathRead(Content, "//*[@root='2.16.156.10011.1.26']", "extension");
+            ctx.AddInParameter(command, "id", System.Data.DbType.String, value);
+            var valueNode = xmlHelper.XpathRead(Content, "//*[name()='assignedPrincipalOrganization']").Item(0);
+
+            foreach (XmlNode xe in valueNode.ChildNodes)
+            {
+                if (xe.Name == "name")
+                {
+                    value = xe.LastChild.LastChild.Attributes["value"].Value;
+                    ctx.AddInParameter(command, "name", System.Data.DbType.String, value);
+                    value = xe.LastChild.LastChild.Attributes["code"].Value;
+                    ctx.AddInParameter(command, "pym", System.Data.DbType.String, value);
+                    break;
+                }
+            }
+        }
+    }
+}

+ 2 - 2
MediII.Adapter.MsgToScanServer/Properties/AssemblyInfo.cs

@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
 // 有关程序集的常规信息通过以下
 // 特性集控制。更改这些特性值可修改
 // 与程序集关联的信息。
-[assembly: AssemblyTitle("MediII.Adapter.MsgToSIServer")]
+[assembly: AssemblyTitle("MediII.Adapter.MsgToScanServer")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("MediII.Adapter.MsgToSIServer")]
+[assembly: AssemblyProduct("MediII.Adapter.MsgToScanServer")]
 [assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

BIN
MessageToScan/UE/IL.Common.dll


BIN
MessageToScan/UE/KC_HN_Tools.dll


BIN
MessageToScan/UE/MediII.Adapter.BizComponent.ADT.dll


BIN
MessageToScan/UE/MediII.Adapter.BizComponent.Base.dll


BIN
MessageToScan/UE/MediII.Adapter.BizComponent.MFN.dll


BIN
MessageToScan/UE/MediII.Adapter.BizComponent.PMU.dll


BIN
MessageToScan/UE/MediII.Adapter.BizComponent.UE.dll


BIN
MessageToScan/UE/MediII.Adapter.ReceiveToScanModel.dll


BIN
MessageToScan/UE/MediII.Adapter.Scan.Interface.dll


BIN
MessageToScan/UE/MediII.Adapter.Scanner.dll


BIN
MessageToScanServer/IL.Common.dll


BIN
MessageToScanServer/KC_HN_Tools.dll


BIN
MessageToScanServer/MediII.Adapter.MsgToSIServer.exe


+ 0 - 97
MessageToScanServer/MediII.Adapter.MsgToSIServer.exe.config

@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-  <configSections>
-    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
-    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
-  </configSections>
-  <!--日志配置-->
-  <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
-    <listeners>
-      <add name="GeneralListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        fileName="General\rolling.log" formatter="Text Formatter" rollFileExistsBehavior="Increment"
-        rollInterval="Day" maxArchivedFiles="0" traceOutputOptions="None" />
-      <add name="SockListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        fileName="Sock\rolling.log" formatter="Text Formatter" rollInterval="Day" />
-      <add name="ScanListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        fileName="Scan\rolling.log" formatter="Text Formatter" rollInterval="Day" />
-      <add name="SqlListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        fileName="SQL\logSql.log" formatter="Text Formatter" rollInterval="Day" />
-    </listeners>
-    <formatters>
-      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-        template="Timestamp: {timestamp}{newline}&#xA;Message: {message}"
-        name="Text Formatter" />
-    </formatters>
-    <categorySources>
-      <add switchValue="All" name="General">
-        <listeners>
-          <add name="GeneralListener" />
-        </listeners>
-      </add>
-      <add switchValue="All" name="Sock">
-        <listeners>
-          <add name="SockListener" />
-        </listeners>
-      </add>
-      <add switchValue="All" name="AdapterScan">
-        <listeners>
-          <add name="ScanListener" />
-        </listeners>
-      </add>
-      <add switchValue="All" name="SQL">
-        <listeners>
-          <add name="SqlListener" />
-        </listeners>
-      </add>
-    </categorySources>
-    <specialSources>
-      <allEvents switchValue="All" name="All Events" />
-      <notProcessed switchValue="All" name="Unprocessed Category" />
-      <errors switchValue="All" name="Logging Errors &amp; Warnings" />
-    </specialSources>
-  </loggingConfiguration>
-  <dataConfiguration defaultDatabase="DefaultDB" />
-  <connectionStrings>
-    <add name="DefaultDB" connectionString="Data Source=192.168.1.26;
-                       Initial Catalog=HL7_Platform;
-                       Persist Security Info=True;
-                       Integrated Security=False;
-                       User ID=sa;Password=sa26" providerName="System.Data.SqlClient"/>
-
-    <add name="HealthCare" connectionString="Data Source=192.168.1.26;
-                       Initial Catalog=HealthCare;
-                       Persist Security Info=True;
-                       Integrated Security=False;
-                       User ID=sa;Password=sa26" providerName="System.Data.SqlClient"/>
-
-
-  </connectionStrings>
-  <appSettings>
-    <!--测试-->
-    <!--正式-->
-    <add key="MediIIAddress" value="192.9.216.206" />
-    <add key="MediIIPort" value="31001" />
-    <add key="BufferSize" value="4048" />
-    <add key="ReviceTimeOut" value="30000" />
-    <add key="ErrorRepeatCount" value="1" />
-    <add key="ErrorSleepMSecodes" value="3000" />
-    <!--<add key="SedingApplication" value="UEHIS" />-->
-    <add key="HosiptalName" value=""/>
-
-    <add key="AddMinues" value="30"/>
-    <add key="BranchID" value=""/>
-    <!--查询数量-->
-    <add key="SearchNum" value="50"/>
-
-    <!--任务解锁时间  单位分钟-->
-    <add key="TaskRunTime" value="5"/>
-
-
-    <!--启动SQL日志-->
-    <add key="LogSql" value="1"/>
-  </appSettings>
-</configuration>

BIN
MessageToScanServer/MediII.Adapter.MsgToScanServer.exe


BIN
MessageToScanServer/MediII.Adapter.Scan.Interface.dll


BIN
MessageToScanServer/MediII.Adapter.Scanner.dll


BIN
MessageToScanServer/UE/IL.Common.dll


BIN
MessageToScanServer/UE/KC_HN_Tools.dll


BIN
MessageToScanServer/UE/MediII.Adapter.BizComponent.ADT.dll


BIN
MessageToScanServer/UE/MediII.Adapter.BizComponent.Base.dll


BIN
MessageToScanServer/UE/MediII.Adapter.BizComponent.MFN.dll


BIN
MessageToScanServer/UE/MediII.Adapter.BizComponent.PMU.dll


BIN
MessageToScanServer/UE/MediII.Adapter.BizComponent.UE.dll


BIN
MessageToScanServer/UE/MediII.Adapter.ReceiveToSIModel.dll


BIN
MessageToScanServer/UE/MediII.Adapter.ReceiveToScanModel.dll


BIN
MessageToScanServer/UE/MediII.Adapter.Scan.Interface.dll


BIN
MessageToScanServer/UE/MediII.Adapter.Scanner.dll


+ 4 - 4
README.md

@@ -5,10 +5,10 @@
     实现解析代码
 	MediII.Adapter.BizComponent.Base 基类
 	MediII.Adapter.BizComponent.ADT 业务相关
-		ADT^A01 门诊就诊登记
-		ADT^A02 门诊就诊更新
-		ADT^A04 住院就诊登记
-		ADT^A05 住院就诊更新
+		ADT^A01 住院就诊登记
+		ADT^A02 住院就诊更新
+		ADT^A04 门诊就诊登记
+		ADT^A05 门诊就诊更新
 	MediII.Adapter.BizComponent.MFN 科室单位字典解析
 	MediII.Adapter.BizComponent.PMU	员工字典解析
 #### 2 ORM